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