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

Side by Side Diff: experimental/PdfViewer/src/SkPdfRenderer.cpp

Issue 322963002: hide SkBitmap::setConfig (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 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
« no previous file with comments | « experimental/PdfViewer/pdf_viewer_main.cpp ('k') | gm/stroketext.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 "SkPdfRenderer.h" 8 #include "SkPdfRenderer.h"
9 9
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 225
226 virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE; 226 virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE;
227 virtual void loop() SK_OVERRIDE; 227 virtual void loop() SK_OVERRIDE;
228 228
229 private: 229 private:
230 typedef SkPdfTokenLooper INHERITED; 230 typedef SkPdfTokenLooper INHERITED;
231 }; 231 };
232 232
233 // Utilities 233 // Utilities
234 static void setup_bitmap(SkBitmap* bitmap, int width, int height, SkColor color = SK_ColorWHITE) { 234 static void setup_bitmap(SkBitmap* bitmap, int width, int height, SkColor color = SK_ColorWHITE) {
235 bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height); 235 bitmap->allocN32Pixels(width, height);
236
237 bitmap->allocPixels();
238 bitmap->eraseColor(color); 236 bitmap->eraseColor(color);
239 } 237 }
240 238
241 // TODO(edisonn): synonyms? /DeviceRGB and /RGB mean the same thing. Context dep endent. 239 // TODO(edisonn): synonyms? /DeviceRGB and /RGB mean the same thing. Context dep endent.
242 static int GetColorSpaceComponents(NotOwnedString& colorSpace) { 240 static int GetColorSpaceComponents(NotOwnedString& colorSpace) {
243 if (colorSpace.equals("DeviceCMYK")) { 241 if (colorSpace.equals("DeviceCMYK")) {
244 return 4; 242 return 4;
245 } else if (colorSpace.equals("DeviceGray") || 243 } else if (colorSpace.equals("DeviceGray") ||
246 colorSpace.equals("CalGray") || 244 colorSpace.equals("CalGray") ||
247 colorSpace.equals("Indexed")) { 245 colorSpace.equals("Indexed")) {
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 long i = width * (h); 389 long i = width * (h);
392 for (int w = 0 ; w < width; w++) { 390 for (int w = 0 ; w < width; w++) {
393 uncompressedStreamArgb[i] = SkColorSetRGB(uncompressedStream[3 * w], 391 uncompressedStreamArgb[i] = SkColorSetRGB(uncompressedStream[3 * w],
394 uncompressedStream[3 * w + 1], 392 uncompressedStream[3 * w + 1],
395 uncompressedStream[3 * w + 2]); 393 uncompressedStream[3 * w + 2]);
396 i++; 394 i++;
397 } 395 }
398 uncompressedStream += bytesPerLine; 396 uncompressedStream += bytesPerLine;
399 } 397 }
400 398
401 bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height); 399 const SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
402 bitmap->setPixels(uncompressedStreamArgb); 400 bitmap->installPixels(info, uncompressedStreamArgb, info.minRowBytes());
403 } 401 }
404 else if ((colorSpace.equals("DeviceGray") || colorSpace.equals("Gray")) && b pc == 8) { 402 else if ((colorSpace.equals("DeviceGray") || colorSpace.equals("Gray")) && b pc == 8) {
405 unsigned char* uncompressedStreamA8 = (unsigned char*)malloc(width * hei ght); 403 unsigned char* uncompressedStreamA8 = (unsigned char*)malloc(width * hei ght);
406 404
407 for (int h = 0 ; h < height; h++) { 405 for (int h = 0 ; h < height; h++) {
408 long i = width * (h); 406 long i = width * (h);
409 for (int w = 0 ; w < width; w++) { 407 for (int w = 0 ; w < width; w++) {
410 uncompressedStreamA8[i] = transparencyMask ? 255 - uncompressedS tream[w] : 408 uncompressedStreamA8[i] = transparencyMask ? 255 - uncompressedS tream[w] :
411 uncompressedStream[ w]; 409 uncompressedStream[ w];
412 i++; 410 i++;
413 } 411 }
414 uncompressedStream += bytesPerLine; 412 uncompressedStream += bytesPerLine;
415 } 413 }
416 414
417 bitmap->setConfig(transparencyMask ? SkBitmap::kA8_Config : SkBitmap::kI ndex8_Config, 415 const SkColorType ct = transparencyMask ? kAlpha_8_SkColorType : kIndex_ 8_SkColorType;
418 width, height); 416 const SkImageInfo info = SkImageInfo::Make(width, height, ct, kPremul_Sk AlphaType);
419 bitmap->setPixels(uncompressedStreamA8, transparencyMask ? NULL : getGra yColortable()); 417 bitmap->installPixels(info, uncompressedStreamA8, info.minRowBytes(),
418 transparencyMask ? NULL : getGrayColortable(), NUL L, NULL);
420 } 419 }
421 420
422 // TODO(edisonn): pass color space and context here? 421 // TODO(edisonn): pass color space and context here?
423 SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "Color space N YI", NULL, NULL); 422 SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "Color space N YI", NULL, NULL);
424 return bitmap; 423 return bitmap;
425 } 424 }
426 // TODO(edisonn): preserve A1 format that skia knows, + fast convert from 111, 2 22, 444 to closest 425 // TODO(edisonn): preserve A1 format that skia knows, + fast convert from 111, 2 22, 444 to closest
427 // skia format. 426 // skia format.
428 427
429 // This functions returns the image, it does not look at the smask. 428 // This functions returns the image, it does not look at the smask.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 streamDict->getFilterAsArray(NULL)->objAtAIndex(0)->nameValue2 () 511 streamDict->getFilterAsArray(NULL)->objAtAIndex(0)->nameValue2 ()
513 .equals("DCT Decode")))) { 512 .equals("DCT Decode")))) {
514 SkBitmap* bitmap = new SkBitmap(); 513 SkBitmap* bitmap = new SkBitmap();
515 SkImageDecoder::DecodeMemory(uncompressedStream, uncompressedStreamLengt h, bitmap); 514 SkImageDecoder::DecodeMemory(uncompressedStream, uncompressedStreamLengt h, bitmap);
516 return bitmap; 515 return bitmap;
517 } 516 }
518 517
519 // TODO(edisonn): assumes RGB for now, since it is the only one implemented 518 // TODO(edisonn): assumes RGB for now, since it is the only one implemented
520 if (indexed) { 519 if (indexed) {
521 SkBitmap* bitmap = new SkBitmap(); 520 SkBitmap* bitmap = new SkBitmap();
522 bitmap->setConfig(SkBitmap::kIndex8_Config, width, height); 521 const SkImageInfo info = SkImageInfo::Make(width, height, kIndex_8_SkCol orType,
523 SkColorTable* colorTable = new SkColorTable(colors, cnt); 522 kPremul_SkAlphaType);
524 bitmap->setPixels((void*)uncompressedStream, colorTable); 523 SkAutoTUnref<SkColorTable> colorTable(new SkColorTable(colors, cnt));
524 bitmap->installPixels(info, (void*)uncompressedStream, info.minRowBytes( ), colorTable,
525 NULL, NULL);
525 return bitmap; 526 return bitmap;
526 } 527 }
527 528
528 int bytesPerLine = (int)(uncompressedStreamLength / height); 529 int bytesPerLine = (int)(uncompressedStreamLength / height);
529 #ifdef PDF_TRACE 530 #ifdef PDF_TRACE
530 if (uncompressedStreamLength % height != 0) { 531 if (uncompressedStreamLength % height != 0) {
531 printf("Warning uncompressedStreamLength modulo height != 0 !!!\n"); 532 printf("Warning uncompressedStreamLength modulo height != 0 !!!\n");
532 } 533 }
533 #endif 534 #endif
534 535
(...skipping 2370 matching lines...) Expand 10 before | Expand all | Expand 10 after
2905 2906
2906 rect = SkRect::MakeWH(width, height); 2907 rect = SkRect::MakeWH(width, height);
2907 2908
2908 setup_bitmap(output, SkScalarCeilToInt(width), SkScalarCeilToInt(height)); 2909 setup_bitmap(output, SkScalarCeilToInt(width), SkScalarCeilToInt(height));
2909 2910
2910 SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (*output))); 2911 SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (*output)));
2911 SkCanvas canvas(device); 2912 SkCanvas canvas(device);
2912 2913
2913 return renderer->renderPage(page, &canvas, rect); 2914 return renderer->renderPage(page, &canvas, rect);
2914 } 2915 }
OLDNEW
« no previous file with comments | « experimental/PdfViewer/pdf_viewer_main.cpp ('k') | gm/stroketext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698