Add support for row-by-row png encodes
Also adds a SkEncoder base class.
Bug: 713862
Change-Id: Ia3f009cd9f376514f6c19396245fab3a43ae6536
Reviewed-on: https://skia-review.googlesource.com/15152
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
diff --git a/src/images/SkImageEncoderPriv.h b/src/images/SkImageEncoderPriv.h
index 5e57cd1..4d59d04 100644
--- a/src/images/SkImageEncoderPriv.h
+++ b/src/images/SkImageEncoderPriv.h
@@ -9,17 +9,32 @@
#define SkImageEncoderPriv_DEFINED
#include "SkImageEncoder.h"
+#include "SkImageInfoPriv.h"
+
+static inline bool SkPixmapIsValid(const SkPixmap& src,
+ SkTransferFunctionBehavior unpremulBehavior)
+{
+ if (SkTransferFunctionBehavior::kRespect == unpremulBehavior) {
+ if (!SkImageInfoIsValidRenderingCS(src.info())) {
+ return false;
+ }
+ } else {
+ if (!SkImageInfoIsValidAllowNumericalCS(src.info())) {
+ return false;
+ }
+ }
+
+ if (!src.addr() || src.rowBytes() < src.info().minRowBytes()) {
+ return false;
+ }
+
+ return true;
+}
struct SkEncodeOptions {
SkTransferFunctionBehavior fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
};
-#ifdef SK_HAS_PNG_LIBRARY
- bool SkEncodeImageAsPNG(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
-#else
- #define SkEncodeImageAsPNG(...) false
-#endif
-
#ifdef SK_HAS_WEBP_LIBRARY
bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, int quality);