diff options
author | Victoria Lease <violets@android.com> | 2012-08-17 14:59:02 -0700 |
---|---|---|
committer | Victoria Lease <violets@android.com> | 2012-08-17 14:59:02 -0700 |
commit | fd3c420022d5f842fe8be5c21300e0d01463a5ad (patch) | |
tree | 139bc1d8c71cf7236d1b6c841fea0d4345f74848 /src | |
parent | 456fc154cef79072c3ceeae231a91045e9cb0e01 (diff) | |
download | external_skia-fd3c420022d5f842fe8be5c21300e0d01463a5ad.zip external_skia-fd3c420022d5f842fe8be5c21300e0d01463a5ad.tar.gz external_skia-fd3c420022d5f842fe8be5c21300e0d01463a5ad.tar.bz2 |
Forward-compatibility stubs
Change-Id: I9c5bf5ce38827ced91d8912a1fa49adbd14a46b8
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 /////////////////////////////////////////////////////////////////////////////// |