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

Side by Side Diff: skia/ext/vector_canvas_unittest.cc

Issue 14110: Move the "platform" wrappers in skia/ext to the skia namespace. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 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 | « skia/ext/vector_canvas.cc ('k') | skia/ext/vector_device.h » ('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 (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "skia/ext/vector_canvas.h" 5 #include "skia/ext/vector_canvas.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/gfx/gdi_util.h" 11 #include "base/gfx/gdi_util.h"
12 #include "base/gfx/png_decoder.h" 12 #include "base/gfx/png_decoder.h"
13 #include "base/gfx/png_encoder.h" 13 #include "base/gfx/png_encoder.h"
14 #include "base/gfx/size.h" 14 #include "base/gfx/size.h"
15 #include "base/path_service.h" 15 #include "base/path_service.h"
16 #include "base/string_util.h" 16 #include "base/string_util.h"
17 #include "base/win_util.h" 17 #include "base/win_util.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 19
20 #include "SkDashPathEffect.h" 20 #include "SkDashPathEffect.h"
21 21
22 namespace skia {
23
22 namespace { 24 namespace {
23 25
24 const wchar_t* const kGenerateSwitch = L"vector-canvas-generate"; 26 const wchar_t* const kGenerateSwitch = L"vector-canvas-generate";
25 27
26 // Base class for unit test that uses data. It initializes a directory path 28 // Base class for unit test that uses data. It initializes a directory path
27 // based on the test's name. 29 // based on the test's name.
28 class DataUnitTest : public testing::Test { 30 class DataUnitTest : public testing::Test {
29 public: 31 public:
30 DataUnitTest(const std::wstring& base_path) : base_path_(base_path) { } 32 DataUnitTest(const std::wstring& base_path) : base_path_(base_path) { }
31 33
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 int w; 133 int w;
132 int h; 134 int h;
133 EXPECT_TRUE(PNGDecoder::Decode( 135 EXPECT_TRUE(PNGDecoder::Decode(
134 reinterpret_cast<const unsigned char*>(compressed.c_str()), 136 reinterpret_cast<const unsigned char*>(compressed.c_str()),
135 compressed.size(), PNGDecoder::FORMAT_BGRA, &data_, &w, &h)); 137 compressed.size(), PNGDecoder::FORMAT_BGRA, &data_, &w, &h));
136 size_.SetSize(w, h); 138 size_.SetSize(w, h);
137 row_length_ = w * sizeof(uint32); 139 row_length_ = w * sizeof(uint32);
138 } 140 }
139 141
140 // Loads the image from a canvas. 142 // Loads the image from a canvas.
141 Image(const gfx::PlatformCanvasWin& canvas) : ignore_alpha_(true) { 143 Image(const skia::PlatformCanvasWin& canvas) : ignore_alpha_(true) {
142 // Use a different way to access the bitmap. The normal way would be to 144 // Use a different way to access the bitmap. The normal way would be to
143 // query the SkBitmap. 145 // query the SkBitmap.
144 HDC context = canvas.getTopPlatformDevice().getBitmapDC(); 146 HDC context = canvas.getTopPlatformDevice().getBitmapDC();
145 HGDIOBJ bitmap = GetCurrentObject(context, OBJ_BITMAP); 147 HGDIOBJ bitmap = GetCurrentObject(context, OBJ_BITMAP);
146 EXPECT_TRUE(bitmap != NULL); 148 EXPECT_TRUE(bitmap != NULL);
147 // Initialize the clip region to the entire bitmap. 149 // Initialize the clip region to the entire bitmap.
148 BITMAP bitmap_data; 150 BITMAP bitmap_data;
149 EXPECT_EQ(GetObject(bitmap, sizeof(BITMAP), &bitmap_data), 151 EXPECT_EQ(GetObject(bitmap, sizeof(BITMAP), &bitmap_data),
150 sizeof(BITMAP)); 152 sizeof(BITMAP));
151 size_.SetSize(bitmap_data.bmWidth, bitmap_data.bmHeight); 153 size_.SetSize(bitmap_data.bmWidth, bitmap_data.bmHeight);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 if (action_ == GENERATE) { 272 if (action_ == GENERATE) {
271 // Make sure the directory exist. 273 // Make sure the directory exist.
272 file_util::CreateDirectory(test_dir()); 274 file_util::CreateDirectory(test_dir());
273 } 275 }
274 } 276 }
275 277
276 // Compares or saves the bitmap currently loaded in the context, depending on 278 // Compares or saves the bitmap currently loaded in the context, depending on
277 // kGenerating value. Returns 0 on success or any positive value between ]0, 279 // kGenerating value. Returns 0 on success or any positive value between ]0,
278 // 100] on failure. The return value is the percentage of difference between 280 // 100] on failure. The return value is the percentage of difference between
279 // the image in the file and the image in the canvas. 281 // the image in the file and the image in the canvas.
280 double ProcessCanvas(const gfx::PlatformCanvasWin& canvas, 282 double ProcessCanvas(const skia::PlatformCanvasWin& canvas,
281 std::wstring filename) const { 283 std::wstring filename) const {
282 filename += L".png"; 284 filename += L".png";
283 switch (action_) { 285 switch (action_) {
284 case GENERATE: 286 case GENERATE:
285 SaveImage(canvas, filename); 287 SaveImage(canvas, filename);
286 return 0.; 288 return 0.;
287 case COMPARE: 289 case COMPARE:
288 return CompareImage(canvas, filename); 290 return CompareImage(canvas, filename);
289 case NOOP: 291 case NOOP:
290 return 0; 292 return 0;
291 default: 293 default:
292 // Invalid state, returns that the image is 100 different. 294 // Invalid state, returns that the image is 100 different.
293 return 100.; 295 return 100.;
294 } 296 }
295 } 297 }
296 298
297 // Compares the bitmap currently loaded in the context with the file. Returns 299 // Compares the bitmap currently loaded in the context with the file. Returns
298 // the percentage of pixel difference between both images, between 0 and 100. 300 // the percentage of pixel difference between both images, between 0 and 100.
299 double CompareImage(const gfx::PlatformCanvasWin& canvas, 301 double CompareImage(const skia::PlatformCanvasWin& canvas,
300 const std::wstring& filename) const { 302 const std::wstring& filename) const {
301 Image image1(canvas); 303 Image image1(canvas);
302 Image image2(test_file(filename)); 304 Image image2(test_file(filename));
303 double diff = image1.PercentageDifferent(image2); 305 double diff = image1.PercentageDifferent(image2);
304 return diff; 306 return diff;
305 } 307 }
306 308
307 // Saves the bitmap currently loaded in the context into the file. 309 // Saves the bitmap currently loaded in the context into the file.
308 void SaveImage(const gfx::PlatformCanvasWin& canvas, 310 void SaveImage(const skia::PlatformCanvasWin& canvas,
309 const std::wstring& filename) const { 311 const std::wstring& filename) const {
310 Image(canvas).SaveToFile(test_file(filename)); 312 Image(canvas).SaveToFile(test_file(filename));
311 } 313 }
312 314
313 ProcessAction action_; 315 ProcessAction action_;
314 316
315 DISALLOW_EVIL_CONSTRUCTORS(ImageTest); 317 DISALLOW_EVIL_CONSTRUCTORS(ImageTest);
316 }; 318 };
317 319
318 // Premultiply the Alpha channel on the R, B and G channels. 320 // Premultiply the Alpha channel on the R, B and G channels.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 delete context_; 390 delete context_;
389 context_ = NULL; 391 context_ = NULL;
390 392
391 parent::TearDown(); 393 parent::TearDown();
392 } 394 }
393 395
394 void Init(int size) { 396 void Init(int size) {
395 size_ = size; 397 size_ = size;
396 context_ = new Context(); 398 context_ = new Context();
397 bitmap_ = new Bitmap(*context_, size_, size_); 399 bitmap_ = new Bitmap(*context_, size_, size_);
398 vcanvas_ = new gfx::VectorCanvas(context_->context(), size_, size_); 400 vcanvas_ = new VectorCanvas(context_->context(), size_, size_);
399 pcanvas_ = new gfx::PlatformCanvasWin(size_, size_, false); 401 pcanvas_ = new PlatformCanvasWin(size_, size_, false);
400 402
401 // Clear white. 403 // Clear white.
402 vcanvas_->drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode); 404 vcanvas_->drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode);
403 pcanvas_->drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode); 405 pcanvas_->drawARGB(255, 255, 255, 255, SkPorterDuff::kSrc_Mode);
404 } 406 }
405 407
406 // Compares both canvas and returns the pixel difference in percentage between 408 // Compares both canvas and returns the pixel difference in percentage between
407 // both images. 0 on success and ]0, 100] on failure. 409 // both images. 0 on success and ]0, 100] on failure.
408 double ProcessImage(const std::wstring& filename) { 410 double ProcessImage(const std::wstring& filename) {
409 std::wstring number(StringPrintf(L"%02d_", number_++)); 411 std::wstring number(StringPrintf(L"%02d_", number_++));
(...skipping 20 matching lines...) Expand all
430 // Current image number in the current test. Used to number of test files. 432 // Current image number in the current test. Used to number of test files.
431 int number_; 433 int number_;
432 434
433 // A temporary HDC to draw into. 435 // A temporary HDC to draw into.
434 Context* context_; 436 Context* context_;
435 437
436 // Bitmap created inside context_. 438 // Bitmap created inside context_.
437 Bitmap* bitmap_; 439 Bitmap* bitmap_;
438 440
439 // Vector based canvas. 441 // Vector based canvas.
440 gfx::VectorCanvas* vcanvas_; 442 VectorCanvas* vcanvas_;
441 443
442 // Pixel based canvas. 444 // Pixel based canvas.
443 gfx::PlatformCanvasWin* pcanvas_; 445 PlatformCanvasWin* pcanvas_;
444 446
445 // When true (default), vcanvas_ and pcanvas_ contents are compared and 447 // When true (default), vcanvas_ and pcanvas_ contents are compared and
446 // verified to be identical. 448 // verified to be identical.
447 bool compare_canvas_; 449 bool compare_canvas_;
448 }; 450 };
449 451
450 452
451 //////////////////////////////////////////////////////////////////////////////// 453 ////////////////////////////////////////////////////////////////////////////////
452 // Actual tests 454 // Actual tests
453 455
454 TEST_F(VectorCanvasTest, Uninitialized) { 456 TEST_F(VectorCanvasTest, Uninitialized) {
455 // Do a little mubadumba do get uninitialized stuff. 457 // Do a little mubadumba do get uninitialized stuff.
456 VectorCanvasTest::TearDown(); 458 VectorCanvasTest::TearDown();
457 459
458 // The goal is not to verify that have the same uninitialized data. 460 // The goal is not to verify that have the same uninitialized data.
459 compare_canvas_ = false; 461 compare_canvas_ = false;
460 462
461 context_ = new Context(); 463 context_ = new Context();
462 bitmap_ = new Bitmap(*context_, size_, size_); 464 bitmap_ = new Bitmap(*context_, size_, size_);
463 vcanvas_ = new gfx::VectorCanvas(context_->context(), size_, size_); 465 vcanvas_ = new VectorCanvas(context_->context(), size_, size_);
464 pcanvas_ = new gfx::PlatformCanvasWin(size_, size_, false); 466 pcanvas_ = new PlatformCanvasWin(size_, size_, false);
465 467
466 // VectorCanvas default initialization is black. 468 // VectorCanvas default initialization is black.
467 // PlatformCanvas default initialization is almost white 0x01FFFEFD (invalid 469 // PlatformCanvas default initialization is almost white 0x01FFFEFD (invalid
468 // Skia color) in both Debug and Release. See magicTransparencyColor in 470 // Skia color) in both Debug and Release. See magicTransparencyColor in
469 // platform_device.cc 471 // platform_device.cc
470 EXPECT_EQ(0., ProcessImage(L"empty")); 472 EXPECT_EQ(0., ProcessImage(L"empty"));
471 } 473 }
472 474
473 TEST_F(VectorCanvasTest, BasicDrawing) { 475 TEST_F(VectorCanvasTest, BasicDrawing) {
474 EXPECT_EQ(Image(*vcanvas_).PercentageDifferent(Image(*pcanvas_)), 0.) 476 EXPECT_EQ(Image(*vcanvas_).PercentageDifferent(Image(*pcanvas_)), 0.)
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 1002
1001 { 1003 {
1002 vcanvas_->rotate(67); 1004 vcanvas_->rotate(67);
1003 pcanvas_->rotate(67); 1005 pcanvas_->rotate(67);
1004 vcanvas_->drawBitmap(bitmap, 20, -50, NULL); 1006 vcanvas_->drawBitmap(bitmap, 20, -50, NULL);
1005 pcanvas_->drawBitmap(bitmap, 20, -50, NULL); 1007 pcanvas_->drawBitmap(bitmap, 20, -50, NULL);
1006 EXPECT_EQ(0., ProcessImage(L"rotate")); 1008 EXPECT_EQ(0., ProcessImage(L"rotate"));
1007 } 1009 }
1008 } 1010 }
1009 1011
1012 } // namespace skia
OLDNEW
« no previous file with comments | « skia/ext/vector_canvas.cc ('k') | skia/ext/vector_device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698