Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Side by Side Diff: skia/effects/Sk2DPathEffect.cpp

Issue 113827: Remove the remainder of the skia source code from the Chromium repo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « skia/effects/Sk1DPathEffect.cpp ('k') | skia/effects/SkAvoidXfermode.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* libs/graphics/effects/Sk2DPathEffect.cpp
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 ** http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17
18 #include "Sk2DPathEffect.h"
19 #include "SkBlitter.h"
20 #include "SkPath.h"
21 #include "SkScan.h"
22
23 class Sk2DPathEffectBlitter : public SkBlitter {
24 public:
25 Sk2DPathEffectBlitter(Sk2DPathEffect* pe, SkPath* dst)
26 : fPE(pe), fDst(dst)
27 {}
28 virtual void blitH(int x, int y, int count)
29 {
30 fPE->nextSpan(x, y, count, fDst);
31 }
32 private:
33 Sk2DPathEffect* fPE;
34 SkPath* fDst;
35 };
36
37 //////////////////////////////////////////////////////////////////////////////// ////
38
39 Sk2DPathEffect::Sk2DPathEffect(const SkMatrix& mat) : fMatrix(mat)
40 {
41 mat.invert(&fInverse);
42 }
43
44 bool Sk2DPathEffect::filterPath(SkPath* dst, const SkPath& src, SkScalar* width)
45 {
46 Sk2DPathEffectBlitter blitter(this, dst);
47 SkPath tmp;
48 SkRect bounds;
49 SkIRect ir;
50
51 src.transform(fInverse, &tmp);
52 tmp.computeBounds(&bounds, SkPath::kExact_BoundsType);
53 bounds.round(&ir);
54 if (!ir.isEmpty()) {
55 // need to pass a clip to fillpath, required for inverse filltypes,
56 // even though those do not make sense for this patheffect
57 SkRegion clip(ir);
58
59 this->begin(ir, dst);
60 SkScan::FillPath(tmp, clip, &blitter);
61 this->end(dst);
62 }
63 return true;
64 }
65
66 void Sk2DPathEffect::nextSpan(int x, int y, int count, SkPath* path)
67 {
68 const SkMatrix& mat = this->getMatrix();
69 SkPoint src, dst;
70
71 src.set(SkIntToScalar(x) + SK_ScalarHalf, SkIntToScalar(y) + SK_ScalarHalf);
72 do {
73 mat.mapPoints(&dst, &src, 1);
74 this->next(dst, x++, y, path);
75 src.fX += SK_Scalar1;
76 } while (--count > 0);
77 }
78
79 void Sk2DPathEffect::begin(const SkIRect& uvBounds, SkPath* dst) {}
80 void Sk2DPathEffect::next(const SkPoint& loc, int u, int v, SkPath* dst) {}
81 void Sk2DPathEffect::end(SkPath* dst) {}
82
83 ////////////////////////////////////////////////////////////////////////////////
84
85 void Sk2DPathEffect::flatten(SkFlattenableWriteBuffer& buffer)
86 {
87 buffer.writeMul4(&fMatrix, sizeof(fMatrix));
88 }
89
90 Sk2DPathEffect::Sk2DPathEffect(SkFlattenableReadBuffer& buffer)
91 {
92 buffer.read(&fMatrix, sizeof(fMatrix));
93 fMatrix.invert(&fInverse);
94 }
95
96 SkFlattenable::Factory Sk2DPathEffect::getFactory()
97 {
98 return CreateProc;
99 }
100
101 SkFlattenable* Sk2DPathEffect::CreateProc(SkFlattenableReadBuffer& buffer)
102 {
103 return SkNEW_ARGS(Sk2DPathEffect, (buffer));
104 }
105
106
107
OLDNEW
« no previous file with comments | « skia/effects/Sk1DPathEffect.cpp ('k') | skia/effects/SkAvoidXfermode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698