@@ -34,15 +34,6 @@ class Context;
3434namespace flutter {
3535namespace {
3636
37- // This must be kept in sync with the enum in painting.dart
38- enum ImageByteFormat {
39- kRawRGBA ,
40- kRawStraightRGBA ,
41- kRawUnmodified ,
42- kRawExtendedRgba128 ,
43- kPNG ,
44- };
45-
4637void FinalizeSkData (void * isolate_callback_data, void * peer) {
4738 SkData* buffer = reinterpret_cast <SkData*>(peer);
4839 buffer->unref ();
@@ -107,44 +98,6 @@ sk_sp<SkData> CopyImageByteData(const sk_sp<SkImage>& raster_image,
10798 return SkData::MakeWithCopy (pixmap.addr (), pixmap.computeByteSize ());
10899}
109100
110- sk_sp<SkData> EncodeImage (const sk_sp<SkImage>& raster_image,
111- ImageByteFormat format) {
112- TRACE_EVENT0 (" flutter" , __FUNCTION__);
113-
114- if (!raster_image) {
115- return nullptr ;
116- }
117-
118- switch (format) {
119- case kPNG : {
120- auto png_image = SkPngEncoder::Encode (nullptr , raster_image.get (), {});
121-
122- if (png_image == nullptr ) {
123- FML_LOG (ERROR) << " Could not convert raster image to PNG." ;
124- return nullptr ;
125- };
126- return png_image;
127- }
128- case kRawRGBA :
129- return CopyImageByteData (raster_image, kRGBA_8888_SkColorType ,
130- kPremul_SkAlphaType );
131-
132- case kRawStraightRGBA :
133- return CopyImageByteData (raster_image, kRGBA_8888_SkColorType ,
134- kUnpremul_SkAlphaType );
135-
136- case kRawUnmodified :
137- return CopyImageByteData (raster_image, raster_image->colorType (),
138- raster_image->alphaType ());
139- case kRawExtendedRgba128 :
140- return CopyImageByteData (raster_image, kRGBA_F32_SkColorType ,
141- kUnpremul_SkAlphaType );
142- }
143-
144- FML_LOG (ERROR) << " Unknown error encoding image." ;
145- return nullptr ;
146- }
147-
148101void EncodeImageAndInvokeDataCallback (
149102 const sk_sp<DlImage>& image,
150103 std::unique_ptr<DartPersistentValue> callback,
@@ -229,4 +182,42 @@ Dart_Handle EncodeImage(CanvasImage* canvas_image,
229182 return Dart_Null ();
230183}
231184
185+ sk_sp<SkData> EncodeImage (const sk_sp<SkImage>& raster_image,
186+ ImageByteFormat format) {
187+ TRACE_EVENT0 (" flutter" , __FUNCTION__);
188+
189+ if (!raster_image) {
190+ return nullptr ;
191+ }
192+
193+ switch (format) {
194+ case kPNG : {
195+ auto png_image = SkPngEncoder::Encode (nullptr , raster_image.get (), {});
196+
197+ if (png_image == nullptr ) {
198+ FML_LOG (ERROR) << " Could not convert raster image to PNG." ;
199+ return nullptr ;
200+ };
201+ return png_image;
202+ }
203+ case kRawRGBA :
204+ return CopyImageByteData (raster_image, kRGBA_8888_SkColorType ,
205+ kPremul_SkAlphaType );
206+
207+ case kRawStraightRGBA :
208+ return CopyImageByteData (raster_image, kRGBA_8888_SkColorType ,
209+ kUnpremul_SkAlphaType );
210+
211+ case kRawUnmodified :
212+ return CopyImageByteData (raster_image, raster_image->colorType (),
213+ raster_image->alphaType ());
214+ case kRawExtendedRgba128 :
215+ return CopyImageByteData (raster_image, kRGBA_F32_SkColorType ,
216+ kUnpremul_SkAlphaType );
217+ }
218+
219+ FML_LOG (ERROR) << " Unknown error encoding image." ;
220+ return nullptr ;
221+ }
222+
232223} // namespace flutter
0 commit comments