diff options
author | Mike Reed <reed@google.com> | 2017-04-03 11:11:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-03 15:50:16 +0000 |
commit | 887cdf112809727c51890ba8b98b3ddce22249f0 (patch) | |
tree | 6ae2774f9ec869f72cf117993eba25c6ef97e28b /src | |
parent | b55dd553124cd00260bc9e3a63ec8a8fe09412a8 (diff) |
move vertex-mode enum into SkVertices
BUG=skia:6366
Change-Id: I3c0bf96cce6d32c9b8d12d16a772aaa6f18981aa
Reviewed-on: https://skia-review.googlesource.com/11062
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkCanvas.cpp | 8 | ||||
-rw-r--r-- | src/core/SkDraw.cpp | 2 | ||||
-rw-r--r-- | src/core/SkDraw.h | 3 | ||||
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 2 | ||||
-rw-r--r-- | src/core/SkVertState.cpp | 8 | ||||
-rw-r--r-- | src/core/SkVertState.h | 4 | ||||
-rw-r--r-- | src/core/SkVertices.cpp | 20 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 8 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.h | 2 | ||||
-rw-r--r-- | src/gpu/SkGr.h | 9 | ||||
-rw-r--r-- | src/gpu/ops/GrDrawVerticesOp.cpp | 2 | ||||
-rw-r--r-- | src/pipe/SkPipeReader.cpp | 30 | ||||
-rw-r--r-- | src/utils/SkDumpCanvas.cpp | 2 | ||||
-rw-r--r-- | src/utils/SkPatchUtils.cpp | 2 | ||||
-rw-r--r-- | src/utils/SkShadowTessellator.cpp | 2 |
15 files changed, 51 insertions, 53 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 030180475d..d20179a290 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -51,6 +51,12 @@ #include "SkClipOpPriv.h" #include "SkVertices.h" +#ifdef SK_SUPPORT_LEGACY_CANVAS_VERTICES +static_assert((int)SkCanvas::kTriangles_VertexMode == (int)SkVertices::kTriangles_VertexMode, ""); +static_assert((int)SkCanvas::kTriangleStrip_VertexMode == (int)SkVertices::kTriangleStrip_VertexMode, ""); +static_assert((int)SkCanvas::kTriangleFan_VertexMode == (int)SkVertices::kTriangleFan_VertexMode, ""); +#endif + #define RETURN_ON_NULL(ptr) do { if (nullptr == (ptr)) return; } while (0) class SkNoPixelsDevice : public SkBaseDevice { @@ -1796,6 +1802,7 @@ void SkCanvas::drawPoints(PointMode mode, size_t count, const SkPoint pts[], con this->onDrawPoints(mode, count, pts, paint); } +#ifdef SK_SUPPORT_LEGACY_CANVAS_VERTICES void SkCanvas::drawVertices(VertexMode vmode, int vertexCount, const SkPoint positions[], const SkPoint texs[], const SkColor colors[], SkBlendMode bmode, const uint16_t indices[], int indexCount, const SkPaint& paint) { @@ -1805,6 +1812,7 @@ void SkCanvas::drawVertices(VertexMode vmode, int vertexCount, const SkPoint pos this->onDrawVerticesObject(vertices.get(), bmode, paint); } } +#endif void SkCanvas::drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint) { diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp index 689e5b7c34..07129f62b3 100644 --- a/src/core/SkDraw.cpp +++ b/src/core/SkDraw.cpp @@ -1943,7 +1943,7 @@ sk_sp<SkShader> MakeTextureShader(const VertState& state, const SkPoint verts[], } // anonymous ns -void SkDraw::drawVertices(SkCanvas::VertexMode vmode, int count, +void SkDraw::drawVertices(SkVertices::VertexMode vmode, int count, const SkPoint vertices[], const SkPoint textures[], const SkColor colors[], SkBlendMode bmode, const uint16_t indices[], int indexCount, diff --git a/src/core/SkDraw.h b/src/core/SkDraw.h index 0b29468d8e..3168735799 100644 --- a/src/core/SkDraw.h +++ b/src/core/SkDraw.h @@ -14,6 +14,7 @@ #include "SkMask.h" #include "SkPaint.h" #include "SkStrokeRec.h" +#include "SkVertices.h" class SkBitmap; class SkClipStack; @@ -68,7 +69,7 @@ public: void drawPosText(const char text[], size_t byteLength, const SkScalar pos[], int scalarsPerPosition, const SkPoint& offset, const SkPaint&, const SkSurfaceProps*) const; - void drawVertices(SkCanvas::VertexMode mode, int count, + void drawVertices(SkVertices::VertexMode mode, int count, const SkPoint vertices[], const SkPoint textures[], const SkColor colors[], SkBlendMode bmode, const uint16_t indices[], int ptCount, diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index e5fc4fd916..51a3da9b0d 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -651,7 +651,7 @@ void SkPicturePlayback::handleOp(SkReadBuffer* reader, case DRAW_VERTICES_RETIRED_03_2017: { const SkPaint* paint = fPictureData->getPaint(reader); DrawVertexFlags flags = (DrawVertexFlags)reader->readInt(); - SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader->readInt(); + SkVertices::VertexMode vmode = (SkVertices::VertexMode)reader->readInt(); int vCount = reader->readInt(); const SkPoint* verts = (const SkPoint*)reader->skip(vCount * sizeof(SkPoint)); const SkPoint* texs = nullptr; diff --git a/src/core/SkVertState.cpp b/src/core/SkVertState.cpp index 7c3047ec40..ef3604d736 100644 --- a/src/core/SkVertState.cpp +++ b/src/core/SkVertState.cpp @@ -92,13 +92,13 @@ bool VertState::TriangleFanX(VertState* state) { return true; } -VertState::Proc VertState::chooseProc(SkCanvas::VertexMode mode) { +VertState::Proc VertState::chooseProc(SkVertices::VertexMode mode) { switch (mode) { - case SkCanvas::kTriangles_VertexMode: + case SkVertices::kTriangles_VertexMode: return fIndices ? TrianglesX : Triangles; - case SkCanvas::kTriangleStrip_VertexMode: + case SkVertices::kTriangleStrip_VertexMode: return fIndices ? TriangleStripX : TriangleStrip; - case SkCanvas::kTriangleFan_VertexMode: + case SkVertices::kTriangleFan_VertexMode: return fIndices ? TriangleFanX : TriangleFan; default: return nullptr; diff --git a/src/core/SkVertState.h b/src/core/SkVertState.h index ab794521b0..89d224ee6e 100644 --- a/src/core/SkVertState.h +++ b/src/core/SkVertState.h @@ -8,7 +8,7 @@ #ifndef SkVertState_DEFINED #define SkVertState_DEFINED -#include "SkCanvas.h" +#include "SkVertices.h" /** \struct VertState This is a helper for drawVertices(). It is used to iterate over the triangles @@ -40,7 +40,7 @@ struct VertState { * Choose an appropriate function to traverse the vertices. * @param mode Specifies the SkCanvas::VertexMode. */ - Proc chooseProc(SkCanvas::VertexMode mode); + Proc chooseProc(SkVertices::VertexMode mode); private: int fCount; diff --git a/src/core/SkVertices.cpp b/src/core/SkVertices.cpp index 297b424e77..83204b54d5 100644 --- a/src/core/SkVertices.cpp +++ b/src/core/SkVertices.cpp @@ -50,7 +50,7 @@ struct SkVertices::Sizes { size_t fISize; }; -SkVertices::Builder::Builder(SkCanvas::VertexMode mode, int vertexCount, int indexCount, +SkVertices::Builder::Builder(VertexMode mode, int vertexCount, int indexCount, uint32_t builderFlags) { bool hasTexs = SkToBool(builderFlags & SkVertices::kHasTexCoords_BuilderFlag); bool hasColors = SkToBool(builderFlags & SkVertices::kHasColors_BuilderFlag); @@ -58,12 +58,22 @@ SkVertices::Builder::Builder(SkCanvas::VertexMode mode, int vertexCount, int ind SkVertices::Sizes(vertexCount, indexCount, hasTexs, hasColors)); } -SkVertices::Builder::Builder(SkCanvas::VertexMode mode, int vertexCount, int indexCount, +SkVertices::Builder::Builder(VertexMode mode, int vertexCount, int indexCount, const SkVertices::Sizes& sizes) { this->init(mode, vertexCount, indexCount, sizes); } -void SkVertices::Builder::init(SkCanvas::VertexMode mode, int vertexCount, int indexCount, +#ifdef SK_SUPPORT_LEGACY_CANVAS_VERTICES +SkVertices::Builder::Builder(SkCanvas::VertexMode mode, int vertexCount, int indexCount, + uint32_t builderFlags) { + bool hasTexs = SkToBool(builderFlags & SkVertices::kHasTexCoords_BuilderFlag); + bool hasColors = SkToBool(builderFlags & SkVertices::kHasColors_BuilderFlag); + this->init(static_cast<VertexMode>(mode), vertexCount, indexCount, + SkVertices::Sizes(vertexCount, indexCount, hasTexs, hasColors)); +} +#endif + +void SkVertices::Builder::init(VertexMode mode, int vertexCount, int indexCount, const SkVertices::Sizes& sizes) { if (!sizes.isValid()) { return; // fVertices will already be null @@ -120,7 +130,7 @@ uint16_t* SkVertices::Builder::indices() { /////////////////////////////////////////////////////////////////////////////////////////////////// -sk_sp<SkVertices> SkVertices::MakeCopy(SkCanvas::VertexMode mode, int vertexCount, +sk_sp<SkVertices> SkVertices::MakeCopy(VertexMode mode, int vertexCount, const SkPoint pos[], const SkPoint texs[], const SkColor colors[], int indexCount, const uint16_t indices[]) { @@ -196,7 +206,7 @@ sk_sp<SkVertices> SkVertices::Decode(const void* data, size_t length) { const int vertexCount = reader.readInt(); const int indexCount = reader.readInt(); - const SkCanvas::VertexMode mode = static_cast<SkCanvas::VertexMode>(packed & kMode_Mask); + const VertexMode mode = static_cast<VertexMode>(packed & kMode_Mask); const bool hasTexs = SkToBool(packed & kHasTexs_Mask); const bool hasColors = SkToBool(packed & kHasColors_Mask); Sizes sizes(vertexCount, indexCount, hasTexs, hasColors); diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 4e16d5965f..11ed637250 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -1586,7 +1586,7 @@ static bool init_vertices_paint(GrContext* context, GrRenderTargetContext* rtc, } } -void SkGpuDevice::wireframeVertices(SkCanvas::VertexMode vmode, int vertexCount, +void SkGpuDevice::wireframeVertices(SkVertices::VertexMode vmode, int vertexCount, const SkPoint vertices[], SkBlendMode bmode, const uint16_t indices[], int indexCount, const SkPaint& paint) { @@ -1607,11 +1607,11 @@ void SkGpuDevice::wireframeVertices(SkCanvas::VertexMode vmode, int vertexCount, int triangleCount = 0; int n = (nullptr == indices) ? vertexCount : indexCount; switch (vmode) { - case SkCanvas::kTriangles_VertexMode: + case SkVertices::kTriangles_VertexMode: triangleCount = n / 3; break; - case SkCanvas::kTriangleStrip_VertexMode: - case SkCanvas::kTriangleFan_VertexMode: + case SkVertices::kTriangleStrip_VertexMode: + case SkVertices::kTriangleFan_VertexMode: triangleCount = n - 2; break; } diff --git a/src/gpu/SkGpuDevice.h b/src/gpu/SkGpuDevice.h index b40eaddcb1..4558c1b17a 100644 --- a/src/gpu/SkGpuDevice.h +++ b/src/gpu/SkGpuDevice.h @@ -230,7 +230,7 @@ private: bool drawDashLine(const SkPoint pts[2], const SkPaint& paint); void drawStrokedLine(const SkPoint pts[2], const SkPaint&); - void wireframeVertices(SkCanvas::VertexMode, int vertexCount, const SkPoint verts[], + void wireframeVertices(SkVertices::VertexMode, int vertexCount, const SkPoint verts[], SkBlendMode, const uint16_t indices[], int indexCount, const SkPaint&); static sk_sp<GrRenderTargetContext> MakeRenderTargetContext(GrContext*, diff --git a/src/gpu/SkGr.h b/src/gpu/SkGr.h index 5a7e1e2cd6..866dcce984 100644 --- a/src/gpu/SkGr.h +++ b/src/gpu/SkGr.h @@ -19,6 +19,7 @@ #include "SkImageInfo.h" #include "SkMatrix.h" #include "SkPM4f.h" +#include "SkVertices.h" #include "SkXfermodePriv.h" class GrCaps; @@ -164,13 +165,13 @@ GrSamplerParams::FilterMode GrSkFilterQualityToGrFilterMode(SkFilterQuality pain ////////////////////////////////////////////////////////////////////////////// -static inline GrPrimitiveType SkVertexModeToGrPrimitiveType(const SkCanvas::VertexMode mode) { +static inline GrPrimitiveType SkVertexModeToGrPrimitiveType(SkVertices::VertexMode mode) { switch (mode) { - case SkCanvas::kTriangles_VertexMode: + case SkVertices::kTriangles_VertexMode: return kTriangles_GrPrimitiveType; - case SkCanvas::kTriangleStrip_VertexMode: + case SkVertices::kTriangleStrip_VertexMode: return kTriangleStrip_GrPrimitiveType; - case SkCanvas::kTriangleFan_VertexMode: + case SkVertices::kTriangleFan_VertexMode: return kTriangleFan_GrPrimitiveType; } SkFAIL("Invalid mode"); diff --git a/src/gpu/ops/GrDrawVerticesOp.cpp b/src/gpu/ops/GrDrawVerticesOp.cpp index 71835dba9e..c67233c9ed 100644 --- a/src/gpu/ops/GrDrawVerticesOp.cpp +++ b/src/gpu/ops/GrDrawVerticesOp.cpp @@ -15,7 +15,7 @@ std::unique_ptr<GrLegacyMeshDrawOp> GrDrawVerticesOp::Make( const SkPoint* positions, int vertexCount, const uint16_t* indices, int indexCount, const uint32_t* colors, const SkPoint* localCoords, const SkRect& bounds, GrRenderTargetContext::ColorArrayType colorArrayType) { - static constexpr SkCanvas::VertexMode kIgnoredMode = SkCanvas::kTriangles_VertexMode; + static constexpr SkVertices::VertexMode kIgnoredMode = SkVertices::kTriangles_VertexMode; SkASSERT(positions); if (!colors) { // When we tessellate we will fill a color array with the GrColor value passed above as diff --git a/src/pipe/SkPipeReader.cpp b/src/pipe/SkPipeReader.cpp index 6310b15bae..974e6b005d 100644 --- a/src/pipe/SkPipeReader.cpp +++ b/src/pipe/SkPipeReader.cpp @@ -17,6 +17,7 @@ #include "SkRSXform.h" #include "SkTextBlob.h" #include "SkTypeface.h" +#include "SkVertices.h" class SkPipeReader; @@ -567,32 +568,9 @@ static void drawImageLattice_handler(SkPipeReader& reader, uint32_t packedVerb, static void drawVertices_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas* canvas) { SkASSERT(SkPipeVerb::kDrawVertices == unpack_verb(packedVerb)); - SkCanvas::VertexMode vmode = (SkCanvas::VertexMode) - ((packedVerb & kVMode_DrawVerticesMask) >> kVMode_DrawVerticesShift); - int vertexCount = packedVerb & kVCount_DrawVerticesMask; - if (0 == vertexCount) { - vertexCount = reader.read32(); - } - SkBlendMode bmode = (SkBlendMode) - ((packedVerb & kXMode_DrawVerticesMask) >> kXMode_DrawVerticesShift); - const SkPoint* vertices = skip<SkPoint>(reader, vertexCount); - const SkPoint* texs = nullptr; - if (packedVerb & kHasTex_DrawVerticesMask) { - texs = skip<SkPoint>(reader, vertexCount); - } - const SkColor* colors = nullptr; - if (packedVerb & kHasColors_DrawVerticesMask) { - colors = skip<SkColor>(reader, vertexCount); - } - int indexCount = 0; - const uint16_t* indices = nullptr; - if (packedVerb & kHasIndices_DrawVerticesMask) { - indexCount = reader.read32(); - indices = skip<uint16_t>(reader, indexCount); - } - - canvas->drawVertices(vmode, vertexCount, vertices, texs, colors, bmode, - indices, indexCount, read_paint(reader)); + SkBlendMode bmode = (SkBlendMode)unpack_verb_extra(packedVerb); + sk_sp<SkData> data = reader.readByteArrayAsData(); + canvas->drawVertices(SkVertices::Decode(data->data(), data->size()), bmode, read_paint(reader)); } static void drawPicture_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas* canvas) { diff --git a/src/utils/SkDumpCanvas.cpp b/src/utils/SkDumpCanvas.cpp index 030f4deed3..8e1f554998 100644 --- a/src/utils/SkDumpCanvas.cpp +++ b/src/utils/SkDumpCanvas.cpp @@ -121,7 +121,7 @@ static void toString(const SkRegion& rgn, SkString* str) { } } -static const char* toString(SkCanvas::VertexMode vm) { +static const char* toString(SkVertices::VertexMode vm) { static const char* gVMNames[] = { "TRIANGLES", "STRIP", "FAN" }; diff --git a/src/utils/SkPatchUtils.cpp b/src/utils/SkPatchUtils.cpp index 52ecfb1ec5..7567304835 100644 --- a/src/utils/SkPatchUtils.cpp +++ b/src/utils/SkPatchUtils.cpp @@ -348,7 +348,7 @@ sk_sp<SkVertices> SkPatchUtils::MakeVertices(const SkPoint cubics[12], const SkC flags |= SkVertices::kHasColors_BuilderFlag; } - SkVertices::Builder builder(SkCanvas::kTriangles_VertexMode, vertexCount, indexCount, flags); + SkVertices::Builder builder(SkVertices::kTriangles_VertexMode, vertexCount, indexCount, flags); SkPoint* pos = builder.positions(); SkPoint* texs = builder.texCoords(); SkColor* colors = builder.colors(); diff --git a/src/utils/SkShadowTessellator.cpp b/src/utils/SkShadowTessellator.cpp index ce161ca8de..fa3f3f479f 100644 --- a/src/utils/SkShadowTessellator.cpp +++ b/src/utils/SkShadowTessellator.cpp @@ -29,7 +29,7 @@ public: if (!fSucceeded) { return nullptr; } - return SkVertices::MakeCopy(SkCanvas::kTriangles_VertexMode, this->vertexCount(), + return SkVertices::MakeCopy(SkVertices::kTriangles_VertexMode, this->vertexCount(), fPositions.begin(), nullptr, fColors.begin(), this->indexCount(), fIndices.begin()); } |