Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Unified Diff: ppapi/cpp/dev/truetype_font_dev.h

Issue 13913006: Add Pepper TrueType font API call to enumerate fonts in a given family. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Windows build. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/cpp/dev/truetype_font_dev.h
diff --git a/ppapi/cpp/dev/truetype_font_dev.h b/ppapi/cpp/dev/truetype_font_dev.h
index a2c436943e70a53f7e7daef7384956223942395a..cdaeade0a4b5d3fd646bac3f4bfa2a67df422240 100644
--- a/ppapi/cpp/dev/truetype_font_dev.h
+++ b/ppapi/cpp/dev/truetype_font_dev.h
@@ -27,14 +27,17 @@ class TrueTypeFontDesc_Dev {
/// Default constructor for creating a <code>TrueTypeFontDesc_Dev</code>
/// object.
TrueTypeFontDesc_Dev();
+
/// Constructor that takes an existing <code>PP_TrueTypeFontDesc_Dev</code>
/// structure. The 'family' PP_Var field in the structure will be managed by
/// this instance.
TrueTypeFontDesc_Dev(PassRef, const PP_TrueTypeFontDesc_Dev& pp_desc);
+
/// The copy constructor for <code>TrueTypeFontDesc_Dev</code>.
///
/// @param[in] other A reference to a <code>TrueTypeFontDesc_Dev</code>.
TrueTypeFontDesc_Dev(const TrueTypeFontDesc_Dev& other);
+
~TrueTypeFontDesc_Dev();
TrueTypeFontDesc_Dev& operator=(const TrueTypeFontDesc_Dev& other);
@@ -81,8 +84,6 @@ class TrueTypeFontDesc_Dev {
}
private:
- friend class TrueTypeFont_Dev;
-
pp::Var family_; // This manages the PP_Var embedded in desc_.
PP_TrueTypeFontDesc_Dev desc_;
};
@@ -125,7 +126,26 @@ class TrueTypeFont_Dev : public Resource {
/// code from <code>pp_errors.h</code>.
static int32_t GetFontFamilies(
const InstanceHandle& instance,
- const CompletionCallbackWithOutput<std::vector<Var> >& cc);
+ const CompletionCallbackWithOutput<std::vector<Var> >& callback);
+
+ /// Gets an array of TrueType font descriptors for a given font family. These
+ /// descriptors can be used to create a font in that family and matching the
+ /// descriptor attributes.
+ ///
+ /// @param[in] instance A <code>PP_Instance</code> requesting the font
+ /// descriptors.
+ /// @param[in] family A <code>Var</code> holding a string specifying the font
+ /// family.
+ /// @param[in] callback A <code>CompletionCallbackWithOutput</code> to be
+ /// called upon completion of GetFontsInFamily.
+ ///
+ /// @return If >= 0, the number of font descriptors returned, otherwise an
+ /// error code from <code>pp_errors.h</code>.
+ static int32_t GetFontsInFamily(
+ const InstanceHandle& instance,
+ const Var& family,
+ const CompletionCallbackWithOutput<std::vector<TrueTypeFontDesc_Dev> >&
+ callback);
/// Returns a description of the given font resource. This description may
/// differ from the description passed to Create, reflecting the host's font
@@ -137,7 +157,7 @@ class TrueTypeFont_Dev : public Resource {
/// @return A return code from <code>pp_errors.h</code>. If an error code is
/// returned, the descriptor will be left unchanged.
int32_t Describe(
- const CompletionCallbackWithOutput<TrueTypeFontDesc_Dev>& cc);
+ const CompletionCallbackWithOutput<TrueTypeFontDesc_Dev>& callback);
/// Gets an array of identifying tags for each table in the font.
/// These tags can be used to request specific tables using GetTable.
@@ -148,7 +168,7 @@ class TrueTypeFont_Dev : public Resource {
/// @return If >= 0, the number of table tags returned, otherwise an error
/// code from <code>pp_errors.h</code>.
int32_t GetTableTags(
- const CompletionCallbackWithOutput<std::vector<uint32_t> >& cc);
+ const CompletionCallbackWithOutput<std::vector<uint32_t> >& callback);
/// Copies the given font table into client memory.
///
@@ -158,8 +178,6 @@ class TrueTypeFont_Dev : public Resource {
/// @param[in] offset The offset into the font table.
/// @param[in] max_data_length The maximum number of bytes to transfer from
/// <code>offset</code>.
- /// @param[in] output A <code>PP_ArrayOutput</code> to hold the font data.
- /// The data is an array of bytes.
/// @param[in] callback A <code>CompletionCallbackWithOutput</code> to be
/// called upon completion of GetTable.
///
@@ -169,7 +187,7 @@ class TrueTypeFont_Dev : public Resource {
uint32_t table,
int32_t offset,
int32_t max_data_length,
- const CompletionCallbackWithOutput<std::vector<char> >& cc);
+ const CompletionCallbackWithOutput<std::vector<char> >& callback);
};
namespace internal {
@@ -192,6 +210,53 @@ struct CallbackOutputTraits<TrueTypeFontDesc_Dev> {
}
};
+class TrueTypeFontDescArrayOutputAdapterWithStorage
+ : public ArrayOutputAdapter<PP_TrueTypeFontDesc_Dev> {
+ public:
+ TrueTypeFontDescArrayOutputAdapterWithStorage() {
+ set_output(&temp_storage_);
+ };
+
+ virtual ~TrueTypeFontDescArrayOutputAdapterWithStorage() {
+ if (!temp_storage_.empty()) {
+ // An easy way to release the resource references held by |temp_storage_|.
+ output();
+ }
+ };
+
+ std::vector<TrueTypeFontDesc_Dev>& output() {
+ PP_DCHECK(output_storage_.empty());
+ typedef std::vector<PP_TrueTypeFontDesc_Dev> Entries;
+ for (Entries::iterator it = temp_storage_.begin();
+ it != temp_storage_.end(); ++it)
+ output_storage_.push_back(TrueTypeFontDesc_Dev(PASS_REF, *it));
+ temp_storage_.clear();
+ return output_storage_;
+ }
+
+ private:
+ std::vector<PP_TrueTypeFontDesc_Dev> temp_storage_;
+ std::vector<TrueTypeFontDesc_Dev> output_storage_;
+};
+
+// A specialization of CallbackOutputTraits to provide the callback system the
+// information on how to handle vectors of TrueTypeFontDesc_Dev. This converts
+// PP_TrueTypeFontDesc_Dev to TrueTypeFontDesc_Dev when passing to the plugin.
+template<>
+struct CallbackOutputTraits< std::vector<TrueTypeFontDesc_Dev> > {
+ typedef PP_ArrayOutput APIArgType;
+ typedef TrueTypeFontDescArrayOutputAdapterWithStorage StorageType;
+
+ static inline APIArgType StorageToAPIArg(StorageType& t) {
+ return t.pp_array_output();
+ }
+
+ static inline std::vector<TrueTypeFontDesc_Dev>& StorageToPluginArg(
+ StorageType& t) {
+ return t.output();
+ }
+};
+
} // namespace internal
} // namespace pp

Powered by Google App Engine
This is Rietveld 408576698