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

Side by Side Diff: webkit/tools/test_shell/test_shell.cc

Issue 243076: Move the JPEG and PNG codecs from base/gfx to app/gfx/codec. Move the classes... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #undef LOG 5 #undef LOG
6 6
7 #include "webkit/tools/test_shell/test_shell.h" 7 #include "webkit/tools/test_shell/test_shell.h"
8 8
9 #include "app/gfx/codec/png_codec.h"
9 #include "base/base_paths.h" 10 #include "base/base_paths.h"
10 #include "base/command_line.h" 11 #include "base/command_line.h"
11 #include "base/debug_on_start.h" 12 #include "base/debug_on_start.h"
12 #include "base/file_path.h" 13 #include "base/file_path.h"
13 #include "base/file_util.h" 14 #include "base/file_util.h"
14 #include "base/gfx/png_encoder.h"
15 #include "base/gfx/size.h" 15 #include "base/gfx/size.h"
16 #include "base/icu_util.h" 16 #include "base/icu_util.h"
17 #if defined(OS_MACOSX) 17 #if defined(OS_MACOSX)
18 #include "base/mac_util.h" 18 #include "base/mac_util.h"
19 #endif 19 #endif
20 #include "base/md5.h" 20 #include "base/md5.h"
21 #include "base/message_loop.h" 21 #include "base/message_loop.h"
22 #include "base/path_service.h" 22 #include "base/path_service.h"
23 #include "base/stats_table.h" 23 #include "base/stats_table.h"
24 #include "base/string_util.h" 24 #include "base/string_util.h"
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 // static 258 // static
259 std::string TestShell::DumpImage(skia::PlatformCanvas* canvas, 259 std::string TestShell::DumpImage(skia::PlatformCanvas* canvas,
260 const std::wstring& file_name, const std::string& pixel_hash) { 260 const std::wstring& file_name, const std::string& pixel_hash) {
261 skia::BitmapPlatformDevice& device = 261 skia::BitmapPlatformDevice& device =
262 static_cast<skia::BitmapPlatformDevice&>(canvas->getTopPlatformDevice()); 262 static_cast<skia::BitmapPlatformDevice&>(canvas->getTopPlatformDevice());
263 const SkBitmap& src_bmp = device.accessBitmap(false); 263 const SkBitmap& src_bmp = device.accessBitmap(false);
264 264
265 // Encode image. 265 // Encode image.
266 std::vector<unsigned char> png; 266 std::vector<unsigned char> png;
267 SkAutoLockPixels src_bmp_lock(src_bmp); 267 SkAutoLockPixels src_bmp_lock(src_bmp);
268 PNGEncoder::ColorFormat color_format = PNGEncoder::FORMAT_BGRA; 268 gfx::PNGCodec::ColorFormat color_format = gfx::PNGCodec::FORMAT_BGRA;
269 269
270 // Fix the alpha. The expected PNGs on Mac have an alpha channel, so we want 270 // Fix the alpha. The expected PNGs on Mac have an alpha channel, so we want
271 // to keep it. On Windows, the alpha channel is wrong since text/form control 271 // to keep it. On Windows, the alpha channel is wrong since text/form control
272 // drawing may have erased it in a few places. So on Windows we force it to 272 // drawing may have erased it in a few places. So on Windows we force it to
273 // opaque and also don't write the alpha channel for the reference. Linux 273 // opaque and also don't write the alpha channel for the reference. Linux
274 // doesn't have the wrong alpha like Windows, but we ignore it anyway. 274 // doesn't have the wrong alpha like Windows, but we ignore it anyway.
275 #if defined(OS_WIN) 275 #if defined(OS_WIN)
276 bool discard_transparency = true; 276 bool discard_transparency = true;
277 device.makeOpaque(0, 0, src_bmp.width(), src_bmp.height()); 277 device.makeOpaque(0, 0, src_bmp.width(), src_bmp.height());
278 #elif defined(OS_LINUX) 278 #elif defined(OS_LINUX)
(...skipping 11 matching lines...) Expand all
290 MD5Init(&ctx); 290 MD5Init(&ctx);
291 MD5Update(&ctx, src_bmp.getPixels(), src_bmp.getSize()); 291 MD5Update(&ctx, src_bmp.getPixels(), src_bmp.getSize());
292 292
293 MD5Digest digest; 293 MD5Digest digest;
294 MD5Final(&digest, &ctx); 294 MD5Final(&digest, &ctx);
295 std::string md5hash = MD5DigestToBase16(digest); 295 std::string md5hash = MD5DigestToBase16(digest);
296 296
297 // Only encode and dump the png if the hashes don't match. Encoding the image 297 // Only encode and dump the png if the hashes don't match. Encoding the image
298 // is really expensive. 298 // is really expensive.
299 if (md5hash.compare(pixel_hash) != 0) { 299 if (md5hash.compare(pixel_hash) != 0) {
300 PNGEncoder::Encode( 300 gfx::PNGCodec::Encode(
301 reinterpret_cast<const unsigned char*>(src_bmp.getPixels()), 301 reinterpret_cast<const unsigned char*>(src_bmp.getPixels()),
302 color_format, src_bmp.width(), src_bmp.height(), 302 color_format, src_bmp.width(), src_bmp.height(),
303 static_cast<int>(src_bmp.rowBytes()), discard_transparency, &png); 303 static_cast<int>(src_bmp.rowBytes()), discard_transparency, &png);
304 304
305 // Write to disk. 305 // Write to disk.
306 file_util::WriteFile(file_name, reinterpret_cast<const char *>(&png[0]), 306 file_util::WriteFile(file_name, reinterpret_cast<const char *>(&png[0]),
307 png.size()); 307 png.size());
308 } 308 }
309 309
310 return md5hash; 310 return md5hash;
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 685
686 void CloseIdleConnections() { 686 void CloseIdleConnections() {
687 // Used in benchmarking, Ignored for test_shell. 687 // Used in benchmarking, Ignored for test_shell.
688 } 688 }
689 689
690 void SetCacheMode(bool enabled) { 690 void SetCacheMode(bool enabled) {
691 // Used in benchmarking, Ignored for test_shell. 691 // Used in benchmarking, Ignored for test_shell.
692 } 692 }
693 693
694 } // namespace webkit_glue 694 } // namespace webkit_glue
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698