diff options
author | reed <reed@google.com> | 2016-06-24 18:14:07 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-24 18:14:07 -0700 |
commit | a84d6606f5f53b8e1a42d55676e4f1ea47be5575 (patch) | |
tree | ee13ed80beac1f415ddd4374a3b9cf008d8ca18c | |
parent | f8c2be3fbccc4be0ccfce25327200e07fc99fd1f (diff) |
remove experimental treat-skcolor-as-srgb flag
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2097003003
Review-Url: https://codereview.chromium.org/2097003003
-rw-r--r-- | samplecode/SampleApp.cpp | 9 | ||||
-rw-r--r-- | src/core/SkColor.cpp | 12 | ||||
-rw-r--r-- | src/core/SkPM4fPriv.h | 4 | ||||
-rw-r--r-- | tests/SkColor4fTest.cpp | 66 | ||||
-rw-r--r-- | tools/skiaserve/Request.cpp | 6 | ||||
-rw-r--r-- | tools/skiaserve/Request.h | 1 | ||||
-rw-r--r-- | tools/skiaserve/skiaserve.cpp | 1 | ||||
-rw-r--r-- | tools/skiaserve/urlhandlers/SRGBModeHandler.cpp | 42 | ||||
-rw-r--r-- | tools/skiaserve/urlhandlers/UrlHandler.h | 13 |
9 files changed, 6 insertions, 148 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index b80ea44d30..a1e42e3aac 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -834,8 +834,6 @@ SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev itemID = fAppMenu->appendList("ColorType", "ColorType", sinkID, 0, gConfig[0].fName, gConfig[1].fName, gConfig[2].fName, nullptr); fAppMenu->assignKeyEquivalentToItem(itemID, 'C'); - itemID = fAppMenu->appendSwitch("sRGB SkColor", "sRGB SkColor", sinkID, gTreatSkColorAsSRGB); - fAppMenu->assignKeyEquivalentToItem(itemID, 'S'); itemID = fAppMenu->appendList("Device Type", "Device Type", sinkID, 0, "Raster", @@ -1549,8 +1547,7 @@ bool SampleWindow::onEvent(const SkEvent& evt) { SkOSMenu::FindListIndex(evt, "Hinting", &fHintingState) || SkOSMenu::FindSwitchState(evt, "Clip", &fUseClip) || SkOSMenu::FindSwitchState(evt, "Zoomer", &fShowZoomer) || - SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify) || - SkOSMenu::FindSwitchState(evt, "sRGB SkColor", &gTreatSkColorAsSRGB)) + SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify)) { this->inval(nullptr); this->updateTitle(); @@ -2060,10 +2057,6 @@ void SampleWindow::updateTitle() { title.appendf(" %d bpc", fDevManager->getColorBits()); } - if (gTreatSkColorAsSRGB) { - title.append(" sRGB"); - } - this->setTitle(title.c_str()); } diff --git a/src/core/SkColor.cpp b/src/core/SkColor.cpp index 985790dfe5..a1404a27e3 100644 --- a/src/core/SkColor.cpp +++ b/src/core/SkColor.cpp @@ -9,8 +9,6 @@ #include "SkColorPriv.h" #include "SkFixed.h" -bool gTreatSkColorAsSRGB; - SkPMColor SkPreMultiplyARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) { return SkPremultiplyARGBInline(a, r, g, b); } @@ -158,17 +156,15 @@ SkColor4f SkColor4f::FromColor(SkColor c) { Sk4f value = SkNx_shuffle<2,1,0,3>(SkNx_cast<float>(Sk4b::Load(&c))); SkColor4f c4; (value * Sk4f(1.0f / 255)).store(&c4); - if (gTreatSkColorAsSRGB) { - c4.fR = srgb_to_linear(c4.fR); - c4.fG = srgb_to_linear(c4.fG); - c4.fB = srgb_to_linear(c4.fB); - } + c4.fR = srgb_to_linear(c4.fR); + c4.fG = srgb_to_linear(c4.fG); + c4.fB = srgb_to_linear(c4.fB); return c4; } SkColor SkColor4f::toSkColor() const { SkColor result; - Sk4f value = SkNx_shuffle<2, 1, 0, 3>(Sk4f::Load(this->vec())); + Sk4f value = Sk4f(linear_to_srgb(fB), linear_to_srgb(fG), linear_to_srgb(fR), fA); SkNx_cast<uint8_t>(value * Sk4f(255) + Sk4f(0.5f)).store(&result); return result; } diff --git a/src/core/SkPM4fPriv.h b/src/core/SkPM4fPriv.h index 12bf7d0f36..fa5498f90a 100644 --- a/src/core/SkPM4fPriv.h +++ b/src/core/SkPM4fPriv.h @@ -11,8 +11,6 @@ #include "SkColorPriv.h" #include "SkPM4f.h" -extern bool gTreatSkColorAsSRGB; - static inline float get_alpha(const Sk4f& f4) { return f4[SkPM4f::A]; } @@ -108,7 +106,7 @@ static inline Sk4f Sk4f_fromS32(uint32_t src) { // SkColor has an ordering of (b, g, r, a) if cast to an Sk4f, so the code swizzles r and b to // produce the needed (r, g, b, a) ordering. static inline Sk4f Sk4f_from_SkColor(SkColor color) { - return swizzle_rb(gTreatSkColorAsSRGB ? Sk4f_fromS32(color) : Sk4f_fromL32(color)); + return swizzle_rb(Sk4f_fromS32(color)); } static inline uint32_t Sk4f_toL32(const Sk4f& x4) { diff --git a/tests/SkColor4fTest.cpp b/tests/SkColor4fTest.cpp index 1dacfb2d95..0cbd5ce4c6 100644 --- a/tests/SkColor4fTest.cpp +++ b/tests/SkColor4fTest.cpp @@ -43,7 +43,6 @@ DEF_TEST(SkColor4f_FromColor, reporter) { { SK_ColorGREEN, { 0, 1, 0, 1 } }, { SK_ColorBLUE, { 0, 0, 1, 1 } }, { 0, { 0, 0, 0, 0 } }, - { 0x55AAFF00, { 2/3.0f, 1, 0, 1 / 3.0f } }, }; for (const auto& r : recs) { @@ -97,35 +96,6 @@ static sk_sp<SkColorFilter> make_compose_cf() { return SkColorFilter::MakeComposeFilter(make_mode_cf(), make_mx_cf()); } -static sk_sp<SkShader> make_color_sh() { return SkShader::MakeColorShader(0xFFBB8855); } - -static sk_sp<SkShader> make_image_sh() { - const SkImageInfo info = SkImageInfo::MakeN32Premul(2, 2); - const SkPMColor pixels[] { - SkPackARGB32(0xFF, 0xBB, 0x88, 0x55), - SkPackARGB32(0xFF, 0xBB, 0x88, 0x55), - SkPackARGB32(0xFF, 0xBB, 0x88, 0x55), - SkPackARGB32(0xFF, 0xBB, 0x88, 0x55), - }; - sk_sp<SkImage> image(SkImage::MakeRasterCopy(SkPixmap(info, pixels, sizeof(SkPMColor) * 2))); - return image->makeShader(SkShader::kClamp_TileMode, SkShader::kClamp_TileMode); -} - -static sk_sp<SkShader> make_grad_sh() { -#if 0 - const SkPoint pts[] {{ 0, 0 }, { 100, 100 }}; - const SkColor colors[] { SK_ColorRED, SK_ColorBLUE }; - return SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode); -#else - // TODO: need to convert new gradient code to enforce PM4f --> RGBA order - return make_color_sh(); -#endif -} - -static sk_sp<SkShader> make_cf_sh() { - return make_color_sh()->makeWithColorFilter(make_mx_cf()); -} - static bool compare_spans(const SkPM4f span4f[], const SkPMColor span4b[], int count, float tolerance = 1.0f/255) { for (int i = 0; i < count; ++i) { @@ -138,42 +108,6 @@ static bool compare_spans(const SkPM4f span4f[], const SkPMColor span4b[], int c return true; } -DEF_TEST(Color4f_shader, reporter) { - struct { - sk_sp<SkShader> (*fFact)(); - bool fSupports4f; - float fTolerance; - } recs[] = { - { make_color_sh, true, 1.0f/255 }, - // PMColor 4f gradients are interpolated in 255-multiplied values, so we need a - // slightly relaxed tolerance to accommodate the cumulative precision deviation. - { make_grad_sh, true, 1.001f/255 }, - { make_image_sh, false, 1.0f/255 }, - { make_cf_sh, true, 1.0f/255 }, - }; - - SkPaint paint; - for (const auto& rec : recs) { - uint32_t storage[kSkBlitterContextSize]; - paint.setShader(rec.fFact()); - // Encourage 4f context selection. At some point we may need - // to instantiate two separate contexts for optimal 4b/4f selection. - const SkShader::ContextRec contextRec(paint, SkMatrix::I(), nullptr, - SkShader::ContextRec::kPM4f_DstType); - SkASSERT(paint.getShader()->contextSize(contextRec) <= sizeof(storage)); - SkShader::Context* ctx = paint.getShader()->createContext(contextRec, storage); - if (rec.fSupports4f) { - const int N = 100; - SkPM4f buffer4f[N]; - ctx->shadeSpan4f(0, 0, buffer4f, N); - SkPMColor buffer4b[N]; - ctx->shadeSpan(0, 0, buffer4b, N); - REPORTER_ASSERT(reporter, compare_spans(buffer4f, buffer4b, N, rec.fTolerance)); - } - ctx->~Context(); - } -} - DEF_TEST(Color4f_colorfilter, reporter) { struct { sk_sp<SkColorFilter> (*fFact)(); diff --git a/tools/skiaserve/Request.cpp b/tools/skiaserve/Request.cpp index 756f70e24d..f2f10acad1 100644 --- a/tools/skiaserve/Request.cpp +++ b/tools/skiaserve/Request.cpp @@ -201,11 +201,6 @@ bool Request::setColorMode(int mode) { return enableGPU(fGPUEnabled); } -bool Request::setSRGBMode(bool enable) { - gTreatSkColorAsSRGB = enable; - return true; -} - bool Request::enableGPU(bool enable) { if (enable) { SkSurface* surface = this->createGPUSurface(); @@ -258,7 +253,6 @@ SkData* Request::getJsonOps(int n) { root["mode"] = Json::Value(fGPUEnabled ? "gpu" : "cpu"); root["drawGpuBatchBounds"] = Json::Value(fDebugCanvas->getDrawGpuBatchBounds()); root["colorMode"] = Json::Value(fColorMode); - root["srgbMode"] = Json::Value(gTreatSkColorAsSRGB); SkDynamicMemoryWStream stream; stream.writeText(Json::FastWriter().write(root).c_str()); diff --git a/tools/skiaserve/Request.h b/tools/skiaserve/Request.h index 6cb969170d..f3af6b72ee 100644 --- a/tools/skiaserve/Request.h +++ b/tools/skiaserve/Request.h @@ -42,7 +42,6 @@ struct Request { SkBitmap* getBitmapFromCanvas(SkCanvas* canvas); bool enableGPU(bool enable); bool setColorMode(int mode); - bool setSRGBMode(bool enable); bool hasPicture() const { return SkToBool(fPicture.get()); } int getLastOp() const { return fDebugCanvas->getSize() - 1; } diff --git a/tools/skiaserve/skiaserve.cpp b/tools/skiaserve/skiaserve.cpp index e26af78f9e..3e547a8d70 100644 --- a/tools/skiaserve/skiaserve.cpp +++ b/tools/skiaserve/skiaserve.cpp @@ -45,7 +45,6 @@ public: fHandlers.push_back(new BatchesHandler); fHandlers.push_back(new BatchBoundsHandler); fHandlers.push_back(new ColorModeHandler); - fHandlers.push_back(new SRGBModeHandler); fHandlers.push_back(new QuitHandler); } diff --git a/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp b/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp deleted file mode 100644 index 1dd9789191..0000000000 --- a/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "UrlHandler.h" - -#include "microhttpd.h" -#include "../Request.h" -#include "../Response.h" - -using namespace Response; - -bool SRGBModeHandler::canHandle(const char* method, const char* url) { - static const char* kBasePath = "/srgbMode/"; - return 0 == strcmp(method, MHD_HTTP_METHOD_POST) && - 0 == strncmp(url, kBasePath, strlen(kBasePath)); -} - -int SRGBModeHandler::handle(Request* request, MHD_Connection* connection, - const char* url, const char* method, - const char* upload_data, size_t* upload_data_size) { - SkTArray<SkString> commands; - SkStrSplit(url, "/", &commands); - - if (commands.count() != 2) { - return MHD_NO; - } - - int enable; - if (1 != sscanf(commands[1].c_str(), "%d", &enable)) { - return MHD_NO; - } - - bool success = request->setSRGBMode(SkToBool(enable)); - if (!success) { - return SendError(connection, "Unable to set requested mode"); - } - return SendOK(connection); -} diff --git a/tools/skiaserve/urlhandlers/UrlHandler.h b/tools/skiaserve/urlhandlers/UrlHandler.h index 76547c5348..2702f480fc 100644 --- a/tools/skiaserve/urlhandlers/UrlHandler.h +++ b/tools/skiaserve/urlhandlers/UrlHandler.h @@ -142,19 +142,6 @@ public: const char* upload_data, size_t* upload_data_size) override; }; -/** - * Controls the global sRGB flag (is SkColor treated as sRGB or not). - * Posting to /srgbMode/0 causes SkColor to be linear, /colorMode/1 - * causes SkColor to be sRGB; - */ -class SRGBModeHandler : public UrlHandler { -public: - bool canHandle(const char* method, const char* url) override; - int handle(Request* request, MHD_Connection* connection, - const char* url, const char* method, - const char* upload_data, size_t* upload_data_size) override; -}; - class QuitHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; |