ArcsView() { //testparse(); fSweep = SkIntToScalar(100); this->setBGColor(0xFFDDDDDD); SkFILEStream stream("c:/test_ba.png"); SkImageDecoder* dec = sk_libpng_dfactory(&stream); //delete dec; SkImageDecoder *coder = SkImageDecoder::Factory(&stream); coder->decode(&stream, &fbmp, SkColorType::kRGBA_8888_SkColorType, SkImageDecoder::kDecodePixels_Mode); delete dec; }
SkImageDecoder* SkImageDecoder::Factory(SkStream* stream) { SkImageDecoder* codec = NULL; const DecodeReg* curr = DecodeReg::Head(); while (curr) { codec = curr->factory()(stream); // we rewind here, because we promise later when we call "decode", that // the stream will be at its beginning. stream->rewind(); if (codec) { return codec; } curr = curr->next(); } #ifdef SK_ENABLE_LIBPNG codec = sk_libpng_dfactory(stream); stream->rewind(); if (codec) { return codec; } #endif return NULL; }