| Index: src/gpu/GrPathRendering.h
|
| diff --git a/src/gpu/GrPathRendering.h b/src/gpu/GrPathRendering.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..863da270c79719c3119255ec905d6c29776af331
|
| --- /dev/null
|
| +++ b/src/gpu/GrPathRendering.h
|
| @@ -0,0 +1,75 @@
|
| +/*
|
| + * 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 GrPathRendering_DEFINED
|
| +#define GrPathRendering_DEFINED
|
| +
|
| +#include "SkPath.h"
|
| +
|
| +class SkStrokeRec;
|
| +class GrPath;
|
| +class GrPathRange;
|
| +class GrGpu;
|
| +
|
| +/**
|
| + * Abstract class wrapping HW path rendering API.
|
| + *
|
| + * The subclasses of this class use the possible HW API to render paths (as opposed to path
|
| + * rendering implemented in Skia on top of a "3d" HW API).
|
| + * The subclasses hold the global state needed to render paths, including shadow of the global HW
|
| + * API state. Similar to GrGpu.
|
| + *
|
| + * It is expected that the lifetimes of GrGpuXX and GrXXPathRendering are the same. The call context
|
| + * interface (eg. * the concrete instance of GrGpu subclass) should be provided to the instance
|
| + * during construction.
|
| + */
|
| +class GrPathRendering {
|
| +public:
|
| + virtual ~GrPathRendering() { }
|
| +
|
| + enum PathTransformType {
|
| + kNone_PathTransformType, //!< []
|
| + kTranslateX_PathTransformType, //!< [kMTransX]
|
| + kTranslateY_PathTransformType, //!< [kMTransY]
|
| + kTranslate_PathTransformType, //!< [kMTransX, kMTransY]
|
| + kAffine_PathTransformType, //!< [kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY]
|
| +
|
| + kLast_PathTransformType = kAffine_PathTransformType
|
| + };
|
| +
|
| + static inline int PathTransformSize(PathTransformType type) {
|
| + switch (type) {
|
| + case kNone_PathTransformType:
|
| + return 0;
|
| + case kTranslateX_PathTransformType:
|
| + case kTranslateY_PathTransformType:
|
| + return 1;
|
| + case kTranslate_PathTransformType:
|
| + return 2;
|
| + case kAffine_PathTransformType:
|
| + return 6;
|
| +
|
| + default:
|
| + SkFAIL("Unknown path transform type");
|
| + return 0;
|
| + }
|
| + }
|
| +
|
| + virtual GrPath* createPath(const SkPath&, const SkStrokeRec&) = 0;
|
| + virtual GrPathRange* createPathRange(size_t size, const SkStrokeRec&) = 0;
|
| + virtual void stencilPath(const GrPath*, SkPath::FillType) = 0;
|
| + virtual void drawPath(const GrPath*, SkPath::FillType) = 0;
|
| + virtual void drawPaths(const GrPathRange*, const uint32_t indices[], int count,
|
| + const float transforms[], PathTransformType, SkPath::FillType) = 0;
|
| +protected:
|
| + GrPathRendering() { }
|
| +
|
| +private:
|
| + GrPathRendering& operator=(const GrPathRendering&);
|
| +};
|
| +
|
| +#endif
|
|
|