From 99a78dcb1ad16a37d9cdb5f1d82645bb1652b9ff Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Wed, 9 May 2018 18:23:51 -0400 Subject: Add all SkPaint::Flags to Viewer app. Originally a change to add just one more, turned into adding all of them. Change-Id: Ibd6b6cab75d5a018744661038cfccdb50470c234 Reviewed-on: https://skia-review.googlesource.com/127134 Reviewed-by: Brian Osman Commit-Queue: Ben Wagner --- tools/viewer/Viewer.cpp | 148 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 98 insertions(+), 50 deletions(-) (limited to 'tools/viewer') diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index d6d1fb3f34..185868266f 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -713,27 +713,27 @@ void Viewer::updateTitle() { } SkPaintTitleUpdater paintTitle(&title); - if (fPaintOverrides.fFlags & SkPaint::kAntiAlias_Flag) { - if (fPaint.isAntiAlias()) { - paintTitle.append("Antialias"); - } else { - paintTitle.append("Alias"); - } - } - if (fPaintOverrides.fFlags & SkPaint::kLCDRenderText_Flag) { - if (fPaint.isLCDRenderText()) { - paintTitle.append("LCD"); - } else { - paintTitle.append("lcd"); - } - } - if (fPaintOverrides.fFlags & SkPaint::kSubpixelText_Flag) { - if (fPaint.isSubpixelText()) { - paintTitle.append("Subpixel Glyphs"); - } else { - paintTitle.append("Pixel Glyphs"); + auto paintFlag = [this, &paintTitle](SkPaint::Flags flag, bool (SkPaint::* isFlag)() const, + const char* on, const char* off) + { + if (fPaintOverrides.fFlags & flag) { + paintTitle.append((fPaint.*isFlag)() ? on : off); } - } + }; + + paintFlag(SkPaint::kAntiAlias_Flag, &SkPaint::isAntiAlias, "Antialias", "Alias"); + paintFlag(SkPaint::kDither_Flag, &SkPaint::isDither, "DITHER", "No Dither"); + paintFlag(SkPaint::kFakeBoldText_Flag, &SkPaint::isFakeBoldText, "Fake Bold", "No Fake Bold"); + paintFlag(SkPaint::kLinearText_Flag, &SkPaint::isLinearText, "Linear Text", "Non-Linear Text"); + paintFlag(SkPaint::kSubpixelText_Flag, &SkPaint::isSubpixelText, "Subpixel Text", "Pixel Text"); + paintFlag(SkPaint::kLCDRenderText_Flag, &SkPaint::isLCDRenderText, "LCD", "lcd"); + paintFlag(SkPaint::kEmbeddedBitmapText_Flag, &SkPaint::isEmbeddedBitmapText, + "Bitmap Text", "No Bitmap Text"); + paintFlag(SkPaint::kAutoHinting_Flag, &SkPaint::isAutohinted, + "Force Autohint", "No Force Autohint"); + paintFlag(SkPaint::kVerticalText_Flag, &SkPaint::isVerticalText, + "Vertical Text", "No Vertical Text"); + if (fPaintOverrides.fHinting) { switch (fPaint.getHinting()) { case SkPaint::kNo_Hinting: @@ -1021,15 +1021,35 @@ public: if (fPaintOverrides->fHinting) { paint->writable()->setHinting(fPaint->getHinting()); } + if (fPaintOverrides->fFlags & SkPaint::kAntiAlias_Flag) { paint->writable()->setAntiAlias(fPaint->isAntiAlias()); } - if (fPaintOverrides->fFlags & SkPaint::kLCDRenderText_Flag) { - paint->writable()->setLCDRenderText(fPaint->isLCDRenderText()); + if (fPaintOverrides->fFlags & SkPaint::kDither_Flag) { + paint->writable()->setDither(fPaint->isDither()); + } + if (fPaintOverrides->fFlags & SkPaint::kFakeBoldText_Flag) { + paint->writable()->setFakeBoldText(fPaint->isFakeBoldText()); + } + if (fPaintOverrides->fFlags & SkPaint::kLinearText_Flag) { + paint->writable()->setLinearText(fPaint->isLinearText()); } if (fPaintOverrides->fFlags & SkPaint::kSubpixelText_Flag) { paint->writable()->setSubpixelText(fPaint->isSubpixelText()); } + if (fPaintOverrides->fFlags & SkPaint::kLCDRenderText_Flag) { + paint->writable()->setLCDRenderText(fPaint->isLCDRenderText()); + } + if (fPaintOverrides->fFlags & SkPaint::kEmbeddedBitmapText_Flag) { + paint->writable()->setEmbeddedBitmapText(fPaint->isEmbeddedBitmapText()); + } + if (fPaintOverrides->fFlags & SkPaint::kAutoHinting_Flag) { + paint->writable()->setAutohinted(fPaint->isAutohinted()); + } + if (fPaintOverrides->fFlags & SkPaint::kVerticalText_Flag) { + paint->writable()->setVerticalText(fPaint->isVerticalText()); + } + return true; } SkPaint* fPaint; @@ -1568,37 +1588,65 @@ void Viewer::drawImGui() { paramsChanged = true; } - int subpixelAAIdx = 0; - if (fPaintOverrides.fFlags & SkPaint::kLCDRenderText_Flag) { - subpixelAAIdx = fPaint.isLCDRenderText() ? 2 : 1; - } - if (ImGui::Combo("Subpixel Anti-Alias", &subpixelAAIdx, - "Default\0lcd\0LCD\0\0")) + auto paintFlag = [this, ¶msChanged](const char* label, const char* items, + SkPaint::Flags flag, + bool (SkPaint::* isFlag)() const, + void (SkPaint::* setFlag)(bool) ) { - if (subpixelAAIdx == 0) { - fPaintOverrides.fFlags &= ~SkPaint::kLCDRenderText_Flag; - } else { - fPaintOverrides.fFlags |= SkPaint::kLCDRenderText_Flag; - fPaint.setLCDRenderText(subpixelAAIdx == 2); + int itemIndex = 0; + if (fPaintOverrides.fFlags & flag) { + itemIndex = (fPaint.*isFlag)() ? 2 : 1; } - paramsChanged = true; - } - - int subpixelPositionIdx = 0; - if (fPaintOverrides.fFlags & SkPaint::kSubpixelText_Flag) { - subpixelPositionIdx = fPaint.isSubpixelText() ? 2 : 1; - } - if (ImGui::Combo("Subpixel Position Glyphs", &subpixelPositionIdx, - "Default\0Pixel Glyphs\0Subpixel Glyphs\0\0")) - { - if (subpixelPositionIdx == 0) { - fPaintOverrides.fFlags &= ~SkPaint::kSubpixelText_Flag; - } else { - fPaintOverrides.fFlags |= SkPaint::kSubpixelText_Flag; - fPaint.setSubpixelText(subpixelPositionIdx == 2); + if (ImGui::Combo(label, &itemIndex, items)) { + if (itemIndex == 0) { + fPaintOverrides.fFlags &= ~flag; + } else { + fPaintOverrides.fFlags |= flag; + (fPaint.*setFlag)(itemIndex == 2); + } + paramsChanged = true; } - paramsChanged = true; - } + }; + + paintFlag("Dither", + "Default\0No Dither\0Dither\0\0", + SkPaint::kDither_Flag, + &SkPaint::isDither, &SkPaint::setDither); + + paintFlag("Fake Bold Glyphs", + "Default\0No Fake Bold\0Fake Bold\0\0", + SkPaint::kFakeBoldText_Flag, + &SkPaint::isFakeBoldText, &SkPaint::setFakeBoldText); + + paintFlag("Linear Text", + "Default\0No Linear Text\0Linear Text\0\0", + SkPaint::kLinearText_Flag, + &SkPaint::isLinearText, &SkPaint::setLinearText); + + paintFlag("Subpixel Position Glyphs", + "Default\0Pixel Text\0Subpixel Text\0\0", + SkPaint::kSubpixelText_Flag, + &SkPaint::isSubpixelText, &SkPaint::setSubpixelText); + + paintFlag("Subpixel Anti-Alias", + "Default\0lcd\0LCD\0\0", + SkPaint::kLCDRenderText_Flag, + &SkPaint::isLCDRenderText, &SkPaint::setLCDRenderText); + + paintFlag("Embedded Bitmap Text", + "Default\0No Embedded Bitmaps\0Embedded Bitmaps\0\0", + SkPaint::kEmbeddedBitmapText_Flag, + &SkPaint::isEmbeddedBitmapText, &SkPaint::setEmbeddedBitmapText); + + paintFlag("Force Auto-Hinting", + "Default\0No Force Auto-Hinting\0Force Auto-Hinting\0\0", + SkPaint::kAutoHinting_Flag, + &SkPaint::isAutohinted, &SkPaint::setAutohinted); + + paintFlag("Vertical Text", + "Default\0No Vertical Text\0Vertical Text\0\0", + SkPaint::kVerticalText_Flag, + &SkPaint::isVerticalText, &SkPaint::setVerticalText); } if (fShowSlidePicker) { -- cgit v1.2.3