aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkPaintOptionsAndroid.h
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-05-09 20:54:20 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-05-09 20:54:20 +0000
commit14451703f1a53d0ff14ffe4f44436526383a5fd4 (patch)
tree768b16530b1f97d6e1c9ddca4b14fca1c1268c71 /include/core/SkPaintOptionsAndroid.h
parent4a8084ced3fa5c73a364f96cadfa1fbfbea24ff6 (diff)
API modifications needed to upstream Android font changes.
R=reed@google.com Author: djsollen@google.com Review URL: https://chromiumcodereview.appspot.com/14761003 git-svn-id: http://skia.googlecode.com/svn/trunk@9083 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include/core/SkPaintOptionsAndroid.h')
-rw-r--r--include/core/SkPaintOptionsAndroid.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/include/core/SkPaintOptionsAndroid.h b/include/core/SkPaintOptionsAndroid.h
new file mode 100644
index 0000000000..235cae9a0a
--- /dev/null
+++ b/include/core/SkPaintOptionsAndroid.h
@@ -0,0 +1,118 @@
+
+/*
+ * 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
+
+#ifdef SK_BUILD_FOR_ANDROID
+
+#include "SkString.h"
+#include "SkTypes.h"
+
+class SkFlattenableReadBuffer;
+class SkFlattenableWriteBuffer;
+
+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; }
+ void setLanguage(const char* languageTag) { fLanguage = SkLanguage(languageTag); }
+
+
+ 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;
+ }
+
+ void flatten(SkFlattenableWriteBuffer&) const;
+ void unflatten(SkFlattenableReadBuffer&);
+
+private:
+ SkLanguage fLanguage;
+ FontVariant fFontVariant;
+};
+
+#endif // #ifdef SK_BUILD_FOR_ANDROID
+#endif // #ifndef SkPaintOptionsAndroid_DEFINED