1/*
2 * Copyright 2001-2009, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _POLYGON_H
6#define _POLYGON_H
7
8
9#include <InterfaceDefs.h>
10#include <Rect.h>
11
12
13//namespace BPrivate { class BAffineTransform; }
14//using namespace BPrivate;
15
16class BPolygon {
17public:
18								BPolygon(const BPoint* points, int32 count);
19								BPolygon(const BPolygon& other);
20								BPolygon(const BPolygon* other);
21								BPolygon();
22	virtual						~BPolygon();
23
24			BPolygon&			operator=(const BPolygon& other);
25
26			BRect				Frame() const;
27			void				AddPoints(const BPoint* points, int32 count);
28			int32				CountPoints() const;
29			void				MapTo(BRect source, BRect destination);
30			void				PrintToStream() const;
31
32//			void				TransformBy(const BAffineTransform& transform);
33//			BPolygon&			TransformBySelf(
34//									const BAffineTransform& transform);
35//			BPolygon			TransformByCopy(
36//									const BAffineTransform& transform) const;
37
38private:
39	friend class BView;
40
41			bool				_AddPoints(const BPoint* points, int32 count,
42									bool computeBounds);
43			void				_ComputeBounds();
44			void				_MapPoint(BPoint* point, const BRect& source,
45									const BRect& destination);
46			void				_MapRectangle(BRect* rect, const BRect& source,
47									const BRect& destination);
48
49private:
50			BRect				fBounds;
51			uint32				fCount;
52			BPoint*				fPoints;
53};
54
55#endif	// _POLYGON_H
56