Index: src/codec/SkMaskSwizzler.h |
diff --git a/src/codec/SkMaskSwizzler.h b/src/codec/SkMaskSwizzler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9351f0228ba2a771e418a768752ed71b1bbf750b |
--- /dev/null |
+++ b/src/codec/SkMaskSwizzler.h |
@@ -0,0 +1,60 @@ |
+/* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#include "SkMasks.h" |
+#include "SkSwizzler.h" |
+#include "SkTypes.h" |
+ |
+/* |
+ * |
+ * Used to swizzle images whose pixel components are extracted by bit masks |
+ * Currently only used by bmp |
+ * |
+ */ |
+class SkMaskSwizzler { |
+public: |
+ |
+ /* |
+ * |
+ * Create a new swizzler |
+ * @param masks Unowned pointer to helper class |
+ * |
+ */ |
+ static SkMaskSwizzler* CreateMaskSwizzler(const SkImageInfo& imageInfo, |
+ SkMasks* masks, |
+ uint32_t bitsPerPixel); |
+ |
+ /* |
+ * |
+ * Swizzle the next row |
+ * |
+ */ |
+ SkSwizzler::ResultAlpha next(void* dst, const uint8_t* src); |
+ |
+private: |
+ |
+ /* |
+ * |
+ * Row procedure used for swizzle |
+ * |
+ */ |
+ typedef SkSwizzler::ResultAlpha (*RowProc)( |
+ void* dstRow, const uint8_t* srcRow, int width, |
+ SkMasks* masks); |
+ |
+ /* |
+ * |
+ * Constructor for mask swizzler |
+ * |
+ */ |
+ SkMaskSwizzler(const SkImageInfo& info, SkMasks* masks, RowProc proc); |
+ |
+ // Fields |
+ const SkImageInfo& fImageInfo; |
+ SkMasks* fMasks; // unowned |
+ const RowProc fRowProc; |
+}; |