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
7 namespace skia {
8
ReadSkString(const Pickle & pickle,PickleIterator * iter,SkString * str)9 bool 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
ReadSkFontIdentity(const Pickle & pickle,PickleIterator * iter,SkFontConfigInterface::FontIdentity * identity)21 bool 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
WriteSkString(Pickle * pickle,const SkString & str)41 bool WriteSkString(Pickle* pickle, const SkString& str) {
42 return pickle->WriteData(str.c_str(), str.size());
43 }
44
WriteSkFontIdentity(Pickle * pickle,const SkFontConfigInterface::FontIdentity & identity)45 bool 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