OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "SkBitmapProcShader.h" | 8 #include "SkBitmapProcShader.h" |
9 #include "SkBitmapProvider.h" | 9 #include "SkBitmapProvider.h" |
10 #include "SkColorShader.h" | 10 #include "SkColorShader.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
90 // widen that, we have to reject bitmaps that are larger. | 90 // widen that, we have to reject bitmaps that are larger. |
91 // | 91 // |
92 static const int kMaxSize = 65535; | 92 static const int kMaxSize = 65535; |
93 | 93 |
94 return w > kMaxSize || h > kMaxSize; | 94 return w > kMaxSize || h > kMaxSize; |
95 } | 95 } |
96 | 96 |
97 // returns true and set color if the bitmap can be drawn as a single color | 97 // returns true and set color if the bitmap can be drawn as a single color |
98 // (for efficiency) | 98 // (for efficiency) |
99 static bool can_use_color_shader(const SkImage* image, SkColor* color) { | 99 static bool can_use_color_shader(const SkImage* image, SkColor* color) { |
100 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK | 100 #if 1 |
reed1
2016/09/20 17:19:06
what was wrong with the FRAMEWORK flag?
| |
101 // HWUI does not support color shaders (see b/22390304) | 101 // HWUI does not support color shaders (see b/22390304) |
102 return false; | 102 return false; |
103 #endif | 103 #endif |
104 | 104 |
105 if (1 != image->width() || 1 != image->height()) { | 105 if (1 != image->width() || 1 != image->height()) { |
106 return false; | 106 return false; |
107 } | 107 } |
108 | 108 |
109 SkPixmap pmap; | 109 SkPixmap pmap; |
110 if (!image->peekPixels(&pmap)) { | 110 if (!image->peekPixels(&pmap)) { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
237 | 237 |
238 sk_sp<SkShader> SkMakeBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, | 238 sk_sp<SkShader> SkMakeBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, |
239 SkShader::TileMode tmy, const SkMatrix* local Matrix, | 239 SkShader::TileMode tmy, const SkMatrix* local Matrix, |
240 SkCopyPixelsMode cpm, SkTBlitterAllocator* al locator) { | 240 SkCopyPixelsMode cpm, SkTBlitterAllocator* al locator) { |
241 // Until we learn otherwise, it seems that any caller that is passing an all ocator must be | 241 // Until we learn otherwise, it seems that any caller that is passing an all ocator must be |
242 // assuming that the returned shader will have a stack-frame lifetime, so we assert that | 242 // assuming that the returned shader will have a stack-frame lifetime, so we assert that |
243 // they are also asking for kNever_SkCopyPixelsMode. If that proves otherwis e, we can remove | 243 // they are also asking for kNever_SkCopyPixelsMode. If that proves otherwis e, we can remove |
244 // or modify this assert. | 244 // or modify this assert. |
245 SkASSERT(!allocator || (kNever_SkCopyPixelsMode == cpm)); | 245 SkASSERT(!allocator || (kNever_SkCopyPixelsMode == cpm)); |
246 | 246 |
247 return SkImageShader::Make(SkMakeImageFromRasterBitmap(src, cpm, allocator), | 247 return SkImageShader::Make(SkMakeImageFromRasterBitmap(src, kNever_SkCopyPix elsMode, allocator), |
reed1
2016/09/20 17:19:05
Can the caller make the decision to pass in kNever
| |
248 tmx, tmy, localMatrix, allocator); | 248 tmx, tmy, localMatrix, allocator); |
249 } | 249 } |
250 | 250 |
251 static sk_sp<SkFlattenable> SkBitmapProcShader_CreateProc(SkReadBuffer& buffer) { | 251 static sk_sp<SkFlattenable> SkBitmapProcShader_CreateProc(SkReadBuffer& buffer) { |
252 SkMatrix lm; | 252 SkMatrix lm; |
253 buffer.readMatrix(&lm); | 253 buffer.readMatrix(&lm); |
254 sk_sp<SkImage> image = buffer.readBitmapAsImage(); | 254 sk_sp<SkImage> image = buffer.readBitmapAsImage(); |
255 SkShader::TileMode mx = (SkShader::TileMode)buffer.readUInt(); | 255 SkShader::TileMode mx = (SkShader::TileMode)buffer.readUInt(); |
256 SkShader::TileMode my = (SkShader::TileMode)buffer.readUInt(); | 256 SkShader::TileMode my = (SkShader::TileMode)buffer.readUInt(); |
257 return image ? image->makeShader(mx, my, &lm) : nullptr; | 257 return image ? image->makeShader(mx, my, &lm) : nullptr; |
258 } | 258 } |
259 | 259 |
260 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkShader) | 260 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkShader) |
261 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageShader) | 261 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageShader) |
262 SkFlattenable::Register("SkBitmapProcShader", SkBitmapProcShader_CreateProc, kSk Shader_Type); | 262 SkFlattenable::Register("SkBitmapProcShader", SkBitmapProcShader_CreateProc, kSk Shader_Type); |
263 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 263 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
264 | 264 |
OLD | NEW |