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// From dev/ppb_truetype_font_dev.idl modified Thu Oct 31 12:30:06 2013.
6
7#include "ppapi/c/dev/ppb_truetype_font_dev.h"
8#include "ppapi/c/pp_completion_callback.h"
9#include "ppapi/c/pp_errors.h"
10#include "ppapi/shared_impl/tracked_callback.h"
11#include "ppapi/thunk/enter.h"
12#include "ppapi/thunk/ppapi_thunk_export.h"
13#include "ppapi/thunk/ppb_truetype_font_api.h"
14#include "ppapi/thunk/ppb_truetype_font_singleton_api.h"
15
16namespace ppapi {
17namespace thunk {
18
19namespace {
20
21int32_t GetFontFamilies(PP_Instance instance,
22                        struct PP_ArrayOutput output,
23                        struct PP_CompletionCallback callback) {
24  VLOG(4) << "PPB_TrueTypeFont_Dev::GetFontFamilies()";
25  EnterInstanceAPI<PPB_TrueTypeFont_Singleton_API> enter(instance, callback);
26  if (enter.failed())
27    return enter.retval();
28  return enter.SetResult(enter.functions()->GetFontFamilies(
29      instance,
30      output,
31      enter.callback()));
32}
33
34int32_t GetFontsInFamily(PP_Instance instance,
35                         struct PP_Var family,
36                         struct PP_ArrayOutput output,
37                         struct PP_CompletionCallback callback) {
38  VLOG(4) << "PPB_TrueTypeFont_Dev::GetFontsInFamily()";
39  EnterInstanceAPI<PPB_TrueTypeFont_Singleton_API> enter(instance, callback);
40  if (enter.failed())
41    return enter.retval();
42  return enter.SetResult(enter.functions()->GetFontsInFamily(
43      instance,
44      family,
45      output,
46      enter.callback()));
47}
48
49PP_Resource Create(PP_Instance instance,
50                   const struct PP_TrueTypeFontDesc_Dev* desc) {
51  VLOG(4) << "PPB_TrueTypeFont_Dev::Create()";
52  EnterResourceCreation enter(instance);
53  if (enter.failed())
54    return 0;
55  return enter.functions()->CreateTrueTypeFont(instance, desc);
56}
57
58PP_Bool IsTrueTypeFont(PP_Resource resource) {
59  VLOG(4) << "PPB_TrueTypeFont_Dev::IsTrueTypeFont()";
60  EnterResource<PPB_TrueTypeFont_API> enter(resource, false);
61  return PP_FromBool(enter.succeeded());
62}
63
64int32_t Describe(PP_Resource font,
65                 struct PP_TrueTypeFontDesc_Dev* desc,
66                 struct PP_CompletionCallback callback) {
67  VLOG(4) << "PPB_TrueTypeFont_Dev::Describe()";
68  EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true);
69  if (enter.failed())
70    return enter.retval();
71  return enter.SetResult(enter.object()->Describe(desc, enter.callback()));
72}
73
74int32_t GetTableTags(PP_Resource font,
75                     struct PP_ArrayOutput output,
76                     struct PP_CompletionCallback callback) {
77  VLOG(4) << "PPB_TrueTypeFont_Dev::GetTableTags()";
78  EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true);
79  if (enter.failed())
80    return enter.retval();
81  return enter.SetResult(enter.object()->GetTableTags(output,
82                                                      enter.callback()));
83}
84
85int32_t GetTable(PP_Resource font,
86                 uint32_t table,
87                 int32_t offset,
88                 int32_t max_data_length,
89                 struct PP_ArrayOutput output,
90                 struct PP_CompletionCallback callback) {
91  VLOG(4) << "PPB_TrueTypeFont_Dev::GetTable()";
92  EnterResource<PPB_TrueTypeFont_API> enter(font, callback, true);
93  if (enter.failed())
94    return enter.retval();
95  return enter.SetResult(enter.object()->GetTable(table,
96                                                  offset,
97                                                  max_data_length,
98                                                  output,
99                                                  enter.callback()));
100}
101
102const PPB_TrueTypeFont_Dev_0_1 g_ppb_truetypefont_dev_thunk_0_1 = {
103  &GetFontFamilies,
104  &GetFontsInFamily,
105  &Create,
106  &IsTrueTypeFont,
107  &Describe,
108  &GetTableTags,
109  &GetTable
110};
111
112}  // namespace
113
114PPAPI_THUNK_EXPORT const PPB_TrueTypeFont_Dev_0_1*
115    GetPPB_TrueTypeFont_Dev_0_1_Thunk() {
116  return &g_ppb_truetypefont_dev_thunk_0_1;
117}
118
119}  // namespace thunk
120}  // namespace ppapi
121