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