Chromium Code Reviews| Index: ppapi/examples/font/simple_font.cc |
| =================================================================== |
| --- ppapi/examples/font/simple_font.cc (revision 86427) |
| +++ ppapi/examples/font/simple_font.cc (working copy) |
| @@ -2,6 +2,8 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include <stdio.h> |
| + |
| #include "ppapi/cpp/completion_callback.h" |
| #include "ppapi/cpp/dev/font_dev.h" |
| #include "ppapi/cpp/graphics_2d.h" |
| @@ -31,22 +33,71 @@ |
| pp::FontDescription_Dev desc; |
| desc.set_family(PP_FONTFAMILY_SANSSERIF); |
| - desc.set_size(30); |
| + desc.set_size(100); |
| pp::Font_Dev font(this, desc); |
| + // Draw some large, alpha blended text, including Arabic shaping. |
| pp::Rect text_clip(position.size()); // Use entire bounds for clip. |
| font.DrawTextAt(&image, |
| pp::TextRun_Dev("\xD9\x85\xD8\xB1\xD8\xAD\xD8\xA8\xD8\xA7\xE2\x80\x8E", |
| true, true), |
| - pp::Point(10, 40), 0xFF008000, clip, false); |
| - font.DrawTextAt(&image, pp::TextRun_Dev("Hello"), |
| - pp::Point(10, 80), 0xFF000080, text_clip, false); |
| + pp::Point(20, 100), 0x80008000, clip, false); |
| + // Draw the default font names and sizes. |
| + int y = 160; |
| + { |
| + pp::FontDescription_Dev desc; |
| + pp::Font_Dev default_font(this, desc); |
| + default_font.DrawSimpleText( |
| + &image, DescribeFont(default_font, "Default font"), |
| + pp::Point(10, y), 0xFF000000); |
| + y += 20; |
| + } |
| + { |
| + pp::FontDescription_Dev desc; |
| + desc.set_family(PP_FONTFAMILY_SERIF); |
| + pp::Font_Dev serif_font(this, desc); |
| + serif_font.DrawSimpleText( |
| + &image, DescribeFont(serif_font, "Serif font"), |
| + pp::Point(10, y), 0xFF000000); |
| + y += 20; |
| + } |
| + { |
| + pp::FontDescription_Dev desc; |
| + desc.set_family(PP_FONTFAMILY_SANSSERIF); |
| + pp::Font_Dev sans_serif_font(this, desc); |
| + sans_serif_font.DrawSimpleText( |
| + &image, DescribeFont(sans_serif_font, "Sans serif font"), |
| + pp::Point(10, y), 0xFF000000); |
| + y += 20; |
| + } |
| + { |
| + pp::FontDescription_Dev desc; |
| + desc.set_family(PP_FONTFAMILY_MONOSPACE); |
| + pp::Font_Dev monospace_font(this, desc); |
| + monospace_font.DrawSimpleText( |
| + &image, DescribeFont(monospace_font, "Monospace font"), |
| + pp::Point(10, y), 0xFF000000); |
| + y += 20; |
| + } |
| + |
| device.PaintImageData(image, pp::Point(0, 0)); |
| device.Flush(pp::CompletionCallback(&DummyCompletionCallback, NULL)); |
| } |
| private: |
| + // Returns a string describing the given font, using the given title. |
| + std::string DescribeFont(const pp::Font_Dev& font, const char* title) { |
| + pp::FontDescription_Dev desc; |
| + PP_FontMetrics_Dev metrics; |
| + font.Describe(&desc, &metrics); |
| + |
| + char buf[256]; |
| + snprintf(buf, sizeof(buf), "%s = %s %dpt", |
|
yzshen1
2011/05/25 23:40:11
I think this is not defined on Windows.
You could
brettw
2011/05/26 17:29:49
Darn. Since this is just an example and I'd rather
yzshen1
2011/05/26 17:49:51
Sounds good to me.
On 2011/05/26 17:29:49, brettw
|
| + title, desc.face().AsString().c_str(), desc.size()); |
| + return std::string(buf); |
| + } |
| + |
| pp::Size last_size_; |
| }; |