Index: samplecode/SampleFatBits.cpp |
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp |
index dd588816a06e74168cb6cd49a7102fbf272644a2..a1ef3ad3e7fa2269e620e5f03900d3c8e1798176 100644 |
--- a/samplecode/SampleFatBits.cpp |
+++ b/samplecode/SampleFatBits.cpp |
@@ -43,7 +43,6 @@ public: |
fStyle = kHair_Style; |
fGrid = false; |
fShowSkeleton = true; |
- fUseGPU = false; |
fUseClip = false; |
fRectAsOval = false; |
fUseTriangle = false; |
@@ -63,14 +62,19 @@ public: |
bool getShowSkeleton() const { return fShowSkeleton; } |
void setShowSkeleton(bool ss) { fShowSkeleton = ss; } |
- bool getUseGPU() const { return fUseGPU; } |
- void setUseGPU(bool ug) { fUseGPU = ug; } |
- |
bool getTriangle() const { return fUseTriangle; } |
void setTriangle(bool ut) { fUseTriangle = ut; } |
void toggleRectAsOval() { fRectAsOval = !fRectAsOval; } |
+ void togglePixelColors() { |
+ if (fShader == fShader0) { |
+ fShader = fShader1; |
+ } else { |
+ fShader = fShader0; |
+ } |
+ } |
+ |
bool getUseClip() const { return fUseClip; } |
void setUseClip(bool uc) { fUseClip = uc; } |
@@ -88,7 +92,9 @@ public: |
fBounds.set(0, 0, SkIntToScalar(width * zoom), SkIntToScalar(height * zoom)); |
fMatrix.setScale(SkIntToScalar(zoom), SkIntToScalar(zoom)); |
fInverse.setScale(SK_Scalar1 / zoom, SK_Scalar1 / zoom); |
- fShader = sk_tool_utils::create_checkerboard_shader(0xFFCCCCCC, 0xFFFFFFFF, zoom); |
+ fShader0 = sk_tool_utils::create_checkerboard_shader(0xFFDDDDDD, 0xFFFFFFFF, zoom); |
+ fShader1 = SkShader::MakeColorShader(SK_ColorWHITE); |
+ fShader = fShader0; |
SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); |
fMinSurface = SkSurface::MakeRaster(info); |
@@ -105,14 +111,16 @@ public: |
SkPaint::Cap fStrokeCap; |
private: |
- bool fAA, fGrid, fShowSkeleton, fUseGPU, fUseClip, fRectAsOval, fUseTriangle; |
+ bool fAA, fGrid, fShowSkeleton, fUseClip, fRectAsOval, fUseTriangle; |
Style fStyle; |
int fW, fH, fZoom; |
- SkMatrix fMatrix, fInverse; |
- SkRect fBounds, fClipRect; |
- sk_sp<SkShader> fShader; |
- sk_sp<SkSurface> fMinSurface; |
- sk_sp<SkSurface> fMaxSurface; |
+ SkMatrix fMatrix, fInverse; |
+ SkRect fBounds, fClipRect; |
+ sk_sp<SkShader> fShader0; |
+ sk_sp<SkShader> fShader1; |
+ sk_sp<SkShader> fShader; |
+ sk_sp<SkSurface> fMinSurface; |
+ sk_sp<SkSurface> fMaxSurface; |
void setupPaint(SkPaint* paint) { |
bool aa = this->getAA(); |
@@ -142,22 +150,7 @@ private: |
this->setupSkeletonPaint(&paint); |
SkPath path; |
- if (fUseGPU && fAA) { |
- SkRect rr = r; |
- rr.inset(SkIntToScalar(fZoom)/2, SkIntToScalar(fZoom)/2); |
- path.addRect(rr); |
- path.moveTo(rr.fLeft, rr.fTop); |
- path.lineTo(rr.fRight, rr.fBottom); |
- rr = r; |
- rr.inset(-SkIntToScalar(fZoom)/2, -SkIntToScalar(fZoom)/2); |
- path.addRect(rr); |
- } else { |
- fRectAsOval ? path.addOval(r) : path.addRect(r); |
- if (fUseGPU) { |
- path.moveTo(r.fLeft, r.fTop); |
- path.lineTo(r.fRight, r.fBottom); |
- } |
- } |
+ fRectAsOval ? path.addOval(r) : path.addRect(r); |
max->drawPath(path, paint); |
} |
@@ -234,34 +227,17 @@ void FatBits::drawLineSkeleton(SkCanvas* max, const SkPoint pts[]) { |
path.moveTo(pts[0]); |
path.lineTo(pts[1]); |
- switch (fStyle) { |
- case kHair_Style: |
- if (fUseGPU) { |
- SkPaint p; |
- p.setStyle(SkPaint::kStroke_Style); |
- p.setStrokeWidth(SK_Scalar1 * fZoom); |
- SkPath dst; |
- p.getFillPath(path, &dst); |
- path.addPath(dst); |
- } |
- break; |
- case kStroke_Style: { |
- SkPaint p; |
- p.setStyle(SkPaint::kStroke_Style); |
- p.setStrokeWidth(SK_Scalar1 * fZoom); |
- p.setStrokeCap(fStrokeCap); |
- SkPath dst; |
- p.getFillPath(path, &dst); |
- path = dst; |
- |
- path.moveTo(pts[0]); |
- path.lineTo(pts[1]); |
- |
- if (fUseGPU) { |
- path.moveTo(dst.getPoint(0)); |
- path.lineTo(dst.getPoint(2)); |
- } |
- } break; |
+ if (fStyle == kStroke_Style) { |
+ SkPaint p; |
+ p.setStyle(SkPaint::kStroke_Style); |
+ p.setStrokeWidth(SK_Scalar1 * fZoom); |
+ p.setStrokeCap(fStrokeCap); |
+ SkPath dst; |
+ p.getFillPath(path, &dst); |
+ path = dst; |
+ |
+ path.moveTo(pts[0]); |
+ path.lineTo(pts[1]); |
} |
max->drawPath(path, paint); |
} |
@@ -383,20 +359,17 @@ public: |
}; |
class DrawLineView : public SampleView { |
- enum { |
- kZoom = 96 |
- }; |
- |
FatBits fFB; |
SkPoint fPts[3]; |
bool fIsRect; |
+ int fZoom = 64; |
public: |
DrawLineView() { |
- fFB.setWHZ(24, 16, kZoom); |
+ fFB.setWHZ(24*2, 16*2, fZoom); |
fPts[0].set(1, 1); |
fPts[1].set(5, 4); |
fPts[2].set(2, 6); |
- SkMatrix::MakeScale(kZoom, kZoom).mapPoints(fPts, 3); |
+ SkMatrix::MakeScale(SkIntToScalar(fZoom)).mapPoints(fPts, 3); |
fIsRect = false; |
} |
@@ -454,7 +427,7 @@ protected: |
this->inval(nullptr); |
return true; |
case 'g': |
- fFB.setUseGPU(!fFB.getUseGPU()); |
+ fFB.togglePixelColors(); |
this->inval(nullptr); |
return true; |
case 't': |
@@ -480,10 +453,9 @@ protected: |
{ |
SkString str; |
- str.printf("%s %s %s %s", |
+ str.printf("%s %s %s", |
fFB.getAA() ? "AA" : "BW", |
FatBits::kHair_Style == fFB.getStyle() ? "Hair" : "Stroke", |
- fFB.getUseGPU() ? "GPU" : "CPU", |
fFB.getUseClip() ? "clip" : "noclip"); |
SkPaint paint; |
paint.setAntiAlias(true); |