cairomm 1.18.0
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
Cairo::Region Class Reference

A simple graphical data type representing an area of integer-aligned rectangles. More...

#include <cairomm/region.h>

Public Types

enum class  Overlap {
  IN = CAIRO_REGION_OVERLAP_IN ,
  OUT = CAIRO_REGION_OVERLAP_OUT ,
  REGION_OVERLAP_PART = CAIRO_REGION_OVERLAP_PART
}
 
typedef cairo_region_t cobject
 

Public Member Functions

 Region (cairo_region_t *cobject, bool has_reference=false)
 Create a C++ wrapper for the C instance. More...
 
RefPtr< Regioncopy () const
 allocates a new region object copied from the original More...
 
virtual ~Region ()
 
RectangleInt get_extents () const
 Gets the bounding rectangle of the region. More...
 
int get_num_rectangles () const
 Gets the number of rectangles contained in the region. More...
 
RectangleInt get_rectangle (int nth_rectangle) const
 Gets the nth rectangle from the region. More...
 
bool empty () const
 Checks whether the region is empty. More...
 
Overlap contains_rectangle (const RectangleInt & rectangle) const
 Checks whether rectangle is inside, outside, or partially contained in the region. More...
 
bool contains_point (int x, int y) const
 Checks whether (x,y) is contained in the region. More...
 
void translate (int dx, int dy)
 Translates the region by (dx,dy) More...
 
void subtract (const RefPtr< Region > & other)
 Subtracts other from this region. More...
 
void subtract (const RectangleInt & rectangle)
 Subtracts rectangle from this region. More...
 
void intersect (const RefPtr< Region > & other)
 Sets the region to the intersection of this region with other. More...
 
void intersect (const RectangleInt & rectangle)
 Sets the region to the intersection of this region with rectangle. More...
 
void do_union (const RefPtr< Region > & other)
 Sets this region to the union of the region with other. More...
 
void do_union (const RectangleInt & rectangle)
 Sets this region to the union of the region with rectangle. More...
 
void do_xor (const RefPtr< Region > & other)
 Sets this region to the exclusive difference of the region with other. More...
 
void do_xor (const RectangleInt & rectangle)
 Sets this region to the exclusive difference of the region with rectangle. More...
 
cobjectcobj ()
 
const cobjectcobj () const
 
void reference () const
 
void unreference () const
 

Static Public Member Functions

static RefPtr< Regioncreate ()
 Creates an empty Region object. More...
 
static RefPtr< Regioncreate (const RectangleInt & rectangle)
 Creates a Region object containing rectangle. More...
 
static RefPtr< Regioncreate (const std::vector< RectangleInt > & rects)
 Creates a Region object containing the union of all given rects. More...
 
static RefPtr< Regioncreate (const RectangleInt * rects, int count)
 Creates a Region object containing the union of all given rects. More...
 

Protected Attributes

cobjectm_cobject
 

Detailed Description

A simple graphical data type representing an area of integer-aligned rectangles.

They are often used on raster surfaces to track areas of interest, such as change or clip areas

It allows set-theoretical operations like union and intersect to be performed on them.

Since
: 1.10

Member Typedef Documentation

◆ cobject

typedef cairo_region_t Cairo::Region::cobject

Member Enumeration Documentation

◆ Overlap

enum class Cairo::Region::Overlap
strong
Enumerator
IN 

Completely inside region.

OUT 

Completely outside region.

REGION_OVERLAP_PART 

Partly inside region.

Constructor & Destructor Documentation

◆ Region()

Cairo::Region::Region ( cairo_region_t *  cobject,
bool  has_reference = false 
)
explicit

Create a C++ wrapper for the C instance.

This C++ instance should then be given to a RefPtr.

Parameters
cobjectThe C instance.
has_referenceWhether we already have a reference. Otherwise, the constructor will take an extra reference.

◆ ~Region()

virtual Cairo::Region::~Region ( )
virtual

Member Function Documentation

◆ cobj() [1/2]

cobject * Cairo::Region::cobj ( )
inline

◆ cobj() [2/2]

const cobject * Cairo::Region::cobj ( ) const
inline

◆ contains_point()

bool Cairo::Region::contains_point ( int  x,
int  y 
) const

Checks whether (x,y) is contained in the region.

◆ contains_rectangle()

Overlap Cairo::Region::contains_rectangle ( const RectangleInt rectangle) const

Checks whether rectangle is inside, outside, or partially contained in the region.

◆ copy()

RefPtr< Region > Cairo::Region::copy ( ) const

allocates a new region object copied from the original

◆ create() [1/4]

static RefPtr< Region > Cairo::Region::create ( )
static

Creates an empty Region object.

◆ create() [2/4]

static RefPtr< Region > Cairo::Region::create ( const RectangleInt rectangle)
static

Creates a Region object containing rectangle.

◆ create() [3/4]

static RefPtr< Region > Cairo::Region::create ( const RectangleInt rects,
int  count 
)
static

Creates a Region object containing the union of all given rects.

◆ create() [4/4]

static RefPtr< Region > Cairo::Region::create ( const std::vector< RectangleInt > &  rects)
static

Creates a Region object containing the union of all given rects.

◆ do_union() [1/2]

void Cairo::Region::do_union ( const RectangleInt rectangle)

Sets this region to the union of the region with rectangle.

◆ do_union() [2/2]

void Cairo::Region::do_union ( const RefPtr< Region > &  other)

Sets this region to the union of the region with other.

◆ do_xor() [1/2]

void Cairo::Region::do_xor ( const RectangleInt rectangle)

Sets this region to the exclusive difference of the region with rectangle.

That is, the region will contain all areas that are in the original region or in rectangle, but not in both

◆ do_xor() [2/2]

void Cairo::Region::do_xor ( const RefPtr< Region > &  other)

Sets this region to the exclusive difference of the region with other.

That is, the region will contain all areas that are in the original region or in other, but not in both

◆ empty()

bool Cairo::Region::empty ( ) const

Checks whether the region is empty.

◆ get_extents()

RectangleInt Cairo::Region::get_extents ( ) const

Gets the bounding rectangle of the region.

◆ get_num_rectangles()

int Cairo::Region::get_num_rectangles ( ) const

Gets the number of rectangles contained in the region.

◆ get_rectangle()

RectangleInt Cairo::Region::get_rectangle ( int  nth_rectangle) const

Gets the nth rectangle from the region.

◆ intersect() [1/2]

void Cairo::Region::intersect ( const RectangleInt rectangle)

Sets the region to the intersection of this region with rectangle.

◆ intersect() [2/2]

void Cairo::Region::intersect ( const RefPtr< Region > &  other)

Sets the region to the intersection of this region with other.

◆ reference()

void Cairo::Region::reference ( ) const

◆ subtract() [1/2]

void Cairo::Region::subtract ( const RectangleInt rectangle)

Subtracts rectangle from this region.

◆ subtract() [2/2]

void Cairo::Region::subtract ( const RefPtr< Region > &  other)

Subtracts other from this region.

◆ translate()

void Cairo::Region::translate ( int  dx,
int  dy 
)

Translates the region by (dx,dy)

◆ unreference()

void Cairo::Region::unreference ( ) const

Member Data Documentation

◆ m_cobject

cobject* Cairo::Region::m_cobject
protected

The documentation for this class was generated from the following file: