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

Side by Side Diff: cc/resources/picture.cc

Issue 15496006: Use the new function signature for EncodeBitmap. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | content/renderer/gpu/gpu_benchmarking_extension.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/picture.h" 5 #include "cc/resources/picture.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 10
(...skipping 21 matching lines...) Expand all
32 32
33 namespace { 33 namespace {
34 34
35 // Version ID; to be used in serialization. 35 // Version ID; to be used in serialization.
36 const int kPictureVersion = 1; 36 const int kPictureVersion = 1;
37 37
38 // Minimum size of a decoded stream that we need. 38 // Minimum size of a decoded stream that we need.
39 // 4 bytes for version, 4 * 4 for each of the 2 rects. 39 // 4 bytes for version, 4 * 4 for each of the 2 rects.
40 const unsigned int kMinPictureSizeBytes = 36; 40 const unsigned int kMinPictureSizeBytes = 36;
41 41
42 bool EncodeBitmap(SkWStream* stream, const SkBitmap& bm) { 42 SkData* EncodeBitmap(size_t* offset, const SkBitmap& bm) {
43 const int kJpegQuality = 80; 43 const int kJpegQuality = 80;
44 std::vector<unsigned char> data; 44 std::vector<unsigned char> data;
45 45
46 // If bitmap is opaque, encode as JPEG. 46 // If bitmap is opaque, encode as JPEG.
47 // Otherwise encode as PNG. 47 // Otherwise encode as PNG.
48 bool encoding_succeeded = false; 48 bool encoding_succeeded = false;
49 if (bm.isOpaque()) { 49 if (bm.isOpaque()) {
50 SkAutoLockPixels lock_bitmap(bm); 50 SkAutoLockPixels lock_bitmap(bm);
51 if (bm.empty()) 51 if (bm.empty())
52 return false; 52 return false;
vmpstr 2013/05/21 18:18:31 return NULL
scroggo 2013/05/21 18:36:35 Done.
53 53
54 encoding_succeeded = gfx::JPEGCodec::Encode( 54 encoding_succeeded = gfx::JPEGCodec::Encode(
55 reinterpret_cast<unsigned char*>(bm.getAddr32(0, 0)), 55 reinterpret_cast<unsigned char*>(bm.getAddr32(0, 0)),
56 gfx::JPEGCodec::FORMAT_SkBitmap, 56 gfx::JPEGCodec::FORMAT_SkBitmap,
57 bm.width(), 57 bm.width(),
58 bm.height(), 58 bm.height(),
59 bm.rowBytes(), 59 bm.rowBytes(),
60 kJpegQuality, 60 kJpegQuality,
61 &data); 61 &data);
62 } else { 62 } else {
63 encoding_succeeded = gfx::PNGCodec::EncodeBGRASkBitmap(bm, false, &data); 63 encoding_succeeded = gfx::PNGCodec::EncodeBGRASkBitmap(bm, false, &data);
64 } 64 }
65 65
66 if (encoding_succeeded) 66 if (encoding_succeeded) {
67 return stream->write(&data.front(), data.size()); 67 *offset = 0;
68 return false; 68 return SkData::NewWithCopy(&data.front(), data.size());
69 }
70 return NULL;
69 } 71 }
70 72
71 bool DecodeBitmap(const void* buffer, size_t size, SkBitmap* bm) { 73 bool DecodeBitmap(const void* buffer, size_t size, SkBitmap* bm) {
72 const unsigned char* data = static_cast<const unsigned char *>(buffer); 74 const unsigned char* data = static_cast<const unsigned char *>(buffer);
73 75
74 // Try PNG first. 76 // Try PNG first.
75 if (gfx::PNGCodec::Decode(data, size, bm)) 77 if (gfx::PNGCodec::Decode(data, size, bm))
76 return true; 78 return true;
77 79
78 // Try JPEG. 80 // Try JPEG.
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 raster_data->Set("picture_id", TracedValue::CreateIDRef(this).release()); 503 raster_data->Set("picture_id", TracedValue::CreateIDRef(this).release());
502 raster_data->SetDouble("scale", scale); 504 raster_data->SetDouble("scale", scale);
503 raster_data->SetDouble("rect_x", rect.x()); 505 raster_data->SetDouble("rect_x", rect.x());
504 raster_data->SetDouble("rect_y", rect.y()); 506 raster_data->SetDouble("rect_y", rect.y());
505 raster_data->SetDouble("rect_width", rect.width()); 507 raster_data->SetDouble("rect_width", rect.width());
506 raster_data->SetDouble("rect_height", rect.height()); 508 raster_data->SetDouble("rect_height", rect.height());
507 return TracedValue::FromValue(raster_data.release()); 509 return TracedValue::FromValue(raster_data.release());
508 } 510 }
509 511
510 } // namespace cc 512 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | content/renderer/gpu/gpu_benchmarking_extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698