diff options
Diffstat (limited to 'src/core')
-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 |
7 files changed, 33 insertions, 14 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); |