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