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

Side by Side Diff: src/pdf/SkPDFShader.cpp

Issue 1287263005: change asABitmap to isABitmap on shader (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 4 months 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
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkPDFShader.h" 10 #include "SkPDFShader.h"
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 fPixelGeneration(0) { 1103 fPixelGeneration(0) {
1104 fInfo.fColorCount = 0; 1104 fInfo.fColorCount = 0;
1105 fInfo.fColors = NULL; 1105 fInfo.fColors = NULL;
1106 fInfo.fColorOffsets = NULL; 1106 fInfo.fColorOffsets = NULL;
1107 fShaderTransform = shader.getLocalMatrix(); 1107 fShaderTransform = shader.getLocalMatrix();
1108 fImageTileModes[0] = fImageTileModes[1] = SkShader::kClamp_TileMode; 1108 fImageTileModes[0] = fImageTileModes[1] = SkShader::kClamp_TileMode;
1109 1109
1110 fType = shader.asAGradient(&fInfo); 1110 fType = shader.asAGradient(&fInfo);
1111 1111
1112 if (fType == SkShader::kNone_GradientType) { 1112 if (fType == SkShader::kNone_GradientType) {
1113 SkShader::BitmapType bitmapType;
1114 SkMatrix matrix; 1113 SkMatrix matrix;
1115 bitmapType = shader.asABitmap(&fImage, &matrix, fImageTileModes); 1114 if (shader.isABitmap(&fImage, &matrix, fImageTileModes)) {
1116 if (bitmapType != SkShader::kDefault_BitmapType) { 1115 SkASSERT(matrix.isIdentity());
1116 } else {
1117 // Generic fallback for unsupported shaders: 1117 // Generic fallback for unsupported shaders:
1118 // * allocate a bbox-sized bitmap 1118 // * allocate a bbox-sized bitmap
1119 // * shade the whole area 1119 // * shade the whole area
1120 // * use the result as a bitmap shader 1120 // * use the result as a bitmap shader
1121 1121
1122 // bbox is in device space. While that's exactly what we want for si zing our bitmap, 1122 // bbox is in device space. While that's exactly what we want for si zing our bitmap,
1123 // we need to map it into shader space for adjustments (to match 1123 // we need to map it into shader space for adjustments (to match
1124 // SkPDFImageShader::Create's behavior). 1124 // SkPDFImageShader::Create's behavior).
1125 SkRect shaderRect = SkRect::Make(bbox); 1125 SkRect shaderRect = SkRect::Make(bbox);
1126 if (!inverse_transform_bbox(canvasTransform, &shaderRect)) { 1126 if (!inverse_transform_bbox(canvasTransform, &shaderRect)) {
(...skipping 19 matching lines...) Expand all
1146 SkPaint p; 1146 SkPaint p;
1147 p.setShader(const_cast<SkShader*>(&shader)); 1147 p.setShader(const_cast<SkShader*>(&shader));
1148 1148
1149 SkCanvas canvas(fImage); 1149 SkCanvas canvas(fImage);
1150 canvas.scale(scale.width(), scale.height()); 1150 canvas.scale(scale.width(), scale.height());
1151 canvas.translate(-shaderRect.x(), -shaderRect.y()); 1151 canvas.translate(-shaderRect.x(), -shaderRect.y());
1152 canvas.drawPaint(p); 1152 canvas.drawPaint(p);
1153 1153
1154 fShaderTransform.setTranslate(shaderRect.x(), shaderRect.y()); 1154 fShaderTransform.setTranslate(shaderRect.x(), shaderRect.y());
1155 fShaderTransform.preScale(1 / scale.width(), 1 / scale.height()); 1155 fShaderTransform.preScale(1 / scale.width(), 1 / scale.height());
1156 } else {
1157 SkASSERT(matrix.isIdentity());
1158 } 1156 }
1159 fPixelGeneration = fImage.getGenerationID(); 1157 fPixelGeneration = fImage.getGenerationID();
1160 } else { 1158 } else {
1161 AllocateGradientInfoStorage(); 1159 AllocateGradientInfoStorage();
1162 shader.asAGradient(&fInfo); 1160 shader.asAGradient(&fInfo);
1163 } 1161 }
1164 } 1162 }
1165 1163
1166 SkPDFShader::State::State(const SkPDFShader::State& other) 1164 SkPDFShader::State::State(const SkPDFShader::State& other)
1167 : fType(other.fType), 1165 : fType(other.fType),
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 return false; 1232 return false;
1235 } 1233 }
1236 1234
1237 void SkPDFShader::State::AllocateGradientInfoStorage() { 1235 void SkPDFShader::State::AllocateGradientInfoStorage() {
1238 fColorData.set(sk_malloc_throw( 1236 fColorData.set(sk_malloc_throw(
1239 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar)))); 1237 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar))));
1240 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get()); 1238 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get());
1241 fInfo.fColorOffsets = 1239 fInfo.fColorOffsets =
1242 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount); 1240 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount);
1243 } 1241 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698