Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
SkPngNormalDecoder Class Reference
Inheritance diagram for SkPngNormalDecoder:
SkPngCodec SkCodec SkNoncopyable

Public Member Functions

 SkPngNormalDecoder (SkEncodedInfo &&info, std::unique_ptr< SkStream > stream, SkPngChunkReader *reader, png_structp png_ptr, png_infop info_ptr, int bitDepth)
 
- Public Member Functions inherited from SkPngCodec
void setIdatLength (size_t len)
 
 ~SkPngCodec () override
 
- Public Member Functions inherited from SkCodec
virtual ~SkCodec ()
 
SkImageInfo getInfo () const
 
SkISize dimensions () const
 
SkIRect bounds () const
 
const skcms_ICCProfilegetICCProfile () const
 
SkEncodedOrigin getOrigin () const
 
SkISize getScaledDimensions (float desiredScale) const
 
bool getValidSubset (SkIRect *desiredSubset) const
 
SkEncodedImageFormat getEncodedFormat () const
 
virtual std::unique_ptr< SkStreamgetEncodedData () const
 
Result getPixels (const SkImageInfo &info, void *pixels, size_t rowBytes, const Options *)
 
Result getPixels (const SkImageInfo &info, void *pixels, size_t rowBytes)
 
Result getPixels (const SkPixmap &pm, const Options *opts=nullptr)
 
std::tuple< sk_sp< SkImage >, SkCodec::ResultgetImage (const SkImageInfo &info, const Options *opts=nullptr)
 
std::tuple< sk_sp< SkImage >, SkCodec::ResultgetImage ()
 
bool queryYUVAInfo (const SkYUVAPixmapInfo::SupportedDataTypes &supportedDataTypes, SkYUVAPixmapInfo *yuvaPixmapInfo) const
 
Result getYUVAPlanes (const SkYUVAPixmaps &yuvaPixmaps)
 
Result startIncrementalDecode (const SkImageInfo &dstInfo, void *dst, size_t rowBytes, const Options *)
 
Result startIncrementalDecode (const SkImageInfo &dstInfo, void *dst, size_t rowBytes)
 
Result incrementalDecode (int *rowsDecoded=nullptr)
 
Result startScanlineDecode (const SkImageInfo &dstInfo, const Options *options)
 
Result startScanlineDecode (const SkImageInfo &dstInfo)
 
int getScanlines (void *dst, int countLines, size_t rowBytes)
 
bool skipScanlines (int countLines)
 
SkScanlineOrder getScanlineOrder () const
 
int nextScanline () const
 
int outputScanline (int inputScanline) const
 
int getFrameCount ()
 
bool getFrameInfo (int index, FrameInfo *info) const
 
std::vector< FrameInfogetFrameInfo ()
 
int getRepetitionCount ()
 

Static Public Member Functions

static void AllRowsCallback (png_structp png_ptr, png_bytep row, png_uint_32 rowNum, int)
 
static void RowCallback (png_structp png_ptr, png_bytep row, png_uint_32 rowNum, int)
 
- Static Public Member Functions inherited from SkPngCodec
static bool IsPng (const void *, size_t)
 
static std::unique_ptr< SkCodecMakeFromStream (std::unique_ptr< SkStream >, Result *, SkPngChunkReader *=nullptr)
 
- Static Public Member Functions inherited from SkCodec
static constexpr size_t MinBufferedBytesNeeded ()
 
static const char * ResultToString (Result)
 
static std::unique_ptr< SkCodecMakeFromStream (std::unique_ptr< SkStream >, SkSpan< const SkCodecs::Decoder > decoders, Result *=nullptr, SkPngChunkReader *=nullptr, SelectionPolicy selectionPolicy=SelectionPolicy::kPreferStillImage)
 
static std::unique_ptr< SkCodecMakeFromStream (std::unique_ptr< SkStream >, Result *=nullptr, SkPngChunkReader *=nullptr, SelectionPolicy selectionPolicy=SelectionPolicy::kPreferStillImage)
 
static std::unique_ptr< SkCodecMakeFromData (sk_sp< SkData >, SkSpan< const SkCodecs::Decoder > decoders, SkPngChunkReader *=nullptr)
 
static std::unique_ptr< SkCodecMakeFromData (sk_sp< SkData >, SkPngChunkReader *=nullptr)
 
static void Register (bool(*peek)(const void *, size_t), std::unique_ptr< SkCodec >(*make)(std::unique_ptr< SkStream >, SkCodec::Result *))
 

