1#include "Test.h"
2#include "SkBitmap.h"
3
4static void TestGetColor(skiatest::Reporter* reporter) {
5    static const struct Rec {
6        SkBitmap::Config    fConfig;
7        SkColor             fInColor;
8        SkColor             fOutColor;
9    } gRec[] = {
10        // todo: add some tests that involve alpha, so we exercise the
11        // unpremultiply aspect of getColor()
12        {   SkBitmap::kA8_Config,           0xFF000000,     0xFF000000  },
13        {   SkBitmap::kA8_Config,           0,              0           },
14        {   SkBitmap::kARGB_4444_Config,    0xFF224466,     0xFF224466  },
15        {   SkBitmap::kARGB_4444_Config,    0,              0           },
16        {   SkBitmap::kRGB_565_Config,      0xFF00FF00,     0xFF00FF00  },
17        {   SkBitmap::kRGB_565_Config,      0xFFFF00FF,     0xFFFF00FF  },
18        {   SkBitmap::kARGB_8888_Config,    0xFFFFFFFF,     0xFFFFFFFF  },
19        {   SkBitmap::kARGB_8888_Config,    0,              0           },
20        {   SkBitmap::kARGB_8888_Config,    0xFF224466,     0xFF224466  },
21    };
22
23    for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
24        SkBitmap bm;
25        uint32_t storage[1];
26        bm.setConfig(gRec[i].fConfig, 1, 1);
27        bm.setPixels(storage);
28        bm.eraseColor(gRec[i].fInColor);
29
30        SkColor c = bm.getColor(0, 0);
31        REPORTER_ASSERT(reporter, c == gRec[i].fOutColor);
32    }
33}
34
35#include "TestClassDef.h"
36DEFINE_TESTCLASS("GetColor", TestGetColorClass, TestGetColor)
37