Index: src/core/SkConfig8888.h |
diff --git a/src/core/SkConfig8888.h b/src/core/SkConfig8888.h |
index 041773e6df433c22297bb2dd82d9d625b02c862a..97a3433ad24281f289d50c3b00c708a8066c9cf7 100644 |
--- a/src/core/SkConfig8888.h |
+++ b/src/core/SkConfig8888.h |
@@ -5,75 +5,27 @@ |
* found in the LICENSE file. |
*/ |
-#ifndef SkConfig8888_DEFINED |
-#define SkConfig8888_DEFINED |
+#ifndef SkPixelInfo_DEFINED |
+#define SkPixelInfo_DEFINED |
-#include "SkCanvas.h" |
-#include "SkColorPriv.h" |
+#include "SkImageInfo.h" |
-/** |
- * Converts pixels from one Config8888 to another Config8888 |
- */ |
-void SkConvertConfig8888Pixels(uint32_t* dstPixels, |
- size_t dstRowBytes, |
- SkCanvas::Config8888 dstConfig, |
- const uint32_t* srcPixels, |
- size_t srcRowBytes, |
- SkCanvas::Config8888 srcConfig, |
- int width, |
- int height); |
- |
-/** |
- * Packs a, r, g, b, values into byte order specified by config. |
- */ |
-uint32_t SkPackConfig8888(SkCanvas::Config8888 config, |
- uint32_t a, |
- uint32_t r, |
- uint32_t g, |
- uint32_t b); |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// Implementation |
- |
-namespace { |
+struct SkPixelInfo { |
+ SkColorType fColorType; |
+ SkAlphaType fAlphaType; |
+ size_t fRowBytes; |
+}; |
-/** |
- Copies all pixels from a bitmap to a dst ptr with a given rowBytes and |
- Config8888. The bitmap must have kARGB_8888_Config. |
- */ |
- |
-static inline void SkCopyBitmapToConfig8888(uint32_t* dstPixels, |
- size_t dstRowBytes, |
- SkCanvas::Config8888 dstConfig8888, |
- const SkBitmap& srcBmp) { |
- SkASSERT(SkBitmap::kARGB_8888_Config == srcBmp.config()); |
- SkAutoLockPixels alp(srcBmp); |
- int w = srcBmp.width(); |
- int h = srcBmp.height(); |
- size_t srcRowBytes = srcBmp.rowBytes(); |
- const uint32_t* srcPixels = reinterpret_cast<uint32_t*>(srcBmp.getPixels()); |
- |
- SkConvertConfig8888Pixels(dstPixels, dstRowBytes, dstConfig8888, srcPixels, srcRowBytes, SkCanvas::kNative_Premul_Config8888, w, h); |
-} |
- |
-/** |
- Copies over all pixels in a bitmap from a src ptr with a given rowBytes and |
- Config8888. The bitmap must have pixels and be kARGB_8888_Config. |
- */ |
-static inline void SkCopyConfig8888ToBitmap(const SkBitmap& dstBmp, |
- const uint32_t* srcPixels, |
- size_t srcRowBytes, |
- SkCanvas::Config8888 srcConfig8888) { |
- SkASSERT(SkBitmap::kARGB_8888_Config == dstBmp.config()); |
- SkAutoLockPixels alp(dstBmp); |
- int w = dstBmp.width(); |
- int h = dstBmp.height(); |
- size_t dstRowBytes = dstBmp.rowBytes(); |
- uint32_t* dstPixels = reinterpret_cast<uint32_t*>(dstBmp.getPixels()); |
+struct SkDstPixelInfo : SkPixelInfo { |
+ void* fPixels; |
+}; |
- SkConvertConfig8888Pixels(dstPixels, dstRowBytes, SkCanvas::kNative_Premul_Config8888, srcPixels, srcRowBytes, srcConfig8888, w, h); |
-} |
+struct SkSrcPixelInfo : SkPixelInfo { |
+ const void* fPixels; |
-} |
+ // Guaranteed to work even if src.fPixels and dst.fPixels are the same |
+ // (but not if they overlap partially) |
+ bool convertPixelsTo(SkDstPixelInfo* dst, int width, int height) const; |
+}; |
#endif |