Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 554e4148 authored by Christian Wichner's avatar Christian Wichner Committed by Android (Google) Code Review
Browse files

Merge "functionality added to transport filter parameter values to following...

Merge "functionality added to transport filter parameter values to following filters. e.g. FixedFrames use the style from Retrolux or Film to tinting the frame." into gb-ub-photos-carlsbad
parents e8bc13d4 07a438da
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -69,10 +69,12 @@ public abstract class ImageFilter implements Cloneable {
    public boolean supportsAllocationInput() { return false; }

    public void apply(Allocation in, Allocation out) {
        setGeneralParameters();
    }

    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
        // do nothing here, subclasses will implement filtering here
        setGeneralParameters();
        return bitmap;
    }

@@ -102,4 +104,11 @@ public abstract class ImageFilter implements Cloneable {
    public FilterEnvironment getEnvironment() {
        return mEnvironment;
    }

    public void setGeneralParameters() {
        // should implement in subclass which like to transport
        // some information to other filters. (like the style setting from RetroLux
        // and Film to FixedFrame)
        mEnvironment.clearGeneralParameters();
    }
}
+24 −0
Original line number Diff line number Diff line
@@ -50,6 +50,9 @@ public class FilterEnvironment {
    private HashMap<Long, WeakReference<Bitmap>>
            bitmapCach = new HashMap<Long, WeakReference<Bitmap>>();

    private HashMap<Integer, Integer>
                    generalParameters = new HashMap<Integer, Integer>();

    public void cache(Bitmap bitmap) {
        if (bitmap == null) {
            return;
@@ -116,6 +119,7 @@ public class FilterEnvironment {
        if (filter.supportsAllocationInput()) {
            filter.apply(in, out);
        }
        filter.setGeneralParameters();
        filter.setEnvironment(null);
    }

@@ -124,6 +128,7 @@ public class FilterEnvironment {
        filter.useRepresentation(representation);
        filter.setEnvironment(this);
        Bitmap ret = filter.apply(bitmap, mScaleFactor, mQuality);
        filter.setGeneralParameters();
        filter.setEnvironment(null);
        return ret;
    }
@@ -136,4 +141,23 @@ public class FilterEnvironment {
        mPipeline = cachingPipeline;
    }

    public synchronized void clearGeneralParameters() {
        generalParameters = null;
    }

    public synchronized Integer getGeneralParameter(int id) {
        if (generalParameters == null || !generalParameters.containsKey(id)) {
            return null;
        }
        return generalParameters.get(id);
    }

    public synchronized void setGeneralParameter(int id, int value) {
        if (generalParameters == null) {
            generalParameters = new HashMap<Integer, Integer>();
        }

        generalParameters.put(id, value);
    }

}