aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-10-31 17:42:08 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-31 17:42:16 +0000
commitb7ea3da8cf722e017661710f25a83babd745a04d (patch)
treebff89863fb96261553980f1f6f47bfb185ac1c2c /dm
parenta097173bb16f6dd83f114a051a0a4ba839f79bf2 (diff)
Revert "gbr- has been brg- this whole time..."
This reverts commit 5b9a037bf41591e0076843f619ee47c9ad30e42d. Reason for revert: I got confused in here somewhere and everything is drawing wrong. Original change's description: > gbr- has been brg- this whole time... > > Rewrite things to make that a little clearer. > > A red pixel ends up in channel 2, what would naively draw as blue > without a rotation. A green pixel ends up in channel 0, which would > naively draw as red without rotation. A blue pixel ends up in channel > 1, which would naively draw as green without this rotation. > > So this transformation is: > > r -> b > g -> r > b -> g > > i.e. rgb_to_brg > > Change-Id: I12331ff2622194e34a44f421f656fbe4db5d3dca > Reviewed-on: https://skia-review.googlesource.com/65521 > Commit-Queue: Brian Osman <brianosman@google.com> > Reviewed-by: Brian Osman <brianosman@google.com> TBR=mtklein@chromium.org,brianosman@google.com Change-Id: Ib29800b242bf736b20d61375d3c437c8f4ffdce0 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/65781 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'dm')
-rw-r--r--dm/DM.cpp22
-rw-r--r--dm/DMSrcSink.cpp10
2 files changed, 18 insertions, 14 deletions
diff --git a/dm/DM.cpp b/dm/DM.cpp
index ce4eb367fd..cb5332d77a 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -912,22 +912,26 @@ static sk_sp<SkColorSpace> adobe_rgb() {
SkColorSpace::kAdobeRGB_Gamut);
}
-static sk_sp<SkColorSpace> rgb_to_brg() {
- auto m = gSRGB_toXYZD50;
- float brg[9] = {
- m[1], m[2], m[0],
- m[4], m[5], m[3],
- m[7], m[8], m[6],
- };
+static sk_sp<SkColorSpace> rgb_to_gbr() {
+ float gbr[9];
+ gbr[0] = gSRGB_toXYZD50[1];
+ gbr[1] = gSRGB_toXYZD50[2];
+ gbr[2] = gSRGB_toXYZD50[0];
+ gbr[3] = gSRGB_toXYZD50[4];
+ gbr[4] = gSRGB_toXYZD50[5];
+ gbr[5] = gSRGB_toXYZD50[3];
+ gbr[6] = gSRGB_toXYZD50[7];
+ gbr[7] = gSRGB_toXYZD50[8];
+ gbr[8] = gSRGB_toXYZD50[6];
SkMatrix44 toXYZD50(SkMatrix44::kUninitialized_Constructor);
- toXYZD50.set3x3RowMajorf(brg);
+ toXYZD50.set3x3RowMajorf(gbr);
return SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, toXYZD50);
}
static Sink* create_via(const SkString& tag, Sink* wrapped) {
#define VIA(t, via, ...) if (tag.equals(t)) { return new via(__VA_ARGS__); }
VIA("adobe", ViaCSXform, wrapped, adobe_rgb(), false);
- VIA("brg", ViaCSXform, wrapped, rgb_to_brg(), true);
+ VIA("gbr", ViaCSXform, wrapped, rgb_to_gbr(), true);
VIA("lite", ViaLite, wrapped);
VIA("pipe", ViaPipe, wrapped);
VIA("twice", ViaTwice, wrapped);
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 656237dede..8e36f0c669 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -2168,11 +2168,11 @@ Error ViaCSXform::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkSt
uint32_t* row = pixels.getAddr32(0,y);
for (int x = 0; x < pixels.width(); x++) {
uint32_t pixel = *row;
- uint8_t g = (pixel >> 0) & 0xff,
- b = (pixel >> 8) & 0xff,
- r = (pixel >> 16) & 0xff,
- a = (pixel >> 24) & 0xff;
- *row++ = SkSwizzle_RGBA_to_PMColor(r << 0 | g << 8 | b << 16 | a << 24);
+ uint8_t r = SkGetPackedR32(pixel);
+ uint8_t g = SkGetPackedG32(pixel);
+ uint8_t b = SkGetPackedB32(pixel);
+ uint8_t a = SkGetPackedA32(pixel);
+ *row++ = SkSwizzle_RGBA_to_PMColor(b << 0 | r << 8 | g << 16 | a << 24);
}
}