diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2012-08-17 15:19:25 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-08-17 15:19:25 -0700 |
commit | 5f421caf157bf54c2cfd2ded128ede466e761d4d (patch) | |
tree | c332aecf0c074c8832b876d60bf13b82ffd2ec6d /src | |
parent | dccf2260c8edda887454d40f61f06e72d5389139 (diff) | |
parent | c2ad1992ce99225f79a05ecaed619ec6b52f7bb1 (diff) | |
download | external_skia-5f421caf157bf54c2cfd2ded128ede466e761d4d.zip external_skia-5f421caf157bf54c2cfd2ded128ede466e761d4d.tar.gz external_skia-5f421caf157bf54c2cfd2ded128ede466e761d4d.tar.bz2 |
am c2ad1992: Merge "Forward-compatibility stubs"
* commit 'c2ad1992ce99225f79a05ecaed619ec6b52f7bb1':
Forward-compatibility stubs
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkLanguage.cpp | 54 | ||||
-rw-r--r-- | src/core/SkPaint.cpp | 4 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/core/SkLanguage.cpp b/src/core/SkLanguage.cpp new file mode 100644 index 0000000..3b8ba3c --- /dev/null +++ b/src/core/SkLanguage.cpp @@ -0,0 +1,54 @@ + +/* + * 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. + */ + +#include "SkLanguage.h" + +#ifdef SK_BUILD_FOR_ANDROID // currently only for Android + +#include "SkTDict.h" +#include "SkThread.h" +#include <cstring> + +SkLanguage SkLanguage::getParent() const { + SkASSERT(fInfo != NULL); + SkASSERT(fInfo->fTag != NULL); + const char* tag = fInfo->fTag.c_str(); + SkASSERT(tag != NULL); + + // strip off the rightmost "-.*" + char* parentTagEnd = strrchr(tag, '-'); + if (parentTagEnd == NULL) { + return SkLanguage(""); + } + size_t parentTagLen = parentTagEnd - tag; + char parentTag[parentTagLen + 1]; + strncpy(parentTag, tag, parentTagLen); + parentTag[parentTagLen] = '\0'; + return SkLanguage(parentTag); +} + +SK_DECLARE_STATIC_MUTEX(gGetInfoMutex); +const SkLanguageInfo* SkLanguage::getInfo(const char* tag) { + SkAutoMutexAcquire lock(gGetInfoMutex); + + static const size_t kDictSize = 128; + static SkTDict<SkLanguageInfo*> tagToInfo(kDictSize); + + // try a lookup + SkLanguageInfo* info; + if (tagToInfo.find(tag, &info)) { + return info; + } + + // no match - add this language + info = new SkLanguageInfo(tag); + tagToInfo.set(tag, info); + return info; +} + +#endif diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index e1932a7..fc5e57c 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -372,6 +372,10 @@ void SkPaint::setTextLocale(const SkString& locale) { GEN_ID_INC; } } + +void SkPaint::setLanguage(const SkLanguage& language) { + setTextLocale(SkString(language.getTag())); +} #endif /////////////////////////////////////////////////////////////////////////////// |