| OLD | NEW | 
|    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  |   21  | 
|   22 #endif |   22 #endif | 
|   23  |   23  | 
 |   24 static bool tile_mode_is_valid(SkMatrixConvolutionImageFilter::TileMode tileMode
     ) { | 
 |   25     switch (tileMode) { | 
 |   26     case SkMatrixConvolutionImageFilter::kClamp_TileMode: | 
 |   27     case SkMatrixConvolutionImageFilter::kRepeat_TileMode: | 
 |   28     case SkMatrixConvolutionImageFilter::kClampToBlack_TileMode: | 
 |   29         return true; | 
 |   30     default: | 
 |   31         break; | 
 |   32     } | 
 |   33     return false; | 
 |   34 } | 
 |   35  | 
|   24 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(const SkISize& ke
     rnelSize, const SkScalar* kernel, SkScalar gain, SkScalar bias, const SkIPoint& 
     target, TileMode tileMode, bool convolveAlpha, SkImageFilter* input) |   36 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(const SkISize& ke
     rnelSize, const SkScalar* kernel, SkScalar gain, SkScalar bias, const SkIPoint& 
     target, TileMode tileMode, bool convolveAlpha, SkImageFilter* input) | 
|   25   : INHERITED(input), |   37   : INHERITED(input), | 
|   26     fKernelSize(kernelSize), |   38     fKernelSize(kernelSize), | 
|   27     fGain(gain), |   39     fGain(gain), | 
|   28     fBias(bias), |   40     fBias(bias), | 
|   29     fTarget(target), |   41     fTarget(target), | 
|   30     fTileMode(tileMode), |   42     fTileMode(tileMode), | 
|   31     fConvolveAlpha(convolveAlpha) { |   43     fConvolveAlpha(convolveAlpha) { | 
|   32     uint32_t size = fKernelSize.fWidth * fKernelSize.fHeight; |   44     uint32_t size = fKernelSize.fWidth * fKernelSize.fHeight; | 
|   33     fKernel = SkNEW_ARRAY(SkScalar, size); |   45     fKernel = SkNEW_ARRAY(SkScalar, size); | 
|   34     memcpy(fKernel, kernel, size * sizeof(SkScalar)); |   46     memcpy(fKernel, kernel, size * sizeof(SkScalar)); | 
|   35     SkASSERT(kernelSize.fWidth >= 1 && kernelSize.fHeight >= 1); |   47     SkASSERT(kernelSize.fWidth >= 1 && kernelSize.fHeight >= 1); | 
|   36     SkASSERT(target.fX >= 0 && target.fX < kernelSize.fWidth); |   48     SkASSERT(target.fX >= 0 && target.fX < kernelSize.fWidth); | 
|   37     SkASSERT(target.fY >= 0 && target.fY < kernelSize.fHeight); |   49     SkASSERT(target.fY >= 0 && target.fY < kernelSize.fHeight); | 
|   38 } |   50 } | 
|   39  |   51  | 
|   40 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(SkFlattenableRead
     Buffer& buffer) : INHERITED(buffer) { |   52 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(SkFlattenableRead
     Buffer& buffer) : INHERITED(buffer) { | 
|   41     fKernelSize.fWidth = buffer.readInt(); |   53     fKernelSize.fWidth = buffer.readInt(); | 
|   42     fKernelSize.fHeight = buffer.readInt(); |   54     fKernelSize.fHeight = buffer.readInt(); | 
|   43     uint32_t size = fKernelSize.fWidth * fKernelSize.fHeight; |   55     uint32_t size = fKernelSize.fWidth * fKernelSize.fHeight; | 
|   44     fKernel = SkNEW_ARRAY(SkScalar, size); |   56     fKernel = SkNEW_ARRAY(SkScalar, size); | 
|   45     SkDEBUGCODE(uint32_t readSize = )buffer.readScalarArray(fKernel); |   57     SkDEBUGCODE(uint32_t readSize = )buffer.readScalarArray(fKernel); | 
|   46     SkASSERT(readSize == size); |   58     SkASSERT(readSize == size); | 
|   47     fGain = buffer.readScalar(); |   59     fGain = buffer.readScalar(); | 
|   48     fBias = buffer.readScalar(); |   60     fBias = buffer.readScalar(); | 
|   49     fTarget.fX = buffer.readInt(); |   61     fTarget.fX = buffer.readInt(); | 
|   50     fTarget.fY = buffer.readInt(); |   62     fTarget.fY = buffer.readInt(); | 
|   51     fTileMode = (TileMode) buffer.readInt(); |   63     fTileMode = (TileMode) buffer.readInt(); | 
|   52     fConvolveAlpha = buffer.readBool(); |   64     fConvolveAlpha = buffer.readBool(); | 
 |   65     buffer.validate(SkScalarIsFinite(fGain) && | 
 |   66                     SkScalarIsFinite(fBias) && | 
 |   67                     tile_mode_is_valid(fTileMode)); | 
|   53 } |   68 } | 
|   54  |   69  | 
|   55 void SkMatrixConvolutionImageFilter::flatten(SkFlattenableWriteBuffer& buffer) c
     onst { |   70 void SkMatrixConvolutionImageFilter::flatten(SkFlattenableWriteBuffer& buffer) c
     onst { | 
|   56     this->INHERITED::flatten(buffer); |   71     this->INHERITED::flatten(buffer); | 
|   57     buffer.writeInt(fKernelSize.fWidth); |   72     buffer.writeInt(fKernelSize.fWidth); | 
|   58     buffer.writeInt(fKernelSize.fHeight); |   73     buffer.writeInt(fKernelSize.fHeight); | 
|   59     buffer.writeScalarArray(fKernel, fKernelSize.fWidth * fKernelSize.fHeight); |   74     buffer.writeScalarArray(fKernel, fKernelSize.fWidth * fKernelSize.fHeight); | 
|   60     buffer.writeScalar(fGain); |   75     buffer.writeScalar(fGain); | 
|   61     buffer.writeScalar(fBias); |   76     buffer.writeScalar(fBias); | 
|   62     buffer.writeInt(fTarget.fX); |   77     buffer.writeInt(fTarget.fX); | 
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  561                                                 fBias, |  576                                                 fBias, | 
|  562                                                 fTarget, |  577                                                 fTarget, | 
|  563                                                 fTileMode, |  578                                                 fTileMode, | 
|  564                                                 fConvolveAlpha); |  579                                                 fConvolveAlpha); | 
|  565     return true; |  580     return true; | 
|  566 } |  581 } | 
|  567  |  582  | 
|  568 /////////////////////////////////////////////////////////////////////////////// |  583 /////////////////////////////////////////////////////////////////////////////// | 
|  569  |  584  | 
|  570 #endif |  585 #endif | 
| OLD | NEW |