13a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org 23a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org/* 33a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org * Copyright 2012 The Android Open Source Project 43a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org * 53a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 63a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org * found in the LICENSE file. 73a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org */ 83a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org 93a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org#include "SkPaintOptionsAndroid.h" 103a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org#include "SkFlattenableBuffers.h" 113a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org#include "SkTDict.h" 123a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org#include "SkThread.h" 133a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org#include <cstring> 143a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org 153a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.orgSkLanguage SkLanguage::getParent() const { 163a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org SkASSERT(!fTag.isEmpty()); 173a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org const char* tag = fTag.c_str(); 183a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org 193a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org // strip off the rightmost "-.*" 2077c57d1dd6613417ef18422b52210a956f309a4bcommit-bot@chromium.org const char* parentTagEnd = strrchr(tag, '-'); 213a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org if (parentTagEnd == NULL) { 223a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org return SkLanguage(); 233a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org } 243a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org size_t parentTagLen = parentTagEnd - tag; 253a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org return SkLanguage(tag, parentTagLen); 263a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org} 273a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org 283a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.orgvoid SkPaintOptionsAndroid::flatten(SkFlattenableWriteBuffer& buffer) const { 293a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org buffer.writeUInt(fFontVariant); 303a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org buffer.writeString(fLanguage.getTag().c_str()); 3186f56d237e5e5ea16fa0e3ed0e8e5ddf8f7fbbccdjsollen@google.com buffer.writeBool(fUseFontFallbacks); 323a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org} 333a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org 343a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.orgvoid SkPaintOptionsAndroid::unflatten(SkFlattenableReadBuffer& buffer) { 353a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org fFontVariant = (FontVariant)buffer.readUInt(); 369d61fbd5096e46fecc6c582457097a3269b74405djsollen@google.com SkString tag; 379d61fbd5096e46fecc6c582457097a3269b74405djsollen@google.com buffer.readString(&tag); 383a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org fLanguage = SkLanguage(tag); 3986f56d237e5e5ea16fa0e3ed0e8e5ddf8f7fbbccdjsollen@google.com fUseFontFallbacks = buffer.readBool(); 403a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org} 41