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) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From dev/ppb_truetype_font_dev.idl modified Thu Oct 31 12:30:06 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" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.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) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ppapi { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace thunk { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t GetFontFamilies(PP_Instance instance, 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetFontFamilies()"; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterInstanceAPI<PPB_TrueTypeFont_Singleton_API> enter(instance, callback); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.functions()->GetFontFamilies( 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) instance, 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) output, 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) enter.callback())); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t GetFontsInFamily(PP_Instance instance, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_Var family, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetFontsInFamily()"; 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterInstanceAPI<PPB_TrueTypeFont_Singleton_API> enter(instance, callback); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.functions()->GetFontsInFamily( 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) instance, 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) family, 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) output, 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) enter.callback())); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_Resource Create(PP_Instance instance, 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const struct PP_TrueTypeFontDesc_Dev* desc) { 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::Create()"; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResourceCreation enter(instance); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return 0; 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.functions()->CreateTrueTypeFont(instance, desc); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool IsTrueTypeFont(PP_Resource resource) { 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::IsTrueTypeFont()"; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(resource, false); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return PP_FromBool(enter.succeeded()); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t Describe(PP_Resource font, 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_TrueTypeFontDesc_Dev* desc, 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::Describe()"; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.retval(); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.SetResult(enter.object()->Describe(desc, enter.callback())); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t GetTableTags(PP_Resource font, 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetTableTags()"; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.retval(); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.SetResult(enter.object()->GetTableTags(output, 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enter.callback())); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int32_t GetTable(PP_Resource font, 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t table, 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t offset, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t max_data_length, 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_TrueTypeFont_Dev::GetTable()"; 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (enter.failed()) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.retval(); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enter.SetResult(enter.object()->GetTable(table, 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) offset, 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) max_data_length, 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) output, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enter.callback())); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_TrueTypeFont_Dev_0_1 g_ppb_truetypefont_dev_thunk_0_1 = { 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &GetFontFamilies, 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetFontsInFamily, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &Create, 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &IsTrueTypeFont, 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &Describe, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &GetTableTags, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &GetTable 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_TrueTypeFont_Dev_0_1* 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetPPB_TrueTypeFont_Dev_0_1_Thunk() { 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_truetypefont_dev_thunk_0_1; 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace thunk 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ppapi 121