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