2006-10-31 00:20:38 +03:00
|
|
|
/*
|
2014-07-15 03:02:44 +04:00
|
|
|
* Copyright 2003-2010 Haiku, Inc. All rights reserved.
|
2006-10-31 00:20:38 +03:00
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Axel Dörfler, axeld@pinc-software.de
|
2014-07-15 03:02:44 +04:00
|
|
|
* Adrian Oanca, adioanca@cotty.iren.ro
|
2006-10-31 00:20:38 +03:00
|
|
|
*/
|
|
|
|
#ifndef SHAPE_PRIVATE_H
|
|
|
|
#define SHAPE_PRIVATE_H
|
|
|
|
|
2014-07-15 03:02:44 +04:00
|
|
|
|
Basically, this changeset implements BShape::ArcTo(). In more detail:
* Added BShape::ArcTo() and BShapeIterator::IterateArcTo(), using a previously
unused virtual slot. (Added the symbols for binary compatibility for GCC2
and GCC4.)
* Added operator=(), operator==() and operator!=() to BShape.
* Added BShape::BezierTo() version taking three points, which is sometimes
more convenient.
* Added the four new shape data ops OP_LARGE_ARC_TO_CW, OP_LARGE_ARC_TO_CCW,
OP_SMALL_ARC_TO_CW and OP_SMALL_ARC_TO_CCW. For a single arc, provided the
radius is large enough, there are four possibilities to draw the arc, these
are controlled by the two boolean flags to ArcTo() and mapped to the new
commands accordingly.
* Some style cleanup in Shape.cpp (sorry for mixing it up, but it gets
worse below...)
* Added ShapeTest to src/tests/servers/app.
* Changed the way BShapes are transformed from view to screen space in the
app_server. For arcs, it would be nontrivial to apply a proper transformation,
it's much easier to let AGG take care of it. This affects ServerPicture as
well.
* Wrapped iterating the BShape into try/catch blocks in ShapeIterator. But
I really don't understand the purpose of the class in the first place.
Maybe it can now be dropped, since coordinates don't have to be transformed
in place anymore.
* Refactored copy&paste shape iteration code in Painter. The transformation
to screen space happens there.
* Since RemoteDrawingEngine needed to be adopted anyway, I also updated
it for the new DrawString() with offsets version. But the client still needs
to be adapted.
* Style cleanup in Painter.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35905 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-18 19:58:19 +03:00
|
|
|
#define OP_LINETO 0x10000000
|
|
|
|
#define OP_BEZIERTO 0x20000000
|
|
|
|
#define OP_CLOSE 0x40000000
|
|
|
|
#define OP_MOVETO 0x80000000
|
|
|
|
#define OP_LARGE_ARC_TO_CW 0x01000000
|
|
|
|
#define OP_LARGE_ARC_TO_CCW 0x02000000
|
|
|
|
#define OP_SMALL_ARC_TO_CW 0x04000000
|
|
|
|
#define OP_SMALL_ARC_TO_CCW 0x08000000
|
2006-10-31 00:20:38 +03:00
|
|
|
|
|
|
|
|
|
|
|
struct shape_data {
|
2014-07-15 03:02:44 +04:00
|
|
|
uint32* opList;
|
2006-10-31 00:20:38 +03:00
|
|
|
int32 opCount;
|
|
|
|
int32 opSize;
|
2014-07-15 03:02:44 +04:00
|
|
|
BPoint* ptList;
|
2006-10-31 00:20:38 +03:00
|
|
|
int32 ptCount;
|
|
|
|
int32 ptSize;
|
|
|
|
};
|
|
|
|
|
2014-07-15 03:02:44 +04:00
|
|
|
|
|
|
|
#endif // SHAPE_PRIVATE_H
|