Home | History | Annotate | Download | only in thunk
      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 
     16 namespace ppapi {
     17 namespace thunk {
     18 
     19 namespace {
     20 
     21 int32_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 
     34 int32_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 
     49 PP_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 
     58 PP_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 
     64 int32_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 
     74 int32_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 
     85 int32_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 
    102 const 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 
    114 PPAPI_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