You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
243 lines
9.9 KiB
243 lines
9.9 KiB
/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/* From ppb_view.idl modified Fri Sep 5 11:32:22 2014. */
|
|
|
|
#ifndef PPAPI_C_PPB_VIEW_H_
|
|
#define PPAPI_C_PPB_VIEW_H_
|
|
|
|
#include "ppapi/c/pp_bool.h"
|
|
#include "ppapi/c/pp_macros.h"
|
|
#include "ppapi/c/pp_point.h"
|
|
#include "ppapi/c/pp_rect.h"
|
|
#include "ppapi/c/pp_resource.h"
|
|
#include "ppapi/c/pp_size.h"
|
|
#include "ppapi/c/pp_stdint.h"
|
|
|
|
#define PPB_VIEW_INTERFACE_1_0 "PPB_View;1.0"
|
|
#define PPB_VIEW_INTERFACE_1_1 "PPB_View;1.1"
|
|
#define PPB_VIEW_INTERFACE_1_2 "PPB_View;1.2"
|
|
#define PPB_VIEW_INTERFACE PPB_VIEW_INTERFACE_1_2
|
|
|
|
/**
|
|
* @file
|
|
* This file defines the <code>PPB_View</code> struct representing the state
|
|
* of the view of an instance.
|
|
*/
|
|
|
|
|
|
/**
|
|
* @addtogroup Interfaces
|
|
* @{
|
|
*/
|
|
/**
|
|
* <code>PPB_View</code> represents the state of the view of an instance.
|
|
* You will receive new view information using
|
|
* <code>PPP_Instance.DidChangeView</code>.
|
|
*/
|
|
struct PPB_View_1_2 {
|
|
/**
|
|
* IsView() determines if the given resource is a valid
|
|
* <code>PPB_View</code> resource. Note that <code>PPB_ViewChanged</code>
|
|
* resources derive from <code>PPB_View</code> and will return true here
|
|
* as well.
|
|
*
|
|
* @param resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @return <code>PP_TRUE</code> if the given resource supports
|
|
* <code>PPB_View</code> or <code>PP_FALSE</code> if it is an invalid
|
|
* resource or is a resource of another type.
|
|
*/
|
|
PP_Bool (*IsView)(PP_Resource resource);
|
|
/**
|
|
* GetRect() retrieves the rectangle of the module instance associated
|
|
* with a view changed notification relative to the upper-left of the browser
|
|
* viewport. This position changes when the page is scrolled.
|
|
*
|
|
* The returned rectangle may not be inside the visible portion of the
|
|
* viewport if the module instance is scrolled off the page. Therefore, the
|
|
* position may be negative or larger than the size of the page. The size will
|
|
* always reflect the size of the module were it to be scrolled entirely into
|
|
* view.
|
|
*
|
|
* In general, most modules will not need to worry about the position of the
|
|
* module instance in the viewport, and only need to use the size.
|
|
*
|
|
* @param resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @param rect A <code>PP_Rect</code> receiving the rectangle on success.
|
|
*
|
|
* @return Returns <code>PP_TRUE</code> if the resource was valid and the
|
|
* viewport rectangle was filled in, <code>PP_FALSE</code> if not.
|
|
*/
|
|
PP_Bool (*GetRect)(PP_Resource resource, struct PP_Rect* rect);
|
|
/**
|
|
* IsFullscreen() returns whether the instance is currently
|
|
* displaying in fullscreen mode.
|
|
*
|
|
* @param resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @return <code>PP_TRUE</code> if the instance is in full screen mode,
|
|
* or <code>PP_FALSE</code> if it's not or the resource is invalid.
|
|
*/
|
|
PP_Bool (*IsFullscreen)(PP_Resource resource);
|
|
/**
|
|
* IsVisible() determines whether the module instance might be visible to
|
|
* the user. For example, the Chrome window could be minimized or another
|
|
* window could be over it. In both of these cases, the module instance
|
|
* would not be visible to the user, but IsVisible() will return true.
|
|
*
|
|
* Use the result to speed up or stop updates for invisible module
|
|
* instances.
|
|
*
|
|
* This function performs the duties of GetRect() (determining whether the
|
|
* module instance is scrolled into view and the clip rectangle is nonempty)
|
|
* and IsPageVisible() (whether the page is visible to the user).
|
|
*
|
|
* @param resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @return <code>PP_TRUE</code> if the instance might be visible to the
|
|
* user, <code>PP_FALSE</code> if it is definitely not visible.
|
|
*/
|
|
PP_Bool (*IsVisible)(PP_Resource resource);
|
|
/**
|
|
* IsPageVisible() determines if the page that contains the module instance
|
|
* is visible. The most common cause of invisible pages is that
|
|
* the page is in a background tab in the browser.
|
|
*
|
|
* Most applications should use IsVisible() instead of this function since
|
|
* the module instance could be scrolled off of a visible page, and this
|
|
* function will still return true. However, depending on how your module
|
|
* interacts with the page, there may be certain updates that you may want to
|
|
* perform when the page is visible even if your specific module instance is
|
|
* not visible.
|
|
*
|
|
* @param resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @return <code>PP_TRUE</code> if the instance is plausibly visible to the
|
|
* user, <code>PP_FALSE</code> if it is definitely not visible.
|
|
*/
|
|
PP_Bool (*IsPageVisible)(PP_Resource resource);
|
|
/**
|
|
* GetClipRect() returns the clip rectangle relative to the upper-left corner
|
|
* of the module instance. This rectangle indicates the portions of the module
|
|
* instance that are scrolled into view.
|
|
*
|
|
* If the module instance is scrolled off the view, the return value will be
|
|
* (0, 0, 0, 0). This clip rectangle does <i>not</i> take into account page
|
|
* visibility. Therefore, if the module instance is scrolled into view, but
|
|
* the page itself is on a tab that is not visible, the return rectangle will
|
|
* contain the visible rectangle as though the page were visible. Refer to
|
|
* IsPageVisible() and IsVisible() if you want to account for page
|
|
* visibility.
|
|
*
|
|
* Most applications will not need to worry about the clip rectangle. The
|
|
* recommended behavior is to do full updates if the module instance is
|
|
* visible, as determined by IsVisible(), and do no updates if it is not
|
|
* visible.
|
|
*
|
|
* However, if the cost for computing pixels is very high for your
|
|
* application, or the pages you're targeting frequently have very large
|
|
* module instances with small visible portions, you may wish to optimize
|
|
* further. In this case, the clip rectangle will tell you which parts of
|
|
* the module to update.
|
|
*
|
|
* Note that painting of the page and sending of view changed updates
|
|
* happens asynchronously. This means when the user scrolls, for example,
|
|
* it is likely that the previous backing store of the module instance will
|
|
* be used for the first paint, and will be updated later when your
|
|
* application generates new content with the new clip. This may cause
|
|
* flickering at the boundaries when scrolling. If you do choose to do
|
|
* partial updates, you may want to think about what color the invisible
|
|
* portions of your backing store contain (be it transparent or some
|
|
* background color) or to paint a certain region outside the clip to reduce
|
|
* the visual distraction when this happens.
|
|
*
|
|
* @param resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @param clip Output argument receiving the clip rect on success.
|
|
*
|
|
* @return Returns <code>PP_TRUE</code> if the resource was valid and the
|
|
* clip rect was filled in, <code>PP_FALSE</code> if not.
|
|
*/
|
|
PP_Bool (*GetClipRect)(PP_Resource resource, struct PP_Rect* clip);
|
|
/**
|
|
* GetDeviceScale returns the scale factor between device pixels and Density
|
|
* Independent Pixels (DIPs, also known as logical pixels or UI pixels on
|
|
* some platforms). This allows the developer to render their contents at
|
|
* device resolution, even as coordinates / sizes are given in DIPs through
|
|
* the API.
|
|
*
|
|
* Note that the coordinate system for Pepper APIs is DIPs. Also note that
|
|
* one DIP might not equal one CSS pixel - when page scale/zoom is in effect.
|
|
*
|
|
* @param[in] resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @return A <code>float</code> value representing the number of device pixels
|
|
* per DIP. If the resource is invalid, the value will be 0.0.
|
|
*/
|
|
float (*GetDeviceScale)(PP_Resource resource);
|
|
/**
|
|
* GetCSSScale returns the scale factor between DIPs and CSS pixels. This
|
|
* allows proper scaling between DIPs - as sent via the Pepper API - and CSS
|
|
* pixel coordinates used for Web content.
|
|
*
|
|
* @param[in] resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @return css_scale A <code>float</code> value representing the number of
|
|
* DIPs per CSS pixel. If the resource is invalid, the value will be 0.0.
|
|
*/
|
|
float (*GetCSSScale)(PP_Resource resource);
|
|
/**
|
|
* GetScrollOffset returns the scroll offset of the window containing the
|
|
* plugin.
|
|
*
|
|
* @param[in] resource A <code>PP_Resource</code> corresponding to a
|
|
* <code>PPB_View</code> resource.
|
|
*
|
|
* @param[out] offset A <code>PP_Point</code> which will be set to the value
|
|
* of the scroll offset in CSS pixels.
|
|
*
|
|
* @return Returns <code>PP_TRUE</code> if the resource was valid and the
|
|
* offset was filled in, <code>PP_FALSE</code> if not.
|
|
*/
|
|
PP_Bool (*GetScrollOffset)(PP_Resource resource, struct PP_Point* offset);
|
|
};
|
|
|
|
typedef struct PPB_View_1_2 PPB_View;
|
|
|
|
struct PPB_View_1_0 {
|
|
PP_Bool (*IsView)(PP_Resource resource);
|
|
PP_Bool (*GetRect)(PP_Resource resource, struct PP_Rect* rect);
|
|
PP_Bool (*IsFullscreen)(PP_Resource resource);
|
|
PP_Bool (*IsVisible)(PP_Resource resource);
|
|
PP_Bool (*IsPageVisible)(PP_Resource resource);
|
|
PP_Bool (*GetClipRect)(PP_Resource resource, struct PP_Rect* clip);
|
|
};
|
|
|
|
struct PPB_View_1_1 {
|
|
PP_Bool (*IsView)(PP_Resource resource);
|
|
PP_Bool (*GetRect)(PP_Resource resource, struct PP_Rect* rect);
|
|
PP_Bool (*IsFullscreen)(PP_Resource resource);
|
|
PP_Bool (*IsVisible)(PP_Resource resource);
|
|
PP_Bool (*IsPageVisible)(PP_Resource resource);
|
|
PP_Bool (*GetClipRect)(PP_Resource resource, struct PP_Rect* clip);
|
|
float (*GetDeviceScale)(PP_Resource resource);
|
|
float (*GetCSSScale)(PP_Resource resource);
|
|
};
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* PPAPI_C_PPB_VIEW_H_ */
|
|
|
|
|