1// Copyright (c) 2012 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/thunk/thunk.h" 6#include "ppapi/thunk/enter.h" 7#include "ppapi/thunk/ppb_browser_font_singleton_api.h" 8#include "ppapi/thunk/ppb_browser_font_trusted_api.h" 9#include "ppapi/thunk/resource_creation_api.h" 10 11namespace ppapi { 12namespace thunk { 13 14namespace { 15 16typedef EnterResource<PPB_BrowserFont_Trusted_API> EnterBrowserFont; 17 18PP_Var GetFontFamilies(PP_Instance instance) { 19 EnterInstanceAPI<PPB_BrowserFont_Singleton_API> enter(instance); 20 return enter.succeeded() ? 21 enter.functions()->GetFontFamilies(instance) : PP_MakeUndefined(); 22} 23 24PP_Resource Create(PP_Instance instance, 25 const PP_BrowserFont_Trusted_Description* description) { 26 EnterResourceCreation enter(instance); 27 return enter.succeeded() ? 28 enter.functions()->CreateBrowserFont(instance, description) : 0; 29} 30 31PP_Bool IsBrowserFont(PP_Resource resource) { 32 EnterBrowserFont enter(resource, false); 33 return enter.succeeded() ? PP_TRUE : PP_FALSE; 34} 35 36PP_Bool Describe(PP_Resource font_id, 37 PP_BrowserFont_Trusted_Description* description, 38 PP_BrowserFont_Trusted_Metrics* metrics) { 39 EnterBrowserFont enter(font_id, true); 40 return enter.succeeded() ? 41 enter.object()->Describe(description, metrics) : PP_FALSE; 42} 43 44PP_Bool DrawTextAt(PP_Resource font_id, 45 PP_Resource image_data, 46 const PP_BrowserFont_Trusted_TextRun* text, 47 const PP_Point* position, 48 uint32_t color, 49 const PP_Rect* clip, 50 PP_Bool image_data_is_opaque) { 51 EnterBrowserFont enter(font_id, true); 52 return enter.succeeded() ? 53 enter.object()->DrawTextAt(image_data, text, position, color, clip, 54 image_data_is_opaque) : 55 PP_FALSE; 56} 57 58int32_t MeasureText(PP_Resource font_id, 59 const PP_BrowserFont_Trusted_TextRun* text) { 60 EnterBrowserFont enter(font_id, true); 61 return enter.succeeded() ? enter.object()->MeasureText(text) : -1; 62} 63 64uint32_t CharacterOffsetForPixel(PP_Resource font_id, 65 const PP_BrowserFont_Trusted_TextRun* text, 66 int32_t pixel_position) { 67 EnterBrowserFont enter(font_id, true); 68 return enter.succeeded() ? 69 enter.object()->CharacterOffsetForPixel(text, pixel_position) : 70 0xFFFFFFFF; 71} 72 73int32_t PixelOffsetForCharacter(PP_Resource font_id, 74 const PP_BrowserFont_Trusted_TextRun* text, 75 uint32_t char_offset) { 76 EnterBrowserFont enter(font_id, true); 77 return enter.succeeded() ? 78 enter.object()->PixelOffsetForCharacter(text, char_offset) : -1; 79} 80 81const PPB_BrowserFont_Trusted_1_0 g_ppb_browser_font_trusted_thunk = { 82 &GetFontFamilies, 83 &Create, 84 &IsBrowserFont, 85 &Describe, 86 &DrawTextAt, 87 &MeasureText, 88 &CharacterOffsetForPixel, 89 &PixelOffsetForCharacter 90}; 91 92} // namespace 93 94const PPB_BrowserFont_Trusted_1_0* GetPPB_BrowserFont_Trusted_1_0_Thunk() { 95 return &g_ppb_browser_font_trusted_thunk; 96} 97 98} // namespace thunk 99} // namespace ppapi 100