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