1
2/*
3 * Copyright 2012 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9#include "SkPaintOptionsAndroid.h"
10#include "SkReadBuffer.h"
11#include "SkWriteBuffer.h"
12#include "SkTDict.h"
13#include "SkThread.h"
14#include <cstring>
15
16SkLanguage SkLanguage::getParent() const {
17    SkASSERT(!fTag.isEmpty());
18    const char* tag = fTag.c_str();
19
20    // strip off the rightmost "-.*"
21    const char* parentTagEnd = strrchr(tag, '-');
22    if (parentTagEnd == NULL) {
23        return SkLanguage();
24    }
25    size_t parentTagLen = parentTagEnd - tag;
26    return SkLanguage(tag, parentTagLen);
27}
28
29void SkPaintOptionsAndroid::flatten(SkWriteBuffer& buffer) const {
30    buffer.writeUInt(fFontVariant);
31    buffer.writeString(fLanguage.getTag().c_str());
32    buffer.writeBool(fUseFontFallbacks);
33}
34
35void SkPaintOptionsAndroid::unflatten(SkReadBuffer& buffer) {
36    fFontVariant = (FontVariant)buffer.readUInt();
37    SkString tag;
38    buffer.readString(&tag);
39    fLanguage = SkLanguage(tag);
40    fUseFontFallbacks = buffer.readBool();
41}
42