/* * 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, void* dst, size_t dstRowBytes, SkMasks* masks, uint32_t bitsPerPixel); /* * * Swizzle the row with the specified y value * */ SkSwizzler::ResultAlpha next(const uint8_t* SK_RESTRICT src, int y); 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, void* dst, size_t dstRowBytes, SkMasks* masks, RowProc proc); // Fields const SkImageInfo& fDstInfo; void* fDst; size_t fDstRowBytes; SkMasks* fMasks; // unowned const RowProc fRowProc; };