Index: include/core/SkPaintOptionsAndroid.h |
diff --git a/include/core/SkPaintOptionsAndroid.h b/include/core/SkPaintOptionsAndroid.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4d0bae3eb8f851ad8b1b7ee75c30a71476f4aeda |
--- /dev/null |
+++ b/include/core/SkPaintOptionsAndroid.h |
@@ -0,0 +1,120 @@ |
+ |
+/* |
+ * 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" |
+#include "SkString.h" |
+ |
+class SkReadBuffer; |
+class SkWriteBuffer; |
+ |
+/** \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() { } |
+ SkLanguage(const SkString& tag) : fTag(tag) { } |
+ SkLanguage(const char* tag) : fTag(tag) { } |
+ SkLanguage(const char* tag, size_t len) : fTag(tag, len) { } |
+ SkLanguage(const SkLanguage& b) : fTag(b.fTag) { } |
+ |
+ /** Gets a BCP 47 language identifier for this SkLanguage. |
+ @return a BCP 47 language identifier representing this language |
+ */ |
+ const SkString& getTag() const { return 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 fTag == b.fTag; |
+ } |
+ bool operator!=(const SkLanguage& b) const { |
+ return fTag != b.fTag; |
+ } |
+ SkLanguage& operator=(const SkLanguage& b) { |
+ fTag = b.fTag; |
+ return *this; |
+ } |
+ |
+private: |
+ //! BCP 47 language identifier |
+ SkString fTag; |
+}; |
+ |
+class SkPaintOptionsAndroid { |
+public: |
+ SkPaintOptionsAndroid() { |
+ fFontVariant = kDefault_Variant; |
+ } |
+ |
+ SkPaintOptionsAndroid& operator=(const SkPaintOptionsAndroid& b) { |
+ fLanguage = b.fLanguage; |
+ fFontVariant = b.fFontVariant; |
+ return *this; |
+ } |
+ |
+ bool operator==(const SkPaintOptionsAndroid& b) const { |
+ return !(*this != b); |
+ } |
+ |
+ bool operator!=(const SkPaintOptionsAndroid& b) const { |
+ return fLanguage != b.fLanguage || |
+ fFontVariant != b.fFontVariant; |
+ } |
+ |
+ void flatten(SkWriteBuffer&) const; |
+ void unflatten(SkReadBuffer&); |
+ |
+ /** 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; } |
+ void setLanguage(const char* languageTag) { fLanguage = SkLanguage(languageTag); } |
+ |
+ |
+ enum FontVariant { |
+ kDefault_Variant = 0x01, |
+ kCompact_Variant = 0x02, |
+ kElegant_Variant = 0x04, |
+ 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 // #ifndef SkPaintOptionsAndroid_DEFINED |