truetype_font_dev.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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 "ppapi/cpp/dev/truetype_font_dev.h" 6 7#include <string.h> // memcpy 8 9#include "ppapi/c/dev/ppb_truetype_font_dev.h" 10#include "ppapi/c/pp_errors.h" 11#include "ppapi/c/ppb_var.h" 12#include "ppapi/cpp/completion_callback.h" 13#include "ppapi/cpp/instance_handle.h" 14#include "ppapi/cpp/module.h" 15#include "ppapi/cpp/module_impl.h" 16#include "ppapi/cpp/var.h" 17 18namespace pp { 19 20namespace { 21 22template <> const char* interface_name<PPB_TrueTypeFont_Dev_0_1>() { 23 return PPB_TRUETYPEFONT_DEV_INTERFACE_0_1; 24} 25 26} // namespace 27 28// TrueTypeFontDesc_Dev -------------------------------------------------------- 29 30TrueTypeFontDesc_Dev::TrueTypeFontDesc_Dev() { 31 desc_.family = family_.pp_var(); 32 set_generic_family(PP_TRUETYPEFONTFAMILY_SERIF); 33 set_style(PP_TRUETYPEFONTSTYLE_NORMAL); 34 set_weight(PP_TRUETYPEFONTWEIGHT_NORMAL); 35 set_width(PP_TRUETYPEFONTWIDTH_NORMAL); 36 set_charset(PP_TRUETYPEFONTCHARSET_DEFAULT); 37} 38 39TrueTypeFontDesc_Dev::TrueTypeFontDesc_Dev( 40 PassRef, 41 const PP_TrueTypeFontDesc_Dev& pp_desc) { 42 desc_ = pp_desc; 43 set_family(Var(PASS_REF, pp_desc.family)); 44} 45 46TrueTypeFontDesc_Dev::TrueTypeFontDesc_Dev(const TrueTypeFontDesc_Dev& other) { 47 set_family(other.family()); 48 set_generic_family(other.generic_family()); 49 set_style(other.style()); 50 set_weight(other.weight()); 51 set_width(other.width()); 52 set_charset(other.charset()); 53} 54 55TrueTypeFontDesc_Dev::~TrueTypeFontDesc_Dev() { 56} 57 58TrueTypeFontDesc_Dev& TrueTypeFontDesc_Dev::operator=( 59 const TrueTypeFontDesc_Dev& other) { 60 if (this == &other) 61 return *this; 62 63 set_family(other.family()); 64 set_generic_family(other.generic_family()); 65 set_style(other.style()); 66 set_weight(other.weight()); 67 set_width(other.width()); 68 set_charset(other.charset()); 69 70 return *this; 71} 72 73// TrueTypeFont_Dev ------------------------------------------------------------ 74 75TrueTypeFont_Dev::TrueTypeFont_Dev() { 76} 77 78TrueTypeFont_Dev::TrueTypeFont_Dev(const InstanceHandle& instance, 79 const TrueTypeFontDesc_Dev& desc) { 80 if (!has_interface<PPB_TrueTypeFont_Dev_0_1>()) 81 return; 82 PassRefFromConstructor(get_interface<PPB_TrueTypeFont_Dev_0_1>()->Create( 83 instance.pp_instance(), &desc.pp_desc())); 84} 85 86TrueTypeFont_Dev::TrueTypeFont_Dev(const TrueTypeFont_Dev& other) 87 : Resource(other) { 88} 89 90TrueTypeFont_Dev::TrueTypeFont_Dev(PassRef, PP_Resource resource) 91 : Resource(PASS_REF, resource) { 92} 93 94// static 95int32_t TrueTypeFont_Dev::GetFontFamilies( 96 const InstanceHandle& instance, 97 const CompletionCallbackWithOutput<std::vector<Var> >& cc) { 98 if (has_interface<PPB_TrueTypeFont_Dev_0_1>()) { 99 return get_interface<PPB_TrueTypeFont_Dev_0_1>()->GetFontFamilies( 100 instance.pp_instance(), 101 cc.output(), cc.pp_completion_callback()); 102 } 103 return cc.MayForce(PP_ERROR_NOINTERFACE); 104} 105 106// static 107int32_t TrueTypeFont_Dev::GetFontsInFamily( 108 const InstanceHandle& instance, 109 const Var& family, 110 const CompletionCallbackWithOutput<std::vector<TrueTypeFontDesc_Dev> >& cc) 111 { 112 if (has_interface<PPB_TrueTypeFont_Dev_0_1>()) { 113 return get_interface<PPB_TrueTypeFont_Dev_0_1>()->GetFontsInFamily( 114 instance.pp_instance(), 115 family.pp_var(), 116 cc.output(), cc.pp_completion_callback()); 117 } 118 return cc.MayForce(PP_ERROR_NOINTERFACE); 119} 120 121int32_t TrueTypeFont_Dev::Describe( 122 const CompletionCallbackWithOutput<TrueTypeFontDesc_Dev>& cc) { 123 if (has_interface<PPB_TrueTypeFont_Dev_0_1>()) { 124 int32_t result = 125 get_interface<PPB_TrueTypeFont_Dev_0_1>()->Describe( 126 pp_resource(), cc.output(), cc.pp_completion_callback()); 127 return result; 128 } 129 return cc.MayForce(PP_ERROR_NOINTERFACE); 130} 131 132int32_t TrueTypeFont_Dev::GetTableTags( 133 const CompletionCallbackWithOutput<std::vector<uint32_t> >& cc) { 134 if (has_interface<PPB_TrueTypeFont_Dev_0_1>()) { 135 return get_interface<PPB_TrueTypeFont_Dev_0_1>()->GetTableTags( 136 pp_resource(), 137 cc.output(), cc.pp_completion_callback()); 138 } 139 return cc.MayForce(PP_ERROR_NOINTERFACE); 140} 141 142int32_t TrueTypeFont_Dev::GetTable( 143 uint32_t table, 144 int32_t offset, 145 int32_t max_data_length, 146 const CompletionCallbackWithOutput<std::vector<char> >& cc) { 147 if (has_interface<PPB_TrueTypeFont_Dev_0_1>()) { 148 return get_interface<PPB_TrueTypeFont_Dev_0_1>()->GetTable( 149 pp_resource(), 150 table, offset, max_data_length, 151 cc.output(), cc.pp_completion_callback()); 152 } 153 return cc.MayForce(PP_ERROR_NOINTERFACE); 154} 155 156} // namespace pp 157