| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkPixelInfo_DEFINED |
| #define SkPixelInfo_DEFINED |
| |
| #include "SkImageInfo.h" |
| |
| class SkColorTable; |
| |
| struct SkPixelInfo { |
| SkColorType fColorType; |
| SkAlphaType fAlphaType; |
| size_t fRowBytes; |
| |
| static bool CopyPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, |
| const SkImageInfo& srcInfo, const void* srcPixels, size_t srcRowBytes, |
| SkColorTable* srcCTable = nullptr); |
| }; |
| |
| struct SkDstPixelInfo : SkPixelInfo { |
| void* fPixels; |
| }; |
| |
| 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; |
| }; |
| |
| static inline void SkRectMemcpy(void* dst, size_t dstRB, const void* src, size_t srcRB, |
| size_t bytesPerRow, int rowCount) { |
| SkASSERT(bytesPerRow <= srcRB); |
| SkASSERT(bytesPerRow <= dstRB); |
| for (int i = 0; i < rowCount; ++i) { |
| memcpy(dst, src, bytesPerRow); |
| dst = (char*)dst + dstRB; |
| src = (const char*)src + srcRB; |
| } |
| } |
| |
| #endif |