/* * Copyright 2001-2009, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _POLYGON_H #define _POLYGON_H #include #include //namespace BPrivate { class BAffineTransform; } //using namespace BPrivate; class BPolygon { public: BPolygon(const BPoint* points, int32 count); BPolygon(const BPolygon& other); BPolygon(const BPolygon* other); BPolygon(); virtual ~BPolygon(); BPolygon& operator=(const BPolygon& other); BRect Frame() const; void AddPoints(const BPoint* points, int32 count); int32 CountPoints() const; void MapTo(BRect source, BRect destination); void PrintToStream() const; // void TransformBy(const BAffineTransform& transform); // BPolygon& TransformBySelf( // const BAffineTransform& transform); // BPolygon TransformByCopy( // const BAffineTransform& transform) const; private: friend class BView; bool _AddPoints(const BPoint* points, int32 count, bool computeBounds); void _ComputeBounds(); void _MapPoint(BPoint* point, const BRect& source, const BRect& destination); void _MapRectangle(BRect* rect, const BRect& source, const BRect& destination); private: BRect fBounds; uint32 fCount; BPoint* fPoints; }; #endif // _POLYGON_H