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

Side by Side Diff: src/codec/SkCodecPriv.h

Issue 1011343003: Enabling ico decoding with use of png and bmp decoders (Closed) Base URL: https://skia.googlesource.com/skia.git@swizzle
Patch Set: Provide the user with an option of which ico to decode Created 5 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The Android Open Source Project 2 * Copyright 2015 The Android Open Source Project
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 SkCodecPriv_DEFINED 8 #ifndef SkCodecPriv_DEFINED
9 #define SkCodecPriv_DEFINED 9 #define SkCodecPriv_DEFINED
10 10
(...skipping 11 matching lines...) Expand all
22 uint8_t maxAlpha = 0xFF; 22 uint8_t maxAlpha = 0xFF;
23 23
24 #define UPDATE_RESULT_ALPHA(alpha) \ 24 #define UPDATE_RESULT_ALPHA(alpha) \
25 zeroAlpha |= (alpha); \ 25 zeroAlpha |= (alpha); \
26 maxAlpha &= (alpha); 26 maxAlpha &= (alpha);
27 27
28 #define COMPUTE_RESULT_ALPHA \ 28 #define COMPUTE_RESULT_ALPHA \
29 SkSwizzler::GetResult(zeroAlpha, maxAlpha); 29 SkSwizzler::GetResult(zeroAlpha, maxAlpha);
30 30
31 /* 31 /*
32 *
33 * Compute row bytes for an image using pixels per byte 32 * Compute row bytes for an image using pixels per byte
34 *
35 */ 33 */
36 static inline size_t compute_row_bytes_ppb(int width, uint32_t pixelsPerByte) { 34 static inline size_t compute_row_bytes_ppb(int width, uint32_t pixelsPerByte) {
37 return (width + pixelsPerByte - 1) / pixelsPerByte; 35 return (width + pixelsPerByte - 1) / pixelsPerByte;
38 } 36 }
39 37
40 /* 38 /*
41 *
42 * Compute row bytes for an image using bytes per pixel 39 * Compute row bytes for an image using bytes per pixel
43 *
44 */ 40 */
45 static inline size_t compute_row_bytes_bpp(int width, uint32_t bytesPerPixel) { 41 static inline size_t compute_row_bytes_bpp(int width, uint32_t bytesPerPixel) {
46 return width * bytesPerPixel; 42 return width * bytesPerPixel;
47 } 43 }
48 44
49 /* 45 /*
50 *
51 * Compute row bytes for an image 46 * Compute row bytes for an image
52 *
53 */ 47 */
54 static inline size_t compute_row_bytes(int width, uint32_t bitsPerPixel) { 48 static inline size_t compute_row_bytes(int width, uint32_t bitsPerPixel) {
55 if (bitsPerPixel < 16) { 49 if (bitsPerPixel < 16) {
56 SkASSERT(0 == 8 % bitsPerPixel); 50 SkASSERT(0 == 8 % bitsPerPixel);
57 const uint32_t pixelsPerByte = 8 / bitsPerPixel; 51 const uint32_t pixelsPerByte = 8 / bitsPerPixel;
58 return compute_row_bytes_ppb(width, pixelsPerByte); 52 return compute_row_bytes_ppb(width, pixelsPerByte);
59 } else { 53 } else {
60 SkASSERT(0 == bitsPerPixel % 8); 54 SkASSERT(0 == bitsPerPixel % 8);
61 const uint32_t bytesPerPixel = bitsPerPixel / 8; 55 const uint32_t bytesPerPixel = bitsPerPixel / 8;
62 return compute_row_bytes_bpp(width, bytesPerPixel); 56 return compute_row_bytes_bpp(width, bytesPerPixel);
63 } 57 }
64 } 58 }
65 59
66 /* 60 /*
67 *
68 * Get a byte from a buffer 61 * Get a byte from a buffer
69 * This method is unsafe, the caller is responsible for performing a check 62 * This method is unsafe, the caller is responsible for performing a check
70 *
71 */ 63 */
72 static inline uint8_t get_byte(uint8_t* buffer, uint32_t i) { 64 static inline uint8_t get_byte(uint8_t* buffer, uint32_t i) {
73 return buffer[i]; 65 return buffer[i];
74 } 66 }
75 67
76 /* 68 /*
77 *
78 * Get a short from a buffer 69 * Get a short from a buffer
79 * This method is unsafe, the caller is responsible for performing a check 70 * This method is unsafe, the caller is responsible for performing a check
80 *
81 */ 71 */
82 static inline uint16_t get_short(uint8_t* buffer, uint32_t i) { 72 static inline uint16_t get_short(uint8_t* buffer, uint32_t i) {
83 uint16_t result; 73 uint16_t result;
84 memcpy(&result, &(buffer[i]), 2); 74 memcpy(&result, &(buffer[i]), 2);
85 #ifdef SK_CPU_BENDIAN 75 #ifdef SK_CPU_BENDIAN
86 return SkEndianSwap16(result); 76 return SkEndianSwap16(result);
87 #else 77 #else
88 return result; 78 return result;
89 #endif 79 #endif
90 } 80 }
91 81
92 /* 82 /*
93 *
94 * Get an int from a buffer 83 * Get an int from a buffer
95 * This method is unsafe, the caller is responsible for performing a check 84 * This method is unsafe, the caller is responsible for performing a check
96 *
97 */ 85 */
98 static inline uint32_t get_int(uint8_t* buffer, uint32_t i) { 86 static inline uint32_t get_int(uint8_t* buffer, uint32_t i) {
99 uint32_t result; 87 uint32_t result;
100 memcpy(&result, &(buffer[i]), 4); 88 memcpy(&result, &(buffer[i]), 4);
101 #ifdef SK_CPU_BENDIAN 89 #ifdef SK_CPU_BENDIAN
102 return SkEndianSwap32(result); 90 return SkEndianSwap32(result);
103 #else 91 #else
104 return result; 92 return result;
105 #endif 93 #endif
106 } 94 }
107 95
108 #endif // SkCodecPriv_DEFINED 96 #endif // SkCodecPriv_DEFINED
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698