Home | History | Annotate | Download | only in dev
      1 // Copyright (c) 2010 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/cpp/dev/zoom_dev.h"
      6 
      7 #include "ppapi/c/dev/ppb_zoom_dev.h"
      8 #include "ppapi/cpp/instance.h"
      9 #include "ppapi/cpp/instance_handle.h"
     10 #include "ppapi/cpp/module.h"
     11 #include "ppapi/cpp/module_impl.h"
     12 
     13 namespace pp {
     14 
     15 namespace {
     16 
     17 static const char kPPPZoomInterface[] = PPP_ZOOM_DEV_INTERFACE;
     18 
     19 void Zoom(PP_Instance instance,
     20           double factor,
     21           PP_Bool text_only) {
     22   void* object = Instance::GetPerInstanceObject(instance, kPPPZoomInterface);
     23   if (!object)
     24     return;
     25   static_cast<Zoom_Dev*>(object)->Zoom(factor, PP_ToBool(text_only));
     26 }
     27 
     28 const PPP_Zoom_Dev ppp_zoom = {
     29   &Zoom
     30 };
     31 
     32 template <> const char* interface_name<PPB_Zoom_Dev>() {
     33   return PPB_ZOOM_DEV_INTERFACE;
     34 }
     35 
     36 }  // namespace
     37 
     38 Zoom_Dev::Zoom_Dev(Instance* instance) : associated_instance_(instance) {
     39   Module::Get()->AddPluginInterface(kPPPZoomInterface, &ppp_zoom);
     40   instance->AddPerInstanceObject(kPPPZoomInterface, this);
     41 }
     42 
     43 Zoom_Dev::~Zoom_Dev() {
     44   Instance::RemovePerInstanceObject(associated_instance_,
     45                                     kPPPZoomInterface, this);
     46 }
     47 
     48 void Zoom_Dev::ZoomChanged(double factor) {
     49   if (has_interface<PPB_Zoom_Dev>())
     50     get_interface<PPB_Zoom_Dev>()->ZoomChanged(
     51         associated_instance_.pp_instance(), factor);
     52 }
     53 
     54 void Zoom_Dev::ZoomLimitsChanged(double minimum_factor,
     55                                  double maximium_factor) {
     56   if (!has_interface<PPB_Zoom_Dev>())
     57     return;
     58   get_interface<PPB_Zoom_Dev>()->ZoomLimitsChanged(
     59       associated_instance_.pp_instance(), minimum_factor, maximium_factor);
     60 }
     61 
     62 }  // namespace pp
     63