00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __GD_TrimQuadTree_h__
00024 #define __GD_TrimQuadTree_h__
00025
00026 #include "GD_API.h"
00027 #include <UT/UT_Defines.h>
00028
00029 class UT_Vector2;
00030 class UT_BoundingRect;
00031 class GD_TrimLoop;
00032 class GD_TrimQuadBaseNode;
00033
00034 class GD_API GD_TrimQuadTree {
00035 public:
00036 GD_TrimQuadTree(const GD_TrimLoop &loops, const UT_BoundingRect &rect);
00037 ~GD_TrimQuadTree();
00038
00039
00040
00041
00042
00043
00044 enum GD_TrimState { GD_TRIM_OUT, GD_TRIM_IN, GD_TRIM_MIX };
00045
00046
00047 int isTrimmedIn(const UT_Vector2 &pt);
00048 int isTrimmedIn(float u, float v);
00049
00050
00051
00052 GD_TrimState isTrimmedOut(const UT_BoundingRect &rect);
00053 GD_TrimState isTrimmedOut(float u0, float u1, float v0, float v1);
00054
00055 private:
00056 float myUStart, myULength, myUConversion;
00057 float myVStart, myVLength, myVConversion;
00058 GD_TrimQuadBaseNode *myNodes;
00059 GD_TrimQuadBaseNode *myCachedNode;
00060 GD_TrimLoop *myLoops;
00061 };
00062
00063 #endif