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 13namespace pp { 14 15namespace { 16 17static const char kPPPZoomInterface[] = PPP_ZOOM_DEV_INTERFACE; 18 19void 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 28const PPP_Zoom_Dev ppp_zoom = { 29 &Zoom 30}; 31 32template <> const char* interface_name<PPB_Zoom_Dev>() { 33 return PPB_ZOOM_DEV_INTERFACE; 34} 35 36} // namespace 37 38Zoom_Dev::Zoom_Dev(Instance* instance) : associated_instance_(instance) { 39 Module::Get()->AddPluginInterface(kPPPZoomInterface, &ppp_zoom); 40 instance->AddPerInstanceObject(kPPPZoomInterface, this); 41} 42 43Zoom_Dev::~Zoom_Dev() { 44 Instance::RemovePerInstanceObject(associated_instance_, 45 kPPPZoomInterface, this); 46} 47 48void 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 54void 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