| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "sk_tool_utils.h" | 8 #include "sk_tool_utils.h" |
| 9 #include "sk_tool_utils_flags.h" | 9 #include "sk_tool_utils_flags.h" |
| 10 | 10 |
| 11 #include "Resources.h" | 11 #include "Resources.h" |
| 12 #include "SkBitmap.h" | 12 #include "SkBitmap.h" |
| 13 #include "SkCanvas.h" | 13 #include "SkCanvas.h" |
| 14 #include "SkCommonFlags.h" | 14 #include "SkCommonFlags.h" |
| 15 #include "SkShader.h" | 15 #include "SkShader.h" |
| 16 #include "SkTestScalerContext.h" | 16 #include "SkTestScalerContext.h" |
| 17 #include "SkTextBlob.h" | 17 #include "SkTextBlob.h" |
| 18 | 18 |
| 19 DEFINE_bool(portableFonts, false, "Use portable fonts"); | 19 DEFINE_bool(portableFonts, false, "Use portable fonts"); |
| 20 DEFINE_bool(resourceFonts, false, "Use resource fonts"); | |
| 21 | 20 |
| 22 namespace sk_tool_utils { | 21 namespace sk_tool_utils { |
| 23 | 22 |
| 23 /* these are the default fonts chosen by Chrome for serif, sans-serif, and monos
pace */ |
| 24 static const char* gStandardFontNames[][3] = { |
| 25 { "Times", "Helvetica", "Courier" }, // Mac |
| 26 { "Times New Roman", "Helvetica", "Courier" }, // iOS |
| 27 { "Times New Roman", "Arial", "Courier New" }, // Win |
| 28 { "Times New Roman", "Arial", "Monospace" }, // Ubuntu |
| 29 { "Droid Serif", "Droid Sans", "Droid Sans Mono" }, // Android |
| 30 { "Tinos", "Arimo", "Cousine" } // ChromeOS |
| 31 }; |
| 32 |
| 33 const char* platform_font_name(const char* name) { |
| 34 SkString platform = major_platform_os_name(); |
| 35 int index; |
| 36 if (!strcmp(name, "serif")) { |
| 37 index = 0; |
| 38 } else if (!strcmp(name, "san-serif")) { |
| 39 index = 1; |
| 40 } else if (!strcmp(name, "monospace")) { |
| 41 index = 2; |
| 42 } else { |
| 43 return name; |
| 44 } |
| 45 if (platform.equals("Mac")) { |
| 46 return gStandardFontNames[0][index]; |
| 47 } |
| 48 if (platform.equals("iOS")) { |
| 49 return gStandardFontNames[1][index]; |
| 50 } |
| 51 if (platform.equals("Win")) { |
| 52 return gStandardFontNames[2][index]; |
| 53 } |
| 54 if (platform.equals("Ubuntu")) { |
| 55 return gStandardFontNames[3][index]; |
| 56 } |
| 57 if (platform.equals("Android")) { |
| 58 return gStandardFontNames[4][index]; |
| 59 } |
| 60 if (platform.equals("ChromeOS")) { |
| 61 return gStandardFontNames[5][index]; |
| 62 } |
| 63 return name; |
| 64 } |
| 65 |
| 24 const char* platform_os_emoji() { | 66 const char* platform_os_emoji() { |
| 25 const char* osName = platform_os_name(); | 67 const char* osName = platform_os_name(); |
| 26 if (!strcmp(osName, "Android") || !strcmp(osName, "Ubuntu")) { | 68 if (!strcmp(osName, "Android") || !strcmp(osName, "Ubuntu")) { |
| 27 return "CBDT"; | 69 return "CBDT"; |
| 28 } | 70 } |
| 29 if (!strncmp(osName, "Mac", 3)) { | 71 if (!strncmp(osName, "Mac", 3)) { |
| 30 return "SBIX"; | 72 return "SBIX"; |
| 31 } | 73 } |
| 32 return ""; | 74 return ""; |
| 33 } | 75 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 62 const char* platform_os_name() { | 104 const char* platform_os_name() { |
| 63 for (int index = 0; index < FLAGS_key.count(); index += 2) { | 105 for (int index = 0; index < FLAGS_key.count(); index += 2) { |
| 64 if (!strcmp("os", FLAGS_key[index])) { | 106 if (!strcmp("os", FLAGS_key[index])) { |
| 65 return FLAGS_key[index + 1]; | 107 return FLAGS_key[index + 1]; |
| 66 } | 108 } |
| 67 } | 109 } |
| 68 // when running SampleApp or dm without a --key pair, omit the platform name | 110 // when running SampleApp or dm without a --key pair, omit the platform name |
| 69 return ""; | 111 return ""; |
| 70 } | 112 } |
| 71 | 113 |
| 114 // omit version number in returned value |
| 115 SkString major_platform_os_name() { |
| 116 SkString name; |
| 117 for (int index = 0; index < FLAGS_key.count(); index += 2) { |
| 118 if (!strcmp("os", FLAGS_key[index])) { |
| 119 const char* platform = FLAGS_key[index + 1]; |
| 120 const char* end = platform; |
| 121 while (*end && (*end < '0' || *end > '9')) { |
| 122 ++end; |
| 123 } |
| 124 name.append(platform, end - platform); |
| 125 break; |
| 126 } |
| 127 } |
| 128 return name; |
| 129 } |
| 130 |
| 72 const char* platform_extra_config(const char* config) { | 131 const char* platform_extra_config(const char* config) { |
| 73 for (int index = 0; index < FLAGS_key.count(); index += 2) { | 132 for (int index = 0; index < FLAGS_key.count(); index += 2) { |
| 74 if (!strcmp("extra_config", FLAGS_key[index]) && !strcmp(config, FLAGS_k
ey[index + 1])) { | 133 if (!strcmp("extra_config", FLAGS_key[index]) && !strcmp(config, FLAGS_k
ey[index + 1])) { |
| 75 return config; | 134 return config; |
| 76 } | 135 } |
| 77 } | 136 } |
| 78 return ""; | 137 return ""; |
| 79 } | 138 } |
| 80 | 139 |
| 81 const char* colortype_name(SkColorType ct) { | 140 const char* colortype_name(SkColorType ct) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 96 SkColor color_to_565(SkColor color) { | 155 SkColor color_to_565(SkColor color) { |
| 97 SkPMColor pmColor = SkPreMultiplyColor(color); | 156 SkPMColor pmColor = SkPreMultiplyColor(color); |
| 98 U16CPU color16 = SkPixel32ToPixel16(pmColor); | 157 U16CPU color16 = SkPixel32ToPixel16(pmColor); |
| 99 return SkPixel16ToColor(color16); | 158 return SkPixel16ToColor(color16); |
| 100 } | 159 } |
| 101 | 160 |
| 102 SkTypeface* create_portable_typeface(const char* name, SkTypeface::Style style)
{ | 161 SkTypeface* create_portable_typeface(const char* name, SkTypeface::Style style)
{ |
| 103 SkTypeface* face; | 162 SkTypeface* face; |
| 104 if (FLAGS_portableFonts) { | 163 if (FLAGS_portableFonts) { |
| 105 face = create_font(name, style); | 164 face = create_font(name, style); |
| 106 } else if (FLAGS_resourceFonts) { | |
| 107 face = resource_font(name, style); | |
| 108 } else { | 165 } else { |
| 109 face = SkTypeface::CreateFromName(name, style); | 166 face = SkTypeface::CreateFromName(name, style); |
| 110 } | 167 } |
| 111 return face; | 168 return face; |
| 112 } | 169 } |
| 113 | 170 |
| 114 SkTypeface* create_portable_typeface_always(const char* name, SkTypeface::Style
style) { | 171 SkTypeface* create_portable_typeface_always(const char* name, SkTypeface::Style
style) { |
| 115 return create_font(name, style); | 172 return create_font(name, style); |
| 116 } | 173 } |
| 117 | 174 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 paint.textToGlyphs(text, len, glyphs.begin()); | 219 paint.textToGlyphs(text, len, glyphs.begin()); |
| 163 | 220 |
| 164 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); | 221 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
| 165 const SkTextBlobBuilder::RunBuffer& run = builder->allocRun(paint, glyphs.co
unt(), x, y, | 222 const SkTextBlobBuilder::RunBuffer& run = builder->allocRun(paint, glyphs.co
unt(), x, y, |
| 166 NULL); | 223 NULL); |
| 167 memcpy(run.glyphs, glyphs.begin(), glyphs.count() * sizeof(uint16_t)); | 224 memcpy(run.glyphs, glyphs.begin(), glyphs.count() * sizeof(uint16_t)); |
| 168 } | 225 } |
| 169 | 226 |
| 170 | 227 |
| 171 } // namespace sk_tool_utils | 228 } // namespace sk_tool_utils |
| OLD | NEW |