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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppb_image_data_shared.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_NACL) && !defined(NACL_WIN64) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkTypes.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_ImageDataFormat PPB_ImageData_Shared::GetNativeImageDataFormat() { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_NACL) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In NaCl, just default to something. If we're wrong, it will be converted 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // later. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dmichael): Really proxy this. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(NACL_WIN64) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In the NaCl Win64 helper, this shouldn't be called. If we start building 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Chrome on Windows 64 for realz, we should really implement this. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (SK_B32_SHIFT == 0) 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) else if (SK_R32_SHIFT == 0) 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return PP_IMAGEDATAFORMAT_RGBA_PREMUL; 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) else 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return PP_IMAGEDATAFORMAT_BGRA_PREMUL; // Default to something on failure 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool PPB_ImageData_Shared::IsImageDataFormatSupported( 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_ImageDataFormat format) { 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PP_FromBool(format == PP_IMAGEDATAFORMAT_BGRA_PREMUL || 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) format == PP_IMAGEDATAFORMAT_RGBA_PREMUL); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PP_Bool PPB_ImageData_Shared::IsImageDataDescValid( 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PP_ImageDataDesc& desc) { 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return PP_FromBool(IsImageDataFormatSupported(desc.format) && 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) desc.size.width > 0 && desc.size.height > 0 && 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) desc.stride > 0); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ppapi 54