diff options
Diffstat (limited to 'experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp')
-rw-r--r-- | experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp b/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp deleted file mode 100644 index 8faf49fe66..0000000000 --- a/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp +++ /dev/null @@ -1,89 +0,0 @@ - -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "GrAndroidPathRenderer.h" -#include "AndroidPathRenderer.h" -#include "Vertex.h" - -GrAndroidPathRenderer::GrAndroidPathRenderer() { -} - -bool GrAndroidPathRenderer::canDrawPath(const SkPath& path, - const SkStrokeRec& stroke, - const GrDrawTarget* target, - bool antiAlias) const { - return ((stroke.isFillStyle() || stroke.getStyle() == SkStrokeRec::kStroke_Style) - && !path.isInverseFillType() && path.isConvex()); -} - -struct ColorVertex { - SkPoint pos; - GrColor color; -}; - -bool GrAndroidPathRenderer::onDrawPath(const SkPath& origPath, - const SkStrokeRec& stroke, - GrDrawTarget* target, - bool antiAlias) { - - // generate verts using Android algorithm - android::uirenderer::VertexBuffer vertices; - android::uirenderer::PathRenderer::ConvexPathVertices(origPath, stroke, antiAlias, NULL, - &vertices); - - // set vertex attributes depending on anti-alias - GrDrawState* drawState = target->drawState(); - if (antiAlias) { - // position + coverage - GrVertexAttrib attribs[] = { - GrVertexAttrib(kVec2f_GrVertexAttribType, 0), - GrVertexAttrib(kVec4ub_GrVertexAttribType, sizeof(GrPoint)) - }; - drawState->setVertexAttribs(attribs, SK_ARRAY_COUNT(attribs)); - drawState->setAttribIndex(GrDrawState::kPosition_AttribIndex, 0); - drawState->setAttribIndex(GrDrawState::kCoverage_AttribIndex, 1); - drawState->setAttribBindings(GrDrawState::kCoverage_AttribBindingsBit); - } else { - drawState->setDefaultVertexAttribs(); - } - - // allocate our vert buffer - int vertCount = vertices.getSize(); - GrDrawTarget::AutoReleaseGeometry geo(target, vertCount, 0); - if (!geo.succeeded()) { - SkDebugf("Failed to get space for vertices!\n"); - return false; - } - - // copy android verts to our vertex buffer - if (antiAlias) { - SkASSERT(sizeof(ColorVertex) == drawState->getVertexSize()); - ColorVertex* outVert = reinterpret_cast<ColorVertex*>(geo.vertices()); - android::uirenderer::AlphaVertex* inVert = - reinterpret_cast<android::uirenderer::AlphaVertex*>(vertices.getBuffer()); - - for (int i = 0; i < vertCount; ++i) { - // copy vertex position - outVert->pos.set(inVert->position[0], inVert->position[1]); - // copy alpha - int coverage = static_cast<int>(inVert->alpha * 0xff); - outVert->color = GrColorPackRGBA(coverage, coverage, coverage, coverage); - ++outVert; - ++inVert; - } - } else { - size_t vsize = drawState->getVertexSize(); - size_t copySize = vsize*vertCount; - memcpy(geo.vertices(), vertices.getBuffer(), copySize); - } - - // render it - target->drawNonIndexed(kTriangleStrip_GrPrimitiveType, 0, vertCount); - - return true; -} |