15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2013 Google Inc.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "SkPdfFontDescriptorDictionary_autogen.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SkPdfNativeDoc.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochSkString SkPdfFontDescriptorDictionary::Type(SkPdfNativeDoc* doc) {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("Type", "");
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return SkString();
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_Type() const {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("Type", "") != NULL;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkString SkPdfFontDescriptorDictionary::FontName(SkPdfNativeDoc* doc) {
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  SkPdfNativeObject* ret = get("FontName", "");
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (doc) {ret = doc->resolveReference(ret);}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return SkString();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_FontName() const {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("FontName", "") != NULL;
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int64_t SkPdfFontDescriptorDictionary::Flags(SkPdfNativeDoc* doc) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("Flags", "");
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_Flags() const {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("Flags", "") != NULL;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)SkRect SkPdfFontDescriptorDictionary::FontBBox(SkPdfNativeDoc* doc) {
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SkPdfNativeObject* ret = get("FontBBox", "");
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  return SkRect::MakeEmpty();
53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_FontBBox() const {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("FontBBox", "") != NULL;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::ItalicAngle(SkPdfNativeDoc* doc) {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("ItalicAngle", "");
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_ItalicAngle() const {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("ItalicAngle", "") != NULL;
69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double SkPdfFontDescriptorDictionary::Ascent(SkPdfNativeDoc* doc) {
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SkPdfNativeObject* ret = get("Ascent", "");
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0;
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_Ascent() const {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("Ascent", "") != NULL;
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::Descent(SkPdfNativeDoc* doc) {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("Descent", "");
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_Descent() const {
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("Descent", "") != NULL;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::Leading(SkPdfNativeDoc* doc) {
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("Leading", "");
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_Leading() const {
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("Leading", "") != NULL;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::CapHeight(SkPdfNativeDoc* doc) {
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("CapHeight", "");
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_CapHeight() const {
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("CapHeight", "") != NULL;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::XHeight(SkPdfNativeDoc* doc) {
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SkPdfNativeObject* ret = get("XHeight", "");
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0;
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_XHeight() const {
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return get("XHeight", "") != NULL;
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double SkPdfFontDescriptorDictionary::StemV(SkPdfNativeDoc* doc) {
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SkPdfNativeObject* ret = get("StemV", "");
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing required field, assert for known good pdfs
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_StemV() const {
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("StemV", "") != NULL;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double SkPdfFontDescriptorDictionary::StemH(SkPdfNativeDoc* doc) {
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("StemH", "");
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_StemH() const {
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("StemH", "") != NULL;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::AvgWidth(SkPdfNativeDoc* doc) {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("AvgWidth", "");
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_AvgWidth() const {
16490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return get("AvgWidth", "") != NULL;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::MaxWidth(SkPdfNativeDoc* doc) {
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("MaxWidth", "");
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_MaxWidth() const {
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("MaxWidth", "") != NULL;
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double SkPdfFontDescriptorDictionary::MissingWidth(SkPdfNativeDoc* doc) {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("MissingWidth", "");
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_MissingWidth() const {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("MissingWidth", "") != NULL;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkPdfStream* SkPdfFontDescriptorDictionary::FontFile(SkPdfNativeDoc* doc) {
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("FontFile", "");
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_FontFile() const {
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("FontFile", "") != NULL;
2017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SkPdfStream* SkPdfFontDescriptorDictionary::FontFile2(SkPdfNativeDoc* doc) {
20490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  SkPdfNativeObject* ret = get("FontFile2", "");
205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
20690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // TODO(edisonn): warn about missing default value for optional fields
208eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return NULL;
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_FontFile2() const {
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("FontFile2", "") != NULL;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkPdfStream* SkPdfFontDescriptorDictionary::FontFile3(SkPdfNativeDoc* doc) {
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("FontFile3", "");
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_FontFile3() const {
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("FontFile3", "") != NULL;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkString SkPdfFontDescriptorDictionary::CharSet(SkPdfNativeDoc* doc) {
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkPdfNativeObject* ret = get("CharSet", "");
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (doc) {ret = doc->resolveReference(ret);}
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(edisonn): warn about missing default value for optional fields
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return SkString();
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SkPdfFontDescriptorDictionary::has_CharSet() const {
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return get("CharSet", "") != NULL;
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)