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

Commit 514fba16 authored by Nicolas Roard's avatar Nicolas Roard
Browse files

Update to ToT RemoteCompose

Bug: 339721781
Flag: EXEMPT External Libraries
Test: in GoB
Change-Id: If6145fee70fe0db732c10e444f525a495727efc9
parent 5c8ed931
Loading
Loading
Loading
Loading
+32 −4
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ public class CoreDocument implements Serializable {

    // We also keep a more fine-grained BUILD number, exposed as
    // ID_API_LEVEL = DOCUMENT_API_LEVEL + BUILD
    static final float BUILD = 0.6f;
    static final float BUILD = 0.7f;

    private static final boolean UPDATE_VARIABLES_BEFORE_LAYOUT = false;

@@ -842,18 +842,25 @@ public class CoreDocument implements Serializable {

    @NonNull private HashMap<Integer, Component> mComponentMap = new HashMap<Integer, Component>();

    /**
     * Register all the operations recursively
     *
     * @param context
     * @param list
     */
    private void registerVariables(
            @NonNull RemoteContext context, @NonNull ArrayList<Operation> list) {
        for (Operation op : list) {
            if (op instanceof VariableSupport) {
                ((VariableSupport) op).updateVariables(context);
                ((VariableSupport) op).registerListening(context);
            }
            if (op instanceof Component) {
                mComponentMap.put(((Component) op).getComponentId(), (Component) op);
                registerVariables(context, ((Component) op).getList());
                ((Component) op).registerVariables(context);
            }
            if (op instanceof Container) {
                registerVariables(context, ((Container) op).getList());
            }
            if (op instanceof ComponentValue) {
                ComponentValue v = (ComponentValue) op;
                Component component = mComponentMap.get(v.getComponentId());
@@ -866,14 +873,34 @@ public class CoreDocument implements Serializable {
            if (op instanceof ComponentModifiers) {
                for (ModifierOperation modifier : ((ComponentModifiers) op).getList()) {
                    if (modifier instanceof VariableSupport) {
                        ((VariableSupport) modifier).updateVariables(context);
                        ((VariableSupport) modifier).registerListening(context);
                    }
                }
            }
        }
    }

    /**
     * Apply the operations recursively, for the original initialization pass with mode == DATA
     *
     * @param context
     * @param list
     */
    private void applyOperations(
            @NonNull RemoteContext context, @NonNull ArrayList<Operation> list) {
        for (Operation op : list) {
            if (op instanceof VariableSupport) {
                ((VariableSupport) op).updateVariables(context);
            }
            if (op instanceof Component) { // for componentvalues...
                ((Component) op).updateVariables(context);
            }
            op.markNotDirty();
            op.apply(context);
            context.incrementOpCount();
            if (op instanceof Container) {
                applyOperations(context, ((Container) op).getList());
            }
        }
    }

@@ -893,6 +920,7 @@ public class CoreDocument implements Serializable {
        mTimeVariables.updateTime(context);

        registerVariables(context, mOperations);
        applyOperations(context, mOperations);
        context.mMode = RemoteContext.ContextMode.UNSET;

        if (UPDATE_VARIABLES_BEFORE_LAYOUT) {
+0 −1
Original line number Diff line number Diff line
@@ -149,7 +149,6 @@ public class FloatExpression extends Operation implements VariableSupport, Seria

    @Override
    public void apply(@NonNull RemoteContext context) {
        updateVariables(context);
        float t = context.getAnimationTime();
        if (Float.isNaN(mLastChange)) {
            mLastChange = t;
+14 −8
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.annotation.NonNull;

import com.android.internal.widget.remotecompose.core.Operation;
import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
@@ -30,6 +32,7 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.AnimatedFloatExpression;
import com.android.internal.widget.remotecompose.core.operations.utilities.NanMap;
import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;

import java.util.Arrays;
import java.util.List;
@@ -38,7 +41,7 @@ import java.util.List;
 * This creates a particle system. which consist of id, particleCount, array of id's and equations
 * for constructing the particles
 */
public class ParticlesCreate extends Operation implements VariableSupport {
public class ParticlesCreate extends PaintOperation implements VariableSupport {
    private static final int OP_CODE = Operations.PARTICLE_DEFINE;
    private static final String CLASS_NAME = "ParticlesCreate";
    private final int mId;
@@ -214,6 +217,13 @@ public class ParticlesCreate extends Operation implements VariableSupport {
        return indent + toString();
    }

    @Override
    public void paint(@NonNull PaintContext context) {
        for (int i = 0; i < mParticles.length; i++) {
            initializeParticle(i);
        }
    }

    void initializeParticle(int pNo) {
        for (int j = 0; j < mParticles[pNo].length; j++) {
            for (int k = 0; k < mIndexeVars.length; k++) {
@@ -226,13 +236,6 @@ public class ParticlesCreate extends Operation implements VariableSupport {
        }
    }

    @Override
    public void apply(@NonNull RemoteContext context) {
        for (int i = 0; i < mParticles.length; i++) {
            initializeParticle(i);
        }
    }

    public float[][] getParticles() {
        return mParticles;
    }
@@ -244,4 +247,7 @@ public class ParticlesCreate extends Operation implements VariableSupport {
    public float[][] getEquations() {
        return mOutEquations;
    }

    @Override
    public void serialize(MapSerializer serializer) {}
}
+1 −1
Original line number Diff line number Diff line
@@ -258,6 +258,6 @@ public class PathAppend extends PaintOperation implements VariableSupport, Seria

    @Override
    public void serialize(MapSerializer serializer) {
        serializer.addType(CLASS_NAME).add("id", mInstanceId).add("path", pathString(mFloatPath));
        serializer.addType(CLASS_NAME).add("id", mInstanceId).addPath("path", mFloatPath);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -242,6 +242,6 @@ public class PathCreate extends PaintOperation implements VariableSupport, Seria

    @Override
    public void serialize(MapSerializer serializer) {
        serializer.addType(CLASS_NAME).add("id", mInstanceId).add("path", pathString(mFloatPath));
        serializer.addType(CLASS_NAME).add("id", mInstanceId).addPath("path", mFloatPath);
    }
}
Loading