[cairo-commit] cairomm/cairomm context.h,1.8,1.9

Jonathon Jongsma commit at pdx.freedesktop.org
Wed Feb 8 09:28:28 PST 2006


Committed by: jjongsma

Update of /cvs/cairo/cairomm/cairomm
In directory gabe:/tmp/cvs-serv10749/cairomm

Modified Files:
	context.h 
Log Message:
2006-02-08  Jonathon Jongsma  <jonathon.jongsma at gmail.com>

	* cairomm/context.h: Added a lot of documentation for the Cairo::Context
	class taken from the cairo docs.  It's not complete, but the basics are all
	covered now. 
	* docs/reference/Makefile.am: make use of existing Makefile variable
	* NEWS: update for 0.5.0 release


Index: context.h
===================================================================
RCS file: /cvs/cairo/cairomm/cairomm/context.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- context.h	21 Jan 2006 16:22:40 -0000	1.8
+++ context.h	8 Feb 2006 17:28:26 -0000	1.9
@@ -42,14 +42,15 @@
 typedef cairo_text_extents_t TextExtents; //A simple struct.
 typedef cairo_matrix_t Matrix; //A simple struct. //TODO: Derive and add operator[] and operator. matrix multiplication?
 
-/** The context is the main object used when drawing with cairo. To draw with cairo, you create a context,  
- * set the target surface, and drawing options for the context, create shapes with methods like move_to() and 
- * line_to(), and then draw shapes with stroke() or fill().
- *
- * This is a reference-counted object. The copy constructor creates a second reference to the object, instead of creating an independent copy of the object.
+/** Context is the main class used to draw in cairomm. 
+ * In the simplest case, create a Context with its target Surface, set its
+ * drawing options (line width, color, etc), create shapes with methods like
+ * move_to() and line_to(), and then draw the shapes to the Surface using
+ * methods such as stroke() or fill().
  *
- * Contexts can be pushed to a stack via save(). They may then safely be changed, without losing the current
- * state. Use restore() to restore to the saved state.
+ * Context is a reference-counted object. The copy constructor creates a second
+ * reference to the object, instead of creating an independent copy of the
+ * object.
  */
 class Context
 {
@@ -58,9 +59,12 @@
 
 public:
 
-  /** Create a C++ wrapper for the C instance. This C++ instance should then be given to a RefPtr.
+  /** Create a C++ wrapper for the C instance. This C++ instance should then be
+   * given to a RefPtr.
+   *
    * @param cobject The C instance.
-   * @param has_reference Whether we already have a reference. Otherwise, the constructor will take an extra reference.
+   * @param has_reference Whether we already have a reference. Otherwise, the
+   * constructor will take an extra reference.
    */
   explicit Context(cairo_t* cobject, bool has_reference = false);
 
@@ -68,51 +72,547 @@
 
   virtual ~Context();
 
+  /** Makes a copy of the current state of the Context and saves it on an
+   * internal stack of saved states. When restore() is called, it will be
+   * restored to the saved state. Multiple calls to save() and restore() can be
+   * nested; each call to restore() restores the state from the matching paired
+   * save().
+   *
+   * It isn't necessary to clear all saved states before a cairo_t is freed. 
+   * Any saved states will be freed when the Context is destroyed.
+   *
+   * @sa restore()
+   */
   void save();
+
+  /** Restores cr to the state saved by a preceding call to save() and removes
+   * that state from the stack of saved states.
+   *
+   * @sa save()
+   */
   void restore();
+
+  /** Sets the compositing operator to be used for all drawing operations. See
+   * Operator for details on the semantics of each available compositing
+   * operator.
+   *
+   * @param op	a compositing operator, specified as a Operator
+   */
   void set_operator(Operator op);
+
+  /** Sets the source pattern within the Context to source. This Pattern will
+   * then be used for any subsequent drawing operation until a new source
+   * pattern is set.
+   *
+   * Note: The Pattern's transformation matrix will be locked to the user space
+   * in effect at the time of set_source(). This means that further
+   * modifications of the current transformation matrix will not affect the
+   * source pattern. 
+   *
+   * @param source	a Pattern to be used as the source for subsequent drawing
+   * operations.
+   *
+   * @sa Pattern::set_matrix()
+   * @sa set_source_rgb()
+   * @sa set_source_rgba()
+   * @sa set_source(const RefPtr<Surface>& surface, double x, double y)
+   */
   void set_source(const RefPtr<const Pattern>& source);
+
+  /** Sets the source pattern within the Context to an opaque color. This
+   * opaque color will then be used for any subsequent drawing operation until
+   * a new source pattern is set.
+   *
+   * The color components are floating point numbers in the range 0 to 1. If
+   * the values passed in are outside that range, they will be clamped.
+   *
+   * @param red	red component of color
+   * @param green	green component of color
+   * @param blue	blue component of color
+   *
+   * @sa set_source_rgba()
+   * @sa set_source()
+   */
   void set_source_rgb(double red, double green, double blue);
+
+  /** Sets the source pattern within the Context to a translucent color. This
+   * color will then be used for any subsequent drawing operation until a new
+   * source pattern is set.
+   *
+   * The color and alpha components are floating point numbers in the range 0
+   * to 1. If the values passed in are outside that range, they will be
+   * clamped.
+   *
+   * @param red	red component of color
+   * @param green	green component of color
+   * @param blue	blue component of color
+   * @param alpha	alpha component of color
+   *
+   * @sa set_source_rgb()
+   * @sa set_source()
+   */
   void set_source_rgba(double red, double green, double blue, double alpha);
+
+  /** This is a convenience function for creating a pattern from a Surface and
+   * setting it as the source
+   *
+   * The x and y parameters give the user-space coordinate at which the Surface
+   * origin should appear. (The Surface origin is its upper-left corner before
+   * any transformation has been applied.) The x and y patterns are negated and
+   * then set as translation values in the pattern matrix.
+   *
+   * Other than the initial translation pattern matrix, as described above, all
+   * other pattern attributes, (such as its extend mode), are set to the
+   * default values as in Context::create(const RefPtr<Surface>& target). The
+   * resulting pattern can be queried with get_source() so that these
+   * attributes can be modified if desired, (eg. to create a repeating pattern
+   * with Pattern::set_extend()).
+   *
+   * @param surface : 	a Surface to be used to set the source pattern
+   * @param x : 	User-space X coordinate for surface origin
+   * @param y : 	User-space Y coordinate for surface origin 
+   */
   void set_source(const RefPtr<Surface>& surface, double x, double y);
+
+  /** Sets the tolerance used when converting paths into trapezoids. Curved
+   * segments of the path will be subdivided until the maximum deviation
+   * between the original path and the polygonal approximation is less than
+   * tolerance. The default value is 0.1. A larger value will give better
+   * performance, a smaller value, better appearance. (Reducing the value from
+   * the default value of 0.1 is unlikely to improve appearance significantly.)
+   *
+   * @param tolerance	the tolerance, in device units (typically pixels)
+   */
   void set_tolerance(double tolerance);
+
+  /** Set the antialiasing mode of the rasterizer used for drawing shapes. This
+   * value is a hint, and a particular backend may or may not support a
+   * particular value. At the current time, no backend supports
+   * CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes.
+   *
+   * Note that this option does not affect text rendering, instead see
+   * FontOptions::set_antialias().
+   *
+   * @param antialias	the new antialiasing mode
+   */
   void set_antialias(Antialias antialias);
+
+  /** Set the current fill rule within the cairo Context. The fill rule is used
+   * to determine which regions are inside or outside a complex (potentially
+   * self-intersecting) path. The current fill rule affects both fill() and
+   * clip(). See FillRule for details on the semantics of each available fill
+   * rule.
+   *
+   * @param fill_rule	a fill rule, specified as a FillRule
+   */
   void set_fill_rule(FillRule fill_rule);
+
+  /** Sets the current line width within the cairo Context. The line width
+   * specifies the diameter of a pen that is circular in user-space.
+   *
+   * As with the other stroke parameters, the current line cap style is
+   * examined by stroke(), stroke_extents(), and stroke_to_path(), but does not
+   * have any effect during path construction.
+   *
+   * @param width	a line width, as a user-space value
+   */
   void set_line_width(double width);
+  
+  /** Sets the current line cap style within the cairo Context. See
+   * LineCap for details about how the available line cap styles are drawn.
+   *
+   * As with the other stroke parameters, the current line cap style is
+   * examined by stroke(), stroke_extents(), and stroke_to_path(), but does not
+   * have any effect during path construction.
+   *
+   * @param line_cap	a line cap style, as a LineCap
+   */
   void set_line_cap(LineCap line_cap);
+
+  /** Sets the current line join style within the cairo Context. See LineJoin
+   * for details about how the available line join styles are drawn.
+   *
+   * As with the other stroke parameters, the current line join style is
+   * examined by stroke(), stroke_extents(), and stroke_to_path(), but does not
+   * have any effect during path construction.
+   *
+   * @param line_join	a line joint style, as a LineJoin
+   */
   void set_line_join(LineJoin line_join);
+
+  /** Sets the dash pattern to be used by stroke(). A dash pattern is specified
+   * by dashes, an array of positive values. Each value provides the user-space
+   * length of altenate "on" and "off" portions of the stroke. The offset
+   * specifies an offset into the pattern at which the stroke begins.
+   *
+   * If dashes is empty dashing is disabled.  If the size of dashes is 1, a
+   * symmetric pattern is assumed with alternating on and off portions of the
+   * size specified by the single value in dashes.
+   *
+   * It is invalid for any value in dashes to be negative, or for all values to
+   * be 0.  If this is the case, an exception will be thrown
+   *
+   * @param dashes	an array specifying alternate lengths of on and off portions
+   * @param offset	an offset into the dash pattern at which the stroke should start
+   *
+   * \exception
+   */
   void set_dash(std::valarray<double>& dashes, double offset);
+
+  /** This function disables a dash pattern that was set with set_dash()
+   */
   void unset_dash();
   void set_miter_limit(double limit);
+
+  /** Modifies the current transformation matrix (CTM) by translating the
+   * user-space origin by (tx, ty). This offset is interpreted as a user-space
+   * coordinate according to the CTM in place before the new call to
+   * cairo_translate. In other words, the translation of the user-space origin
+   * takes place after any existing transformation.
+   *
+   * @param tx	amount to translate in the X direction
+   * @param ty	amount to translate in the Y direction 
+   */
   void translate(double tx, double ty);
+
+  /** Modifies the current transformation matrix (CTM) by scaling the X and Y
+   * user-space axes by sx and sy respectively. The scaling of the axes takes
+   * place after any existing transformation of user space.
+   *
+   * @param sx	scale factor for the X dimension
+   * @param sy	scale factor for the Y dimension
+   */
   void scale(double sx, double sy);
+
+  /** Modifies the current transformation matrix (CTM) by rotating the
+   * user-space axes by angle radians. The rotation of the axes takes places
+   * after any existing transformation of user space. The rotation direction
+   * for positive angles is from the positive X axis toward the positive Y
+   * axis.
+   *
+   * @param angle	angle (in radians) by which the user-space axes will be
+   * rotated
+   */
   void rotate(double angle_radians);
+
+  /** A convenience wrapper around rotate() that accepts angles in degrees
+   *
+   * @param angle_degrees angle (in degrees) by which the user-space axes
+   * should be rotated
+   */
   void rotate_degrees(double angle_degres);
+
+  /** Modifies the current transformation matrix (CTM) by applying matrix as an
+   * additional transformation. The new transformation of user space takes
+   * place after any existing transformation.
+   *
+   * @param matrix	a transformation to be applied to the user-space axes
+   */
   void transform(const Matrix& matrix);
+
+  /** Modifies the current transformation matrix (CTM) by setting it equal to
+   * matrix.
+   *
+   * @param matrix	a transformation matrix from user space to device space
+   */
   void set_matrix(const Matrix& matrix);
+
+  /** Resets the current transformation matrix (CTM) by setting it equal to the
+   * identity matrix. That is, the user-space and device-space axes will be
+   * aligned and one user-space unit will transform to one device-space unit.
+   */
   void set_identity_matrix();
+
+  /** Transform a coordinate from user space to device space by multiplying the
+   * given point by the current transformation matrix (CTM).
+   *
+   * @param x	X value of coordinate (in/out parameter)
+   * @param y	Y value of coordinate (in/out parameter)
+   */
   void user_to_device(double& x, double& y);
+
+  /** Transform a distance vector from user space to device space. This
+   * function is similar to user_to_device() except that the translation
+   * components of the CTM will be ignored when transforming (dx,dy).
+   *
+   * @param dx	X component of a distance vector (in/out parameter)
+   * @param dy	Y component of a distance vector (in/out parameter)
+   */
   void user_to_device_distance(double& dx, double& dy);
+
+  /** Transform a coordinate from device space to user space by multiplying the
+   * given point by the inverse of the current transformation matrix (CTM).
+   *
+   * @param x	X value of coordinate (in/out parameter)
+   * @param y	Y value of coordinate (in/out parameter)
+   */
   void device_to_user(double& x, double& y);
+
+  /** Transform a distance vector from device space to user space. This
+   * function is similar to device_to_user() except that the translation
+   * components of the inverse CTM will be ignored when transforming (dx,dy).
+   *
+   * @param dx	X component of a distance vector (in/out parameter)
+   * @param dy	Y component of a distance vector (in/out parameter)
+   */
   void device_to_user_distance(double& dx, double& dy);
+
+  // FIXME: why is this named clear_path instead of new_path?
+  /** Clears the current path. After this call there will be no current point.
+   */
   void clear_path();
+
+  /** If the current subpath is not empty, begin a new subpath. After this call
+   * the current point will be (x, y).
+   *
+   * @param x	the X coordinate of the new position
+   * @param y	the Y coordinate of the new position
+   */
   void move_to(double x, double y);
+
+  /** Adds a line to the path from the current point to position (x, y) in
+   * user-space coordinates. After this call the current point will be (x, y).
+   *
+   * @param x	the X coordinate of the end of the new line
+   * @param y	the Y coordinate of the end of the new line
+   */
   void line_to(double x, double y);
+
+  /** Adds a cubic Bezier spline to the path from the current point to position
+   * (x3, y3) in user-space coordinates, using (x1, y1) and (x2, y2) as the
+   * control points. After this call the current point will be (x3, y3).
+   *
+   * @param x1	the X coordinate of the first control point
+   * @param y1	the Y coordinate of the first control point
+   * @param x2	the X coordinate of the second control point
+   * @param y2	the Y coordinate of the second control point
+   * @param x3	the X coordinate of the end of the curve
+   * @param y3	the Y coordinate of the end of the curve
+   */
   void curve_to(double x1, double y1, double x2, double y2, double x3, double y3);
+
+  /** Adds a circular arc of the given radius to the current path. The arc is
+   * centered at (xc, yc), begins at angle1 and proceeds in the direction of
+   * increasing angles to end at angle2. If angle2 is less than angle1 it will
+   * be progressively increased by 2*M_PI until it is greater than angle1.
+   *
+   * If there is a current point, an initial line segment will be added to the
+   * path to connect the current point to the beginning of the arc.
+   *
+   * Angles are measured in radians. An angle of 0 is in the direction of the
+   * positive X axis (in user-space). An angle of M_PI radians (90 degrees) is
+   * in the direction of the positive Y axis (in user-space). Angles increase
+   * in the direction from the positive X axis toward the positive Y axis. So
+   * with the default transformation matrix, angles increase in a clockwise
+   * direction.
+   *
+   * (To convert from degrees to radians, use degrees * (M_PI / 180.).)
+   *
+   * This function gives the arc in the direction of increasing angles; see
+   * arc_negative() to get the arc in the direction of decreasing angles.
+   *
+   * The arc is circular in user-space. To achieve an elliptical arc, you can
+   * scale the current transformation matrix by different amounts in the X and
+   * Y directions. For example, to draw an ellipse in the box given by x, y,
+   * width, height:
+   *
+   * @code
+   * context->save();
+   * context->translate(x, y);
+   * context->scale(width / 2.0, height / 2.0);
+   * context->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);
+   * context->restore();
+   * @endcode
+   *
+   * @param xc	X position of the center of the arc
+   * @param yc	Y position of the center of the arc
+   * @param radius	the radius of the arc
+   * @param angle1	the start angle, in radians
+   * @param angle2	the end angle, in radians
+   */
   void arc(double xc, double yc, double radius, double angle1, double angle2);
+
+  /** Adds a circular arc of the given radius to the current path. The arc is
+   * centered at (xc, yc), begins at angle1 and proceeds in the direction of
+   * decreasing angles to end at angle2. If angle2 is greater than angle1 it
+   * will be progressively decreased by 2*M_PI until it is greater than angle1.
+   *
+   * See arc() for more details. This function differs only in the direction of
+   * the arc between the two angles.
+   *
+   * @param xc	X position of the center of the arc
+   * @param yc	Y position of the center of the arc
+   * @param radius	the radius of the arc
+   * @param angle1	the start angle, in radians
+   * @param angle2	the end angle, in radians
+   */
   void arc_negative(double xc, double yc, double radius, double angle1, double angle2);
+
+  /** If the current subpath is not empty, begin a new subpath. After this call
+   * the current point will offset by (x, y).
+   *
+   * Given a current point of (x, y),
+   * @code
+   * rel_move_to(dx, dy)
+   * @endcode
+   * is logically equivalent to
+   * @code
+   * move_to(x + dx, y + dy)
+   * @endcode
+   *
+   * @param dx	the X offset
+   * @param dy	the Y offset
+   */
   void rel_move_to(double dx, double dy);
+
+  /** Relative-coordinate version of line_to(). Adds a line to the path from
+   * the current point to a point that is offset from the current point by (dx,
+   * dy) in user space. After this call the current point will be offset by
+   * (dx, dy).
+   *
+   * Given a current point of (x, y),
+   * @code
+   * rel_line_to(dx, dy)
+   * @endcode
+   * is logically equivalent to
+   * @code
+   * line_to(x + dx, y + dy).
+   * @endcode
+   *
+   * @param dx	the X offset to the end of the new line
+   * @param dy	the Y offset to the end of the new line
+   */
   void rel_line_to(double dx, double dy);
+
+  /** Relative-coordinate version of curve_to(). All offsets are relative to
+   * the current point. Adds a cubic Bezier spline to the path from the current
+   * point to a point offset from the current point by (dx3, dy3), using points
+   * offset by (dx1, dy1) and (dx2, dy2) as the control points.  After this
+   * call the current point will be offset by (dx3, dy3).
+   *
+   * Given a current point of (x, y),
+   * @code
+   * rel_curve_to(dx1, dy1, dx2, dy2, dx3, dy3)
+   * @endcode
+   * is logically equivalent to
+   * @code
+   * curve_to(x + dx1, y + dy1, x + dx2, y + dy2, x + dx3, y + dy3).
+   * @endcode
+   *
+   * @param dx1	the X offset to the first control point
+   * @param dy1	the Y offset to the first control point
+   * @param dx2	the X offset to the second control point
+   * @param dy2	the Y offset to the second control point
+   * @param dx3	the X offset to the end of the curve
+   * @param dy3	the Y offset to the end of the curve
+   */
   void rel_curve_to(double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
+
+  /** Adds a closed-subpath rectangle of the given size to the current path at
+   * position (x, y) in user-space coordinates.
+   *
+   * This function is logically equivalent to:
+   *
+   * @code
+   * context->move_to(x, y);
+   * context->rel_line_to(width, 0);
+   * context->rel_line_to(0, height);
+   * context->rel_line_to(-width, 0);
+   * context->close_path();
+   * @endcode
+   *
+   * @param x	the X coordinate of the top left corner of the rectangle
+   * @param y	the Y coordinate to the top left corner of the rectangle
+   * @param width	the width of the rectangle
+   * @param height	the height of the rectangle
+   */
   void rectangle(double x, double y, double width, double height);
+
+  /** Adds a line segment to the path from the current point to the beginning
+   * of the current subpath, (the most recent point passed to move_to()), and
+   * closes this subpath.
+   *
+   * The behavior of close_path() is distinct from simply calling line_to()
+   * with the equivalent coordinate in the case of stroking.  When a closed
+   * subpath is stroked, there are no caps on the ends of the subpath. Instead,
+   * there is a line join connecting the final and initial segments of the
+   * subpath.
+   */
   void close_path();
+
+  /** A drawing operator that paints the current source everywhere within the
+   * current clip region.
+   */
   void paint();
+
+  /** A drawing operator that paints the current source everywhere within the
+   * current clip region using a mask of constant alpha value alpha. The effect
+   * is similar to paint(), but the drawing is faded out using the alpha
+   * value.
+   *
+   * @param alpha	an alpha value, between 0 (transparent) and 1 (opaque)
+   */
   void paint_with_alpha(double alpha);
+
+  /** A drawing operator that paints the current source using the alpha channel
+   * of pattern as a mask. (Opaque areas of mask are painted with the source,
+   * transparent areas are not painted.)
+   *
+   * @param pattern a Pattern
+   */
   void mask(const RefPtr<Pattern>& pattern);
+
+  /** A drawing operator that paints the current source using the alpha channel
+   * of surface as a mask. (Opaque areas of surface are painted with the
+   * source, transparent areas are not painted.)
+   *
+   * @param surface	a Surface
+   * @param surface_x	X coordinate at which to place the origin of surface
+   * @param surface_y	Y coordinate at which to place the origin of surface
+   */
   void mask(const RefPtr<Surface>& surface, double surface_x, double surface_y);
+
+  /** A drawing operator that strokes the current Path according to the current
+   * line width, line join, line cap, and dash settings. After stroke(),
+   * the current Path will be cleared from the cairo Context.
+   *
+   * \sa set_line_width()
+   * \sa set_line_join()
+   * \sa set_line_cap()
+   * \sa set_dash()
+   * \sa stroke_preserve().
+   */
   void stroke();
+
+  /** A drawing operator that strokes the current Path according to the current
+   * line width, line join, line cap, and dash settings. Unlike stroke(),
+   * stroke_preserve() preserves the Path within the cairo Context.
+   *
+   * \sa set_line_width()
+   * \sa set_line_join()
+   * \sa set_line_cap()
+   * \sa set_dash()
+   * \sa stroke_preserve().
+   */
   void stroke_preserve();
+
+  /** A drawing operator that fills the current path according to the current
+   * fill rule, (each sub-path is implicitly closed before being filled). After
+   * fill(), the current path will be cleared from the cairo context. 
+   *
+   * \sa set_fill_rule() 
+   * \sa fill_preserve()
+   */
   void fill();
+
+  /** A drawing operator that fills the current path according to the current
+   * fill rule, (each sub-path is implicitly closed before being filled).
+   * Unlike fill(), fill_preserve() preserves the path within the
+   * cairo Context.
+   *
+   * \sa set_fill_rule() 
+   * \sa fill().
+   */
   void fill_preserve();
   void copy_page();
   void show_page();
@@ -120,8 +620,49 @@
   bool in_fill(double x, double y) const;
   void get_stroke_extents(double& x1, double& y1, double& x2, double& y2) const;
   void get_fill_extents(double& x1, double& y1, double& x2, double& y2) const;
+
+  /** Reset the current clip region to its original, unrestricted state. That
+   * is, set the clip region to an infinitely large shape containing the target
+   * surface. Equivalently, if infinity is too hard to grasp, one can imagine
+   * the clip region being reset to the exact bounds of the target surface.
+   *
+   * Note that code meant to be reusable should not call reset_clip() as it
+   * will cause results unexpected by higher-level code which calls clip().
+   * Consider using save() and restore() around clip() as a more robust means
+   * of temporarily restricting the clip region.
+   */
   void reset_clip();
+
+  /** Establishes a new clip region by intersecting the current clip region
+   * with the current Path as it would be filled by fill() and according to the
+   * current fill rule.
+   *
+   * After clip(), the current path will be cleared from the cairo Context.
+   *
+   * The current clip region affects all drawing operations by effectively
+   * masking out any changes to the surface that are outside the current clip
+   * region.
+   *
+   * Calling clip() can only make the clip region smaller, never larger.  But
+   * the current clip is part of the graphics state, so a temporary restriction
+   * of the clip region can be achieved by calling cairo_clip() within a
+   * save()/restore() pair. The only other means of increasing the size of the
+   * clip region is reset_clip().
+   *
+   * \sa set_fill_rule()
+   */
   void clip();
+
+  /** Establishes a new clip region by intersecting the current clip region
+   * with the current path as it would be filled by fill() and according to the
+   * current fill rule.
+   *
+   * Unlike clip(), cairo_clip_preserve preserves the path within the cairo
+   * Context. 
+   *
+   * \sa clip()
+   * \sa set_fill_rule()
+   */
   void clip_preserve();
   void select_font_face(const std::string& family, FontSlant slant, FontWeight weight);
   void set_font_size(double size);
@@ -138,41 +679,110 @@
   void get_glyph_extents(const std::vector<Glyph>& glyphs, TextExtents& extents) const;
   void text_path(const std::string& utf8);
   void glyph_path(const std::vector<Glyph>& glyphs);
+
+  /** Gets the current compositing operator for a cairo Context
+   */
   Operator get_operator() const;
+
+  /** Gets the current source pattern for the Context
+   */
   RefPtr<Pattern> get_source();
   RefPtr<const Pattern> get_source() const;
+
+  /** Gets the current tolerance value, as set by set_tolerance()
+   */
   double get_tolerance() const;
+
+  /** Gets the current shape antialiasing mode, as set by set_antialias()
+   */
   Antialias get_antialias() const;
+
+  /** Gets the current point of the current path, which is conceptually the
+   * final point reached by the path so far.
+   *
+   * The current point is returned in the user-space coordinate system. If
+   * there is no defined current point then x and y will both be set to 0.0.
+   * 
+   * Most path construction functions alter the current point. See the
+   * following for details on how they affect the current point: clear_path(),
+   * move_to(), line_to(), curve_to(), arc(), rel_move_to(), rel_line_to(),
+   * rel_curve_to(), arc(), and text_path()
+   *
+   * @param x	return value for X coordinate of the current point
+   * @param y	return value for Y coordinate of the current point
+   */
   void get_current_point (double& x, double& y) const;
+
+  /** Gets the current fill rule, as set by set_fill_rule().
+   */
   FillRule get_fill_rule() const;
+
+  /** Gets the current line width, as set by set_line_width()
+   */
   double get_line_width() const;
+
+  /** Gets the current line cap style, as set by set_line_cap()
+   */
   LineCap get_line_cap() const;
+
+  /** Gets the current line join style, as set by set_line_join()
+   */
   LineJoin get_line_join() const;
 
+  /** Gets the current miter limit, as set by set_miter_limit()
+   */
   double get_miter_limit() const;
+
+  /** Stores the current transformation matrix (CTM) into matrix.
+   *
+   * @param matrix	return value for the matrix
+   */
   void get_matrix(Matrix& matrix);
 
+  /** Gets the target surface associated with this Context.
+   *
+   * @exception
+   */
   RefPtr<Surface> get_target();
+
+  /** Gets the target surface associated with this Context.
+   *
+   * @exception
+   */
   RefPtr<const Surface> get_target() const;
   
   //TODO: Copy or reference-count a Path somethow instead of asking the caller to delete it?
   Path* copy_path() const;
   Path* copy_path_flat() const;
 
+  /** Append the path onto the current path. The path may be either the return
+   * value from one of copy_path() or copy_path_flat() or it may be constructed
+   * manually. 
+   *
+   * @param path	path to be appended
+   */
   void append_path(const Path& path);
 
+  /** The base cairo C type that is wrapped by Cairo::Context
+   */
   typedef cairo_t cobject;
+
+  /** Gets a pointer to the base C type that is wrapped by the Context
+   */
   inline cobject* cobj() { return m_cobject; }
+
+  /** Gets a pointer to the base C type that is wrapped by the Context
+   */
   inline const cobject* cobj() const { return m_cobject; }
  
   #ifndef DOXYGEN_IGNORE_THIS
   ///For use only by the cairomm implementation.
   inline ErrorStatus get_status() const
   { return cairo_status(const_cast<cairo_t*>(cobj())); }
-  #endif //DOXYGEN_IGNORE_THIS
 
   void reference() const;
   void unreference() const;
+  #endif //DOXYGEN_IGNORE_THIS
 
 protected:
 



More information about the cairo-commit mailing list