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

Side by Side Diff: src/effects/SkMergeImageFilter.cpp

Issue 134163010: Refactor read and write buffers. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: original write flags were fine Created 6 years, 10 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 2012 The Android Open Source Project 2 * Copyright 2012 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 #include "SkMergeImageFilter.h" 8 #include "SkMergeImageFilter.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkDevice.h" 10 #include "SkDevice.h"
11 #include "SkFlattenableBuffers.h" 11 #include "SkReadBuffer.h"
12 #include "SkWriteBuffer.h"
12 #include "SkValidationUtils.h" 13 #include "SkValidationUtils.h"
13 14
14 /////////////////////////////////////////////////////////////////////////////// 15 ///////////////////////////////////////////////////////////////////////////////
15 16
16 void SkMergeImageFilter::initAllocModes() { 17 void SkMergeImageFilter::initAllocModes() {
17 int inputCount = countInputs(); 18 int inputCount = countInputs();
18 if (inputCount) { 19 if (inputCount) {
19 size_t size = sizeof(uint8_t) * inputCount; 20 size_t size = sizeof(uint8_t) * inputCount;
20 if (size <= sizeof(fStorage)) { 21 if (size <= sizeof(fStorage)) {
21 fModes = SkTCast<uint8_t*>(fStorage); 22 fModes = SkTCast<uint8_t*>(fStorage);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 } 142 }
142 canvas.drawSprite(*srcPtr, pos.x() - x0, pos.y() - y0, &paint); 143 canvas.drawSprite(*srcPtr, pos.x() - x0, pos.y() - y0, &paint);
143 } 144 }
144 145
145 offset->fX = bounds.left(); 146 offset->fX = bounds.left();
146 offset->fY = bounds.top(); 147 offset->fY = bounds.top();
147 *result = dst->accessBitmap(false); 148 *result = dst->accessBitmap(false);
148 return true; 149 return true;
149 } 150 }
150 151
151 void SkMergeImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { 152 void SkMergeImageFilter::flatten(SkWriteBuffer& buffer) const {
152 this->INHERITED::flatten(buffer); 153 this->INHERITED::flatten(buffer);
153 154
154 buffer.writeBool(fModes != NULL); 155 buffer.writeBool(fModes != NULL);
155 if (fModes) { 156 if (fModes) {
156 buffer.writeByteArray(fModes, countInputs() * sizeof(fModes[0])); 157 buffer.writeByteArray(fModes, countInputs() * sizeof(fModes[0]));
157 } 158 }
158 } 159 }
159 160
160 SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer) 161 SkMergeImageFilter::SkMergeImageFilter(SkReadBuffer& buffer)
161 : INHERITED(-1, buffer) { 162 : INHERITED(-1, buffer) {
162 bool hasModes = buffer.readBool(); 163 bool hasModes = buffer.readBool();
163 if (hasModes) { 164 if (hasModes) {
164 this->initAllocModes(); 165 this->initAllocModes();
165 int nbInputs = countInputs(); 166 int nbInputs = countInputs();
166 size_t size = nbInputs * sizeof(fModes[0]); 167 size_t size = nbInputs * sizeof(fModes[0]);
167 SkASSERT(buffer.getArrayCount() == size); 168 SkASSERT(buffer.getArrayCount() == size);
168 if (buffer.validate(buffer.getArrayCount() == size) && 169 if (buffer.validate(buffer.getArrayCount() == size) &&
169 buffer.readByteArray(fModes, size)) { 170 buffer.readByteArray(fModes, size)) {
170 for (int i = 0; i < nbInputs; ++i) { 171 for (int i = 0; i < nbInputs; ++i) {
171 buffer.validate(SkIsValidMode((SkXfermode::Mode)fModes[i])); 172 buffer.validate(SkIsValidMode((SkXfermode::Mode)fModes[i]));
172 } 173 }
173 } 174 }
174 } else { 175 } else {
175 fModes = 0; 176 fModes = 0;
176 } 177 }
177 } 178 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698