| 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
|
|
|