Home | History | Annotate | Download | only in shared_impl
      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