| Index: src/core/SkPaintOptionsAndroid.cpp
|
| diff --git a/src/core/SkPaintOptionsAndroid.cpp b/src/core/SkPaintOptionsAndroid.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..606a5d6b8b7cedf5d4a39f1300ee3b7254308409
|
| --- /dev/null
|
| +++ b/src/core/SkPaintOptionsAndroid.cpp
|
| @@ -0,0 +1,53 @@
|
| +
|
| +/*
|
| + * 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 "SkPaintOptionsAndroid.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);
|
| + 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
|
|
|