OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "sk_tool_utils.h" | 8 #include "sk_tool_utils.h" |
9 #include "SampleCode.h" | 9 #include "SampleCode.h" |
10 #include "SkView.h" | 10 #include "SkView.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 void setWHZ(int width, int height, int zoom) { | 84 void setWHZ(int width, int height, int zoom) { |
85 fW = width; | 85 fW = width; |
86 fH = height; | 86 fH = height; |
87 fZoom = zoom; | 87 fZoom = zoom; |
88 fBounds.set(0, 0, SkIntToScalar(width * zoom), SkIntToScalar(height * zo
om)); | 88 fBounds.set(0, 0, SkIntToScalar(width * zoom), SkIntToScalar(height * zo
om)); |
89 fMatrix.setScale(SkIntToScalar(zoom), SkIntToScalar(zoom)); | 89 fMatrix.setScale(SkIntToScalar(zoom), SkIntToScalar(zoom)); |
90 fInverse.setScale(SK_Scalar1 / zoom, SK_Scalar1 / zoom); | 90 fInverse.setScale(SK_Scalar1 / zoom, SK_Scalar1 / zoom); |
91 fShader = sk_tool_utils::create_checkerboard_shader(0xFFCCCCCC, 0xFFFFFF
FF, zoom); | 91 fShader = sk_tool_utils::create_checkerboard_shader(0xFFCCCCCC, 0xFFFFFF
FF, zoom); |
92 | 92 |
93 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); | 93 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); |
94 fMinSurface.reset(SkSurface::NewRaster(info)); | 94 fMinSurface = SkSurface::MakeRaster(info); |
95 info = info.makeWH(width * zoom, height * zoom); | 95 info = info.makeWH(width * zoom, height * zoom); |
96 fMaxSurface.reset(SkSurface::NewRaster(info)); | 96 fMaxSurface = SkSurface::MakeRaster(info); |
97 } | 97 } |
98 | 98 |
99 void drawBG(SkCanvas*); | 99 void drawBG(SkCanvas*); |
100 void drawFG(SkCanvas*); | 100 void drawFG(SkCanvas*); |
101 void drawLine(SkCanvas*, SkPoint pts[2]); | 101 void drawLine(SkCanvas*, SkPoint pts[2]); |
102 void drawRect(SkCanvas* canvas, SkPoint pts[2]); | 102 void drawRect(SkCanvas* canvas, SkPoint pts[2]); |
103 void drawTriangle(SkCanvas* canvas, SkPoint pts[3]); | 103 void drawTriangle(SkCanvas* canvas, SkPoint pts[3]); |
104 | 104 |
105 SkPaint::Cap fStrokeCap; | 105 SkPaint::Cap fStrokeCap; |
106 | 106 |
107 private: | 107 private: |
108 bool fAA, fGrid, fShowSkeleton, fUseGPU, fUseClip, fRectAsOval, fUseTriangle
; | 108 bool fAA, fGrid, fShowSkeleton, fUseGPU, fUseClip, fRectAsOval, fUseTriangle
; |
109 Style fStyle; | 109 Style fStyle; |
110 int fW, fH, fZoom; | 110 int fW, fH, fZoom; |
111 SkMatrix fMatrix, fInverse; | 111 SkMatrix fMatrix, fInverse; |
112 SkRect fBounds, fClipRect; | 112 SkRect fBounds, fClipRect; |
113 sk_sp<SkShader> fShader; | 113 sk_sp<SkShader> fShader; |
114 SkAutoTUnref<SkSurface> fMinSurface; | 114 sk_sp<SkSurface> fMinSurface; |
115 SkAutoTUnref<SkSurface> fMaxSurface; | 115 sk_sp<SkSurface> fMaxSurface; |
116 | 116 |
117 void setupPaint(SkPaint* paint) { | 117 void setupPaint(SkPaint* paint) { |
118 bool aa = this->getAA(); | 118 bool aa = this->getAA(); |
119 paint->setStrokeCap(fStrokeCap); | 119 paint->setStrokeCap(fStrokeCap); |
120 switch (fStyle) { | 120 switch (fStyle) { |
121 case kHair_Style: | 121 case kHair_Style: |
122 paint->setStrokeWidth(0); | 122 paint->setStrokeWidth(0); |
123 break; | 123 break; |
124 case kStroke_Style: | 124 case kStroke_Style: |
125 paint->setStrokeWidth(SK_Scalar1); | 125 paint->setStrokeWidth(SK_Scalar1); |
(...skipping 29 matching lines...) Expand all Loading... |
155 fRectAsOval ? path.addOval(r) : path.addRect(r); | 155 fRectAsOval ? path.addOval(r) : path.addRect(r); |
156 if (fUseGPU) { | 156 if (fUseGPU) { |
157 path.moveTo(r.fLeft, r.fTop); | 157 path.moveTo(r.fLeft, r.fTop); |
158 path.lineTo(r.fRight, r.fBottom); | 158 path.lineTo(r.fRight, r.fBottom); |
159 } | 159 } |
160 } | 160 } |
161 max->drawPath(path, paint); | 161 max->drawPath(path, paint); |
162 } | 162 } |
163 | 163 |
164 void copyMinToMax() { | 164 void copyMinToMax() { |
165 erase(fMaxSurface); | 165 erase(fMaxSurface.get()); |
166 SkCanvas* canvas = fMaxSurface->getCanvas(); | 166 SkCanvas* canvas = fMaxSurface->getCanvas(); |
167 canvas->save(); | 167 canvas->save(); |
168 canvas->concat(fMatrix); | 168 canvas->concat(fMatrix); |
169 fMinSurface->draw(canvas, 0, 0, nullptr); | 169 fMinSurface->draw(canvas, 0, 0, nullptr); |
170 canvas->restore(); | 170 canvas->restore(); |
171 | 171 |
172 SkPaint paint; | 172 SkPaint paint; |
173 paint.setXfermodeMode(SkXfermode::kClear_Mode); | 173 paint.setXfermodeMode(SkXfermode::kClear_Mode); |
174 for (int iy = 1; iy < fH; ++iy) { | 174 for (int iy = 1; iy < fH; ++iy) { |
175 SkScalar y = SkIntToScalar(iy * fZoom); | 175 SkScalar y = SkIntToScalar(iy * fZoom); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 | 268 |
269 void FatBits::drawLine(SkCanvas* canvas, SkPoint pts[]) { | 269 void FatBits::drawLine(SkCanvas* canvas, SkPoint pts[]) { |
270 SkPaint paint; | 270 SkPaint paint; |
271 | 271 |
272 fInverse.mapPoints(pts, 2); | 272 fInverse.mapPoints(pts, 2); |
273 | 273 |
274 if (fGrid) { | 274 if (fGrid) { |
275 apply_grid(pts, 2); | 275 apply_grid(pts, 2); |
276 } | 276 } |
277 | 277 |
278 erase(fMinSurface); | 278 erase(fMinSurface.get()); |
279 this->setupPaint(&paint); | 279 this->setupPaint(&paint); |
280 paint.setColor(FAT_PIXEL_COLOR); | 280 paint.setColor(FAT_PIXEL_COLOR); |
281 if (fUseClip) { | 281 if (fUseClip) { |
282 fMinSurface->getCanvas()->save(); | 282 fMinSurface->getCanvas()->save(); |
283 SkRect r = fClipRect; | 283 SkRect r = fClipRect; |
284 r.inset(SK_Scalar1/3, SK_Scalar1/3); | 284 r.inset(SK_Scalar1/3, SK_Scalar1/3); |
285 fMinSurface->getCanvas()->clipRect(r, SkRegion::kIntersect_Op, true); | 285 fMinSurface->getCanvas()->clipRect(r, SkRegion::kIntersect_Op, true); |
286 } | 286 } |
287 fMinSurface->getCanvas()->drawLine(pts[0].fX, pts[0].fY, pts[1].fX, pts[1].f
Y, paint); | 287 fMinSurface->getCanvas()->drawLine(pts[0].fX, pts[0].fY, pts[1].fX, pts[1].f
Y, paint); |
288 if (fUseClip) { | 288 if (fUseClip) { |
(...skipping 14 matching lines...) Expand all Loading... |
303 | 303 |
304 fInverse.mapPoints(pts, 2); | 304 fInverse.mapPoints(pts, 2); |
305 | 305 |
306 if (fGrid) { | 306 if (fGrid) { |
307 apply_grid(pts, 2); | 307 apply_grid(pts, 2); |
308 } | 308 } |
309 | 309 |
310 SkRect r; | 310 SkRect r; |
311 r.set(pts, 2); | 311 r.set(pts, 2); |
312 | 312 |
313 erase(fMinSurface); | 313 erase(fMinSurface.get()); |
314 this->setupPaint(&paint); | 314 this->setupPaint(&paint); |
315 paint.setColor(FAT_PIXEL_COLOR); | 315 paint.setColor(FAT_PIXEL_COLOR); |
316 { | 316 { |
317 SkCanvas* c = fMinSurface->getCanvas(); | 317 SkCanvas* c = fMinSurface->getCanvas(); |
318 fRectAsOval ? c->drawOval(r, paint) : c->drawRect(r, paint); | 318 fRectAsOval ? c->drawOval(r, paint) : c->drawRect(r, paint); |
319 } | 319 } |
320 this->copyMinToMax(); | 320 this->copyMinToMax(); |
321 | 321 |
322 SkCanvas* max = fMaxSurface->getCanvas(); | 322 SkCanvas* max = fMaxSurface->getCanvas(); |
323 | 323 |
(...skipping 25 matching lines...) Expand all Loading... |
349 if (fGrid) { | 349 if (fGrid) { |
350 apply_grid(pts, 3); | 350 apply_grid(pts, 3); |
351 } | 351 } |
352 | 352 |
353 SkPath path; | 353 SkPath path; |
354 path.moveTo(pts[0]); | 354 path.moveTo(pts[0]); |
355 path.lineTo(pts[1]); | 355 path.lineTo(pts[1]); |
356 path.lineTo(pts[2]); | 356 path.lineTo(pts[2]); |
357 path.close(); | 357 path.close(); |
358 | 358 |
359 erase(fMinSurface); | 359 erase(fMinSurface.get()); |
360 this->setupPaint(&paint); | 360 this->setupPaint(&paint); |
361 paint.setColor(FAT_PIXEL_COLOR); | 361 paint.setColor(FAT_PIXEL_COLOR); |
362 fMinSurface->getCanvas()->drawPath(path, paint); | 362 fMinSurface->getCanvas()->drawPath(path, paint); |
363 this->copyMinToMax(); | 363 this->copyMinToMax(); |
364 | 364 |
365 SkCanvas* max = fMaxSurface->getCanvas(); | 365 SkCanvas* max = fMaxSurface->getCanvas(); |
366 | 366 |
367 fMatrix.mapPoints(pts, 3); | 367 fMatrix.mapPoints(pts, 3); |
368 this->drawTriangleSkeleton(max, pts); | 368 this->drawTriangleSkeleton(max, pts); |
369 | 369 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 | 525 |
526 private: | 526 private: |
527 | 527 |
528 typedef SampleView INHERITED; | 528 typedef SampleView INHERITED; |
529 }; | 529 }; |
530 | 530 |
531 ////////////////////////////////////////////////////////////////////////////// | 531 ////////////////////////////////////////////////////////////////////////////// |
532 | 532 |
533 static SkView* MyFactory() { return new DrawLineView; } | 533 static SkView* MyFactory() { return new DrawLineView; } |
534 static SkViewRegister reg(MyFactory); | 534 static SkViewRegister reg(MyFactory); |
OLD | NEW |