83 {
84 auto chooseProc8888 = [&]() {
88 }
90 };
91
92 J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
93 int numComponents = 0;
96 fProc = chooseProc8888();
97 jpegColorType = JCS_EXT_RGBA;
98 numComponents = 4;
99 break;
101 fProc = chooseProc8888();
102 jpegColorType = JCS_EXT_BGRA;
103 numComponents = 4;
104 break;
107 jpegColorType = JCS_RGB;
108 numComponents = 3;
109 break;
112 return false;
113 }
114
116 jpegColorType = JCS_RGB;
117 numComponents = 3;
118 break;
122 jpegColorType = JCS_GRAYSCALE;
123 numComponents = 1;
124 break;
129 } else {
131 }
132 jpegColorType = JCS_EXT_RGBA;
133 numComponents = 4;
134 break;
135 default:
136 return false;
137 }
138
139 fCInfo.image_width = srcInfo.
width();
140 fCInfo.image_height = srcInfo.
height();
141 fCInfo.in_color_space = jpegColorType;
142 fCInfo.input_components = numComponents;
143 jpeg_set_defaults(&fCInfo);
144
145 if (numComponents != 1) {
148 SkASSERT(2 == fCInfo.comp_info[0].h_samp_factor);
149 SkASSERT(2 == fCInfo.comp_info[0].v_samp_factor);
150 SkASSERT(1 == fCInfo.comp_info[1].h_samp_factor);
151 SkASSERT(1 == fCInfo.comp_info[1].v_samp_factor);
152 SkASSERT(1 == fCInfo.comp_info[2].h_samp_factor);
153 SkASSERT(1 == fCInfo.comp_info[2].v_samp_factor);
154 break;
156 fCInfo.comp_info[0].h_samp_factor = 2;
157 fCInfo.comp_info[0].v_samp_factor = 1;
158 SkASSERT(1 == fCInfo.comp_info[1].h_samp_factor);
159 SkASSERT(1 == fCInfo.comp_info[1].v_samp_factor);
160 SkASSERT(1 == fCInfo.comp_info[2].h_samp_factor);
161 SkASSERT(1 == fCInfo.comp_info[2].v_samp_factor);
162 break;
164 fCInfo.comp_info[0].h_samp_factor = 1;
165 fCInfo.comp_info[0].v_samp_factor = 1;
166 SkASSERT(1 == fCInfo.comp_info[1].h_samp_factor);
167 SkASSERT(1 == fCInfo.comp_info[1].v_samp_factor);
168 SkASSERT(1 == fCInfo.comp_info[2].h_samp_factor);
169 SkASSERT(1 == fCInfo.comp_info[2].v_samp_factor);
170 break;
171 }
172 }
173
174
175
176
177 fCInfo.optimize_coding =
TRUE;
178 return true;
179}
@ kARGB_4444_SkColorType
pixel with 4 bits for alpha, red, green, blue; in 16-bit word
@ kBGRA_8888_SkColorType
pixel with 8 bits for blue, green, red, alpha; in 32-bit word
@ kRGBA_F16_SkColorType
pixel with half floats for red, green, blue, alpha;
@ kAlpha_8_SkColorType
pixel with alpha in 8-bit byte
@ kGray_8_SkColorType
pixel with grayscale level in 8-bit byte
@ kRGB_565_SkColorType
pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
@ kRGBA_8888_SkColorType
pixel with 8 bits for red, green, blue, alpha; in 32-bit word
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)
void(* transform_scanline_proc)(char *dst, const char *src, int width, int bpp)
static void transform_scanline_565(char *dst, const char *src, int width, int)
static void transform_scanline_F16_to_premul_8888(char *dst, const char *src, int width, int)
static void transform_scanline_444(char *dst, const char *src, int width, int)
SkAlphaType alphaType() const
SkColorType colorType() const