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

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

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Adapting code to sk_once changes Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « src/effects/SkMagnifierImageFilter.cpp ('k') | src/effects/SkMergeImageFilter.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 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 "SkMatrixConvolutionImageFilter.h" 8 #include "SkMatrixConvolutionImageFilter.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
11 #include "SkFlattenableBuffers.h" 11 #include "SkFlattenableBuffers.h"
12 #include "SkRect.h" 12 #include "SkRect.h"
13 #include "SkUnPreMultiply.h" 13 #include "SkUnPreMultiply.h"
14 14
15 #if SK_SUPPORT_GPU 15 #if SK_SUPPORT_GPU
16 #include "gl/GrGLEffect.h" 16 #include "gl/GrGLEffect.h"
17 #include "effects/GrSingleTextureEffect.h" 17 #include "effects/GrSingleTextureEffect.h"
18 #include "GrTBackendEffectFactory.h" 18 #include "GrTBackendEffectFactory.h"
19 #include "GrTexture.h" 19 #include "GrTexture.h"
20 #include "SkMatrix.h" 20 #include "SkMatrix.h"
21 #endif 21 #endif
22 22
23 static bool tile_mode_is_valid(SkMatrixConvolutionImageFilter::TileMode tileMode ) {
24 switch (tileMode) {
25 case SkMatrixConvolutionImageFilter::kClamp_TileMode:
26 case SkMatrixConvolutionImageFilter::kRepeat_TileMode:
27 case SkMatrixConvolutionImageFilter::kClampToBlack_TileMode:
28 return true;
29 default:
30 break;
31 }
32 return false;
33 }
34
23 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter( 35 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(
24 const SkISize& kernelSize, 36 const SkISize& kernelSize,
25 const SkScalar* kernel, 37 const SkScalar* kernel,
26 SkScalar gain, 38 SkScalar gain,
27 SkScalar bias, 39 SkScalar bias,
28 const SkIPoint& target, 40 const SkIPoint& target,
29 TileMode tileMode, 41 TileMode tileMode,
30 bool convolveAlpha, 42 bool convolveAlpha,
31 SkImageFilter* input, 43 SkImageFilter* input,
32 const CropRect* cropRect) 44 const CropRect* cropRect)
(...skipping 19 matching lines...) Expand all
52 uint32_t size = fKernelSize.fWidth * fKernelSize.fHeight; 64 uint32_t size = fKernelSize.fWidth * fKernelSize.fHeight;
53 fKernel = SkNEW_ARRAY(SkScalar, size); 65 fKernel = SkNEW_ARRAY(SkScalar, size);
54 SkDEBUGCODE(uint32_t readSize = )buffer.readScalarArray(fKernel); 66 SkDEBUGCODE(uint32_t readSize = )buffer.readScalarArray(fKernel);
55 SkASSERT(readSize == size); 67 SkASSERT(readSize == size);
56 fGain = buffer.readScalar(); 68 fGain = buffer.readScalar();
57 fBias = buffer.readScalar(); 69 fBias = buffer.readScalar();
58 fTarget.fX = buffer.readInt(); 70 fTarget.fX = buffer.readInt();
59 fTarget.fY = buffer.readInt(); 71 fTarget.fY = buffer.readInt();
60 fTileMode = (TileMode) buffer.readInt(); 72 fTileMode = (TileMode) buffer.readInt();
61 fConvolveAlpha = buffer.readBool(); 73 fConvolveAlpha = buffer.readBool();
74 buffer.validate(SkScalarIsFinite(fGain) &&
75 SkScalarIsFinite(fBias) &&
76 tile_mode_is_valid(fTileMode));
62 } 77 }
63 78
64 void SkMatrixConvolutionImageFilter::flatten(SkFlattenableWriteBuffer& buffer) c onst { 79 void SkMatrixConvolutionImageFilter::flatten(SkFlattenableWriteBuffer& buffer) c onst {
65 this->INHERITED::flatten(buffer); 80 this->INHERITED::flatten(buffer);
66 buffer.writeInt(fKernelSize.fWidth); 81 buffer.writeInt(fKernelSize.fWidth);
67 buffer.writeInt(fKernelSize.fHeight); 82 buffer.writeInt(fKernelSize.fHeight);
68 buffer.writeScalarArray(fKernel, fKernelSize.fWidth * fKernelSize.fHeight); 83 buffer.writeScalarArray(fKernel, fKernelSize.fWidth * fKernelSize.fHeight);
69 buffer.writeScalar(fGain); 84 buffer.writeScalar(fGain);
70 buffer.writeScalar(fBias); 85 buffer.writeScalar(fBias);
71 buffer.writeInt(fTarget.fX); 86 buffer.writeInt(fTarget.fX);
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 fBias, 645 fBias,
631 fTarget, 646 fTarget,
632 fTileMode, 647 fTileMode,
633 fConvolveAlpha); 648 fConvolveAlpha);
634 return true; 649 return true;
635 } 650 }
636 651
637 /////////////////////////////////////////////////////////////////////////////// 652 ///////////////////////////////////////////////////////////////////////////////
638 653
639 #endif 654 #endif
OLDNEW
« no previous file with comments | « src/effects/SkMagnifierImageFilter.cpp ('k') | src/effects/SkMergeImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698