diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2012-08-17 15:15:44 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-08-17 15:15:45 -0700 |
commit | c2ad1992ce99225f79a05ecaed619ec6b52f7bb1 (patch) | |
tree | 139bc1d8c71cf7236d1b6c841fea0d4345f74848 /include/core/SkLanguage.h | |
parent | 456fc154cef79072c3ceeae231a91045e9cb0e01 (diff) | |
parent | fd3c420022d5f842fe8be5c21300e0d01463a5ad (diff) | |
download | external_skia-c2ad1992ce99225f79a05ecaed619ec6b52f7bb1.zip external_skia-c2ad1992ce99225f79a05ecaed619ec6b52f7bb1.tar.gz external_skia-c2ad1992ce99225f79a05ecaed619ec6b52f7bb1.tar.bz2 |
Merge "Forward-compatibility stubs"
Diffstat (limited to 'include/core/SkLanguage.h')
-rw-r--r-- | include/core/SkLanguage.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/include/core/SkLanguage.h b/include/core/SkLanguage.h new file mode 100644 index 0000000..923008e --- /dev/null +++ b/include/core/SkLanguage.h @@ -0,0 +1,70 @@ + +/* + * 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 SkLanguage_DEFINED +#define SkLanguage_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); +}; + +#endif // #ifdef SK_BUILD_FOR_ANDROID +#endif // #ifndef SkLanguage_DEFINED |