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

Side by Side Diff: tests/ColorMatrixTest.cpp

Issue 1134753008: Add ColorMatrix filter tests from Android CTS. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #include "SkBitmap.h"
9 #include "SkCanvas.h"
10 #include "SkColor.h"
11 #include "SkColorMatrixFilter.h"
12 #include "SkPaint.h"
13
14 #include "Test.h"
15
16 static inline void assert_color(skiatest::Reporter* reporter, SkColor expected, SkColor actual) {
17 const int TOLERANCE = 1;
18 REPORTER_ASSERT(reporter, abs(SkColorGetA(expected) - SkColorGetA(actual)) < = TOLERANCE);
19 REPORTER_ASSERT(reporter, abs(SkColorGetR(expected) - SkColorGetR(actual)) < = TOLERANCE);
20 REPORTER_ASSERT(reporter, abs(SkColorGetG(expected) - SkColorGetG(actual)) < = TOLERANCE);
21 REPORTER_ASSERT(reporter, abs(SkColorGetB(expected) - SkColorGetB(actual)) < = TOLERANCE);
22 }
23
24 /**
25 * This test case is a mirror of the Android CTS tests for MatrixColorFilter
26 * found in the android.graphics.ColorMatrixColorFilterTest class.
27 */
28 static inline void test_colorMatrix(skiatest::Reporter* reporter) {
scroggo 2015/05/19 20:10:44 Why is this its own function? Why not just use DEF
djsollen 2015/05/19 20:24:29 Personal preference. My intention was that this m
29
30 SkBitmap bitmap;
31 bitmap.allocN32Pixels(1,1);
32
33 SkCanvas canvas(bitmap);
34 SkPaint paint;
35
36 SkScalar blueToCyan[20] = {
37 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
38 0.0f, 1.0f, 1.0f, 0.0f, 0.0f,
39 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
40 0.0f, 0.0f, 0.0f, 1.0f, 0.0f };
41 paint.setColorFilter(SkColorMatrixFilter::Create(blueToCyan))->unref();
42
43 paint.setColor(SK_ColorBLUE);
44 canvas.drawPoint(0, 0, paint);
45 assert_color(reporter, SK_ColorCYAN, bitmap.getColor(0, 0));
46
47 paint.setColor(SK_ColorGREEN);
48 canvas.drawPoint(0, 0, paint);
49 assert_color(reporter, SK_ColorGREEN, bitmap.getColor(0, 0));
50
51 paint.setColor(SK_ColorRED);
52 canvas.drawPoint(0, 0, paint);
53 assert_color(reporter, SK_ColorRED, bitmap.getColor(0, 0));
54
55 // color components are clipped, not scaled
56 paint.setColor(SK_ColorMAGENTA);
57 canvas.drawPoint(0, 0, paint);
58 assert_color(reporter, SK_ColorWHITE, bitmap.getColor(0, 0));
59
60 SkScalar transparentRedAddBlue[20] = {
61 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
62 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
63 0.0f, 0.0f, 1.0f, 0.0f, 64.0f,
64 -0.5f, 0.0f, 0.0f, 1.0f, 0.0f
65 };
66 paint.setColorFilter(SkColorMatrixFilter::Create(transparentRedAddBlue))->un ref();
67 bitmap.eraseColor(SK_ColorTRANSPARENT);
68
69 paint.setColor(SK_ColorRED);
70 canvas.drawPoint(0, 0, paint);
71 // Temporarily disabled assert until skbug.com/3848 is resolved.
72 // assert_color(reporter, SkColorSetARGB(128, 255, 0, 64), bitmap.getColor(0 , 0));
73
74 paint.setColor(SK_ColorCYAN);
75 canvas.drawPoint(0, 0, paint);
76 // blue gets clipped
77 assert_color(reporter, SK_ColorCYAN, bitmap.getColor(0, 0));
78
79 // change array to filter out green
80 REPORTER_ASSERT(reporter, 1.0f == transparentRedAddBlue[6]);
81 transparentRedAddBlue[6] = 0.0f;
82
83 // check that changing the array has no effect
84 canvas.drawPoint(0, 0, paint);
85 assert_color(reporter, SK_ColorCYAN, bitmap.getColor(0, 0));
86
87 // create a new filter with the changed matrix
88 paint.setColorFilter(SkColorMatrixFilter::Create(transparentRedAddBlue))->un ref();
89 canvas.drawPoint(0, 0, paint);
90 assert_color(reporter, SK_ColorBLUE, bitmap.getColor(0, 0));
91 }
92
93 DEF_TEST(ColorMatrix, reporter) {
94 test_colorMatrix(reporter);
95 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698