diff options
author | mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-09 01:26:07 +0000 |
---|---|---|
committer | mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-09 01:26:07 +0000 |
commit | e012e0a3414e8ab93dc90fd139256f2a71fc6f9f (patch) | |
tree | e3863c2f85527859adf4b7eda2938c22f0842dda /src | |
parent | 620aebb4d7a62a8036031f33574eb72c52f7a2eb (diff) |
privatize SkEdgeClipper.h
git-svn-id: http://skia.googlecode.com/svn/trunk@5027 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkEdgeClipper.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/SkEdgeClipper.h b/src/core/SkEdgeClipper.h new file mode 100644 index 0000000000..a7eedd571e --- /dev/null +++ b/src/core/SkEdgeClipper.h @@ -0,0 +1,51 @@ + +/* + * Copyright 2009 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkEdgeClipper_DEFINED +#define SkEdgeClipper_DEFINED + +#include "SkPath.h" + +/** This is basically an iterator. It is initialized with an edge and a clip, + and then next() is called until it returns kDone_Verb. + */ +class SkEdgeClipper { +public: + bool clipQuad(const SkPoint pts[3], const SkRect& clip); + bool clipCubic(const SkPoint pts[4], const SkRect& clip); + + SkPath::Verb next(SkPoint pts[]); + +private: + SkPoint* fCurrPoint; + SkPath::Verb* fCurrVerb; + + enum { + kMaxVerbs = 13, + kMaxPoints = 32 + }; + SkPoint fPoints[kMaxPoints]; + SkPath::Verb fVerbs[kMaxVerbs]; + + void clipMonoQuad(const SkPoint srcPts[3], const SkRect& clip); + void clipMonoCubic(const SkPoint srcPts[4], const SkRect& clip); + void appendVLine(SkScalar x, SkScalar y0, SkScalar y1, bool reverse); + void appendQuad(const SkPoint pts[3], bool reverse); + void appendCubic(const SkPoint pts[4], bool reverse); +}; + +#ifdef SK_DEBUG + void sk_assert_monotonic_x(const SkPoint pts[], int count); + void sk_assert_monotonic_y(const SkPoint pts[], int count); +#else + #define sk_assert_monotonic_x(pts, count) + #define sk_assert_monotonic_y(pts, count) +#endif + +#endif |