Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: include/core/SkPixmap.h

Issue 1887103003: spriteblitter for memcpy case (for all configs) (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: use normal left shift operator Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/core/SkImageInfo.h ('k') | src/core/SkBlitter_Sprite.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkPixmap_DEFINED 8 #ifndef SkPixmap_DEFINED
9 #define SkPixmap_DEFINED 9 #define SkPixmap_DEFINED
10 10
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 /** 74 /**
75 * Return the rowbytes expressed as a number of pixels (like width and heig ht). 75 * Return the rowbytes expressed as a number of pixels (like width and heig ht).
76 */ 76 */
77 int rowBytesAsPixels() const { return int(fRowBytes >> this->shiftPerPixel() ); } 77 int rowBytesAsPixels() const { return int(fRowBytes >> this->shiftPerPixel() ); }
78 78
79 /** 79 /**
80 * Return the shift amount per pixel (i.e. 0 for 1-byte per pixel, 1 for 2- bytes per pixel 80 * Return the shift amount per pixel (i.e. 0 for 1-byte per pixel, 1 for 2- bytes per pixel
81 * colortypes, 2 for 4-bytes per pixel colortypes). Return 0 for kUnknown_S kColorType. 81 * colortypes, 2 for 4-bytes per pixel colortypes). Return 0 for kUnknown_S kColorType.
82 */ 82 */
83 int shiftPerPixel() const { return fInfo.bytesPerPixel() >> 1; } 83 int shiftPerPixel() const { return fInfo.shiftPerPixel(); }
84 84
85 uint64_t getSize64() const { return sk_64_mul(fInfo.height(), fRowBytes); } 85 uint64_t getSize64() const { return sk_64_mul(fInfo.height(), fRowBytes); }
86 uint64_t getSafeSize64() const { return fInfo.getSafeSize64(fRowBytes); } 86 uint64_t getSafeSize64() const { return fInfo.getSafeSize64(fRowBytes); }
87 size_t getSafeSize() const { return fInfo.getSafeSize(fRowBytes); } 87 size_t getSafeSize() const { return fInfo.getSafeSize(fRowBytes); }
88 88
89 const void* addr(int x, int y) const { 89 const void* addr(int x, int y) const {
90 return (const char*)fPixels + fInfo.computeOffset(x, y, fRowBytes); 90 return (const char*)fPixels + fInfo.computeOffset(x, y, fRowBytes);
91 } 91 }
92 const uint8_t* addr8() const { 92 const uint8_t* addr8() const {
93 SkASSERT(1 == SkColorTypeBytesPerPixel(fInfo.colorType())); 93 SkASSERT(1 == SkColorTypeBytesPerPixel(fInfo.colorType()));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 return (const uint64_t*)((const char*)this->addr64() + y * fRowBytes + ( x << 3)); 134 return (const uint64_t*)((const char*)this->addr64() + y * fRowBytes + ( x << 3));
135 } 135 }
136 const uint16_t* addrF16(int x, int y) const { 136 const uint16_t* addrF16(int x, int y) const {
137 SkASSERT(kRGBA_F16_SkColorType == fInfo.colorType()); 137 SkASSERT(kRGBA_F16_SkColorType == fInfo.colorType());
138 return reinterpret_cast<const uint16_t*>(this->addr64(x, y)); 138 return reinterpret_cast<const uint16_t*>(this->addr64(x, y));
139 } 139 }
140 140
141 // Writable versions 141 // Writable versions
142 142
143 void* writable_addr() const { return const_cast<void*>(fPixels); } 143 void* writable_addr() const { return const_cast<void*>(fPixels); }
144 void* writable_addr(int x, int y) const {
145 return const_cast<void*>(this->addr(x, y));
146 }
144 uint8_t* writable_addr8(int x, int y) const { 147 uint8_t* writable_addr8(int x, int y) const {
145 return const_cast<uint8_t*>(this->addr8(x, y)); 148 return const_cast<uint8_t*>(this->addr8(x, y));
146 } 149 }
147 uint16_t* writable_addr16(int x, int y) const { 150 uint16_t* writable_addr16(int x, int y) const {
148 return const_cast<uint16_t*>(this->addr16(x, y)); 151 return const_cast<uint16_t*>(this->addr16(x, y));
149 } 152 }
150 uint32_t* writable_addr32(int x, int y) const { 153 uint32_t* writable_addr32(int x, int y) const {
151 return const_cast<uint32_t*>(this->addr32(x, y)); 154 return const_cast<uint32_t*>(this->addr32(x, y));
152 } 155 }
153 uint64_t* writable_addr64(int x, int y) const { 156 uint64_t* writable_addr64(int x, int y) const {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 private: 243 private:
241 void (*fUnlockProc)(void*); 244 void (*fUnlockProc)(void*);
242 void* fUnlockContext; 245 void* fUnlockContext;
243 SkPixmap fPixmap; 246 SkPixmap fPixmap;
244 bool fIsLocked; 247 bool fIsLocked;
245 248
246 friend class SkBitmap; 249 friend class SkBitmap;
247 }; 250 };
248 251
249 #endif 252 #endif
OLDNEW
« no previous file with comments | « include/core/SkImageInfo.h ('k') | src/core/SkBlitter_Sprite.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698