| Index: src/gpu/GrStrokeInfo.h
|
| diff --git a/src/gpu/GrStrokeInfo.h b/src/gpu/GrStrokeInfo.h
|
| deleted file mode 100644
|
| index 9cf7d8302f1388b0490e906945c3a2ea24909769..0000000000000000000000000000000000000000
|
| --- a/src/gpu/GrStrokeInfo.h
|
| +++ /dev/null
|
| @@ -1,191 +0,0 @@
|
| -/*
|
| - * 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 "SkPathEffect.h"
|
| -#include "SkStrokeRec.h"
|
| -#include "SkTemplates.h"
|
| -
|
| -class GrUniqueKey;
|
| -
|
| -/*
|
| - * GrStrokeInfo encapsulates all the pertinent infomation regarding the stroke. The SkStrokeRec
|
| - * which holds information on fill style, width, miter, cap, and join. It also holds information
|
| - * about the dash like intervals, count, and phase.
|
| - */
|
| -class GrStrokeInfo : public SkStrokeRec {
|
| -public:
|
| - static const GrStrokeInfo& FillInfo() {
|
| - static const GrStrokeInfo gFill(kFill_InitStyle);
|
| - return gFill;
|
| - }
|
| -
|
| - GrStrokeInfo(SkStrokeRec::InitStyle style)
|
| - : INHERITED(style)
|
| - , fDashType(SkPathEffect::kNone_DashType) {
|
| - }
|
| -
|
| - GrStrokeInfo(const GrStrokeInfo& src, bool includeDash = true)
|
| - : INHERITED(src) {
|
| - if (includeDash && src.isDashed()) {
|
| - fDashType = src.fDashType;
|
| - fDashPhase = src.fDashPhase;
|
| - fIntervals.reset(src.getDashCount());
|
| - memcpy(fIntervals.get(), src.fIntervals.get(), fIntervals.count() * sizeof(SkScalar));
|
| - } else {
|
| - fDashType = SkPathEffect::kNone_DashType;
|
| - }
|
| - }
|
| -
|
| - GrStrokeInfo(const SkPaint& paint, SkPaint::Style styleOverride)
|
| - : INHERITED(paint, styleOverride)
|
| - , fDashType(SkPathEffect::kNone_DashType) {
|
| - this->init(paint);
|
| - }
|
| -
|
| - explicit GrStrokeInfo(const SkPaint& paint)
|
| - : INHERITED(paint)
|
| - , fDashType(SkPathEffect::kNone_DashType) {
|
| - this->init(paint);
|
| - }
|
| -
|
| - GrStrokeInfo& operator=(const GrStrokeInfo& other) {
|
| - if (other.isDashed()) {
|
| - fDashType = other.fDashType;
|
| - fDashPhase = other.fDashPhase;
|
| - fIntervals.reset(other.getDashCount());
|
| - memcpy(fIntervals.get(), other.fIntervals.get(), fIntervals.count() * sizeof(SkScalar));
|
| - } else {
|
| - this->removeDash();
|
| - }
|
| - this->INHERITED::operator=(other);
|
| - return *this;
|
| - }
|
| -
|
| - bool hasEqualEffect(const GrStrokeInfo& other) const {
|
| - if (this->isDashed() != other.isDashed()) {
|
| - return false;
|
| - }
|
| - if (this->isDashed()) {
|
| - if (fDashPhase != other.fDashPhase ||
|
| - fIntervals.count() != other.fIntervals.count() ||
|
| - memcmp(fIntervals.get(), other.fIntervals.get(),
|
| - fIntervals.count() * sizeof(SkScalar)) != 0) {
|
| - return false;
|
| - }
|
| - }
|
| - return this->INHERITED::hasEqualEffect(other);
|
| - }
|
| -
|
| - /*
|
| - * This functions takes in a patheffect and updates the 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 returns false.
|
| - */
|
| - bool setDashInfo(const SkPathEffect* pe) {
|
| - if (pe && !this->isFillStyle()) {
|
| - SkPathEffect::DashInfo dashInfo;
|
| - fDashType = pe->asADash(&dashInfo);
|
| - if (SkPathEffect::kDash_DashType == fDashType) {
|
| - fIntervals.reset(dashInfo.fCount);
|
| - dashInfo.fIntervals = fIntervals.get();
|
| - pe->asADash(&dashInfo);
|
| - fDashPhase = dashInfo.fPhase;
|
| - return true;
|
| - }
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - /*
|
| - * Like the above, but sets with an explicit SkPathEffect::DashInfo
|
| - */
|
| - bool setDashInfo(const SkPathEffect::DashInfo& info) {
|
| - if (!this->isFillStyle()) {
|
| - fDashType = SkPathEffect::kDash_DashType;
|
| - fDashPhase = info.fPhase;
|
| - fIntervals.reset(info.fCount);
|
| - for (int i = 0; i < fIntervals.count(); i++) {
|
| - fIntervals[i] = info.fIntervals[i];
|
| - }
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - bool isDashed() const {
|
| - return (!this->isFillStyle() && SkPathEffect::kDash_DashType == fDashType);
|
| - }
|
| -
|
| - int32_t getDashCount() const {
|
| - SkASSERT(this->isDashed());
|
| - return fIntervals.count();
|
| - }
|
| -
|
| - SkScalar getDashPhase() const {
|
| - SkASSERT(this->isDashed());
|
| - return fDashPhase;
|
| - }
|
| -
|
| - const SkScalar* getDashIntervals() const {
|
| - SkASSERT(this->isDashed());
|
| - return fIntervals.get();
|
| - }
|
| -
|
| - void removeDash() {
|
| - fDashType = SkPathEffect::kNone_DashType;
|
| - }
|
| -
|
| - /** Applies the dash to a path, if the stroke info has dashing.
|
| - * @return true if the dashing was applied (dst and dstStrokeInfo will be modified).
|
| - * false if the stroke info did not have dashing. The dst and dstStrokeInfo
|
| - * will be unmodified. The stroking in the SkStrokeRec might still
|
| - * be applicable.
|
| - */
|
| - bool applyDashToPath(SkPath* dst, GrStrokeInfo* dstStrokeInfo, const SkPath& src) const;
|
| -
|
| - /**
|
| - * Computes the length of the data that will be written by asUniqueKeyFragment() function.
|
| - */
|
| - int computeUniqueKeyFragmentData32Cnt() const {
|
| - const int kSkScalarData32Cnt = sizeof(SkScalar) / sizeof(uint32_t);
|
| - // SkStrokeRec data: 32 bits for style+join+cap and 2 scalars for miter and width.
|
| - int strokeKeyData32Cnt = 1 + 2 * kSkScalarData32Cnt;
|
| -
|
| - if (this->isDashed()) {
|
| - // One scalar for dash phase and one for each dash value.
|
| - strokeKeyData32Cnt += (1 + this->getDashCount()) * kSkScalarData32Cnt;
|
| - }
|
| - return strokeKeyData32Cnt;
|
| - }
|
| -
|
| - /**
|
| - * Writes the object contents as uint32_t data, to be used with GrUniqueKey.
|
| - * Note: the data written does not encode the length, so care must be taken to ensure
|
| - * that the full unique key data is encoded properly. For example, GrStrokeInfo
|
| - * fragment can be placed last in the sequence, at fixed index.
|
| - */
|
| - void asUniqueKeyFragment(uint32_t*) const;
|
| -
|
| -private:
|
| - // Prevent accidental usage, should use GrStrokeInfo::hasEqualEffect.
|
| - bool hasEqualEffect(const SkStrokeRec& other) const;
|
| -
|
| - void init(const SkPaint& paint) {
|
| - const SkPathEffect* pe = paint.getPathEffect();
|
| - this->setDashInfo(pe);
|
| - }
|
| -
|
| - SkPathEffect::DashType fDashType;
|
| - SkScalar fDashPhase;
|
| - SkAutoSTArray<2, SkScalar> fIntervals;
|
| - typedef SkStrokeRec INHERITED;
|
| -};
|
| -
|
| -#endif
|
|
|