Class Matrix

All Implemented Interfaces:
PointerInterface

public class Matrix extends Record
A `PangoMatrix` specifies a transformation between user-space
and device coordinates.

The transformation is given by

```
x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0;
y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0;
```

https://docs.gtk.org/Pango/struct.Matrix.html

  • Field Details

  • Constructor Details

  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • setFieldXx

      public void setFieldXx(double xx)
      1st component of the transformation matrix
    • getFieldXx

      public double getFieldXx()
      1st component of the transformation matrix
    • setFieldXy

      public void setFieldXy(double xy)
      2nd component of the transformation matrix
    • getFieldXy

      public double getFieldXy()
      2nd component of the transformation matrix
    • setFieldYx

      public void setFieldYx(double yx)
      3rd component of the transformation matrix
    • getFieldYx

      public double getFieldYx()
      3rd component of the transformation matrix
    • setFieldYy

      public void setFieldYy(double yy)
      4th component of the transformation matrix
    • getFieldYy

      public double getFieldYy()
      4th component of the transformation matrix
    • setFieldX0

      public void setFieldX0(double x0)
      x translation
    • getFieldX0

      public double getFieldX0()
      x translation
    • setFieldY0

      public void setFieldY0(double y0)
      y translation
    • getFieldY0

      public double getFieldY0()
      y translation
    • concat

      public void concat(@Nonnull Matrix new_matrix)
      Changes the transformation represented by @matrix to be the
      transformation given by first applying transformation
      given by @new_matrix then applying the original transformation.
      Parameters:
      new_matrix - a `PangoMatrix`
    • copy

      public Matrix copy()
      Copies a `PangoMatrix`.
      Returns:
      the newly allocated `PangoMatrix`
    • free

      public void free()
      Free a `PangoMatrix`.
    • getFontScaleFactor

      public double getFontScaleFactor()
      Returns the scale factor of a matrix on the height of the font.

      That is, the scale factor in the direction perpendicular to the
      vector that the X coordinate is mapped to. If the scale in the X
      coordinate is needed as well, use [method@Pango.Matrix.get_font_scale_factors].
      Returns:
      the scale factor of @matrix on the height of the font, or 1.0 if @matrix is %NULL.
    • getSlantRatio

      public double getSlantRatio()
      Gets the slant ratio of a matrix.

      For a simple shear matrix in the form:

      1 λ
      0 1

      this is simply λ.
      Returns:
      the slant ratio of @matrix
    • rotate

      public void rotate(double degrees)
      Changes the transformation represented by @matrix to be the
      transformation given by first rotating by @degrees degrees
      counter-clockwise then applying the original transformation.
      Parameters:
      degrees - degrees to rotate counter-clockwise
    • scale

      public void scale(double scale_x, double scale_y)
      Changes the transformation represented by @matrix to be the
      transformation given by first scaling by @sx in the X direction
      and @sy in the Y direction then applying the original
      transformation.
      Parameters:
      scale_x - amount to scale by in X direction
      scale_y - amount to scale by in Y direction
    • transformPixelRectangle

      public void transformPixelRectangle(@Nullable Rectangle rect)
      First transforms the @rect using @matrix, then calculates the bounding box
      of the transformed rectangle.

      This function is useful for example when you want to draw a rotated
      @PangoLayout to an image buffer, and want to know how large the image
      should be and how much you should shift the layout when rendering.

      For better accuracy, you should use [method@Pango.Matrix.transform_rectangle]
      on original rectangle in Pango units and convert to pixels afterward
      using [func@extents_to_pixels]'s first argument.
      Parameters:
      rect - in/out bounding box in device units
    • transformRectangle

      public void transformRectangle(@Nullable Rectangle rect)
      First transforms @rect using @matrix, then calculates the bounding box
      of the transformed rectangle.

      This function is useful for example when you want to draw a rotated
      @PangoLayout to an image buffer, and want to know how large the image
      should be and how much you should shift the layout when rendering.

      If you have a rectangle in device units (pixels), use
      [method@Pango.Matrix.transform_pixel_rectangle].

      If you have the rectangle in Pango units and want to convert to
      transformed pixel bounding box, it is more accurate to transform it first
      (using this function) and pass the result to pango_extents_to_pixels(),
      first argument, for an inclusive rounded rectangle.
      However, there are valid reasons that you may want to convert
      to pixels first and then transform, for example when the transformed
      coordinates may overflow in Pango units (large matrix translation for
      example).
      Parameters:
      rect - in/out bounding box in Pango units
    • translate

      public void translate(double tx, double ty)
      Changes the transformation represented by @matrix to be the
      transformation given by first translating by (@tx, @ty)
      then applying the original transformation.
      Parameters:
      tx - amount to translate in the X direction
      ty - amount to translate in the Y direction
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()