ppb_truetype_font_dev_thunk.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// From dev/ppb_truetype_font_dev.idl modified Wed Apr 17 15:38:46 2013. 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/dev/ppb_truetype_font_dev.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_errors.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/enter.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/ppb_instance_api.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/ppb_truetype_font_api.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/ppb_truetype_font_singleton_api.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/resource_creation_api.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/thunk/thunk.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ppapi { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace thunk { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t GetFontFamilies(PP_Instance instance, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetFontFamilies()"; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterInstanceAPI<PPB_TrueTypeFont_Singleton_API> enter(instance, callback); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.functions()->GetFontFamilies( 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) instance, 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) output, 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) enter.callback())); 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t GetFontsInFamily(PP_Instance instance, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_Var family, 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetFontsInFamily()"; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterInstanceAPI<PPB_TrueTypeFont_Singleton_API> enter(instance, callback); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.functions()->GetFontsInFamily( 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) instance, 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) family, 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) output, 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) enter.callback())); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_Resource Create(PP_Instance instance, 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const struct PP_TrueTypeFontDesc_Dev* desc) { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::Create()"; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResourceCreation enter(instance); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return 0; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.functions()->CreateTrueTypeFont(instance, desc); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool IsTrueTypeFont(PP_Resource resource) { 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::IsTrueTypeFont()"; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(resource, false); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return PP_FromBool(enter.succeeded()); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t Describe(PP_Resource font, 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_TrueTypeFontDesc_Dev* desc, 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::Describe()"; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.retval(); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.SetResult(enter.object()->Describe(desc, enter.callback())); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t GetTableTags(PP_Resource font, 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetTableTags()"; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.retval(); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.SetResult(enter.object()->GetTableTags(output, 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enter.callback())); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t GetTable(PP_Resource font, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t table, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t offset, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t max_data_length, 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetTable()"; 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.retval(); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.SetResult(enter.object()->GetTable(table, 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) offset, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) max_data_length, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) output, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enter.callback())); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_TrueTypeFont_Dev_0_1 g_ppb_truetypefont_dev_thunk_0_1 = { 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &GetFontFamilies, 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetFontsInFamily, 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &Create, 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &IsTrueTypeFont, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &Describe, 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &GetTableTags, 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &GetTable 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const PPB_TrueTypeFont_Dev_0_1* GetPPB_TrueTypeFont_Dev_0_1_Thunk() { 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_truetypefont_dev_thunk_0_1; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace thunk 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ppapi 122