| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 #include "SampleCode.h" | 7 #include "SampleCode.h" |
| 8 #include "SkBicubicImageFilter.h" | 8 #include "SkBicubicImageFilter.h" |
| 9 #include "SkBitmapDevice.h" | 9 #include "SkBitmapDevice.h" |
| 10 #include "SkBitmapSource.h" | 10 #include "SkBitmapSource.h" |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 } | 104 } |
| 105 | 105 |
| 106 static SkPoint3 make_point() { | 106 static SkPoint3 make_point() { |
| 107 return SkPoint3(make_scalar(), make_scalar(), make_scalar(true)); | 107 return SkPoint3(make_scalar(), make_scalar(), make_scalar(true)); |
| 108 } | 108 } |
| 109 | 109 |
| 110 static SkDisplacementMapEffect::ChannelSelectorType make_channel_selector_type()
{ | 110 static SkDisplacementMapEffect::ChannelSelectorType make_channel_selector_type()
{ |
| 111 return static_cast<SkDisplacementMapEffect::ChannelSelectorType>(R(4)+1); | 111 return static_cast<SkDisplacementMapEffect::ChannelSelectorType>(R(4)+1); |
| 112 } | 112 } |
| 113 | 113 |
| 114 static bool valid_for_raster_canvas(const SkImageInfo& info) { |
| 115 switch (info.colorType()) { |
| 116 case kAlpha_8_SkColorType: |
| 117 case kRGB_565_SkColorType: |
| 118 return true; |
| 119 case kPMColor_SkColorType: |
| 120 return kPremul_SkAlphaType == info.alphaType() || |
| 121 kOpaque_SkAlphaType == info.alphaType(); |
| 122 default: |
| 123 break; |
| 124 } |
| 125 return false; |
| 126 } |
| 127 |
| 128 static SkColorType rand_colortype() { |
| 129 return (SkColorType)R(kLastEnum_SkColorType + 1); |
| 130 } |
| 131 |
| 132 static void rand_bitmap_for_canvas(SkBitmap* bitmap) { |
| 133 SkImageInfo info; |
| 134 do { |
| 135 info = SkImageInfo::Make(kBitmapSize, kBitmapSize, rand_colortype(), |
| 136 kPremul_SkAlphaType); |
| 137 } while (!valid_for_raster_canvas(info) || !bitmap->allocPixels(info)); |
| 138 } |
| 139 |
| 114 static void make_g_bitmap(SkBitmap& bitmap) { | 140 static void make_g_bitmap(SkBitmap& bitmap) { |
| 115 bitmap.setConfig((SkBitmap::Config)R(SkBitmap::kConfigCount), kBitmapSize, k
BitmapSize); | 141 rand_bitmap_for_canvas(&bitmap); |
| 116 while (!bitmap.allocPixels()) { | 142 |
| 117 bitmap.setConfig((SkBitmap::Config)R(SkBitmap::kConfigCount), kBitmapSiz
e, kBitmapSize); | 143 SkCanvas canvas(bitmap); |
| 118 } | |
| 119 SkBitmapDevice device(bitmap); | |
| 120 SkCanvas canvas(&device); | |
| 121 canvas.clear(0x00000000); | 144 canvas.clear(0x00000000); |
| 122 SkPaint paint; | 145 SkPaint paint; |
| 123 paint.setAntiAlias(true); | 146 paint.setAntiAlias(true); |
| 124 paint.setColor(0xFF884422); | 147 paint.setColor(0xFF884422); |
| 125 paint.setTextSize(SkIntToScalar(kBitmapSize/2)); | 148 paint.setTextSize(SkIntToScalar(kBitmapSize/2)); |
| 126 const char* str = "g"; | 149 const char* str = "g"; |
| 127 canvas.drawText(str, strlen(str), SkIntToScalar(kBitmapSize/8), | 150 canvas.drawText(str, strlen(str), SkIntToScalar(kBitmapSize/8), |
| 128 SkIntToScalar(kBitmapSize/4), paint); | 151 SkIntToScalar(kBitmapSize/4), paint); |
| 129 } | 152 } |
| 130 | 153 |
| 131 static bool valid_for_raster_canvas(const SkBitmap& bm) { | 154 static void make_checkerboard_bitmap(SkBitmap& bitmap) { |
| 132 SkImageInfo info; | 155 rand_bitmap_for_canvas(&bitmap); |
| 133 if (!bm.asImageInfo(&info)) { | |
| 134 return false; | |
| 135 } | |
| 136 switch (info.fColorType) { | |
| 137 case kAlpha_8_SkColorType: | |
| 138 case kRGB_565_SkColorType: | |
| 139 return true; | |
| 140 case kPMColor_SkColorType: | |
| 141 return kPremul_SkAlphaType == info.fAlphaType || | |
| 142 kOpaque_SkAlphaType == info.fAlphaType; | |
| 143 default: | |
| 144 break; | |
| 145 } | |
| 146 return false; | |
| 147 } | |
| 148 | 156 |
| 149 static void make_checkerboard_bitmap(SkBitmap& bitmap) { | 157 SkCanvas canvas(bitmap); |
| 150 bitmap.setConfig((SkBitmap::Config)R(SkBitmap::kConfigCount), kBitmapSize, k
BitmapSize); | |
| 151 while (valid_for_raster_canvas(bitmap) && !bitmap.allocPixels()) { | |
| 152 bitmap.setConfig((SkBitmap::Config)R(SkBitmap::kConfigCount), kBitmapSiz
e, kBitmapSize); | |
| 153 } | |
| 154 SkBitmapDevice device(bitmap); | |
| 155 SkCanvas canvas(&device); | |
| 156 canvas.clear(0x00000000); | 158 canvas.clear(0x00000000); |
| 157 SkPaint darkPaint; | 159 SkPaint darkPaint; |
| 158 darkPaint.setColor(0xFF804020); | 160 darkPaint.setColor(0xFF804020); |
| 159 SkPaint lightPaint; | 161 SkPaint lightPaint; |
| 160 lightPaint.setColor(0xFF244484); | 162 lightPaint.setColor(0xFF244484); |
| 161 const int i = kBitmapSize / 8; | 163 const int i = kBitmapSize / 8; |
| 162 const SkScalar f = SkIntToScalar(i); | 164 const SkScalar f = SkIntToScalar(i); |
| 163 for (int y = 0; y < kBitmapSize; y += i) { | 165 for (int y = 0; y < kBitmapSize; y += i) { |
| 164 for (int x = 0; x < kBitmapSize; x += i) { | 166 for (int x = 0; x < kBitmapSize; x += i) { |
| 165 canvas.save(); | 167 canvas.save(); |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 } | 427 } |
| 426 | 428 |
| 427 private: | 429 private: |
| 428 typedef SkView INHERITED; | 430 typedef SkView INHERITED; |
| 429 }; | 431 }; |
| 430 | 432 |
| 431 ////////////////////////////////////////////////////////////////////////////// | 433 ////////////////////////////////////////////////////////////////////////////// |
| 432 | 434 |
| 433 static SkView* MyFactory() { return new ImageFilterFuzzView; } | 435 static SkView* MyFactory() { return new ImageFilterFuzzView; } |
| 434 static SkViewRegister reg(MyFactory); | 436 static SkViewRegister reg(MyFactory); |
| OLD | NEW |