15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From ppb_image_data.idl modified Tue Aug 20 08:13:36 2013. 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string.h> 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_errors.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/ppb_image_data.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppb_image_data_shared.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/enter.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_image_data_api.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunk { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_ImageDataFormat GetNativeImageDataFormat(void) { 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::GetNativeImageDataFormat()"; 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PPB_ImageData_Shared::GetNativeImageDataFormat(); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool IsImageDataFormatSupported(PP_ImageDataFormat format) { 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::IsImageDataFormatSupported()"; 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PPB_ImageData_Shared::IsImageDataFormatSupported(format); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Resource Create(PP_Instance instance, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_ImageDataFormat format, 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const struct PP_Size* size, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool init_to_zero) { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::Create()"; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterResourceCreation enter(instance); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.functions()->CreateImageData(instance, 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) format, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size, 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) init_to_zero); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool IsImageData(PP_Resource image_data) { 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::IsImageData()"; 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_ImageData_API> enter(image_data, false); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PP_FromBool(enter.succeeded()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool Describe(PP_Resource image_data, struct PP_ImageDataDesc* desc) { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::Describe()"; 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_ImageData_API> enter(image_data, true); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) { 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) memset(desc, 0, sizeof(*desc)); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_FALSE; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->Describe(desc); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void* Map(PP_Resource image_data) { 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::Map()"; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_ImageData_API> enter(image_data, true); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->Map(); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void Unmap(PP_Resource image_data) { 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_ImageData::Unmap()"; 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_ImageData_API> enter(image_data, true); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enter.object()->Unmap(); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_ImageData_1_0 g_ppb_imagedata_thunk_1_0 = { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &GetNativeImageDataFormat, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &IsImageDataFormatSupported, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Create, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &IsImageData, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Describe, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Map, 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Unmap 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_ImageData_1_0* GetPPB_ImageData_1_0_Thunk() { 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_imagedata_thunk_1_0; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace thunk 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ppapi 96