1 /* 2 * Copyright 2018 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL 9 // DO NOT USE -- FOR INTERNAL TESTING ONLY 10 11 #ifndef sk_imageinfo_DEFINED 12 #define sk_imageinfo_DEFINED 13 14 #include "include/c/sk_types.h" 15 16 SK_C_PLUS_PLUS_BEGIN_GUARD 17 18 typedef enum { 19 UNKNOWN_SK_COLORTYPE, 20 RGBA_8888_SK_COLORTYPE, 21 BGRA_8888_SK_COLORTYPE, 22 ALPHA_8_SK_COLORTYPE, 23 GRAY_8_SK_COLORTYPE, 24 RGBA_F16_SK_COLORTYPE, 25 RGBA_F32_SK_COLORTYPE, 26 } sk_colortype_t; 27 28 typedef enum { 29 OPAQUE_SK_ALPHATYPE, 30 PREMUL_SK_ALPHATYPE, 31 UNPREMUL_SK_ALPHATYPE, 32 } sk_alphatype_t; 33 34 /** 35 * Allocate a new imageinfo object. If colorspace is not null, it's owner-count will be 36 * incremented automatically. 37 */ 38 SK_API sk_imageinfo_t* sk_imageinfo_new(int width, int height, sk_colortype_t ct, sk_alphatype_t at, 39 sk_colorspace_t* cs); 40 41 /** 42 * Free the imageinfo object. If it contains a reference to a colorspace, its owner-count will 43 * be decremented automatically. 44 */ 45 SK_API void sk_imageinfo_delete(sk_imageinfo_t*); 46 47 SK_API int32_t sk_imageinfo_get_width(const sk_imageinfo_t*); 48 SK_API int32_t sk_imageinfo_get_height(const sk_imageinfo_t*); 49 SK_API sk_colortype_t sk_imageinfo_get_colortype(const sk_imageinfo_t*); 50 SK_API sk_alphatype_t sk_imageinfo_get_alphatype(const sk_imageinfo_t*); 51 52 /** 53 * Return the colorspace object reference contained in the imageinfo, or null if there is none. 54 * Note: this does not modify the owner-count on the colorspace object. If the caller needs to 55 * use the colorspace beyond the lifetime of the imageinfo, it should manually call 56 * sk_colorspace_ref() (and then call unref() when it is done). 57 */ 58 SK_API sk_colorspace_t* sk_imageinfo_get_colorspace(const sk_imageinfo_t*); 59 60 SK_C_PLUS_PLUS_END_GUARD 61 62 #endif 63