SK_C_API sk_codec_result_t sk_codec_get_pixels_using_defaults(sk_codec_t* codec, const sk_imageinfo_t* info, void* pixels, size_t rowBytes);
SK_C_API sk_codec_result_t sk_codec_start_incremental_decode(sk_codec_t* codec, const sk_imageinfo_t* info, void* pixels, size_t rowBytes, const sk_codec_options_t* options, sk_color_t ctable[], int* ctableCount);
SK_C_API sk_codec_result_t sk_codec_incremental_decode(sk_codec_t* codec, int* rowsDecoded);
+SK_C_API sk_codec_result_t sk_codec_start_scanline_decode(sk_codec_t* codec, const sk_imageinfo_t* info, const sk_codec_options_t* options, sk_color_t ctable[], int* ctableCount);
+SK_C_API int sk_codec_get_scanlines(sk_codec_t* codec, void* dst, int countLines, size_t rowBytes);
+SK_C_API bool sk_codec_skip_scanlines(sk_codec_t* codec, int countLines);
+SK_C_API sk_codec_scanline_order_t sk_codec_get_scanline_order(sk_codec_t* codec);
+SK_C_API int sk_codec_next_scanline(sk_codec_t* codec);
+SK_C_API int sk_codec_output_scanline(sk_codec_t* codec, int inputScanline);
SK_C_API int sk_codec_get_frame_count(sk_codec_t* codec);
SK_C_API void sk_codec_get_frame_info(sk_codec_t* codec, sk_codec_frameinfo_t* frameInfo);
SK_C_API int sk_codec_get_repetition_count(sk_codec_t* codec);
bool fHasPriorFrame;
} sk_codec_options_t;
+typedef enum {
+ TOP_DOWN_SK_CODEC_SCANLINE_ORDER,
+ BOTTOM_UP_SK_CODEC_SCANLINE_ORDER,
+} sk_codec_scanline_order_t;
+
// The verbs that can be foudn on a path
typedef enum {
MOVE_SK_PATH_VERB,
return (sk_codec_result_t)AsCodec(codec)->incrementalDecode(rowsDecoded);
}
+sk_codec_result_t sk_codec_start_scanline_decode(sk_codec_t* codec, const sk_imageinfo_t* cinfo, const sk_codec_options_t* coptions, sk_color_t ctable[], int* ctableCount)
+{
+ SkImageInfo info;
+ from_c(*cinfo, &info);
+ return (sk_codec_result_t)AsCodec(codec)->startScanlineDecode(info, AsCodecOptions(coptions), ctable, ctableCount);
+}
+
+int sk_codec_get_scanlines(sk_codec_t* codec, void* dst, int countLines, size_t rowBytes)
+{
+ return AsCodec(codec)->getScanlines(dst, countLines, rowBytes);
+}
+
+bool sk_codec_skip_scanlines(sk_codec_t* codec, int countLines)
+{
+ return AsCodec(codec)->skipScanlines(countLines);
+}
+
+sk_codec_scanline_order_t sk_codec_get_scanline_order(sk_codec_t* codec)
+{
+ return (sk_codec_scanline_order_t)AsCodec(codec)->getScanlineOrder();
+}
+
+int sk_codec_next_scanline(sk_codec_t* codec)
+{
+ return AsCodec(codec)->nextScanline();
+}
+
+int sk_codec_output_scanline(sk_codec_t* codec, int inputScanline)
+{
+ return AsCodec(codec)->outputScanline(inputScanline);
+}
+
int sk_codec_get_frame_count(sk_codec_t* codec) {
return AsCodec(codec)->getFrameInfo().size();
}
static_assert ((int)SkCodec::ZeroInitialized::kYes_ZeroInitialized == (int)YES_SK_CODEC_ZERO_INITIALIZED, ASSERT_MSG(SkCodec::ZeroInitialized, sk_codec_zero_initialized_t));
static_assert ((int)SkCodec::ZeroInitialized::kNo_ZeroInitialized == (int)NO_SK_CODEC_ZERO_INITIALIZED, ASSERT_MSG(SkCodec::ZeroInitialized, sk_codec_zero_initialized_t));
+// sk_codec_scanline_order_t
+static_assert ((int)SkCodec::SkScanlineOrder::kTopDown_SkScanlineOrder == (int)TOP_DOWN_SK_CODEC_SCANLINE_ORDER, ASSERT_MSG(SkCodec::SkScanlineOrder, sk_codec_scanline_order_t));
+static_assert ((int)SkCodec::SkScanlineOrder::kBottomUp_SkScanlineOrder == (int)BOTTOM_UP_SK_CODEC_SCANLINE_ORDER, ASSERT_MSG(SkCodec::SkScanlineOrder, sk_codec_scanline_order_t));
+
// sk_path_effect_1d_style_t
static_assert ((int)SkPath1DPathEffect::Style::kTranslate_Style == (int)TRANSLATE_SK_PATH_EFFECT_1D_STYLE, ASSERT_MSG(SkPath1DPathEffect::Style, sk_path_effect_1d_style_t));
static_assert ((int)SkPath1DPathEffect::Style::kRotate_Style == (int)ROTATE_SK_PATH_EFFECT_1D_STYLE, ASSERT_MSG(SkPath1DPathEffect::Style, sk_path_effect_1d_style_t));