aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-04-03 11:11:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-03 15:50:16 +0000
commit887cdf112809727c51890ba8b98b3ddce22249f0 (patch)
tree6ae2774f9ec869f72cf117993eba25c6ef97e28b /src
parentb55dd553124cd00260bc9e3a63ec8a8fe09412a8 (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.cpp8
-rw-r--r--src/core/SkDraw.cpp2
-rw-r--r--src/core/SkDraw.h3
-rw-r--r--src/core/SkPicturePlayback.cpp2
-rw-r--r--src/core/SkVertState.cpp8
-rw-r--r--src/core/SkVertState.h4
-rw-r--r--src/core/SkVertices.cpp20
-rw-r--r--src/gpu/SkGpuDevice.cpp8
-rw-r--r--src/gpu/SkGpuDevice.h2
-rw-r--r--src/gpu/SkGr.h9
-rw-r--r--src/gpu/ops/GrDrawVerticesOp.cpp2
-rw-r--r--src/pipe/SkPipeReader.cpp30
-rw-r--r--src/utils/SkDumpCanvas.cpp2
-rw-r--r--src/utils/SkPatchUtils.cpp2
-rw-r--r--src/utils/SkShadowTessellator.cpp2
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());
}