Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SkPngEncoderImpl Class Reference

#include <SkPngEncoderImpl.h>

Inheritance diagram for SkPngEncoderImpl:
SkEncoder SkNoncopyable

Public Member Functions

 SkPngEncoderImpl (std::unique_ptr< SkPngEncoderMgr >, const SkPixmap &src)
 
 ~SkPngEncoderImpl () override
 
- Public Member Functions inherited from SkEncoder
bool encodeRows (int numRows)
 
virtual ~SkEncoder ()
 

Protected Member Functions

bool onEncodeRows (int numRows) override
 
- Protected Member Functions inherited from SkEncoder
 SkEncoder (const SkPixmap &src, size_t storageBytes)
 

Protected Attributes

std::unique_ptr< SkPngEncoderMgrfEncoderMgr
 
- Protected Attributes inherited from SkEncoder
const SkPixmapfSrc
 
int fCurrRow
 
skia_private::AutoTMalloc< uint8_t > fStorage
 

Detailed Description

Definition at line 18 of file SkPngEncoderImpl.h.

Constructor & Destructor Documentation

◆ SkPngEncoderImpl()

SkPngEncoderImpl::SkPngEncoderImpl ( std::unique_ptr< SkPngEncoderMgr encoderMgr,
const SkPixmap src 
)

Definition at line 437 of file SkPngEncoderImpl.cpp.

438 : SkEncoder(src, encoderMgr->pngBytesPerPixel() * src.width())
439 , fEncoderMgr(std::move(encoderMgr)) {}
std::unique_ptr< SkPngEncoderMgr > fEncoderMgr

◆ ~SkPngEncoderImpl()

SkPngEncoderImpl::~SkPngEncoderImpl ( )
override

Definition at line 441 of file SkPngEncoderImpl.cpp.

441{}

Member Function Documentation

◆ onEncodeRows()

bool SkPngEncoderImpl::onEncodeRows ( int  numRows)
overrideprotectedvirtual

Implements SkEncoder.

Definition at line 443 of file SkPngEncoderImpl.cpp.

443 {
444 if (setjmp(png_jmpbuf(fEncoderMgr->pngPtr()))) {
445 return false;
446 }
447
448 const void* srcRow = fSrc.addr(0, fCurrRow);
449 for (int y = 0; y < numRows; y++) {
451 (const uint8_t*)srcRow + (fSrc.width() << fSrc.shiftPerPixel()));
452 fEncoderMgr->proc()((char*)fStorage.get(),
453 (const char*)srcRow,
454 fSrc.width(),
456
457 png_bytep rowPtr = (png_bytep)fStorage.get();
458 png_write_rows(fEncoderMgr->pngPtr(), &rowPtr, 1);
459 srcRow = SkTAddOffset<const void>(srcRow, fSrc.rowBytes());
460 }
461
462 fCurrRow += numRows;
463 if (fCurrRow == fSrc.height()) {
464 png_write_end(fEncoderMgr->pngPtr(), fEncoderMgr->infoPtr());
465 }
466
467 return true;
468}
SK_API int SkColorTypeBytesPerPixel(SkColorType ct)
static void sk_msan_assert_initialized(const void *begin, const void *end)
Definition SkMSAN.h:24
skia_private::AutoTMalloc< uint8_t > fStorage
Definition SkEncoder.h:60
int fCurrRow
Definition SkEncoder.h:59
const SkPixmap & fSrc
Definition SkEncoder.h:58
size_t rowBytes() const
Definition SkPixmap.h:145
int width() const
Definition SkPixmap.h:160
SkColorType colorType() const
Definition SkPixmap.h:173
const void * addr() const
Definition SkPixmap.h:153
int shiftPerPixel() const
Definition SkPixmap.h:221
int height() const
Definition SkPixmap.h:166
double y

Member Data Documentation

◆ fEncoderMgr

std::unique_ptr<SkPngEncoderMgr> SkPngEncoderImpl::fEncoderMgr
protected

Definition at line 27 of file SkPngEncoderImpl.h.


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