299 String name; 300 switch (actype) { 301 case NONE: 302 case SIMD: 303 if (swCompatible && spread == 0.0f) { 304 name = isShadow() ? "BoxShadow" : "BoxBlur"; 305 break; 306 } 307 /* FALLS THROUGH */ 308 default: 309 name = isShadow() ? "LinearConvolveShadow" : "LinearConvolve"; 310 break; 311 } 312 EffectPeer peer = r.getPeerInstance(fctx, name, psize); 313 return peer; 314 } 315 316 @Override 317 public Rectangle getInputClip(int i, Rectangle filterClip) { 318 if (filterClip != null) { 319 int klenh = ((int) Math.ceil(Math.max(inputSizeH, 1.0))) | 1; 320 int klenv = ((int) Math.ceil(Math.max(inputSizeV, 1.0))) | 1; 321 if ((klenh | klenv) > 1) { 322 filterClip = new Rectangle(filterClip); 323 // We actually want to grow them by (klen-1)/2, but since we 324 // have forced the klen sizes to be odd above, a simple integer 325 // divide by 2 is enough... 326 filterClip.grow(klenh/2, klenv/2); 327 } 328 } 329 return filterClip; 330 } 331 332 @Override 333 public ImageData validatePassInput(ImageData src, int pass) { 334 this.validatedPass = pass; 335 BaseTransform srcTx = src.getTransform(); 336 samplevectors = new float[2]; 337 samplevectors[pass] = 1.0f; 338 float iSize = (pass == 0) ? inputSizeH : inputSizeV; 339 if (srcTx.isTranslateOrIdentity()) { 340 this.swCompatible = true; | 299 String name; 300 switch (actype) { 301 case NONE: 302 case SIMD: 303 if (swCompatible && spread == 0.0f) { 304 name = isShadow() ? "BoxShadow" : "BoxBlur"; 305 break; 306 } 307 /* FALLS THROUGH */ 308 default: 309 name = isShadow() ? "LinearConvolveShadow" : "LinearConvolve"; 310 break; 311 } 312 EffectPeer peer = r.getPeerInstance(fctx, name, psize); 313 return peer; 314 } 315 316 @Override 317 public Rectangle getInputClip(int i, Rectangle filterClip) { 318 if (filterClip != null) { 319 int klenh = getInputKernelSize(0); 320 int klenv = getInputKernelSize(1); 321 if ((klenh | klenv) > 1) { 322 filterClip = new Rectangle(filterClip); 323 // We actually want to grow them by (klen-1)/2, but since we 324 // have forced the klen sizes to be odd above, a simple integer 325 // divide by 2 is enough... 326 filterClip.grow(klenh/2, klenv/2); 327 } 328 } 329 return filterClip; 330 } 331 332 @Override 333 public ImageData validatePassInput(ImageData src, int pass) { 334 this.validatedPass = pass; 335 BaseTransform srcTx = src.getTransform(); 336 samplevectors = new float[2]; 337 samplevectors[pass] = 1.0f; 338 float iSize = (pass == 0) ? inputSizeH : inputSizeV; 339 if (srcTx.isTranslateOrIdentity()) { 340 this.swCompatible = true; |