1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/include/core/SkPaintOptionsAndroid.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,130 @@ 1.4 + 1.5 +/* 1.6 + * Copyright 2012 The Android Open Source Project 1.7 + * 1.8 + * Use of this source code is governed by a BSD-style license that can be 1.9 + * found in the LICENSE file. 1.10 + */ 1.11 + 1.12 + 1.13 +#ifndef SkPaintOptionsAndroid_DEFINED 1.14 +#define SkPaintOptionsAndroid_DEFINED 1.15 + 1.16 +#include "SkTypes.h" 1.17 +#include "SkString.h" 1.18 + 1.19 +class SkReadBuffer; 1.20 +class SkWriteBuffer; 1.21 + 1.22 +/** \class SkLanguage 1.23 + 1.24 + The SkLanguage class represents a human written language, and is used by 1.25 + text draw operations to determine which glyph to draw when drawing 1.26 + characters with variants (ie Han-derived characters). 1.27 +*/ 1.28 +class SkLanguage { 1.29 +public: 1.30 + SkLanguage() { } 1.31 + SkLanguage(const SkString& tag) : fTag(tag) { } 1.32 + SkLanguage(const char* tag) : fTag(tag) { } 1.33 + SkLanguage(const char* tag, size_t len) : fTag(tag, len) { } 1.34 + SkLanguage(const SkLanguage& b) : fTag(b.fTag) { } 1.35 + 1.36 + /** Gets a BCP 47 language identifier for this SkLanguage. 1.37 + @return a BCP 47 language identifier representing this language 1.38 + */ 1.39 + const SkString& getTag() const { return fTag; } 1.40 + 1.41 + /** Performs BCP 47 fallback to return an SkLanguage one step more general. 1.42 + @return an SkLanguage one step more general 1.43 + */ 1.44 + SkLanguage getParent() const; 1.45 + 1.46 + bool operator==(const SkLanguage& b) const { 1.47 + return fTag == b.fTag; 1.48 + } 1.49 + bool operator!=(const SkLanguage& b) const { 1.50 + return fTag != b.fTag; 1.51 + } 1.52 + SkLanguage& operator=(const SkLanguage& b) { 1.53 + fTag = b.fTag; 1.54 + return *this; 1.55 + } 1.56 + 1.57 +private: 1.58 + //! BCP 47 language identifier 1.59 + SkString fTag; 1.60 +}; 1.61 + 1.62 +class SkPaintOptionsAndroid { 1.63 +public: 1.64 + SkPaintOptionsAndroid() { 1.65 + fFontVariant = kDefault_Variant; 1.66 + fUseFontFallbacks = false; 1.67 + } 1.68 + 1.69 + SkPaintOptionsAndroid& operator=(const SkPaintOptionsAndroid& b) { 1.70 + fLanguage = b.fLanguage; 1.71 + fFontVariant = b.fFontVariant; 1.72 + fUseFontFallbacks = b.fUseFontFallbacks; 1.73 + return *this; 1.74 + } 1.75 + 1.76 + bool operator==(const SkPaintOptionsAndroid& b) const { 1.77 + return !(*this != b); 1.78 + } 1.79 + 1.80 + bool operator!=(const SkPaintOptionsAndroid& b) const { 1.81 + return fLanguage != b.fLanguage || 1.82 + fFontVariant != b.fFontVariant || 1.83 + fUseFontFallbacks != b.fUseFontFallbacks; 1.84 + } 1.85 + 1.86 + void flatten(SkWriteBuffer&) const; 1.87 + void unflatten(SkReadBuffer&); 1.88 + 1.89 + /** Return the paint's language value used for drawing text. 1.90 + @return the paint's language value used for drawing text. 1.91 + */ 1.92 + const SkLanguage& getLanguage() const { return fLanguage; } 1.93 + 1.94 + /** Set the paint's language value used for drawing text. 1.95 + @param language set the paint's language value for drawing text. 1.96 + */ 1.97 + void setLanguage(const SkLanguage& language) { fLanguage = language; } 1.98 + void setLanguage(const char* languageTag) { fLanguage = SkLanguage(languageTag); } 1.99 + 1.100 + 1.101 + enum FontVariant { 1.102 + kDefault_Variant = 0x01, 1.103 + kCompact_Variant = 0x02, 1.104 + kElegant_Variant = 0x04, 1.105 + kLast_Variant = kElegant_Variant, 1.106 + }; 1.107 + 1.108 + /** Return the font variant 1.109 + @return the font variant used by this paint object 1.110 + */ 1.111 + FontVariant getFontVariant() const { return fFontVariant; } 1.112 + 1.113 + /** Set the font variant 1.114 + @param fontVariant set the paint's font variant for choosing fonts 1.115 + */ 1.116 + void setFontVariant(FontVariant fontVariant) { 1.117 + SkASSERT((unsigned)fontVariant <= kLast_Variant); 1.118 + fFontVariant = fontVariant; 1.119 + } 1.120 + 1.121 + bool isUsingFontFallbacks() const { return fUseFontFallbacks; } 1.122 + 1.123 + void setUseFontFallbacks(bool useFontFallbacks) { 1.124 + fUseFontFallbacks = useFontFallbacks; 1.125 + } 1.126 + 1.127 +private: 1.128 + SkLanguage fLanguage; 1.129 + FontVariant fFontVariant; 1.130 + bool fUseFontFallbacks; 1.131 +}; 1.132 + 1.133 +#endif // #ifndef SkPaintOptionsAndroid_DEFINED