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

Side by Side Diff: skia/sgl/SkPathEffect.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/sgl/SkPath.cpp ('k') | skia/sgl/SkPathMeasure.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/sgl/SkPathEffect.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 "SkPathEffect.h"
19 #include "SkPath.h"
20 #include "SkBuffer.h"
21
22 //////////////////////////////////////////////////////////////////////////////// //
23
24 SkPairPathEffect::SkPairPathEffect(SkPathEffect* pe0, SkPathEffect* pe1)
25 : fPE0(pe0), fPE1(pe1)
26 {
27 SkASSERT(pe0);
28 SkASSERT(pe1);
29 fPE0->ref();
30 fPE1->ref();
31 }
32
33 SkPairPathEffect::~SkPairPathEffect()
34 {
35 fPE0->unref();
36 fPE1->unref();
37 }
38
39 /*
40 Format: [oe0-factory][pe1-factory][pe0-size][pe0-data][pe1-data]
41 */
42 void SkPairPathEffect::flatten(SkFlattenableWriteBuffer& buffer)
43 {
44 buffer.writeFlattenable(fPE0);
45 buffer.writeFlattenable(fPE1);
46 }
47
48 SkPairPathEffect::SkPairPathEffect(SkFlattenableReadBuffer& buffer)
49 {
50 fPE0 = (SkPathEffect*)buffer.readFlattenable();
51 fPE1 = (SkPathEffect*)buffer.readFlattenable();
52 }
53
54 //////////////////////////////////////////////////////////////////////////////// //
55
56 bool SkComposePathEffect::filterPath(SkPath* dst, const SkPath& src, SkScalar* w idth)
57 {
58 SkPath tmp;
59 const SkPath* ptr = &src;
60
61 if (fPE1->filterPath(&tmp, src, width))
62 ptr = &tmp;
63 return fPE0->filterPath(dst, *ptr, width);
64 }
65
66 //////////////////////////////////////////////////////////////////////////////// //
67
68 bool SkSumPathEffect::filterPath(SkPath* dst, const SkPath& src, SkScalar* width )
69 {
70 // use bit-or so that we always call both, even if the first one succeeds
71 return fPE0->filterPath(dst, src, width) | fPE1->filterPath(dst, src, width );
72 }
73
74 //////////////////////////////////////////////////////////////////////////////// /
75
76 #include "SkStroke.h"
77
78 SkStrokePathEffect::SkStrokePathEffect(const SkPaint& paint)
79 : fWidth(paint.getStrokeWidth()), fMiter(paint.getStrokeMiter()),
80 fStyle(SkToU8(paint.getStyle())), fJoin(SkToU8(paint.getStrokeJoin())), fC ap(SkToU8(paint.getStrokeCap()))
81 {
82 }
83
84 SkStrokePathEffect::SkStrokePathEffect(SkScalar width, SkPaint::Style style, SkP aint::Join join, SkPaint::Cap cap, SkScalar miter)
85 : fWidth(width), fMiter(miter), fStyle(SkToU8(style)), fJoin(SkToU8(join)), fCap(SkToU8(cap))
86 {
87 if (miter < 0) // signal they want the default
88 fMiter = SK_DefaultMiterLimit;
89 }
90
91 bool SkStrokePathEffect::filterPath(SkPath* dst, const SkPath& src, SkScalar* wi dth)
92 {
93 if (fWidth < 0 || fStyle == SkPaint::kFill_Style)
94 return false;
95
96 if (fStyle == SkPaint::kStroke_Style && fWidth == 0) // hairline
97 {
98 *width = 0;
99 return true;
100 }
101
102 SkStroke stroke;
103
104 stroke.setWidth(fWidth);
105 stroke.setMiterLimit(fMiter);
106 stroke.setJoin((SkPaint::Join)fJoin);
107 stroke.setCap((SkPaint::Cap)fCap);
108 stroke.setDoFill(fStyle == SkPaint::kStrokeAndFill_Style);
109
110 stroke.strokePath(src, dst);
111 return true;
112 }
113
114 SkFlattenable::Factory SkStrokePathEffect::getFactory()
115 {
116 return CreateProc;
117 }
118
119 SkFlattenable* SkStrokePathEffect::CreateProc(SkFlattenableReadBuffer& buffer)
120 {
121 return SkNEW_ARGS(SkStrokePathEffect, (buffer));
122 }
123
124 void SkStrokePathEffect::flatten(SkFlattenableWriteBuffer& buffer)
125 {
126 buffer.writeScalar(fWidth);
127 buffer.writeScalar(fMiter);
128 buffer.write8(fStyle);
129 buffer.write8(fJoin);
130 buffer.write8(fCap);
131 }
132
133 SkStrokePathEffect::SkStrokePathEffect(SkFlattenableReadBuffer& buffer)
134 {
135 fWidth = buffer.readScalar();
136 fMiter = buffer.readScalar();
137 fStyle = buffer.readU8();
138 fJoin = buffer.readU8();
139 fCap = buffer.readU8();
140 }
141
142
OLDNEW
« no previous file with comments | « skia/sgl/SkPath.cpp ('k') | skia/sgl/SkPathMeasure.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698