Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / skia / ext / skia_utils_base.cc
blobaf6957dfdde22062fe69fe2a4c19e97cf8f3900b
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.
5 #include "skia/ext/skia_utils_base.h"
7 namespace skia {
9 bool ReadSkString(base::PickleIterator* iter, SkString* str) {
10 int reply_length;
11 const char* reply_text;
13 if (!iter->ReadData(&reply_text, &reply_length))
14 return false;
16 if (str)
17 str->set(reply_text, reply_length);
18 return true;
21 bool ReadSkFontIdentity(base::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;
28 if (!iter->ReadUInt32(&reply_id) ||
29 !iter->ReadUInt32(&reply_ttcIndex) ||
30 !iter->ReadData(&reply_text, &reply_length))
31 return false;
33 if (identity) {
34 identity->fID = reply_id;
35 identity->fTTCIndex = reply_ttcIndex;
36 identity->fString.set(reply_text, reply_length);
38 return true;
41 bool WriteSkString(base::Pickle* pickle, const SkString& str) {
42 return pickle->WriteData(str.c_str(), str.size());
45 bool WriteSkFontIdentity(base::Pickle* pickle,
46 const SkFontConfigInterface::FontIdentity& identity) {
47 return pickle->WriteUInt32(identity.fID) &&
48 pickle->WriteUInt32(identity.fTTCIndex) &&
49 WriteSkString(pickle, identity.fString);
52 SkPixelGeometry ComputeDefaultPixelGeometry() {
53 SkFontHost::LCDOrder order = SkFontHost::GetSubpixelOrder();
54 if (SkFontHost::kNONE_LCDOrder == order) {
55 return kUnknown_SkPixelGeometry;
56 } else {
57 // Bit0 is RGB(0), BGR(1)
58 // Bit1 is H(0), V(1)
59 const SkPixelGeometry gGeo[] = {
60 kRGB_H_SkPixelGeometry,
61 kBGR_H_SkPixelGeometry,
62 kRGB_V_SkPixelGeometry,
63 kBGR_V_SkPixelGeometry,
65 int index = 0;
66 if (SkFontHost::kBGR_LCDOrder == order) {
67 index |= 1;
69 if (SkFontHost::kVertical_LCDOrientation == SkFontHost::GetSubpixelOrientation()){
70 index |= 2;
72 return gGeo[index];
76 } // namespace skia