[PATCH 2/6] matrix: Update code docs for projective transform

Bryce Harrington <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
From: Bryce Harrington <[email protected]>

Signed-off-by: Bryce Harrington <[email protected]>
---
 src/cairo-matrix.c |   13 ++++++++++---
 src/cairo.h        |   11 +++++++----
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c
index 2f0e439..21c717e 100644
--- a/src/cairo-matrix.c
+++ b/src/cairo-matrix.c
@@ -54,13 +54,14 @@
  *
  * #cairo_matrix_t is used throughout cairo to convert between different
  * coordinate spaces.  A #cairo_matrix_t holds an affine transformation,
- * such as a scale, rotation, shear, or a combination of these.
+ * such as a scale, rotation, shear, or a combination of these, and can
+ * also hold a projective transformation.
  * The transformation of a point (<literal>x</literal>,<literal>y</literal>)
  * is given by:
  *
  * <programlisting>
- * x_new = xx * x + xy * y + x0;
- * y_new = yx * x + yy * y + y0;
+ * x_new = (xx * x + xy * y + x0) / (px * x + py * y + 1);
+ * y_new = (yx * x + yy * y + y0) / (px * x + py * y + 1);
  * </programlisting>
  *
  * The current transformation matrix of a #cairo_t, represented as a
@@ -108,6 +109,12 @@ slim_hidden_def(cairo_matrix_init_identity);
  *  y_new = yx * x + yy * y + y0;
  * </programlisting>
  *
+ * Note if any projective transformation had been applied to the
+ * matrix it is removed (i.e. px and py are set to 0).
+ *
+ * <programlisting>
+ * </programlisting>
+ *
  * Since: 1.0
  **/
 void
diff --git a/src/cairo.h b/src/cairo.h
index 7e73e11..c6aa267 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -178,13 +178,16 @@ typedef struct _cairo_device cairo_device_t;
  * @yy: yy component of the affine transformation
  * @x0: X translation component of the affine transformation
  * @y0: Y translation component of the affine transformation
+ * @px: X component of the projective transformation
+ * @py: Y component of the projective transformation
  *
  * A #cairo_matrix_t holds an affine transformation, such as a scale,
- * rotation, shear, or a combination of those. The transformation of
- * a point (x, y) is given by:
+ * rotation, shear, or a combination of those, and a projective
+ * transformation. The transformation of a point (x, y) is given by:
+ *
  * <programlisting>
- *     x_new = xx * x + xy * y + x0;
- *     y_new = yx * x + yy * y + y0;
+ *     x_new = (xx * x + xy * y + x0) / (px * x + py * y + 1);
+ *     y_new = (yx * x + yy * y + y0) / (px * x + py * y + 1);
  * </programlisting>
  *
  * Since: 1.0
-- 
1.7.9.5

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.