From fca054e949476d3434df28f3f0ded9a9ca37f345 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Wed, 26 May 2010 03:07:17 +0100 Subject: [PATCH] cogl docs: Improve documentation for cogl_ortho cogl_ortho is one of those APIs whos style was, for better or worse, copied from OpenGL and for some inexplicable reason the near and far arguments are inconsistent with the left, right, top, bottom arguments because they don't take z coordinates they take a "distance" which should be negative for a plane behind the viewer. This updates the documentation to explain this. --- cogl/cogl.h | 21 +++++++++++++++++---- doc/reference/cogl/Makefile.am | 6 ++++-- doc/reference/cogl/cogl_ortho.png | Bin 0 -> 12650 bytes 3 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 doc/reference/cogl/cogl_ortho.png diff --git a/cogl/cogl.h b/cogl/cogl.h index f15b2a95b..e639658da 100644 --- a/cogl/cogl.h +++ b/cogl/cogl.h @@ -258,13 +258,26 @@ cogl_frustum (float left, * @right: The coordinate for the right clipping plane * @bottom: The coordinate for the bottom clipping plane * @top: The coordinate for the top clipping plane - * @near: The coordinate for the near clipping plane (may be negative if + * @near: The distance to the near clipping plane (negative if * the plane is behind the viewer) - * @far: The coordinate for the far clipping plane (may be negative if + * @far: The distance for the far clipping plane (negative if * the plane is behind the viewer) * - * Replaces the current projection matrix with a parallel projection - * matrix. + * Replaces the current projection matrix with an orthographic projection + * matrix. See to see how the matrix is + * calculated. + * + *
+ * + * + *
+ * + * cogl_ortho copies the arguments from OpenGL's glOrtho even + * though they are unnecessarily confusing due to the z near and z far + * arguments actually being a "distance" from the origin, where + * negative values are behind the viewer, instead of coordinates for + * the z clipping planes which would have been consistent with the + * left, right bottom and top arguments. * * Since: 1.0 */ diff --git a/doc/reference/cogl/Makefile.am b/doc/reference/cogl/Makefile.am index a066e445a..5b1d1fb5f 100644 --- a/doc/reference/cogl/Makefile.am +++ b/doc/reference/cogl/Makefile.am @@ -92,7 +92,8 @@ EXTRA_HFILES= # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = \ - fill-rule.png + fill-rule.png \ + cogl_ortho.png # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml @@ -121,4 +122,5 @@ include $(top_srcdir)/gtk-doc.make # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += \ - fill-rule.png + fill-rule.png \ + cogl_ortho.png diff --git a/doc/reference/cogl/cogl_ortho.png b/doc/reference/cogl/cogl_ortho.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2a1fd20be98e26e1ef6f3eb2bc664970f5fc62 GIT binary patch literal 12650 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 literal 0 HcmV?d00001