Private Member Functions

Result decodeAllRows (void *dst, size_t rowBytes, int *rowsDecoded) override
 
void setRange (int firstRow, int lastRow, void *dst, size_t rowBytes) override
 
Result decode (int *rowsDecoded) override
 

Additional Inherited Members

- Public Types inherited from SkCodec
enum  Result {
  kSuccess , kIncompleteInput , kErrorInInput , kInvalidConversion ,
  kInvalidScale , kInvalidParameters , kInvalidInput , kCouldNotRewind ,
  kInternalError , kUnimplemented
}
 
enum class  SelectionPolicy { kPreferStillImage , kPreferAnimation }
 
enum  ZeroInitialized { kYes_ZeroInitialized , kNo_ZeroInitialized }
 
enum  SkScanlineOrder { kTopDown_SkScanlineOrder , kBottomUp_SkScanlineOrder }
 
- Static Public Attributes inherited from SkCodec
static constexpr int kNoFrame = -1
 
static constexpr int kRepetitionCountInfinite = -1
 
- Protected Types inherited from SkCodec
using XformFormat = skcms_PixelFormat
 
- Protected Member Functions inherited from SkPngCodec
 SkPngCodec (SkEncodedInfo &&, std::unique_ptr< SkStream >, SkPngChunkReader *, void *png_ptr, void *info_ptr, int bitDepth)
 
Result onGetPixels (const SkImageInfo &, void *, size_t, const Options &, int *) override
 
SkEncodedImageFormat onGetEncodedFormat () const override
 
bool onRewind () override
 
SkSamplergetSampler (bool createIfNecessary) override
 
void applyXformRow (void *dst, const void *src)
 
voidp png_ptr ()
 
voidp info_ptr ()
 
SkSwizzlerswizzler ()
 
void initializeXformParams ()
 
bool processData ()
 
Result onStartIncrementalDecode (const SkImageInfo &dstInfo, void *pixels, size_t rowBytes, const SkCodec::Options &) override
 
Result onIncrementalDecode (int *) override
 
- Protected Member Functions inherited from SkCodec
const SkEncodedInfogetEncodedInfo () const
 
 SkCodec (SkEncodedInfo &&, XformFormat srcFormat, std::unique_ptr< SkStream >, SkEncodedOrigin=kTopLeft_SkEncodedOrigin)
 
void setSrcXformFormat (XformFormat pixelFormat)
 
XformFormat getSrcXformFormat () const
 
virtual bool onGetGainmapInfo (SkGainmapInfo *, std::unique_ptr< SkStream > *)
 
virtual SkISize onGetScaledDimensions (float) const
 
virtual bool onDimensionsSupported (const SkISize &)
 
virtual bool onQueryYUVAInfo (const SkYUVAPixmapInfo::SupportedDataTypes &, SkYUVAPixmapInfo *) const
 
virtual Result onGetYUVAPlanes (const SkYUVAPixmaps &)
 
virtual bool onGetValidSubset (SkIRect *) const
 
bool rewindIfNeeded ()
 
SkStreamstream ()
 
virtual SkScanlineOrder onGetScanlineOrder () const
 
const SkImageInfodstInfo () const
 
const Optionsoptions () const
 
int currScanline () const
 
virtual int onOutputScanline (int inputScanline) const
 
virtual bool conversionSupported (const SkImageInfo &dst, bool srcIsOpaque, bool needsColorXform)
 
virtual bool usesColorXform () const
 
void applyColorXform (void *dst, const void *src, int count) const
 
bool colorXform () const
 
bool xformOnDecode () const
 
virtual int onGetFrameCount ()
 
virtual bool onGetFrameInfo (int, FrameInfo *) const
 
virtual int onGetRepetitionCount ()
 
- Protected Attributes inherited from SkPngCodec
sk_sp< SkPngChunkReaderfPngChunkReader
 
voidp fPng_ptr
 
voidp fInfo_ptr
 
sk_sp< SkColorPalettefColorTable
 
std::unique_ptr< SkSwizzlerfSwizzler
 
skia_private::AutoTMalloc< uint8_t > fStorage
 
void * fColorXformSrcRow
 
const int fBitDepth
 

Detailed Description

Definition at line 509 of file SkPngCodec.cpp.

Constructor & Destructor Documentation

◆ SkPngNormalDecoder()

SkPngNormalDecoder::SkPngNormalDecoder ( SkEncodedInfo &&  info,
std::unique_ptr< SkStream stream,
SkPngChunkReader reader,
png_structp  png_ptr,
png_infop  info_ptr,
int  bitDepth 
)
inline

