Chromium Code Reviews| Index: src/gpu/GrStrokeInfo.h |
| diff --git a/src/gpu/GrStrokeInfo.h b/src/gpu/GrStrokeInfo.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b3045847c1113e24b3f21254bd142ee66adf3b46 |
| --- /dev/null |
| +++ b/src/gpu/GrStrokeInfo.h |
| @@ -0,0 +1,79 @@ |
| +/* |
| + * Copyright 2014 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef GrStrokeInfo_DEFINED |
| +#define GrStrokeInfo_DEFINED |
| + |
| +#include "SkStrokeRec.h" |
| +#include "SkPathEffect.h" |
| + |
| +/* |
| + * GrStrokeInfo encapsulates the data objects that hold all the pertinent infomation |
| + * regarding the stroke. The two objects are SkStrokeRec which holds information on fill style, |
| + * width, miter, cap, and join. The second object is DashInfo. This holds information about the |
| + * dash like intervals, count, and phase. |
| + */ |
| +class GrStrokeInfo { |
| +public: |
| + GrStrokeInfo(SkStrokeRec::InitStyle style) : |
| + fStroke(style), fDashType(SkPathEffect::kNone_DashType) {} |
| + |
| + GrStrokeInfo(const GrStrokeInfo& src, bool includeDash = true) : fStroke(src.fStroke) { |
| + if (includeDash) { |
| + 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
|
| + fDashType = src.fDashType; |
| + } else { |
| + fDashType = SkPathEffect::kNone_DashType; |
| + } |
| + } |
| + |
| + explicit GrStrokeInfo(const SkPaint& paint) : |
| + 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
|
| + |
| + const SkStrokeRec& getStrokeRec() const { return fStroke; } |
| + |
| + SkStrokeRec* getStrokeRecPtr() { return &fStroke; } |
| + |
| + void setFillStyle() { fStroke.setFillStyle(); } |
| + |
| + /* |
| + * This functions takes in a patheffect and fills in fDashInfo with the various dashing |
| + * information if the path effect is a Dash type. Returns true if the path effect is a |
| + * dashed effect and we are stroking, otherwise it retruns false. |
| + */ |
| + bool setDashInfo(const SkPathEffect* pe) { |
| + if (NULL != pe && !fStroke.isFillStyle()) { |
| + fDashInfo.fIntervals = NULL; |
| + fDashType = pe->asADash(&fDashInfo); |
| + if (SkPathEffect::kDash_DashType == fDashType) { |
| + fIntervals.reset(fDashInfo.fCount); |
| + fDashInfo.fIntervals = fIntervals.get(); |
| + pe->asADash(&fDashInfo); |
| + return true; |
| + } |
| + } |
| + return false; |
| + } |
| + |
| + bool isDashed() const { |
| + return (!fStroke.isFillStyle() && SkPathEffect::kDash_DashType == fDashType); |
| + } |
| + |
| + int32_t dashCount() const { |
| + return fDashInfo.fCount; |
| + } |
| + |
| + const SkPathEffect::DashInfo& getDashInfo() const { return fDashInfo; } |
| + |
| +private: |
| + SkStrokeRec fStroke; |
| + SkPathEffect::DashType fDashType; |
| + SkPathEffect::DashInfo fDashInfo; |
| + 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
|
| +}; |
| + |
| +#endif |