aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/Viewer.cpp
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2018-05-09 18:23:51 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-10 13:46:35 +0000
commit99a78dcb1ad16a37d9cdb5f1d82645bb1652b9ff (patch)
treec5da21d80c19dde47b9c96a0f3219b638ae15c6e /tools/viewer/Viewer.cpp
parent21015b7004248c46233f1678eeaba69223d68769 (diff)
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 <brianosman@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'tools/viewer/Viewer.cpp')
-rw-r--r--tools/viewer/Viewer.cpp148
1 files changed, 98 insertions, 50 deletions
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, &paramsChanged](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) {