ImageFilterGeometry.java revision 7bd602506fee36f3ef0a68bfa1ba5dd1e74ca5dd
17bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 27bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkpackage com.android.gallery3d.filtershow.filters; 37bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 47bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkimport android.graphics.Bitmap; 57bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkimport android.graphics.Canvas; 67bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkimport android.graphics.Paint; 77bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkimport android.graphics.Rect; 87bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 97bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkimport com.android.gallery3d.filtershow.imageshow.GeometryMetadata; 107bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkimport com.android.gallery3d.filtershow.imageshow.GeometryMetadata.FLIP; 117bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 127bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunkpublic class ImageFilterGeometry extends ImageFilter { 137bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk private final Bitmap.Config mConfig = Bitmap.Config.ARGB_8888; 147bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk private GeometryMetadata mGeometry = null; 157bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 167bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk public ImageFilterGeometry() { 177bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk mName = "Geometry"; 187bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk } 197bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 207bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk @Override 217bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk public ImageFilter clone() throws CloneNotSupportedException { 227bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk ImageFilterGeometry filter = (ImageFilterGeometry) super.clone(); 237bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk return filter; 247bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk } 257bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 267bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk public void setGeometryMetadata(GeometryMetadata m){ 277bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk mGeometry = m; 287bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk } 297bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 307bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk native protected void nativeApplyFilterFlip(Bitmap src, int srcWidth, int srcHeight, 317bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk Bitmap dst, int dstWidth, int dstHeight, int flip); 327bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 337bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk @Override 347bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) { 357bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk if(mGeometry.getFlipType() == FLIP.NONE){ 367bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk return bitmap; 377bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk } 387bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk Bitmap flipBitmap = bitmap.copy(mConfig, true); 397bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk nativeApplyFilterFlip(bitmap, bitmap.getWidth(), bitmap.getHeight(), flipBitmap, 407bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk flipBitmap.getWidth(), flipBitmap.getHeight(), 1); 417bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk return flipBitmap; 427bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk } 437bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk 447bd602506fee36f3ef0a68bfa1ba5dd1e74ca5ddRuben Brunk} 45