Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: src/core/SkBitmapDevice.cpp

Issue 108773003: remvoe duplicate impl for SkImageInfo flattening (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/core/SkBitmap.cpp ('k') | src/core/SkImageFilterUtils.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 7
8 #include "SkBitmapDevice.h" 8 #include "SkBitmapDevice.h"
9 #include "SkConfig8888.h" 9 #include "SkConfig8888.h"
10 #include "SkDraw.h" 10 #include "SkDraw.h"
11 #include "SkRasterClip.h" 11 #include "SkRasterClip.h"
12 #include "SkShader.h" 12 #include "SkShader.h"
13 13
14 #define CHECK_FOR_ANNOTATION(paint) \ 14 #define CHECK_FOR_ANNOTATION(paint) \
15 do { if (paint.getAnnotation()) { return; } } while (0) 15 do { if (paint.getAnnotation()) { return; } } while (0)
16 16
17 SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap) 17 SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap)
18 : fBitmap(bitmap) { 18 : fBitmap(bitmap) {
19 SkASSERT(SkBitmap::kARGB_4444_Config != bitmap.config()); 19 SkASSERT(SkBitmap::kARGB_4444_Config != bitmap.config());
20 } 20 }
21 21
22 SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap, const SkDeviceProperties& deviceProperties) 22 SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap, const SkDeviceProperties& deviceProperties)
23 : SkBaseDevice(deviceProperties) 23 : SkBaseDevice(deviceProperties)
24 , fBitmap(bitmap) { 24 , fBitmap(bitmap) {
25 } 25 }
26 26
27 SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, b ool isOpaque) { 27 void SkBitmapDevice::init(SkBitmap::Config config, int width, int height, bool i sOpaque) {
28 fBitmap.setConfig(config, width, height, 0, isOpaque ? 28 fBitmap.setConfig(config, width, height, 0, isOpaque ?
29 kOpaque_SkAlphaType : kPremul_SkAlphaType); 29 kOpaque_SkAlphaType : kPremul_SkAlphaType);
30 if (!fBitmap.allocPixels()) { 30
31 fBitmap.setConfig(config, 0, 0, 0, isOpaque ? 31 if (SkBitmap::kNo_Config != config) {
32 kOpaque_SkAlphaType : kPremul_SkAlphaType); 32 if (!fBitmap.allocPixels()) {
33 // indicate failure by zeroing our bitmap
34 fBitmap.setConfig(config, 0, 0, 0, isOpaque ?
35 kOpaque_SkAlphaType : kPremul_SkAlphaType);
36 } else if (!isOpaque) {
37 fBitmap.eraseColor(SK_ColorTRANSPARENT);
38 }
33 } 39 }
34 if (!isOpaque) { 40 }
35 fBitmap.eraseColor(SK_ColorTRANSPARENT); 41
36 } 42 SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, b ool isOpaque) {
43 this->init(config, width, height, isOpaque);
37 } 44 }
38 45
39 SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, b ool isOpaque, 46 SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, b ool isOpaque,
40 const SkDeviceProperties& deviceProperties) 47 const SkDeviceProperties& deviceProperties)
41 : SkBaseDevice(deviceProperties) { 48 : SkBaseDevice(deviceProperties)
42 49 {
43 fBitmap.setConfig(config, width, height, 0, isOpaque ? 50 this->init(config, width, height, isOpaque);
44 kOpaque_SkAlphaType : kPremul_SkAlphaType);
45 if (!fBitmap.allocPixels()) {
46 fBitmap.setConfig(config, 0, 0, 0, isOpaque ?
47 kOpaque_SkAlphaType : kPremul_SkAlphaType);
48 }
49 if (!isOpaque) {
50 fBitmap.eraseColor(SK_ColorTRANSPARENT);
51 }
52 } 51 }
53 52
54 SkBitmapDevice::~SkBitmapDevice() { 53 SkBitmapDevice::~SkBitmapDevice() {
55 } 54 }
56 55
57 void SkBitmapDevice::replaceBitmapBackendForRasterSurface(const SkBitmap& bm) { 56 void SkBitmapDevice::replaceBitmapBackendForRasterSurface(const SkBitmap& bm) {
58 SkASSERT(bm.width() == fBitmap.width()); 57 SkASSERT(bm.width() == fBitmap.width());
59 SkASSERT(bm.height() == fBitmap.height()); 58 SkASSERT(bm.height() == fBitmap.height());
60 fBitmap = bm; // intent is to use bm's pixelRef (and rowbytes/config) 59 fBitmap = bm; // intent is to use bm's pixelRef (and rowbytes/config)
61 fBitmap.lockPixels(); 60 fBitmap.lockPixels();
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 paint.getStyle() != SkPaint::kFill_Style || 398 paint.getStyle() != SkPaint::kFill_Style ||
400 !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)) { 399 !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)) {
401 // turn off lcd 400 // turn off lcd
402 flags->fFlags = paint.getFlags() & ~SkPaint::kLCDRenderText_Flag; 401 flags->fFlags = paint.getFlags() & ~SkPaint::kLCDRenderText_Flag;
403 flags->fHinting = paint.getHinting(); 402 flags->fHinting = paint.getHinting();
404 return true; 403 return true;
405 } 404 }
406 // we're cool with the paint as is 405 // we're cool with the paint as is
407 return false; 406 return false;
408 } 407 }
OLDNEW
« no previous file with comments | « src/core/SkBitmap.cpp ('k') | src/core/SkImageFilterUtils.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698