12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "skia/ext/skia_utils_base.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace skia {
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ReadSkString(const Pickle& pickle, PickleIterator* iter, SkString* str) {
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int         reply_length;
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char* reply_text;
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!pickle.ReadData(iter, &reply_text, &reply_length))
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return false;
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (str)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    str->set(reply_text, reply_length);
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ReadSkFontIdentity(const Pickle& pickle, PickleIterator* iter,
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        SkFontConfigInterface::FontIdentity* identity) {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  uint32_t    reply_id;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  uint32_t    reply_ttcIndex;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int         reply_length;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char* reply_text;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!pickle.ReadUInt32(iter, &reply_id) ||
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      !pickle.ReadUInt32(iter, &reply_ttcIndex) ||
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      !pickle.ReadData(iter, &reply_text, &reply_length))
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return false;
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (identity) {
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    identity->fID = reply_id;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    identity->fTTCIndex = reply_ttcIndex;
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    identity->fString.set(reply_text, reply_length);
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WriteSkString(Pickle* pickle, const SkString& str) {
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return pickle->WriteData(str.c_str(), str.size());
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WriteSkFontIdentity(Pickle* pickle,
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         const SkFontConfigInterface::FontIdentity& identity) {
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return pickle->WriteUInt32(identity.fID) &&
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         pickle->WriteUInt32(identity.fTTCIndex) &&
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         WriteSkString(pickle, identity.fString);
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace skia
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
54