summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2010-12-09 22:00:15 +0100
committerAndrea Canciani <ranma42@gmail.com>2010-12-10 11:04:48 +0100
commit85a489f0f212d68c69dbe5807b379b874daef4d1 (patch)
tree9ed5ed594d67aa84afa62b28b09f679e0abcd9a9 /src
parent75f34b595aead729b6f6a7017c8790d68dfa0326 (diff)
polygon: Merge _cairo_polygon_init and _cairo_polygon_limit
_cairo_polygon_limit() had to be called immediately after _cairo_polygon_init() (or never at all). Merging the two calls is a simple way to enforce this rule.
Diffstat (limited to 'src')
-rw-r--r--src/cairo-bentley-ottmann.c3
-rw-r--r--src/cairo-clip.c3
-rw-r--r--src/cairo-gl-surface.c6
-rw-r--r--src/cairo-image-surface.c6
-rw-r--r--src/cairo-path-fill.c16
-rw-r--r--src/cairo-path-stroke.c4
-rw-r--r--src/cairo-polygon.c17
-rw-r--r--src/cairo-surface-fallback.c6
-rw-r--r--src/cairo-xcb-surface-render.c6
-rw-r--r--src/cairoint.h9
-rw-r--r--src/drm/cairo-drm-i915-surface.c6
-rw-r--r--src/drm/cairo-drm-i965-surface.c6
12 files changed, 30 insertions, 58 deletions
diff --git a/src/cairo-bentley-ottmann.c b/src/cairo-bentley-ottmann.c
index b3819f2f..d7b017ab 100644
--- a/src/cairo-bentley-ottmann.c
+++ b/src/cairo-bentley-ottmann.c
@@ -1799,8 +1799,7 @@ _cairo_bentley_ottmann_tessellate_traps (cairo_traps_t *traps,
dump_traps (traps, "bo-traps-in.txt");
#endif
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, traps->limits, traps->num_limits);
+ _cairo_polygon_init (&polygon, traps->limits, traps->num_limits);
for (i = 0; i < traps->num_traps; i++) {
status = _cairo_polygon_add_line (&polygon,
diff --git a/src/cairo-clip.c b/src/cairo-clip.c
index 5b5d66ee..6bf679be 100644
--- a/src/cairo-clip.c
+++ b/src/cairo-clip.c
@@ -786,8 +786,7 @@ _rectilinear_clip_to_boxes (const cairo_path_fixed_t *path,
_cairo_traps_init (&traps);
_cairo_traps_limit (&traps, *boxes, *num_boxes);
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, *boxes, *num_boxes);
+ _cairo_polygon_init (&polygon, *boxes, *num_boxes);
status = _cairo_path_fixed_fill_rectilinear_to_traps (path,
fill_rule,
diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c
index 278e6429..9b4b2acf 100644
--- a/src/cairo-gl-surface.c
+++ b/src/cairo-gl-surface.c
@@ -1504,8 +1504,7 @@ _cairo_gl_surface_stroke (void *abstract_surface,
return status;
}
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_stroke_to_polygon (path,
style,
@@ -1581,8 +1580,7 @@ _cairo_gl_surface_fill (void *abstract_surface,
return status;
}
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &polygon);
if (likely (status == CAIRO_STATUS_SUCCESS)) {
diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index 1ebadee6..64d4e2de 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -3681,8 +3681,7 @@ _cairo_image_surface_stroke (void *abstract_surface,
if (status == CAIRO_INT_STATUS_UNSUPPORTED) {
cairo_polygon_t polygon;
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_stroke_to_polygon (path,
style,
@@ -3780,8 +3779,7 @@ _cairo_image_surface_fill (void *abstract_surface,
assert (! _cairo_path_fixed_fill_is_empty (path));
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &polygon);
if (likely (status == CAIRO_STATUS_SUCCESS)) {
diff --git a/src/cairo-path-fill.c b/src/cairo-path-fill.c
index 3a8e58a6..6074a523 100644
--- a/src/cairo-path-fill.c
+++ b/src/cairo-path-fill.c
@@ -132,9 +132,7 @@ _cairo_path_fixed_fill_to_traps (const cairo_path_fixed_t *path,
if (_cairo_path_fixed_fill_is_empty (path))
return CAIRO_STATUS_SUCCESS;
- _cairo_polygon_init (&polygon);
- if (traps->num_limits)
- _cairo_polygon_limit (&polygon, traps->limits, traps->num_limits);
+ _cairo_polygon_init (&polygon, traps->limits, traps->num_limits);
status = _cairo_path_fixed_fill_to_polygon (path,
tolerance,
@@ -182,10 +180,11 @@ _cairo_path_fixed_fill_rectilinear_tessellate_to_region (const cairo_path_fixed_
}
/* path is not rectangular, try extracting clipped rectilinear edges */
- _cairo_polygon_init (&polygon);
if (extents != NULL) {
_cairo_box_from_rectangle (&box, extents);
- _cairo_polygon_limit (&polygon, &box, 1);
+ _cairo_polygon_init (&polygon, &box, 1);
+ } else {
+ _cairo_polygon_init (&polygon, NULL, 0);
}
/* tolerance will be ignored as the path is rectilinear */
@@ -390,11 +389,8 @@ _cairo_path_fixed_fill_rectilinear_tessellate_to_boxes (const cairo_path_fixed_t
cairo_polygon_t polygon;
cairo_status_t status;
- _cairo_polygon_init (&polygon);
- if (boxes->num_limits) {
- _cairo_polygon_limit (&polygon, boxes->limits, boxes->num_limits);
- boxes->num_limits = 0;
- }
+ _cairo_polygon_init (&polygon, boxes->limits, boxes->num_limits);
+ boxes->num_limits = 0;
/* tolerance will be ignored as the path is rectilinear */
status = _cairo_path_fixed_fill_to_polygon (path, 0., &polygon);
diff --git a/src/cairo-path-stroke.c b/src/cairo-path-stroke.c
index 2b5e23ab..d5ced0e5 100644
--- a/src/cairo-path-stroke.c
+++ b/src/cairo-path-stroke.c
@@ -1407,9 +1407,7 @@ _cairo_path_fixed_stroke_to_traps (const cairo_path_fixed_t *path,
return status;
}
- _cairo_polygon_init (&polygon);
- if (traps->num_limits)
- _cairo_polygon_limit (&polygon, traps->limits, traps->num_limits);
+ _cairo_polygon_init (&polygon, traps->limits, traps->num_limits);
status = _cairo_path_fixed_stroke_to_polygon (path,
stroke_style,
diff --git a/src/cairo-polygon.c b/src/cairo-polygon.c
index e5c4f96c..c3f3631d 100644
--- a/src/cairo-polygon.c
+++ b/src/cairo-polygon.c
@@ -1,3 +1,4 @@
+/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */
/* cairo - a vector graphics library with display and print output
*
* Copyright © 2002 University of Southern California
@@ -39,8 +40,12 @@
#include "cairo-error-private.h"
void
-_cairo_polygon_init (cairo_polygon_t *polygon)
+_cairo_polygon_init (cairo_polygon_t *polygon,
+ const cairo_box_t *limits,
+ int num_limits)
{
+ int n;
+
VG (VALGRIND_MAKE_MEM_UNDEFINED (polygon, sizeof (cairo_polygon_t)));
polygon->status = CAIRO_STATUS_SUCCESS;
@@ -50,18 +55,8 @@ _cairo_polygon_init (cairo_polygon_t *polygon)
polygon->edges = polygon->edges_embedded;
polygon->edges_size = ARRAY_LENGTH (polygon->edges_embedded);
- polygon->num_limits = 0;
-
polygon->extents.p1.x = polygon->extents.p1.y = INT32_MAX;
polygon->extents.p2.x = polygon->extents.p2.y = INT32_MIN;
-}
-
-void
-_cairo_polygon_limit (cairo_polygon_t *polygon,
- const cairo_box_t *limits,
- int num_limits)
-{
- int n;
polygon->limits = limits;
polygon->num_limits = num_limits;
diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c
index 61944c04..ca7a0518 100644
--- a/src/cairo-surface-fallback.c
+++ b/src/cairo-surface-fallback.c
@@ -1067,8 +1067,7 @@ _cairo_surface_fallback_stroke (cairo_surface_t *surface,
if (unlikely (status))
return status;
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
_cairo_traps_init (&traps);
_cairo_traps_limit (&traps, clip_boxes, num_boxes);
@@ -1163,8 +1162,7 @@ _cairo_surface_fallback_fill (cairo_surface_t *surface,
_cairo_traps_init (&traps);
_cairo_traps_limit (&traps, clip_boxes, num_boxes);
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
if (_cairo_path_fixed_fill_is_empty (path))
goto DO_TRAPS;
diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c
index 1ec63ca6..f7128181 100644
--- a/src/cairo-xcb-surface-render.c
+++ b/src/cairo-xcb-surface-render.c
@@ -3382,8 +3382,7 @@ _cairo_xcb_surface_render_stroke_as_polygon (cairo_xcb_surface_t *dst,
cairo_polygon_t polygon;
cairo_status_t status;
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_stroke_to_polygon (path,
stroke_style,
@@ -3582,8 +3581,7 @@ _cairo_xcb_surface_render_fill_as_polygon (cairo_xcb_surface_t *dst,
cairo_polygon_t polygon;
cairo_status_t status;
- _cairo_polygon_init (&polygon);
- _cairo_polygon_limit (&polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &polygon);
if (likely (status == CAIRO_STATUS_SUCCESS)) {
diff --git a/src/cairoint.h b/src/cairoint.h
index 91254280..0ee4477e 100644
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -1982,12 +1982,9 @@ _cairo_pen_find_active_ccw_vertex_index (const cairo_pen_t *pen,
/* cairo-polygon.c */
cairo_private void
-_cairo_polygon_init (cairo_polygon_t *polygon);
-
-cairo_private void
-_cairo_polygon_limit (cairo_polygon_t *polygon,
- const cairo_box_t *boxes,
- int num_boxes);
+_cairo_polygon_init (cairo_polygon_t *polygon,
+ const cairo_box_t *boxes,
+ int num_boxes);
cairo_private void
_cairo_polygon_fini (cairo_polygon_t *polygon);
diff --git a/src/drm/cairo-drm-i915-surface.c b/src/drm/cairo-drm-i915-surface.c
index 373e6749..247d8ad5 100644
--- a/src/drm/cairo-drm-i915-surface.c
+++ b/src/drm/cairo-drm-i915-surface.c
@@ -1938,8 +1938,7 @@ i915_surface_fill_with_alpha (void *abstract_dst,
goto CLEANUP_BOXES;
}
- _cairo_polygon_init (&info.polygon);
- _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &info.polygon);
if (unlikely (status))
@@ -2280,8 +2279,7 @@ i915_surface_stroke (void *abstract_dst,
goto CLEANUP_BOXES;
}
- _cairo_polygon_init (&info.polygon);
- _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_stroke_to_polygon (path,
stroke_style,
diff --git a/src/drm/cairo-drm-i965-surface.c b/src/drm/cairo-drm-i965-surface.c
index c3618a32..39478362 100644
--- a/src/drm/cairo-drm-i965-surface.c
+++ b/src/drm/cairo-drm-i965-surface.c
@@ -1343,8 +1343,7 @@ i965_surface_stroke (void *abstract_dst,
goto CLEANUP_BOXES;
}
- _cairo_polygon_init (&info.polygon);
- _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_stroke_to_polygon (path,
stroke_style,
@@ -1451,8 +1450,7 @@ i965_surface_fill (void *abstract_dst,
goto CLEANUP_BOXES;
}
- _cairo_polygon_init (&info.polygon);
- _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes);
+ _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes);
status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &info.polygon);
if (unlikely (status))