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 14namespace ppapi { 15 16// static 17PP_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 return PP_IMAGEDATAFORMAT_BGRA_PREMUL; 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 39PP_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 46PP_Bool PPB_ImageData_Shared::IsImageDataDescValid( 47 const PP_ImageDataDesc& desc) { 48 return PP_FromBool(IsImageDataFormatSupported(desc.format) && 49 desc.size.width > 0 && 50 desc.size.height > 0 && 51 desc.stride > 0); 52} 53 54} // namespace ppapi 55