Index: ppapi/cpp/trusted/browser_font_trusted.h |
diff --git a/ppapi/cpp/trusted/browser_font_trusted.h b/ppapi/cpp/trusted/browser_font_trusted.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fc2d801fa1483111fc7866b1a7fbe9f783a20848 |
--- /dev/null |
+++ b/ppapi/cpp/trusted/browser_font_trusted.h |
@@ -0,0 +1,147 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef PPAPI_CPP_TRUSTED_BROWSER_FONT_TRUSTED_H_ |
+#define PPAPI_CPP_TRUSTED_BROWSER_FONT_TRUSTED_H_ |
+ |
+#include <string> |
+ |
+#include "ppapi/c/trusted/ppb_browser_font_trusted.h" |
+#include "ppapi/cpp/resource.h" |
+#include "ppapi/cpp/var.h" |
+ |
+namespace pp { |
+ |
+class ImageData; |
+class Instance; |
+class Point; |
+class Rect; |
+ |
+// BrowserFontDescription ------------------------------------------------------ |
+ |
+class BrowserFontDescription { |
+ public: |
+ BrowserFontDescription(); |
+ BrowserFontDescription(const BrowserFontDescription& other); |
+ ~BrowserFontDescription(); |
+ |
+ BrowserFontDescription& operator=(const BrowserFontDescription& other); |
+ |
+ const PP_BrowserFont_Trusted_Description& pp_font_description() const { |
+ return pp_font_description_; |
+ } |
+ |
+ Var face() const { return face_; } |
+ void set_face(const Var& face) { |
+ face_ = face; |
+ pp_font_description_.face = face_.pp_var(); |
+ } |
+ |
+ PP_BrowserFont_Trusted_Family family() const { |
+ return pp_font_description_.family; |
+ } |
+ void set_family(PP_BrowserFont_Trusted_Family f) { |
+ pp_font_description_.family = f; |
+ } |
+ |
+ uint32_t size() const { return pp_font_description_.size; } |
+ void set_size(uint32_t s) { pp_font_description_.size = s; } |
+ |
+ PP_BrowserFont_Trusted_Weight weight() const { |
+ return pp_font_description_.weight; |
+ } |
+ void set_weight(PP_BrowserFont_Trusted_Weight w) { |
+ pp_font_description_.weight = w; |
+ } |
+ |
+ bool italic() const { return PP_ToBool(pp_font_description_.italic); } |
+ void set_italic(bool i) { pp_font_description_.italic = PP_FromBool(i); } |
+ |
+ bool small_caps() const { |
+ return PP_ToBool(pp_font_description_.small_caps); |
+ } |
+ void set_small_caps(bool s) { |
+ pp_font_description_.small_caps = PP_FromBool(s); |
+ } |
+ |
+ int letter_spacing() const { return pp_font_description_.letter_spacing; } |
+ void set_letter_spacing(int s) { pp_font_description_.letter_spacing = s; } |
+ |
+ int word_spacing() const { return pp_font_description_.word_spacing; } |
+ void set_word_spacing(int w) { pp_font_description_.word_spacing = w; } |
+ |
+ private: |
+ friend class BrowserFont_Trusted; |
+ |
+ Var face_; // Manages memory for pp_font_description_.face |
+ PP_BrowserFont_Trusted_Description pp_font_description_; |
+}; |
+ |
+// BrowserFontTextRun ---------------------------------------------------------- |
+ |
+class BrowserFontTextRun { |
+ public: |
+ BrowserFontTextRun(); |
+ BrowserFontTextRun(const std::string& text, |
+ bool rtl = false, |
+ bool override_direction = false); |
+ BrowserFontTextRun(const BrowserFontTextRun& other); |
+ ~BrowserFontTextRun(); |
+ |
+ BrowserFontTextRun& operator=(const BrowserFontTextRun& other); |
+ |
+ const PP_BrowserFont_Trusted_TextRun& pp_text_run() const { |
+ return pp_text_run_; |
+ } |
+ |
+ private: |
+ Var text_; // Manages memory for the reference in pp_text_run_. |
+ PP_BrowserFont_Trusted_TextRun pp_text_run_; |
+}; |
+ |
+// BrowserFont_Trusted --------------------------------------------------------- |
+ |
+// Provides access to system fonts. |
+class BrowserFont_Trusted : public Resource { |
+ public: |
+ // Creates an is_null() Font object. |
+ BrowserFont_Trusted(); |
+ |
+ explicit BrowserFont_Trusted(PP_Resource resource); |
+ BrowserFont_Trusted(Instance* instance, |
+ const BrowserFontDescription& description); |
+ BrowserFont_Trusted(const BrowserFont_Trusted& other); |
+ |
+ BrowserFont_Trusted& operator=(const BrowserFont_Trusted& other); |
+ |
+ // PPB_Font methods: |
+ static Var GetFontFamilies(Instance* instance); |
+ bool Describe(BrowserFontDescription* description, |
+ PP_BrowserFont_Trusted_Metrics* metrics) const; |
+ bool DrawTextAt(ImageData* dest, |
+ const BrowserFontTextRun& text, |
+ const Point& position, |
+ uint32_t color, |
+ const Rect& clip, |
+ bool image_data_is_opaque) const; |
+ int32_t MeasureText(const BrowserFontTextRun& text) const; |
+ uint32_t CharacterOffsetForPixel(const BrowserFontTextRun& text, |
+ int32_t pixel_position) const; |
+ int32_t PixelOffsetForCharacter(const BrowserFontTextRun& text, |
+ uint32_t char_offset) const; |
+ |
+ // Convenience function that assumes a left-to-right string with no clipping. |
+ bool DrawSimpleText(ImageData* dest, |
+ const std::string& text, |
+ const Point& position, |
+ uint32_t color, |
+ bool image_data_is_opaque = false) const; |
+ |
+ // Convenience function that assumes a left-to-right string. |
+ int32_t MeasureSimpleText(const std::string& text) const; |
+}; |
+ |
+} // namespace pp |
+ |
+#endif // PPAPI_CPP_TRUSTED_BROWSER_FONT_TRUSTED_H_ |