Index: include/core/SkImageInfo.h |
diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h |
index 01318fd1aa95e5b64f445bcf952a2b8adadc4a88..daa50dcdb22a28fae6d4182dbe595471a0786e44 100644 |
--- a/include/core/SkImageInfo.h |
+++ b/include/core/SkImageInfo.h |
@@ -111,6 +111,17 @@ static inline bool SkColorTypeIsValid(unsigned value) { |
return value <= kLastEnum_SkColorType; |
} |
+static inline size_t SkColorTypeComputeOffset(SkColorType ct, int x, int y, size_t rowBytes) { |
+ int shift = 0; |
+ switch (SkColorTypeBytesPerPixel(ct)) { |
+ case 4: shift = 2; break; |
+ case 2: shift = 1; break; |
+ case 1: shift = 0; break; |
+ default: return 0; |
+ } |
+ return y * rowBytes + (x << shift); |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
/** |
@@ -247,6 +258,12 @@ public: |
return (size_t)this->minRowBytes64(); |
} |
+ size_t computeOffset(int x, int y, size_t rowBytes) const { |
+ SkASSERT((unsigned)x < (unsigned)fWidth); |
+ SkASSERT((unsigned)y < (unsigned)fHeight); |
+ return SkColorTypeComputeOffset(fColorType, x, y, rowBytes); |
+ } |
+ |
bool operator==(const SkImageInfo& other) const { |
return 0 == memcmp(this, &other, sizeof(other)); |
} |