1 // Copyright (c) 2012 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 #include "ppapi/shared_impl/ppb_image_data_shared.h" 6 7 #include "base/logging.h" 8 #include "build/build_config.h" 9 10 #if !defined(OS_NACL) && !defined(NACL_WIN64) 11 #include "third_party/skia/include/core/SkTypes.h" 12 #endif 13 14 namespace ppapi { 15 16 // static 17 PP_ImageDataFormat PPB_ImageData_Shared::GetNativeImageDataFormat() { 18 #if defined(OS_NACL) 19 // In NaCl, just default to something. If we're wrong, it will be converted 20 // later. 21 // TODO(dmichael): Really proxy this. 22 return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 23 #elif defined(NACL_WIN64) 24 // In the NaCl Win64 helper, this shouldn't be called. If we start building 25 // Chrome on Windows 64 for realz, we should really implement this. 26 NOTIMPLEMENTED(); 27 return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 28 #else 29 if (SK_B32_SHIFT == 0) 30 return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 31 else if (SK_R32_SHIFT == 0) 32 return PP_IMAGEDATAFORMAT_RGBA_PREMUL; 33 else 34 return PP_IMAGEDATAFORMAT_BGRA_PREMUL; // Default to something on failure 35 #endif 36 } 37 38 // static 39 PP_Bool PPB_ImageData_Shared::IsImageDataFormatSupported( 40 PP_ImageDataFormat format) { 41 return PP_FromBool(format == PP_IMAGEDATAFORMAT_BGRA_PREMUL || 42 format == PP_IMAGEDATAFORMAT_RGBA_PREMUL); 43 } 44 45 // static 46 PP_Bool PPB_ImageData_Shared::IsImageDataDescValid( 47 const PP_ImageDataDesc& desc) { 48 return PP_FromBool(IsImageDataFormatSupported(desc.format) && 49 desc.size.width > 0 && desc.size.height > 0 && 50 desc.stride > 0); 51 } 52 53 } // namespace ppapi 54