1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/* Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * found in the LICENSE file. */
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef PPAPI_SIMPLE_PS_CONTEXT_2D_H_
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPAPI_SIMPLE_PS_CONTEXT_2D_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_resource.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/ppb_graphics_2d.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/ppb_image_data.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi_simple/ps_event.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "sdk_util/macros.h"
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochEXTERN_C_BEGIN
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtypedef struct {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  int bound;
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  int32_t width;
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  int32_t height;
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  uint32_t stride;
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  uint32_t* data;
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  PP_ImageDataFormat format;
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  PP_Resource graphic_2d;
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  PP_Resource image;
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} PSContext2D_t;
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/*
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * PSContext2DAllocate
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch *
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Allocate or free a 2D context object which the library can use to perform
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * various PPAPI operations on the developer's behalf, such as processing view
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * change events, swapping buffers, etc...
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)PSContext2D_t* PSContext2DAllocate(PP_ImageDataFormat format);
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid PSContext2DFree(PSContext2D_t* ctx);
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/*
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * PSContext2DGetNativeFormat
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Query the native system image format.
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) */
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)PP_ImageDataFormat PSContext2DGetNativeImageDataFormat();
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/*
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * PSContext2DHandleEvent
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch *
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Updates the context such as allocating, freeing, or sizing graphics and
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * image resources in response to events.
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochint PSContext2DHandleEvent(PSContext2D_t* ctx, PSEvent* event);
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/*
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * PSContext2DGetBuffer
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch *
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Points the data member of the context to the raw pixels of the image for
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * writing to the screen.  The image will become visible after a swap.
60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochint PSContext2DGetBuffer(PSContext2D_t* ctx);
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/*
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * PSContext2DSwapBuffer
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch *
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Swaps out the currently visible graphics with the data stored in the image
67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * buffer making it visible.  The old image resource will no longer be
68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * available after this call.
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochint PSContext2DSwapBuffer(PSContext2D_t* ctx);
71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochEXTERN_C_END
73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  /* PPAPI_SIMPLE_PS_CONTEXT_2D_H_ */
75