| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "gm.h" | 8 #include "gm.h" |
| 9 | 9 |
| 10 #if SK_SUPPORT_GPU | 10 static void make_bitmap(SkBitmap* bitmap, SkIRect* center) { |
| 11 #include "SkGpuDevice.h" | |
| 12 #else | |
| 13 class GrContext; | |
| 14 #endif | |
| 15 | |
| 16 static void make_bitmap(SkBitmap* bitmap, GrContext* ctx, SkIRect* center) { | |
| 17 SkBaseDevice* dev; | |
| 18 | |
| 19 const int kFixed = 28; | 11 const int kFixed = 28; |
| 20 const int kStretchy = 8; | 12 const int kStretchy = 8; |
| 21 const int kSize = 2*kFixed + kStretchy; | 13 const int kSize = 2*kFixed + kStretchy; |
| 22 | 14 |
| 23 #if SK_SUPPORT_GPU | 15 bitmap->setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize); |
| 24 if (ctx) { | 16 bitmap->allocPixels(); |
| 25 dev = new SkGpuDevice(ctx, SkBitmap::kARGB_8888_Config, kSize, kSize); | 17 SkBaseDevice* dev = new SkBitmapDevice(*bitmap); |
| 26 *bitmap = dev->accessBitmap(false); | |
| 27 } else | |
| 28 #endif | |
| 29 { | |
| 30 bitmap->setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize); | |
| 31 bitmap->allocPixels(); | |
| 32 dev = new SkBitmapDevice(*bitmap); | |
| 33 } | |
| 34 | 18 |
| 35 SkCanvas canvas(dev); | 19 SkCanvas canvas(dev); |
| 36 dev->unref(); | 20 dev->unref(); |
| 37 canvas.clear(SK_ColorTRANSPARENT); | 21 canvas.clear(SK_ColorTRANSPARENT); |
| 38 | 22 |
| 39 SkRect r = SkRect::MakeWH(SkIntToScalar(kSize), SkIntToScalar(kSize)); | 23 SkRect r = SkRect::MakeWH(SkIntToScalar(kSize), SkIntToScalar(kSize)); |
| 40 const SkScalar strokeWidth = SkIntToScalar(6); | 24 const SkScalar strokeWidth = SkIntToScalar(6); |
| 41 const SkScalar radius = SkIntToScalar(kFixed) - strokeWidth/2; | 25 const SkScalar radius = SkIntToScalar(kFixed) - strokeWidth/2; |
| 42 | 26 |
| 43 center->setXYWH(kFixed, kFixed, kStretchy, kStretchy); | 27 center->setXYWH(kFixed, kFixed, kStretchy, kStretchy); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 68 return SkString("ninepatch-stretch"); | 52 return SkString("ninepatch-stretch"); |
| 69 } | 53 } |
| 70 | 54 |
| 71 virtual SkISize onISize() { | 55 virtual SkISize onISize() { |
| 72 return make_isize(400, 400); | 56 return make_isize(400, 400); |
| 73 } | 57 } |
| 74 | 58 |
| 75 virtual void onDraw(SkCanvas* canvas) { | 59 virtual void onDraw(SkCanvas* canvas) { |
| 76 SkBitmap bm; | 60 SkBitmap bm; |
| 77 SkIRect center; | 61 SkIRect center; |
| 78 make_bitmap(&bm, NULL /*SampleCode::GetGr()*/, ¢er); | 62 make_bitmap(&bm, ¢er); |
| 79 | 63 |
| 80 // amount of bm that should not be stretched (unless we have to) | 64 // amount of bm that should not be stretched (unless we have to) |
| 81 const SkScalar fixed = SkIntToScalar(bm.width() - center.width()); | 65 const SkScalar fixed = SkIntToScalar(bm.width() - center.width()); |
| 82 | 66 |
| 83 const SkTSize<SkScalar> size[] = { | 67 const SkTSize<SkScalar> size[] = { |
| 84 { fixed * 4 / 5, fixed * 4 / 5 }, // shrink in both axes | 68 { fixed * 4 / 5, fixed * 4 / 5 }, // shrink in both axes |
| 85 { fixed * 4 / 5, fixed * 4 }, // shrink in X | 69 { fixed * 4 / 5, fixed * 4 }, // shrink in X |
| 86 { fixed * 4, fixed * 4 / 5 }, // shrink in Y | 70 { fixed * 4, fixed * 4 / 5 }, // shrink in Y |
| 87 { fixed * 4, fixed * 4 } | 71 { fixed * 4, fixed * 4 } |
| 88 }; | 72 }; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 108 private: | 92 private: |
| 109 typedef GM INHERITED; | 93 typedef GM INHERITED; |
| 110 }; | 94 }; |
| 111 | 95 |
| 112 ////////////////////////////////////////////////////////////////////////////// | 96 ////////////////////////////////////////////////////////////////////////////// |
| 113 | 97 |
| 114 static GM* MyFactory(void*) { return new NinePatchStretchGM; } | 98 static GM* MyFactory(void*) { return new NinePatchStretchGM; } |
| 115 static GMRegistry reg(MyFactory); | 99 static GMRegistry reg(MyFactory); |
| 116 | 100 |
| 117 } | 101 } |
| OLD | NEW |