Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
SkImageEncoderFns.h
Go to the documentation of this file.
1/*
2 * Copyright 2012 The Android Open Source Project
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#ifndef SkImageEncoderFns_DEFINED
9#define SkImageEncoderFns_DEFINED
10
12#include "include/core/SkData.h"
17#include "modules/skcms/skcms.h"
18
19#include <cstring>
20
21typedef void (*transform_scanline_proc)(char* dst, const char* src, int width, int bpp);
22
23static inline void transform_scanline_memcpy(char* dst, const char* src, int width, int bpp) {
24 memcpy(dst, src, width * bpp);
25}
26
27static inline void transform_scanline_A8_to_GrayAlpha(char* dst, const char* src, int width, int) {
28 for (int i = 0; i < width; i++) {
29 *dst++ = 0;
30 *dst++ = *src++;
31 }
32}
33
34
35static void skcms(char* dst, const char* src, int n,
36 skcms_PixelFormat srcFmt, skcms_AlphaFormat srcAlpha,
37 skcms_PixelFormat dstFmt, skcms_AlphaFormat dstAlpha) {
38 SkAssertResult(skcms_Transform(src, srcFmt, srcAlpha, nullptr,
39 dst, dstFmt, dstAlpha, nullptr, n));
40}
41
42static inline void transform_scanline_gray(char* dst, const char* src, int width, int) {
43 skcms(dst, src, width,
46}
47
48static inline void transform_scanline_565(char* dst, const char* src, int width, int) {
49 skcms(dst, src, width,
52}
53
54static inline void transform_scanline_RGBX(char* dst, const char* src, int width, int) {
55 skcms(dst, src, width,
58}
59
60static inline void transform_scanline_BGRX(char* dst, const char* src, int width, int) {
61 skcms(dst, src, width,
64}
65
66static inline void transform_scanline_444(char* dst, const char* src, int width, int) {
67 skcms(dst, src, width,
70}
71
77
83
89
95
101
107
113
119
125
131
137
143
149
155
161
170
179
185
191
193 const skcms_ICCProfile* profile,
194 const char* profile_description) {
195 // TODO(ccameron): Remove this check.
196 if (!cs) {
197 return nullptr;
198 }
199
200 if (profile) {
201 return SkWriteICCProfile(profile, profile_description);
202 }
203
204 skcms_Matrix3x3 toXYZD50;
205 if (cs->toXYZD50(&toXYZD50)) {
207 cs->transferFn(&fn);
208 return SkWriteICCProfile(fn, toXYZD50);
209 }
210 return nullptr;
211}
212
214 const skcms_ICCProfile* profile,
215 const char* profile_description) {
216 return icc_from_color_space(info.colorSpace(), profile, profile_description);
217}
218
219#endif // SkImageEncoderFns_DEFINED
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213
#define SkAssertResult(cond)
Definition SkAssert.h:123
SK_API sk_sp< SkData > SkWriteICCProfile(const skcms_TransferFunction &, const skcms_Matrix3x3 &toXYZD50)
Definition SkICC.cpp:679
static void transform_scanline_F16_premul_to_8888(char *dst, const char *src, int width, int)
static void transform_scanline_RGBX(char *dst, const char *src, int width, int)
static void transform_scanline_bgr_101010x(char *dst, const char *src, int width, int)
static void transform_scanline_F32(char *dst, const char *src, int width, int)
static void transform_scanline_F16_premul(char *dst, const char *src, int width, int)
static void transform_scanline_gray(char *dst, const char *src, int width, int)
static void transform_scanline_F16(char *dst, const char *src, int width, int)
static void transform_scanline_bgra_1010102_premul(char *dst, const char *src, int width, int)
static void transform_scanline_to_premul_legacy(char *dst, const char *src, int width, int)
static void transform_scanline_F16_to_8888(char *dst, const char *src, int width, int)
static void transform_scanline_1010102(char *dst, const char *src, int width, int)
static void skcms(char *dst, const char *src, int n, skcms_PixelFormat srcFmt, skcms_AlphaFormat srcAlpha, skcms_PixelFormat dstFmt, skcms_AlphaFormat dstAlpha)
static void transform_scanline_BGRX(char *dst, const char *src, int width, int)
static void transform_scanline_bgra_1010102(char *dst, const char *src, int width, int)
void(* transform_scanline_proc)(char *dst, const char *src, int width, int bpp)
static void transform_scanline_4444(char *dst, const char *src, int width, int)
static void transform_scanline_565(char *dst, const char *src, int width, int)
static void transform_scanline_memcpy(char *dst, const char *src, int width, int bpp)
static void transform_scanline_F16_to_premul_8888(char *dst, const char *src, int width, int)
static void transform_scanline_A8_to_GrayAlpha(char *dst, const char *src, int width, int)
static void transform_scanline_bgr_101010x_xr(char *dst, const char *src, int width, int)
static void transform_scanline_101010x(char *dst, const char *src, int width, int)
static void transform_scanline_444(char *dst, const char *src, int width, int)
static sk_sp< SkData > icc_from_color_space(const SkColorSpace *cs, const skcms_ICCProfile *profile, const char *profile_description)
static void transform_scanline_F32_premul(char *dst, const char *src, int width, int)
static void transform_scanline_1010102_premul(char *dst, const char *src, int width, int)
static void transform_scanline_rgbA(char *dst, const char *src, int width, int)
static void transform_scanline_BGRA(char *dst, const char *src, int width, int)
static void transform_scanline_bgrA(char *dst, const char *src, int width, int)
bool toXYZD50(skcms_Matrix3x3 *toXYZD50) const
void transferFn(float gabcdef[7]) const
int32_t width
bool skcms_Transform(const void *src, skcms_PixelFormat srcFmt, skcms_AlphaFormat srcAlpha, const skcms_ICCProfile *srcProfile, void *dst, skcms_PixelFormat dstFmt, skcms_AlphaFormat dstAlpha, const skcms_ICCProfile *dstProfile, size_t nz)
Definition skcms.cc:2494
skcms_PixelFormat
@ skcms_PixelFormat_RGBA_16161616BE
@ skcms_PixelFormat_BGR_101010x_XR
@ skcms_PixelFormat_RGBA_ffff
@ skcms_PixelFormat_RGBA_1010102
@ skcms_PixelFormat_BGRA_8888
@ skcms_PixelFormat_RGBA_hhhh
@ skcms_PixelFormat_RGBA_8888
@ skcms_PixelFormat_RGB_888
@ skcms_PixelFormat_G_8
@ skcms_PixelFormat_BGR_565
@ skcms_PixelFormat_ABGR_4444
@ skcms_PixelFormat_RGB_161616BE
@ skcms_PixelFormat_BGRA_1010102
skcms_AlphaFormat
@ skcms_AlphaFormat_Unpremul
@ skcms_AlphaFormat_PremulAsEncoded