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
1552896baad049944e070effc9be970137d5cbcc0cdjsollen@google.com#ifdef SK_BUILD_FOR_ANDROID
1652896baad049944e070effc9be970137d5cbcc0cdjsollen@google.com
173a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.orgSkLanguage SkLanguage::getParent() const {
183a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    SkASSERT(!fTag.isEmpty());
193a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    const char* tag = fTag.c_str();
203a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org
213a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    // strip off the rightmost "-.*"
223a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    char* parentTagEnd = strrchr(tag, '-');
233a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    if (parentTagEnd == NULL) {
243a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org        return SkLanguage();
253a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    }
263a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    size_t parentTagLen = parentTagEnd - tag;
273a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    return SkLanguage(tag, parentTagLen);
283a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org}
293a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org
303a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.orgvoid SkPaintOptionsAndroid::flatten(SkFlattenableWriteBuffer& buffer) const {
313a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    buffer.writeUInt(fFontVariant);
323a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    buffer.writeString(fLanguage.getTag().c_str());
3386f56d237e5e5ea16fa0e3ed0e8e5ddf8f7fbbccdjsollen@google.com    buffer.writeBool(fUseFontFallbacks);
343a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org}
353a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org
363a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.orgvoid SkPaintOptionsAndroid::unflatten(SkFlattenableReadBuffer& buffer) {
373a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    fFontVariant = (FontVariant)buffer.readUInt();
389d61fbd5096e46fecc6c582457097a3269b74405djsollen@google.com    SkString tag;
399d61fbd5096e46fecc6c582457097a3269b74405djsollen@google.com    buffer.readString(&tag);
403a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org    fLanguage = SkLanguage(tag);
4186f56d237e5e5ea16fa0e3ed0e8e5ddf8f7fbbccdjsollen@google.com    fUseFontFallbacks = buffer.readBool();
423a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org}
433a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org
443a2896926de7270052847f19fa69135c08e1a36fcommit-bot@chromium.org#endif
45