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

Side by Side Diff: src/gpu/GrStrokeInfo.h

Issue 311183002: Push dash checks into GrContext. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Move intervals into GrStrokeInfo and NITS Created 6 years, 6 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
« no previous file with comments | « src/gpu/GrDistanceFieldTextContext.cpp ('k') | src/gpu/SkGpuDevice.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 /*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef GrStrokeInfo_DEFINED
9 #define GrStrokeInfo_DEFINED
10
11 #include "SkStrokeRec.h"
12 #include "SkPathEffect.h"
13
14 /*
15 * GrStrokeInfo encapsulates the data objects that hold all the pertinent infoma tion
16 * regarding the stroke. The two objects are SkStrokeRec which holds information on fill style,
17 * width, miter, cap, and join. The second object is DashInfo. This holds inform ation about the
18 * dash like intervals, count, and phase.
19 */
20 class GrStrokeInfo {
21 public:
22 GrStrokeInfo(SkStrokeRec::InitStyle style) :
23 fStroke(style), fDashType(SkPathEffect::kNone_DashType) {}
24
25 GrStrokeInfo(const GrStrokeInfo& src, bool includeDash = true) : fStroke(src .fStroke) {
26 if (includeDash) {
27 fDashInfo = src.fDashInfo;
bsalomon 2014/06/05 20:43:32 Don't you have to copy the intervals here?
egdaniel 2014/06/05 21:12:09 Ah yes missed that. Fixed now
28 fDashType = src.fDashType;
29 } else {
30 fDashType = SkPathEffect::kNone_DashType;
31 }
32 }
33
34 explicit GrStrokeInfo(const SkPaint& paint) :
35 fStroke(paint), fDashType(SkPathEffect::kNone_DashType) {}
bsalomon 2014/06/05 20:43:32 Do we use this ctor? It seems weird that paint has
egdaniel 2014/06/05 21:12:09 This is the main ctor. It is now set up to call se
36
37 const SkStrokeRec& getStrokeRec() const { return fStroke; }
38
39 SkStrokeRec* getStrokeRecPtr() { return &fStroke; }
40
41 void setFillStyle() { fStroke.setFillStyle(); }
42
43 /*
44 * This functions takes in a patheffect and fills in fDashInfo with the vari ous dashing
45 * information if the path effect is a Dash type. Returns true if the path e ffect is a
46 * dashed effect and we are stroking, otherwise it retruns false.
47 */
48 bool setDashInfo(const SkPathEffect* pe) {
49 if (NULL != pe && !fStroke.isFillStyle()) {
50 fDashInfo.fIntervals = NULL;
51 fDashType = pe->asADash(&fDashInfo);
52 if (SkPathEffect::kDash_DashType == fDashType) {
53 fIntervals.reset(fDashInfo.fCount);
54 fDashInfo.fIntervals = fIntervals.get();
55 pe->asADash(&fDashInfo);
56 return true;
57 }
58 }
59 return false;
60 }
61
62 bool isDashed() const {
63 return (!fStroke.isFillStyle() && SkPathEffect::kDash_DashType == fDashT ype);
64 }
65
66 int32_t dashCount() const {
67 return fDashInfo.fCount;
68 }
69
70 const SkPathEffect::DashInfo& getDashInfo() const { return fDashInfo; }
71
72 private:
73 SkStrokeRec fStroke;
74 SkPathEffect::DashType fDashType;
75 SkPathEffect::DashInfo fDashInfo;
76 SkAutoSTArray<2, SkScalar> fIntervals;
bsalomon 2014/06/05 20:43:32 This can use true for the third MEM_COPY template
egdaniel 2014/06/05 21:12:09 Using AutoSTArray not STArray so there is no third
77 };
78
79 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrDistanceFieldTextContext.cpp ('k') | src/gpu/SkGpuDevice.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698