Index: src/gpu/ops/GrAADistanceFieldPathRenderer.cpp |
diff --git a/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp b/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp |
index 8d1af05f14b825a8c303e1368affef65fbab1a22..d72a239cc27574a7e15c87b0db3e260ab5d1ab32 100644 |
--- a/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp |
+++ b/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp |
@@ -1,6 +1,5 @@ |
/* |
* Copyright 2014 Google Inc. |
- * Copyright 2016 ARM Ltd. |
* |
* Use of this source code is governed by a BSD-style license that can be |
* found in the LICENSE file. |
@@ -20,9 +19,7 @@ |
#include "effects/GrDistanceFieldGeoProc.h" |
#include "ops/GrMeshDrawOp.h" |
-#include "SkPathOps.h" |
#include "SkDistanceFieldGen.h" |
-#include "GrDistanceFieldGenFromVector.h" |
#define ATLAS_TEXTURE_WIDTH 2048 |
#define ATLAS_TEXTURE_HEIGHT 2048 |
@@ -338,56 +335,45 @@ |
drawMatrix.setScale(scale, scale); |
drawMatrix.postTranslate(intPad - dx, intPad - dy); |
+ // setup bitmap backing |
SkASSERT(devPathBounds.fLeft == 0); |
SkASSERT(devPathBounds.fTop == 0); |
- |
- // setup signed distance field storage |
- SkIRect dfBounds = devPathBounds.makeOutset(SK_DistanceFieldPad, SK_DistanceFieldPad); |
- width = dfBounds.width(); |
- height = dfBounds.height(); |
+ SkAutoPixmapStorage dst; |
+ if (!dst.tryAlloc(SkImageInfo::MakeA8(devPathBounds.width(), |
+ devPathBounds.height()))) { |
+ return false; |
+ } |
+ sk_bzero(dst.writable_addr(), dst.getSafeSize()); |
+ |
+ // rasterize path |
+ SkPaint paint; |
+ paint.setStyle(SkPaint::kFill_Style); |
+ paint.setAntiAlias(true); |
+ |
+ SkDraw draw; |
+ sk_bzero(&draw, sizeof(draw)); |
+ |
+ SkRasterClip rasterClip; |
+ rasterClip.setRect(devPathBounds); |
+ draw.fRC = &rasterClip; |
+ draw.fMatrix = &drawMatrix; |
+ draw.fDst = dst; |
+ |
+ SkPath path; |
+ shape.asPath(&path); |
+ draw.drawPathCoverage(path, paint); |
+ |
+ // generate signed distance field |
+ devPathBounds.outset(SK_DistanceFieldPad, SK_DistanceFieldPad); |
+ width = devPathBounds.width(); |
+ height = devPathBounds.height(); |
// TODO We should really generate this directly into the plot somehow |
SkAutoSMalloc<1024> dfStorage(width * height * sizeof(unsigned char)); |
- SkPath path; |
- shape.asPath(&path); |
-#ifndef SK_USE_LEGACY_DISTANCE_FIELDS |
- // Generate signed distance field directly from SkPath |
- bool succeed = GrGenerateDistanceFieldFromPath((unsigned char*)dfStorage.get(), |
- path, drawMatrix, |
- width, height, width * sizeof(unsigned char)); |
- if (!succeed) { |
-#endif |
- // setup bitmap backing |
- SkAutoPixmapStorage dst; |
- if (!dst.tryAlloc(SkImageInfo::MakeA8(devPathBounds.width(), |
- devPathBounds.height()))) { |
- return false; |
- } |
- sk_bzero(dst.writable_addr(), dst.getSafeSize()); |
- |
- // rasterize path |
- SkPaint paint; |
- paint.setStyle(SkPaint::kFill_Style); |
- paint.setAntiAlias(true); |
- |
- SkDraw draw; |
- sk_bzero(&draw, sizeof(draw)); |
- |
- SkRasterClip rasterClip; |
- rasterClip.setRect(devPathBounds); |
- draw.fRC = &rasterClip; |
- draw.fMatrix = &drawMatrix; |
- draw.fDst = dst; |
- |
- draw.drawPathCoverage(path, paint); |
- |
- // Generate signed distance field |
- SkGenerateDistanceFieldFromA8Image((unsigned char*)dfStorage.get(), |
- (const unsigned char*)dst.addr(), |
- dst.width(), dst.height(), dst.rowBytes()); |
-#ifndef SK_USE_LEGACY_DISTANCE_FIELDS |
- } |
-#endif |
+ // Generate signed distance field |
+ SkGenerateDistanceFieldFromA8Image((unsigned char*)dfStorage.get(), |
+ (const unsigned char*)dst.addr(), |
+ dst.width(), dst.height(), dst.rowBytes()); |
// add to atlas |
SkIPoint16 atlasLocation; |