1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "skia/ext/skia_utils_base.h"
6
7namespace skia {
8
9bool ReadSkString(const Pickle& pickle, PickleIterator* iter, SkString* str) {
10  int         reply_length;
11  const char* reply_text;
12
13  if (!pickle.ReadData(iter, &reply_text, &reply_length))
14    return false;
15
16  if (str)
17    str->set(reply_text, reply_length);
18  return true;
19}
20
21bool ReadSkFontIdentity(const Pickle& pickle, PickleIterator* iter,
22                        SkFontConfigInterface::FontIdentity* identity) {
23  uint32_t    reply_id;
24  uint32_t    reply_ttcIndex;
25  int         reply_length;
26  const char* reply_text;
27
28  if (!pickle.ReadUInt32(iter, &reply_id) ||
29      !pickle.ReadUInt32(iter, &reply_ttcIndex) ||
30      !pickle.ReadData(iter, &reply_text, &reply_length))
31    return false;
32
33  if (identity) {
34    identity->fID = reply_id;
35    identity->fTTCIndex = reply_ttcIndex;
36    identity->fString.set(reply_text, reply_length);
37  }
38  return true;
39}
40
41bool WriteSkString(Pickle* pickle, const SkString& str) {
42  return pickle->WriteData(str.c_str(), str.size());
43}
44
45bool WriteSkFontIdentity(Pickle* pickle,
46                         const SkFontConfigInterface::FontIdentity& identity) {
47  return pickle->WriteUInt32(identity.fID) &&
48         pickle->WriteUInt32(identity.fTTCIndex) &&
49         WriteSkString(pickle, identity.fString);
50}
51
52}  // namespace skia
53
54