Points, Rectangles and Regions
<!-- ##### SECTION Short_Description ##### -->
-simple graphical data types.
+Simple graphical data types
<!-- ##### SECTION Long_Description ##### -->
<para>
-GDK provides the #GdkPoint, #GdkRectangle and #GdkRegion data types for
-representing pixels and sets of pixels on the screen.
+GDK provides the #GdkPoint, #GdkRectangle, #GdkRegion and #GdkSpan data types
+for representing pixels and sets of pixels on the screen.
</para>
<para>
#GdkPoint is a simple structure containing an x and y coordinate of a point.
#GdkRegion is an opaque data type holding a set of arbitrary pixels, and is
usually used for clipping graphical operations (see gdk_gc_set_clip_region()).
</para>
+<para>
+#GdkSpan is a structure holding a spanline. A spanline is a horizontal line that
+is one pixel wide. It is mainly used when rasterizing other graphics primitives.
+It can be intersected to regions by using gdk_region_spans_intersect_foreach().
+</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
+<!-- ##### SECTION Stability_Level ##### -->
+
+
<!-- ##### STRUCT GdkPoint ##### -->
<para>
Defines the x and y coordinates of a point.
-Note that both are defined as #gint16 values, so the coordinates are limited
-to between -32,768 and 32,767.
</para>
@x: the x coordinate of the point.
<!-- ##### FUNCTION gdk_rectangle_intersect ##### -->
<para>
-Calculates the intersection of two rectangles.
+
</para>
-@src1: a #GdkRectangle.
-@src2: a #GdkRectangle.
-@dest: the intersection of @src1 and @src2.
-@Returns: TRUE if the rectangles intersect.
+@src1:
+@src2:
+@dest:
+@Returns:
<!-- ##### FUNCTION gdk_rectangle_union ##### -->
<para>
-Calculates the union of two rectangles.
-The union of rectangles @src1 and @src2 is the smallest rectangle which
-includes both @src1 and @src2 within it.
+
</para>
-@src1: a #GdkRectangle.
-@src2: a #GdkRectangle.
-@dest: the union of @src1 and @src2.
+@src1:
+@src2:
+@dest:
<!-- ##### STRUCT GdkRegion ##### -->
<para>
A GdkRegion represents a set of pixels on the screen.
-The only user-visible field of the structure is the user_data member, which
-can be used to attach arbitrary data to the #GdkRegion.
</para>
-@user_data: arbitrary data attached to the #GdkRegion.
<!-- ##### FUNCTION gdk_region_new ##### -->
<para>
-Creates a new empty #GdkRegion.
+
</para>
-@Returns: a new empty #GdkRegion.
+@Returns:
<!-- ##### FUNCTION gdk_region_polygon ##### -->
<para>
-Creates a new #GdkRegion using the polygon defined by a number of points.
</para>
-@points: an array of #GdkPoint structs.
-@npoints: the number of elements in the @points array.
-@fill_rule: specifies which pixels are included in the region when the polygon
-overlaps itself.
-@Returns: a new #GdkRegion based on the given polygon.
+@points:
+@npoints:
+@fill_rule:
+@Returns:
<!-- ##### ENUM GdkFillRule ##### -->
included in the region, while areas overlapped an even number of times are not.
@GDK_WINDING_RULE: overlapping areas are always included.
+<!-- ##### FUNCTION gdk_region_copy ##### -->
+<para>
+
+</para>
+
+@region:
+@Returns:
+
+
+<!-- ##### FUNCTION gdk_region_rectangle ##### -->
+<para>
+
+</para>
+
+@rectangle:
+@Returns:
+
+
<!-- ##### FUNCTION gdk_region_destroy ##### -->
<para>
-Destroys a #GdkRegion.
+
+</para>
+
+@region:
+
+
+<!-- ##### FUNCTION gdk_region_get_clipbox ##### -->
+<para>
+
</para>
-@region: a #GdkRegion.
+@region:
+@rectangle:
-<!-- ##### FUNCTION gdk_regions_intersect ##### -->
+<!-- ##### FUNCTION gdk_region_get_rectangles ##### -->
<para>
-Returns the intersection of two regions.
+
</para>
-@source1: a #GdkRegion.
-@source2: a #GdkRegion.
-@Returns: the intersection of @source1 and @source2.
+@region:
+@rectangles:
+@n_rectangles:
-<!-- ##### FUNCTION gdk_regions_union ##### -->
+<!-- ##### FUNCTION gdk_region_empty ##### -->
<para>
-Returns the union of two regions.
-This is all pixels in either of @source1 or @source2.
+
</para>
-@source1: a #GdkRegion.
-@source2: a #GdkRegion.
-@Returns: the union of @source1 and @source2.
+@region:
+@Returns:
-<!-- ##### FUNCTION gdk_regions_subtract ##### -->
+<!-- ##### FUNCTION gdk_region_equal ##### -->
<para>
-Subtracts one region from another.
-The result is a region containing all the pixels which are in @source1, but
-which are not in @source2.
+
</para>
-@source1: a #GdkRegion.
-@source2: a #GdkRegion to subtract from @source1.
-@Returns: @source1 - @source2.
+@region1:
+@region2:
+@Returns:
-<!-- ##### FUNCTION gdk_regions_xor ##### -->
+<!-- ##### FUNCTION gdk_region_point_in ##### -->
<para>
-Returns the difference between the union and the intersection of two regions.
-This is a region containing the pixels that are in one of the source regions,
-but which are not in both.
+
</para>
-@source1: a #GdkRegion.
-@source2: a #GdkRegion.
-@Returns: the difference between the union and the intersection of @source1
-and @source2.
+@region:
+@x:
+@y:
+@Returns:
-<!-- ##### FUNCTION gdk_region_union_with_rect ##### -->
+<!-- ##### FUNCTION gdk_region_rect_in ##### -->
<para>
-Returns the union of a region and a rectangle.
+
</para>
-@region: a #GdkRegion.
-@rect: a #GdkRectangle.
-@Returns: the union of @region and @rect.
+@region:
+@rectangle:
+@Returns:
+
+<!-- ##### ENUM GdkOverlapType ##### -->
+<para>
+Specifies the possible values returned by gdk_region_rect_in().
+</para>
+
+@GDK_OVERLAP_RECTANGLE_IN: if the rectangle is inside the #GdkRegion.
+@GDK_OVERLAP_RECTANGLE_OUT: if the rectangle is outside the #GdkRegion.
+@GDK_OVERLAP_RECTANGLE_PART: if the rectangle is partly inside the #GdkRegion.
<!-- ##### FUNCTION gdk_region_offset ##### -->
<para>
-Moves a region the specified distance.
+
</para>
-@region: a #GdkRegion.
-@dx: the distance to move the region horizontally.
-@dy: the distance to move the region vertically.
+@region:
+@dx:
+@dy:
<!-- ##### FUNCTION gdk_region_shrink ##### -->
<para>
-Resizes a region by the specified amount.
-Positive values shrink the region. Negative values expand it.
+
</para>
-@region: a #GdkRegion.
-@dx: the number of pixels to shrink the region horizontally.
-@dy: the number of pixels to shrink the region vertically.
+@region:
+@dx:
+@dy:
-<!-- ##### FUNCTION gdk_region_empty ##### -->
+<!-- ##### FUNCTION gdk_region_union_with_rect ##### -->
<para>
-Returns TRUE if the #GdkRegion is empty.
+
</para>
-@region: a #GdkRegion.
-@Returns: TRUE if @region is empty.
+@region:
+@rect:
-<!-- ##### FUNCTION gdk_region_equal ##### -->
+<!-- ##### FUNCTION gdk_region_intersect ##### -->
<para>
-Returns TRUE if the two regions are the same.
</para>
-@region1: a #GdkRegion.
-@region2: a #GdkRegion.
-@Returns: TRUE if @region1 and @region2 are equal.
+@source1:
+@source2:
-<!-- ##### FUNCTION gdk_region_point_in ##### -->
+<!-- ##### FUNCTION gdk_region_union ##### -->
+<para>
+
+</para>
+
+@source1:
+@source2:
+
+
+<!-- ##### FUNCTION gdk_region_subtract ##### -->
<para>
-Returns TRUE if a point is in a region.
</para>
-@region: a #GdkRegion.
-@x: the x coordinate of a point.
-@y: the y coordinate of a point.
-@Returns: TRUE if the point is in @region.
+@source1:
+@source2:
-<!-- ##### FUNCTION gdk_region_rect_in ##### -->
+<!-- ##### FUNCTION gdk_region_xor ##### -->
<para>
-Tests whether a rectangle is within a region.
</para>
-@region: a #GdkRegion.
-@rect: a #GdkRectangle.
-@Returns: GDK_OVERLAP_RECTANGLE_IN, GDK_OVERLAP_RECTANGLE_OUT, or
-GDK_OVERLAP_RECTANGLE_PART, depending on whether the rectangle is inside,
-outside, or partly inside the #GdkRegion, respectively.
+@source1:
+@source2:
-<!-- ##### ENUM GdkOverlapType ##### -->
+<!-- ##### STRUCT GdkSpan ##### -->
<para>
-Specifies the possible values returned by gdk_region_rect_in().
+A GdkSpan represents a horizontal line of pixels starting
+at the pixel with coordinates @x, @y and ending before @x + @width, @y.
</para>
-@GDK_OVERLAP_RECTANGLE_IN: if the rectangle is inside the #GdkRegion.
-@GDK_OVERLAP_RECTANGLE_OUT: if the rectangle is outside the #GdkRegion.
-@GDK_OVERLAP_RECTANGLE_PART: if the rectangle is partly inside the #GdkRegion.
+@x: x coordinate of the first pixel.
+@y: y coordinate of the first pixel.
+@width: number of pixels in the span.
-<!-- ##### FUNCTION gdk_region_get_clipbox ##### -->
+<!-- ##### USER_FUNCTION GdkSpanFunc ##### -->
<para>
-Returns the smallest rectangle which includes the entire #GdkRegion.
+This defines the type of the function passed to
+gdk_region_spans_intersect_foreach().
+</para>
+
+@span: a #GdkSpan.
+@data: the user data passed to gdk_region_spans_intersect_foreach().
+
+
+<!-- ##### FUNCTION gdk_region_spans_intersect_foreach ##### -->
+<para>
+
</para>
-@region: a #GdkRegion.
-@rectangle: returns the smallest rectangle which includes all of @region.
+@region:
+@spans:
+@n_spans:
+@sorted:
+@function:
+@data: