Index: gm/coloremoji.cpp |
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp |
index 36897c52a87279523e9e49831d83f86bb09a10f0..029377e8e47a1d5d8f39f7d1732acbebf53073e1 100644 |
--- a/gm/coloremoji.cpp |
+++ b/gm/coloremoji.cpp |
@@ -46,29 +46,22 @@ namespace skiagm { |
class ColorEmojiGM : public GM { |
public: |
- ColorEmojiGM() : fCBDT_CBLC_Typeface(NULL), fSBIX_Typeface(NULL) { } |
+ ColorEmojiGM() { } |
protected: |
struct EmojiFont { |
SkTypeface* typeface; |
const char* text; |
- } emojiFonts[2]; |
+ } emojiFont; |
virtual void onOnceBeforeDraw() override { |
- fCBDT_CBLC_Typeface.reset(GetResourceAsTypeface("/fonts/Funkster.ttf")); |
- emojiFonts[0].typeface = fCBDT_CBLC_Typeface; |
- emojiFonts[0].text = "hamburgerfons"; |
- |
- fSBIX_Typeface.reset(SkTypeface::CreateFromName("Apple Color Emoji", SkTypeface::kNormal)); |
- emojiFonts[1].typeface = fSBIX_Typeface; |
- emojiFonts[1].text = "\xF0\x9F\x92\xB0" "\xF0\x9F\x8F\xA1" "\xF0\x9F\x8E\x85" // π°π‘π |
- "\xF0\x9F\x8D\xAA" "\xF0\x9F\x8D\x95" "\xF0\x9F\x9A\x80" // πͺππ |
- "\xF0\x9F\x9A\xBB" "\xF0\x9F\x92\xA9" "\xF0\x9F\x93\xB7" // π»π©π· |
- "\xF0\x9F\x93\xA6" // π¦ |
- "\xF0\x9F\x87\xBA" "\xF0\x9F\x87\xB8" "\xF0\x9F\x87\xA6"; // πΊπΈπ¦ |
+ emojiFont.typeface = sk_tool_utils::emoji_typeface(); |
+ emojiFont.text = sk_tool_utils::emoji_sample_text(); |
} |
SkString onShortName() override { |
- return SkString("coloremoji"); |
+ SkString name("coloremoji"); |
+ name.append(sk_tool_utils::platform_os_emoji()); |
+ return name; |
} |
SkISize onISize() override { |
@@ -77,90 +70,88 @@ protected: |
void onDraw(SkCanvas* canvas) override { |
- canvas->drawColor(SK_ColorGRAY); |
- |
- for (size_t i = 0; i < SK_ARRAY_COUNT(emojiFonts); ++i) { |
- SkPaint paint; |
- paint.setTypeface(emojiFonts[i].typeface); |
- const char* text = emojiFonts[i].text; |
- |
- // draw text at different point sizes |
- const int textSize[] = { 10, 30, 50, }; |
- const int textYOffset[] = { 10, 40, 100, }; |
- SkASSERT(sizeof(textSize) == sizeof(textYOffset)); |
- size_t y_offset = 0; |
- for (size_t y = 0; y < sizeof(textSize) / sizeof(int); y++) { |
- paint.setTextSize(SkIntToScalar(textSize[y])); |
- canvas->drawText(text, strlen(text), 10, SkIntToScalar(textYOffset[y]), paint); |
- y_offset += textYOffset[y]; |
- } |
+ canvas->drawColor(sk_tool_utils::color_to_565(SK_ColorGRAY)); |
+ |
+ SkPaint paint; |
+ paint.setTypeface(emojiFont.typeface); |
+ const char* text = emojiFont.text; |
+ |
+ // draw text at different point sizes |
+ const int textSize[] = { 10, 30, 50, }; |
+ const int textYOffset[] = { 10, 40, 100, }; |
+ SkASSERT(sizeof(textSize) == sizeof(textYOffset)); |
+ size_t y_offset = 0; |
+ for (size_t y = 0; y < sizeof(textSize) / sizeof(int); y++) { |
+ paint.setTextSize(SkIntToScalar(textSize[y])); |
+ canvas->drawText(text, strlen(text), 10, SkIntToScalar(textYOffset[y]), paint); |
+ y_offset += textYOffset[y]; |
+ } |
+ |
+ // draw with shaders and image filters |
+ for (int makeLinear = 0; makeLinear < 2; makeLinear++) { |
+ for (int makeBlur = 0; makeBlur < 2; makeBlur++) { |
+ for (int makeGray = 0; makeGray < 2; makeGray++) { |
+ SkPaint shaderPaint; |
+ shaderPaint.setTypeface(paint.getTypeface()); |
+ if (SkToBool(makeLinear)) { |
+ shaderPaint.setShader(MakeLinear())->unref(); |
+ } |
- // draw with shaders and image filters |
- for (int makeLinear = 0; makeLinear < 2; makeLinear++) { |
- for (int makeBlur = 0; makeBlur < 2; makeBlur++) { |
- for (int makeGray = 0; makeGray < 2; makeGray++) { |
- SkPaint shaderPaint; |
- shaderPaint.setTypeface(paint.getTypeface()); |
- if (SkToBool(makeLinear)) { |
- shaderPaint.setShader(MakeLinear())->unref(); |
- } |
- |
- if (SkToBool(makeBlur) && SkToBool(makeGray)) { |
- SkAutoTUnref<SkImageFilter> grayScale(make_grayscale(NULL)); |
- SkAutoTUnref<SkImageFilter> blur(make_blur(3.0f, grayScale)); |
- shaderPaint.setImageFilter(blur); |
- } else if (SkToBool(makeBlur)) { |
- SkAutoTUnref<SkImageFilter> blur(make_blur(3.0f, NULL)); |
- shaderPaint.setImageFilter(blur); |
- } else if (SkToBool(makeGray)) { |
- SkAutoTUnref<SkImageFilter> grayScale(make_grayscale(NULL)); |
- shaderPaint.setImageFilter(grayScale); |
- } |
- shaderPaint.setTextSize(30); |
- canvas->drawText(text, strlen(text), 380, SkIntToScalar(y_offset), |
- shaderPaint); |
- y_offset += 32; |
+ if (SkToBool(makeBlur) && SkToBool(makeGray)) { |
+ SkAutoTUnref<SkImageFilter> grayScale(make_grayscale(NULL)); |
+ SkAutoTUnref<SkImageFilter> blur(make_blur(3.0f, grayScale)); |
+ shaderPaint.setImageFilter(blur); |
+ } else if (SkToBool(makeBlur)) { |
+ SkAutoTUnref<SkImageFilter> blur(make_blur(3.0f, NULL)); |
+ shaderPaint.setImageFilter(blur); |
+ } else if (SkToBool(makeGray)) { |
+ SkAutoTUnref<SkImageFilter> grayScale(make_grayscale(NULL)); |
+ shaderPaint.setImageFilter(grayScale); |
} |
+ shaderPaint.setTextSize(30); |
+ canvas->drawText(text, strlen(text), 380, SkIntToScalar(y_offset), |
+ shaderPaint); |
+ y_offset += 32; |
} |
} |
+ } |
- // setup work needed to draw text with different clips |
- canvas->translate(10, 160); |
- paint.setTextSize(40); |
- |
- // compute the bounds of the text |
- SkRect bounds; |
- paint.measureText(text, strlen(text), &bounds); |
- |
- const SkScalar boundsHalfWidth = bounds.width() * SK_ScalarHalf; |
- const SkScalar boundsHalfHeight = bounds.height() * SK_ScalarHalf; |
- const SkScalar boundsQuarterWidth = boundsHalfWidth * SK_ScalarHalf; |
- const SkScalar boundsQuarterHeight = boundsHalfHeight * SK_ScalarHalf; |
- |
- SkRect upperLeftClip = SkRect::MakeXYWH(bounds.left(), bounds.top(), |
- boundsHalfWidth, boundsHalfHeight); |
- SkRect lowerRightClip = SkRect::MakeXYWH(bounds.centerX(), bounds.centerY(), |
- boundsHalfWidth, boundsHalfHeight); |
- SkRect interiorClip = bounds; |
- interiorClip.inset(boundsQuarterWidth, boundsQuarterHeight); |
- |
- const SkRect clipRects[] = { bounds, upperLeftClip, lowerRightClip, interiorClip }; |
- |
- SkPaint clipHairline; |
- clipHairline.setColor(SK_ColorWHITE); |
- clipHairline.setStyle(SkPaint::kStroke_Style); |
- |
- for (size_t x = 0; x < sizeof(clipRects) / sizeof(SkRect); ++x) { |
- canvas->save(); |
- canvas->drawRect(clipRects[x], clipHairline); |
- paint.setAlpha(0x20); |
- canvas->drawText(text, strlen(text), 0, 0, paint); |
- canvas->clipRect(clipRects[x]); |
- paint.setAlpha(0xFF); |
- canvas->drawText(text, strlen(text), 0, 0, paint); |
- canvas->restore(); |
- canvas->translate(0, bounds.height() + SkIntToScalar(25)); |
- } |
+ // setup work needed to draw text with different clips |
+ canvas->translate(10, 160); |
+ paint.setTextSize(40); |
+ |
+ // compute the bounds of the text |
+ SkRect bounds; |
+ paint.measureText(text, strlen(text), &bounds); |
+ |
+ const SkScalar boundsHalfWidth = bounds.width() * SK_ScalarHalf; |
+ const SkScalar boundsHalfHeight = bounds.height() * SK_ScalarHalf; |
+ const SkScalar boundsQuarterWidth = boundsHalfWidth * SK_ScalarHalf; |
+ const SkScalar boundsQuarterHeight = boundsHalfHeight * SK_ScalarHalf; |
+ |
+ SkRect upperLeftClip = SkRect::MakeXYWH(bounds.left(), bounds.top(), |
+ boundsHalfWidth, boundsHalfHeight); |
+ SkRect lowerRightClip = SkRect::MakeXYWH(bounds.centerX(), bounds.centerY(), |
+ boundsHalfWidth, boundsHalfHeight); |
+ SkRect interiorClip = bounds; |
+ interiorClip.inset(boundsQuarterWidth, boundsQuarterHeight); |
+ |
+ const SkRect clipRects[] = { bounds, upperLeftClip, lowerRightClip, interiorClip }; |
+ |
+ SkPaint clipHairline; |
+ clipHairline.setColor(SK_ColorWHITE); |
+ clipHairline.setStyle(SkPaint::kStroke_Style); |
+ |
+ for (size_t x = 0; x < sizeof(clipRects) / sizeof(SkRect); ++x) { |
+ canvas->save(); |
+ canvas->drawRect(clipRects[x], clipHairline); |
+ paint.setAlpha(0x20); |
+ canvas->drawText(text, strlen(text), 0, 0, paint); |
+ canvas->clipRect(clipRects[x]); |
+ paint.setAlpha(0xFF); |
+ canvas->drawText(text, strlen(text), 0, 0, paint); |
+ canvas->restore(); |
+ canvas->translate(0, bounds.height() + SkIntToScalar(25)); |
} |
} |