blob: 2dfbabdb96a08403a4f8a46ef9e3fa6688f99e5b [file] [log] [blame]
[email protected]9ca8a5232012-08-07 22:34:301// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]4614f192011-01-21 00:26:432// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]9a578392011-12-07 18:59:275#include "ppapi/shared_impl/ppb_image_data_shared.h"
[email protected]4614f192011-01-21 00:26:436
[email protected]246fc492012-08-27 20:28:187#include "base/logging.h"
[email protected]9ca8a5232012-08-07 22:34:308#include "build/build_config.h"
9
[email protected]246fc492012-08-27 20:28:1810#if !defined(OS_NACL) && !defined(NACL_WIN64)
[email protected]cf696682011-03-17 03:05:5511#include "third_party/skia/include/core/SkTypes.h"
[email protected]9ca8a5232012-08-07 22:34:3012#endif
[email protected]4614f192011-01-21 00:26:4313
[email protected]55cdf6052011-05-13 19:22:5314namespace ppapi {
[email protected]4614f192011-01-21 00:26:4315
16// static
[email protected]9a578392011-12-07 18:59:2717PP_ImageDataFormat PPB_ImageData_Shared::GetNativeImageDataFormat() {
[email protected]246fc492012-08-27 20:28:1818#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
[email protected]c2b7f792013-10-30 01:04:0729 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
[email protected]665b5c542014-02-22 08:06:2634 return PP_IMAGEDATAFORMAT_BGRA_PREMUL; // Default to something on failure
[email protected]9ca8a5232012-08-07 22:34:3035#endif
[email protected]4614f192011-01-21 00:26:4336}
37
38// static
[email protected]56c49bb2013-04-26 01:24:1339PP_Bool PPB_ImageData_Shared::IsImageDataFormatSupported(
[email protected]9a578392011-12-07 18:59:2740 PP_ImageDataFormat format) {
[email protected]56c49bb2013-04-26 01:24:1341 return PP_FromBool(format == PP_IMAGEDATAFORMAT_BGRA_PREMUL ||
42 format == PP_IMAGEDATAFORMAT_RGBA_PREMUL);
[email protected]4614f192011-01-21 00:26:4343}
44
[email protected]ebdbb112013-05-16 16:56:3445// static
46PP_Bool PPB_ImageData_Shared::IsImageDataDescValid(
47 const PP_ImageDataDesc& desc) {
48 return PP_FromBool(IsImageDataFormatSupported(desc.format) &&
[email protected]665b5c542014-02-22 08:06:2649 desc.size.width > 0 && desc.size.height > 0 &&
[email protected]ebdbb112013-05-16 16:56:3450 desc.stride > 0);
51}
52
[email protected]55cdf6052011-05-13 19:22:5353} // namespace ppapi