1c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org
2c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org/*
3c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org * Copyright 2012 The Android Open Source Project
4c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org *
5c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
6c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org * found in the LICENSE file.
7c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org */
8c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org
9c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org#include "SkPaintOptionsAndroid.h"
108b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#include "SkReadBuffer.h"
118b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#include "SkWriteBuffer.h"
12c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org#include "SkTDict.h"
13c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org#include "SkThread.h"
14c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org#include <cstring>
15c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org
16c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.orgSkLanguage SkLanguage::getParent() const {
17c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    SkASSERT(!fTag.isEmpty());
18c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    const char* tag = fTag.c_str();
19c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org
20c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    // strip off the rightmost "-.*"
2197f8167622473edf2e4262fa619883e616574c19commit-bot@chromium.org    const char* parentTagEnd = strrchr(tag, '-');
22c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    if (parentTagEnd == NULL) {
23c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org        return SkLanguage();
24c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    }
25c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    size_t parentTagLen = parentTagEnd - tag;
26c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    return SkLanguage(tag, parentTagLen);
27c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org}
28c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org
298b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.orgvoid SkPaintOptionsAndroid::flatten(SkWriteBuffer& buffer) const {
30c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    buffer.writeUInt(fFontVariant);
31c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    buffer.writeString(fLanguage.getTag().c_str());
329401deeb1046ff763d38d5354bb54648b3bab234djsollen@google.com    buffer.writeBool(fUseFontFallbacks);
33c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org}
34c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org
358b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.orgvoid SkPaintOptionsAndroid::unflatten(SkReadBuffer& buffer) {
36c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    fFontVariant = (FontVariant)buffer.readUInt();
377768751b8bec9e50fcbdad67b82e1962e71c3eb9djsollen@google.com    SkString tag;
387768751b8bec9e50fcbdad67b82e1962e71c3eb9djsollen@google.com    buffer.readString(&tag);
39c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org    fLanguage = SkLanguage(tag);
409401deeb1046ff763d38d5354bb54648b3bab234djsollen@google.com    fUseFontFallbacks = buffer.readBool();
41c7a20e40938ae031368e3a9e4df33ce90a765abacommit-bot@chromium.org}
42