Index: include/core/SkPaintOptionsAndroid.h |
diff --git a/include/core/SkPaintOptionsAndroid.h b/include/core/SkPaintOptionsAndroid.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b738476d4bd0107e4417924bd5620da1c6152274 |
--- /dev/null |
+++ b/include/core/SkPaintOptionsAndroid.h |
@@ -0,0 +1,111 @@ |
+ |
+/* |
+ * Copyright 2012 The Android Open Source Project |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+ |
+#ifndef SkPaintOptionsAndroid_DEFINED |
+#define SkPaintOptionsAndroid_DEFINED |
+ |
+#include "SkTypes.h" |
+ |
+#ifdef SK_BUILD_FOR_ANDROID |
+ |
+#include "SkString.h" |
+ |
+struct SkLanguageInfo { |
+ SkLanguageInfo(const char* tag) : fTag(tag) { } |
+ SkString fTag; //! BCP 47 language identifier |
+}; |
+ |
+/** \class SkLanguage |
+ |
+ The SkLanguage class represents a human written language, and is used by |
+ text draw operations to determine which glyph to draw when drawing |
+ characters with variants (ie Han-derived characters). |
+*/ |
+class SkLanguage { |
+public: |
+ SkLanguage() : fInfo(getInfo("")) { } |
+ SkLanguage(const char* tag) : fInfo(getInfo(tag)) { } |
+ SkLanguage(const SkLanguage& b) : fInfo(b.fInfo) { } |
+ |
+ /** Gets a BCP 47 language identifier for this SkLanguage. |
+ @return a BCP 47 language identifier representing this language |
+ */ |
+ const SkString& getTag() const { return fInfo->fTag; } |
+ |
+ /** Performs BCP 47 fallback to return an SkLanguage one step more general. |
+ @return an SkLanguage one step more general |
+ */ |
+ SkLanguage getParent() const; |
+ |
+ bool operator==(const SkLanguage& b) const { |
+ return fInfo == b.fInfo; |
+ } |
+ bool operator!=(const SkLanguage& b) const { |
+ return fInfo != b.fInfo; |
+ } |
+ bool operator<(const SkLanguage& b) const { |
+ return fInfo < b.fInfo; |
+ } |
+ bool operator>(const SkLanguage& b) const { |
+ return fInfo > b.fInfo; |
+ } |
+ SkLanguage& operator=(const SkLanguage& b) { |
+ fInfo = b.fInfo; |
+ return *this; |
+ } |
+ |
+private: |
+ const SkLanguageInfo* fInfo; |
+ |
+ static const SkLanguageInfo* getInfo(const char* tag); |
+}; |
+ |
+class SkPaintOptionsAndroid { |
+public: |
+ SkPaintOptionsAndroid() { |
+ fFontVariant = kDefault_Variant; |
+ } |
+ |
+ /** Return the paint's language value used for drawing text. |
+ @return the paint's language value used for drawing text. |
+ */ |
+ const SkLanguage& getLanguage() const { return fLanguage; } |
+ |
+ /** Set the paint's language value used for drawing text. |
+ @param language set the paint's language value for drawing text. |
+ */ |
+ void setLanguage(const SkLanguage& language) { fLanguage = language; } |
+ |
+ enum FontVariant { |
+ kDefault_Variant, // Currently setting yourself to Default gives you Compact Variant |
+ kCompact_Variant, |
+ kElegant_Variant, |
+ kLast_Variant = kElegant_Variant, |
+ }; |
+ |
+ /** Return the font variant |
+ @return the font variant used by this paint object |
+ */ |
+ FontVariant getFontVariant() const { return fFontVariant; } |
+ |
+ /** Set the font variant |
+ @param fontVariant set the paint's font variant for choosing fonts |
+ */ |
+ void setFontVariant(FontVariant fontVariant) { |
+ SkASSERT((unsigned)fontVariant <= kLast_Variant); |
+ fFontVariant = fontVariant; |
+ } |
+ |
+private: |
+ SkLanguage fLanguage; |
+ FontVariant fFontVariant; |
+}; |
+ |
+#endif // #ifdef SK_BUILD_FOR_ANDROID |
+#endif // #ifndef SkPaintOptionsAndroid_DEFINED |