topical media & game development

talk show tell print

#graphic-flex-image-effects-07-source-aether-effects-carnival-RorschachEffect.ax

#graphic-flex-image-effects-07-source-aether-effects-carnival-RorschachEffect.ax [swf] [flash] flex


  package aether.effects.carnival {
          
          import aether.effects.ImageEffect;
          import aether.utils.Adjustments;
          import aether.utils.ImageUtil;
          
          import flash.display.BitmapData;
          import flash.display.BitmapDataChannel;
          import flash.display.Shape;
          import flash.display.Sprite;
          import flash.filters.BlurFilter;
          import flash.geom.Matrix;
          import flash.geom.Point;
          import flash.geom.Rectangle;
          
          public class @ax-graphic-flex-image-effects-07-source-aether-effects-carnival-RorschachEffect extends ImageEffect {
          
                  private var _foregroundColor:uint;
                  private var _backgroundColor:uint;
                  
                  public function @ax-graphic-flex-image-effects-07-source-aether-effects-carnival-RorschachEffect(
                          foregroundColor:uint=0xFF000000,
                          backgroundColor:uint=0xFFFFFFFF,
                          blendMode:String=null,
                          alpha:Number=1
                  ) {
                          init(blendMode, alpha);
                          _foregroundColor = foregroundColor;
                          _backgroundColor = backgroundColor;
                  }
          
                  override protected function applyEffect(bitmapData:BitmapData):void {
                          ImageUtil.applyFilter(bitmapData, new BlurFilter(8, 8));
                          Adjustments.threshold(bitmapData, 120);
                          var clone:BitmapData = bitmapData.clone();
                          var width:Number = bitmapData.width;
                          var height:Number = bitmapData.height;
                          var matrix:Matrix = new Matrix();
                          matrix.scale(-1, 1);
                          matrix.translate(width, 0);
                          bitmapData.draw(clone, matrix, null, null, new Rectangle(0, 0, width/2, height));
                          var foreground:BitmapData = new BitmapData(width, height, true, 0x00000000);
                          var background:BitmapData = foreground.clone();
                          foreground.fillRect(foreground.rect, _foregroundColor);
                          background.fillRect(background.rect, _backgroundColor);
                          background.copyChannel(bitmapData, bitmapData.rect, new Point(), BitmapDataChannel.RED, BitmapDataChannel.ALPHA);
                          Adjustments.invert(bitmapData);
                          foreground.copyChannel(bitmapData, bitmapData.rect, new Point(), BitmapDataChannel.RED, BitmapDataChannel.ALPHA);
                          bitmapData.fillRect(bitmapData.rect, 0x00000000);
                          var sprite:Sprite = new Sprite();
                          var fg:Shape = new Shape();
                          fg.graphics.beginBitmapFill(foreground);
                          fg.graphics.drawRect(0, 0, width, height);
                          fg.graphics.endFill();
                          fg.alpha = (_foregroundColor >> 24 & 0xFF)/0xFF;
                          sprite.addChild(fg);
                          var bg:Shape = new Shape();
                          bg.graphics.beginBitmapFill(background);
                          bg.graphics.drawRect(0, 0, width, height);
                          bg.graphics.endFill();
                          bg.alpha = (_backgroundColor >> 24 & 0xFF)/0xFF;
                          sprite.addChild(bg);
                          bitmapData.draw(sprite);
                  }
          
          }
          
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.