haiku/headers/os/interface/Polygon.h
Stephan Aßmus 11c5023a77 Applied patch by Stephen Deken:
* Added a new class BAffineTransform, currently in the BPrivate namespace
  and the inofficial "shared kit".
* Extended BPolygon to be transformable by a BAffineTransform.

Thanks a lot!

Minor fixes by myself:
* The class accidentally still derived from agg::trans_affine.
* Added then missing comparator operators.
* Swapped the BPoint* and count arguments of Apply(), since that seems
  to be the more common order in the other Be API.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28176 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 19:10:10 +00:00

52 lines
1.2 KiB
C++

/*
* Copyright 2001-2007, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Marc Flerackers, mflerackers@androme.be
*/
#ifndef _POLYGON_H
#define _POLYGON_H
#include <BeBuild.h>
#include <InterfaceDefs.h>
#include <Rect.h>
namespace BPrivate { class BAffineTransform; }
using namespace BPrivate;
class BPolygon {
public:
BPolygon(const BPoint *ptArray, int32 numPoints);
BPolygon(const BPolygon *polygon);
BPolygon();
virtual ~BPolygon();
BPolygon &operator=(const BPolygon &from);
BRect Frame() const;
void AddPoints(const BPoint *ptArray, int32 numPoints);
int32 CountPoints() const;
void MapTo(BRect srcRect, BRect dstRect);
void PrintToStream() const;
void Transform(const BAffineTransform& transform);
BPolygon& TransformBySelf(const BAffineTransform& transform);
BPolygon* TransformByCopy(const BAffineTransform& transform) const;
private:
friend class BView;
void _ComputeBounds();
void _MapPoint(BPoint *point, BRect srcRect, BRect dstRect);
void _MapRectangle(BRect *rect, BRect srcRect, BRect dstRect);
private:
BRect fBounds;
uint32 fCount;
BPoint *fPoints;
};
#endif // _POLYGON_H_