2 // Origin: Martin Michlmayr <tbm@cyrius.com>
7 typedef unsigned char uint8_t;
9 typedef long unsigned int size_t;
20 struct iClipper2D:public virtual iBase
23 template < class Class > class scfImplementation:public virtual iBase
26 template < class Class, class I1 > class scfImplementation1:public
27 scfImplementation < Class >,
31 class csClipper:public scfImplementation1 < csClipper, iClipper2D >
34 class csBoxClipper:public csClipper
37 virtual uint8 Clip (csVector2 * InPolygon, size_t InCount,
38 csVector2 * OutPolygon, size_t & OutCount);
40 struct StatusOutputNone
45 template < typename BoxTest, typename StatusOutput > class BoxClipper
49 const csBox2 & region;
54 public: BoxClipper (const BoxTest & boxTest, const StatusOutput & statOut,
55 const csBox2 & region, csVector2 * InP, size_t InV,
56 csVector2 * OutP):boxTest (boxTest), statOut (statOut),
57 region (region), InP (InP), InV (InV), OutP (OutP), OutV (-1)
62 __builtin_memcpy (this->OutP, InP, OutV * sizeof (csVector2));
70 csBoxClipper::Clip (csVector2 * InPolygon, size_t InCount,
71 csVector2 * OutPolygon, size_t & OutCount)
75 CS::BoxClipper < BoxTestAll, StatusOutputNone > boxClip (b, n, region,
78 uint8 Clipped = boxClip.Clip ();