ps_context_2d.h revision 3551c9c881056c480085172ff9840cab31610854
1/* Copyright 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#ifndef PPAPI_SIMPLE_PS_CONTEXT_2D_H_
6#define PPAPI_SIMPLE_PS_CONTEXT_2D_H_
7
8#include "ppapi/c/pp_resource.h"
9#include "ppapi/c/ppb_graphics_2d.h"
10#include "ppapi/c/ppb_image_data.h"
11
12#include "ppapi_simple/ps_event.h"
13
14#include "sdk_util/macros.h"
15
16EXTERN_C_BEGIN
17
18typedef struct {
19  int bound;
20  int32_t width;
21  int32_t height;
22  uint32_t stride;
23  uint32_t* data;
24  PP_ImageDataFormat format;
25  PP_Resource graphic_2d;
26  PP_Resource image;
27} PSContext2D_t;
28
29
30/*
31 * PSContext2DAllocate
32 *
33 * Allocate or free a 2D context object which the library can use to perform
34 * various PPAPI operations on the developer's behalf, such as processing view
35 * change events, swapping buffers, etc...
36 */
37PSContext2D_t* PSContext2DAllocate(PP_ImageDataFormat format);
38void PSContext2DFree(PSContext2D_t* ctx);
39
40/*
41 * PSContext2DGetNativeFormat
42 *
43 * Query the native system image format.
44 */
45PP_ImageDataFormat PSContext2DGetNativeImageDataFormat();
46
47/*
48 * PSContext2DHandleEvent
49 *
50 * Updates the context such as allocating, freeing, or sizing graphics and
51 * image resources in response to events.
52 */
53int PSContext2DHandleEvent(PSContext2D_t* ctx, PSEvent* event);
54
55/*
56 * PSContext2DGetBuffer
57 *
58 * Points the data member of the context to the raw pixels of the image for
59 * writing to the screen.  The image will become visible after a swap.
60 */
61int PSContext2DGetBuffer(PSContext2D_t* ctx);
62
63/*
64 * PSContext2DSwapBuffer
65 *
66 * Swaps out the currently visible graphics with the data stored in the image
67 * buffer making it visible.  The old image resource will no longer be
68 * available after this call.
69 */
70int PSContext2DSwapBuffer(PSContext2D_t* ctx);
71
72EXTERN_C_END
73
74#endif  /* PPAPI_SIMPLE_PS_CONTEXT_2D_H_ */
75