diff --git a/src/Makefile.sources b/src/Makefile.sources index 7305995e2..c1df770cc 100644 --- a/src/Makefile.sources +++ b/src/Makefile.sources @@ -78,7 +78,6 @@ cairo_private = \ cairo-path-private.h \ cairo-private.h \ cairo-reference-count-private.h \ - cairo-region-private.h \ cairo-scaled-font-private.h \ cairo-skiplist-private.h \ cairo-spans-private.h \ diff --git a/src/cairo-analysis-surface.c b/src/cairo-analysis-surface.c index d7d950a7a..feaa9d30e 100644 --- a/src/cairo-analysis-surface.c +++ b/src/cairo-analysis-surface.c @@ -38,7 +38,6 @@ #include "cairo-analysis-surface-private.h" #include "cairo-paginated-private.h" -#include "cairo-region-private.h" #include "cairo-meta-surface-private.h" typedef struct { diff --git a/src/cairo-clip-private.h b/src/cairo-clip-private.h index b1a9d1af4..4229e4fb9 100644 --- a/src/cairo-clip-private.h +++ b/src/cairo-clip-private.h @@ -40,7 +40,6 @@ #include "cairo-compiler-private.h" #include "cairo-path-fixed-private.h" #include "cairo-reference-count-private.h" -#include "cairo-region-private.h" extern const cairo_private cairo_rectangle_list_t _cairo_rectangles_nil; diff --git a/src/cairo-region-private.h b/src/cairo-region-private.h deleted file mode 100644 index c9b2ae1c0..000000000 --- a/src/cairo-region-private.h +++ /dev/null @@ -1,128 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_REGION_PRIVATE_H -#define CAIRO_REGION_PRIVATE_H - -#include "cairo-compiler-private.h" -#include "cairo-types-private.h" - -#include - -CAIRO_BEGIN_DECLS - -/* #cairo_region_t is defined in cairoint.h */ - -struct _cairo_region { - cairo_status_t status; - - pixman_region32_t rgn; -}; - -typedef enum _cairo_region_overlap { - CAIRO_REGION_OVERLAP_IN, /* completely inside region */ - CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ - CAIRO_REGION_OVERLAP_PART, /* partly inside region */ -} cairo_region_overlap_t; - -cairo_private cairo_region_t * -cairo_region_create (void); - -cairo_private cairo_region_t * -cairo_region_create_rect (cairo_rectangle_int_t *rect); - -cairo_private cairo_status_t -cairo_region_status (cairo_region_t *region); - -cairo_private void -cairo_region_clear (cairo_region_t *region); - -cairo_private cairo_region_t * -cairo_region_create_rectangles (cairo_rectangle_int_t *rects, - int count); - -cairo_private void -cairo_region_destroy (cairo_region_t *region); - -cairo_private cairo_region_t * -cairo_region_copy (cairo_region_t *original); - -cairo_private int -cairo_region_num_rectangles (cairo_region_t *region); - -cairo_private void -cairo_region_get_rectangle (cairo_region_t *region, - int nth_rectangle, - cairo_rectangle_int_t *rectangle); - -cairo_private void -cairo_region_get_extents (cairo_region_t *region, - cairo_rectangle_int_t *extents); - -cairo_private cairo_status_t -cairo_region_subtract (cairo_region_t *dst, - cairo_region_t *other); - -cairo_private cairo_status_t -cairo_region_intersect (cairo_region_t *dst, - cairo_region_t *other); - -cairo_private cairo_status_t -cairo_region_union (cairo_region_t *dst, - cairo_region_t *other); - -cairo_private cairo_status_t -cairo_region_union_rect (cairo_region_t *dst, - cairo_rectangle_int_t *rect); - -cairo_private cairo_bool_t -cairo_region_empty (cairo_region_t *region); - -cairo_private void -cairo_region_translate (cairo_region_t *region, - int dx, int dy); - -cairo_private cairo_region_overlap_t -cairo_region_contains_rectangle (cairo_region_t *region, - const cairo_rectangle_int_t *rect); - -cairo_private cairo_bool_t -cairo_region_contains_point (cairo_region_t *region, - int x, int y); - -CAIRO_END_DECLS - -#endif /* CAIRO_REGION_PRIVATE_H */ diff --git a/src/cairo-region.c b/src/cairo-region.c index 59ce0bf8d..5d01d370b 100644 --- a/src/cairo-region.c +++ b/src/cairo-region.c @@ -158,7 +158,7 @@ cairo_region_num_rectangles (cairo_region_t *region) return pixman_region32_n_rects (®ion->rgn); } -cairo_private void +void cairo_region_get_rectangle (cairo_region_t *region, int nth_box, cairo_rectangle_int_t *rect) @@ -246,7 +246,7 @@ cairo_region_intersect (cairo_region_t *dst, cairo_region_t *other) return CAIRO_STATUS_SUCCESS; } -cairo_private cairo_status_t +cairo_status_t cairo_region_union (cairo_region_t *dst, cairo_region_t *other) { @@ -327,7 +327,7 @@ cairo_region_contains_rectangle (cairo_region_t *region, return CAIRO_REGION_OVERLAP_OUT; } -cairo_private cairo_bool_t +cairo_bool_t cairo_region_contains_point (cairo_region_t *region, int x, int y) { diff --git a/src/cairo-types-private.h b/src/cairo-types-private.h index f07542619..bb62351da 100644 --- a/src/cairo-types-private.h +++ b/src/cairo-types-private.h @@ -59,7 +59,6 @@ typedef struct _cairo_output_stream cairo_output_stream_t; typedef struct _cairo_paginated_surface_backend cairo_paginated_surface_backend_t; typedef struct _cairo_path_fixed cairo_path_fixed_t; typedef struct _cairo_rectangle_int16 cairo_glyph_size_t; -typedef struct _cairo_region cairo_region_t; typedef struct _cairo_scaled_font_backend cairo_scaled_font_backend_t; typedef struct _cairo_scaled_font_subsets cairo_scaled_font_subsets_t; typedef struct _cairo_solid_pattern cairo_solid_pattern_t; @@ -218,11 +217,6 @@ typedef struct _cairo_trapezoid { cairo_line_t left, right; } cairo_trapezoid_t; -typedef struct _cairo_rectangle_int { - int x, y; - unsigned int width, height; -} cairo_rectangle_int_t; - typedef struct _cairo_point_int { int x, y; } cairo_point_int_t; diff --git a/src/cairo.h b/src/cairo.h index f359d796c..adf34b974 100644 --- a/src/cairo.h +++ b/src/cairo.h @@ -2349,6 +2349,81 @@ cairo_public void cairo_matrix_transform_point (const cairo_matrix_t *matrix, double *x, double *y); +/* Region functions */ + +typedef struct _cairo_region cairo_region_t; + +typedef struct _cairo_rectangle_int { + int x, y; + unsigned int width, height; +} cairo_rectangle_int_t; + +typedef enum _cairo_region_overlap { + CAIRO_REGION_OVERLAP_IN, /* completely inside region */ + CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ + CAIRO_REGION_OVERLAP_PART, /* partly inside region */ +} cairo_region_overlap_t; + +cairo_public cairo_region_t * +cairo_region_create (void); + +cairo_public cairo_region_t * +cairo_region_create_rect (cairo_rectangle_int_t *rect); + +cairo_public cairo_region_t * +cairo_region_create_rectangles (cairo_rectangle_int_t *rects, + int count); + +cairo_public cairo_region_t * +cairo_region_copy (cairo_region_t *original); + +cairo_public void +cairo_region_destroy (cairo_region_t *region); + +cairo_public cairo_status_t +cairo_region_status (cairo_region_t *region); + +cairo_public void +cairo_region_get_extents (cairo_region_t *region, + cairo_rectangle_int_t *extents); + +cairo_public int +cairo_region_num_rectangles (cairo_region_t *region); + +cairo_public void +cairo_region_get_rectangle (cairo_region_t *region, + int nth_rectangle, + cairo_rectangle_int_t *rectangle); + +cairo_public cairo_bool_t +cairo_region_empty (cairo_region_t *region); + +cairo_public cairo_region_overlap_t +cairo_region_contains_rectangle (cairo_region_t *region, + const cairo_rectangle_int_t *rect); + +cairo_public cairo_bool_t +cairo_region_contains_point (cairo_region_t *region, int x, int y); + +cairo_public void +cairo_region_clear (cairo_region_t *region); + +cairo_public void +cairo_region_translate (cairo_region_t *region, int dx, int dy); + +cairo_public cairo_status_t +cairo_region_subtract (cairo_region_t *dst, cairo_region_t *other); + +cairo_public cairo_status_t +cairo_region_intersect (cairo_region_t *dst, cairo_region_t *other); + +cairo_public cairo_status_t +cairo_region_union (cairo_region_t *dst, cairo_region_t *other); + +cairo_public cairo_status_t +cairo_region_union_rect (cairo_region_t *dst, cairo_rectangle_int_t *rect); + + /* Functions to be used while debugging (not intended for use in production code) */ cairo_public void cairo_debug_reset_static_data (void); diff --git a/src/cairoint.h b/src/cairoint.h index 30273c224..071ac1546 100644 --- a/src/cairoint.h +++ b/src/cairoint.h @@ -2528,7 +2528,11 @@ _cairo_pattern_reset_static_data (void); /* cairo-region.c */ -#include "cairo-region-private.h" +struct _cairo_region { + cairo_status_t status; + + pixman_region32_t rgn; +}; /* cairo-unicode.c */