Definition at line 511 of file SkPngCodec.cpp.

513 : INHERITED(std::move(info), std::move(stream), reader, png_ptr, info_ptr, bitDepth)
514 , fRowsWrittenToOutput(0)
515 , fDst(nullptr)
516 , fRowBytes(0)
517 , fFirstRow(0)
518 , fLastRow(0)
519 {}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213
SkStream * stream()
Definition SkCodec.h:865
voidp info_ptr()
Definition SkPngCodec.h:66
voidp png_ptr()
Definition SkPngCodec.h:65

Member Function Documentation

◆ AllRowsCallback()

static void SkPngNormalDecoder::AllRowsCallback ( png_structp  png_ptr,
png_bytep  row,
png_uint_32  rowNum,
int   
)
inlinestatic

Definition at line 521 of file SkPngCodec.cpp.

521 {
522 GetDecoder(png_ptr)->allRowsCallback(row, rowNum);
523 }

◆ decode()

Result SkPngNormalDecoder::decode ( int rowsDecoded)
inlineoverrideprivatevirtual

Implements SkPngCodec.

Definition at line 584 of file SkPngCodec.cpp.

584 {
585 if (this->swizzler()) {
586 const int sampleY = this->swizzler()->sampleY();
587 fRowsNeeded = get_scaled_dimension(fLastRow - fFirstRow + 1, sampleY);
588 }
589
590 const bool success = this->processData();
591 if (success && fRowsWrittenToOutput == fRowsNeeded) {
592 return kSuccess;
593 }
594
595 if (rowsDecoded) {
596 *rowsDecoded = fRowsWrittenToOutput;
597 }
598
599 return log_and_return_error(success);
600 }
static int get_scaled_dimension(int srcDimension, int sampleSize)
Definition SkCodecPriv.h:44
static SkCodec::Result log_and_return_error(bool success)
@ kSuccess
Definition SkCodec.h:80
SkSwizzler * swizzler()
Definition SkPngCodec.h:68
bool processData()
int sampleY() const
Definition SkSampler.h:39

◆ decodeAllRows()

Result SkPngNormalDecoder::decodeAllRows ( void *  dst,
size_t  rowBytes,
int rowsDecoded 
)
inlineoverrideprivatevirtual

Implements SkPngCodec.

Definition at line 545 of file SkPngCodec.cpp.

545 {
546 const int height = this->dimensions().height();
547 png_set_progressive_read_fn(this->png_ptr(), this, nullptr, AllRowsCallback, nullptr);
548 fDst = dst;
549 fRowBytes = rowBytes;
550
551 fRowsWrittenToOutput = 0;
552 fFirstRow = 0;
553 fLastRow = height - 1;
554
555 const bool success = this->processData();
556 if (success && fRowsWrittenToOutput == height) {
557 return kSuccess;
558 }
559
560 if (rowsDecoded) {
561 *rowsDecoded = fRowsWrittenToOutput;
562 }
563
564 return log_and_return_error(success);
565 }
SkISize dimensions() const
Definition SkCodec.h:230
static void AllRowsCallback(png_structp png_ptr, png_bytep row, png_uint_32 rowNum, int)
dst
Definition cp.py:12
int32_t height
constexpr int32_t height() const
Definition SkSize.h:37

◆ RowCallback()

static void SkPngNormalDecoder::RowCallback ( png_structp  png_ptr,
png_bytep  row,
png_uint_32  rowNum,
int   
)
inlinestatic

Definition at line 525 of file SkPngCodec.cpp.

525 {
526 GetDecoder(png_ptr)->rowCallback(row, rowNum);
527 }

◆ setRange()

void SkPngNormalDecoder::setRange ( int  firstRow,
int  lastRow,
void *  dst,
size_t  rowBytes 
)
inlineoverrideprivatevirtual

Implements SkPngCodec.

Definition at line 574 of file SkPngCodec.cpp.

574 {
575 png_set_progressive_read_fn(this->png_ptr(), this, nullptr, RowCallback, nullptr);
576 fFirstRow = firstRow;
577 fLastRow = lastRow;
578 fDst = dst;
579 fRowBytes = rowBytes;
580 fRowsWrittenToOutput = 0;
581 fRowsNeeded = fLastRow - fFirstRow + 1;
582 }
static void RowCallback(png_structp png_ptr, png_bytep row, png_uint_32 rowNum, int)

The documentation for this class was generated from the following file: