diff options
Diffstat (limited to 'common/rfb')
-rw-r--r-- | common/rfb/Region.cxx | 70 |
1 files changed, 45 insertions, 25 deletions
diff --git a/common/rfb/Region.cxx b/common/rfb/Region.cxx index cfdf0ca2..cf80fc6f 100644 --- a/common/rfb/Region.cxx +++ b/common/rfb/Region.cxx @@ -28,93 +28,112 @@ extern "C" { #include <pixman.h> } -static rfb::LogWriter vlog("Region"); +using namespace rfb; -rfb::Region::Region() { +static LogWriter vlog("Region"); + +Region::Region() +{ rgn = new struct pixman_region16; pixman_region_init(rgn); } -rfb::Region::Region(const Rect& r) { +Region::Region(const Rect& r) +{ rgn = new struct pixman_region16; pixman_region_init_rect(rgn, r.tl.x, r.tl.y, r.width(), r.height()); } -rfb::Region::Region(const rfb::Region& r) { +Region::Region(const Region& r) +{ rgn = new struct pixman_region16; pixman_region_init(rgn); pixman_region_copy(rgn, r.rgn); } -rfb::Region::~Region() { +Region::~Region() +{ pixman_region_fini(rgn); delete rgn; } -rfb::Region& rfb::Region::operator=(const rfb::Region& r) { +Region& Region::operator=(const Region& r) +{ pixman_region_copy(rgn, r.rgn); return *this; } -void rfb::Region::clear() { +void Region::clear() +{ // pixman_region_clear() isn't available on some older systems pixman_region_fini(rgn); pixman_region_init(rgn); } -void rfb::Region::reset(const Rect& r) { +void Region::reset(const Rect& r) +{ pixman_region_fini(rgn); pixman_region_init_rect(rgn, r.tl.x, r.tl.y, r.width(), r.height()); } -void rfb::Region::translate(const Point& delta) { +void Region::translate(const Point& delta) +{ pixman_region_translate(rgn, delta.x, delta.y); } -void rfb::Region::assign_intersect(const rfb::Region& r) { +void Region::assign_intersect(const Region& r) +{ pixman_region_intersect(rgn, rgn, r.rgn); } -void rfb::Region::assign_union(const rfb::Region& r) { +void Region::assign_union(const Region& r) +{ pixman_region_union(rgn, rgn, r.rgn); } -void rfb::Region::assign_subtract(const rfb::Region& r) { +void Region::assign_subtract(const Region& r) +{ pixman_region_subtract(rgn, rgn, r.rgn); } -rfb::Region rfb::Region::intersect(const rfb::Region& r) const { - rfb::Region ret; +Region Region::intersect(const Region& r) const +{ + Region ret; pixman_region_intersect(ret.rgn, rgn, r.rgn); return ret; } -rfb::Region rfb::Region::union_(const rfb::Region& r) const { - rfb::Region ret; +Region Region::union_(const Region& r) const +{ + Region ret; pixman_region_union(ret.rgn, rgn, r.rgn); return ret; } -rfb::Region rfb::Region::subtract(const rfb::Region& r) const { - rfb::Region ret; +Region Region::subtract(const Region& r) const +{ + Region ret; pixman_region_subtract(ret.rgn, rgn, r.rgn); return ret; } -bool rfb::Region::operator==(const rfb::Region& r) const { +bool Region::operator==(const Region& r) const +{ return pixman_region_equal(rgn, r.rgn); } -bool rfb::Region::operator!=(const rfb::Region& r) const { +bool Region::operator!=(const Region& r) const +{ return !pixman_region_equal(rgn, r.rgn); } -int rfb::Region::numRects() const { +int Region::numRects() const +{ return pixman_region_n_rects(rgn); } -bool rfb::Region::get_rects(std::vector<Rect>* rects, - bool left2right, bool topdown) const +bool Region::get_rects(std::vector<Rect>* rects, + bool left2right, bool topdown) const { int nRects; const pixman_box16_t* boxes; @@ -156,14 +175,15 @@ bool rfb::Region::get_rects(std::vector<Rect>* rects, return !rects->empty(); } -rfb::Rect rfb::Region::get_bounding_rect() const { +Rect Region::get_bounding_rect() const +{ const pixman_box16_t* extents; extents = pixman_region_extents(rgn); return Rect(extents->x1, extents->y1, extents->x2, extents->y2); } -void rfb::Region::debug_print(const char* prefix) const +void Region::debug_print(const char* prefix) const { Rect extents; std::vector<Rect> rects; |