aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/state/transforms/PropertyChangeTransform.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/state/transforms/PropertyChangeTransform.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/state/transforms/PropertyChangeTransform.java103
1 files changed, 0 insertions, 103 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/state/transforms/PropertyChangeTransform.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/state/transforms/PropertyChangeTransform.java
deleted file mode 100644
index 276f6f49b..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/state/transforms/PropertyChangeTransform.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ide.eclipse.gltrace.state.transforms;
-
-import com.android.ide.eclipse.gltrace.state.IGLProperty;
-
-/**
- * A PropertyChangeTransform object provides the ability to alter the value of a
- * single GL State variable. An optional predicate provides the ability to perform
- * the change only if the predicate succeeds.
- */
-public class PropertyChangeTransform implements IStateTransform {
- private final IGLPropertyAccessor mAccessor;
- private final Object mNewValue;
- private final IPredicate mPredicate;
- private Object mOldValue;
-
- /**
- * Construct a state transform that will extract the property using the accessor,
- * and modify its value to the provided value.
- */
- PropertyChangeTransform(IGLPropertyAccessor accessor, Object newValue) {
- this(accessor, newValue, null);
- }
-
- /**
- * Construct a state transform that will extract the property using the accessor,
- * check if the predicate function accepts the current value, and if so modify its
- * value to the provided value.
- */
- public PropertyChangeTransform(IGLPropertyAccessor accessor, Object newValue,
- IPredicate predicate) {
- mAccessor = accessor;
- mNewValue = newValue;
- mPredicate = predicate;
- mOldValue = null;
- }
-
- /** Apply the state transformation on the given OpenGL state. */
- @Override
- public void apply(IGLProperty state) {
- IGLProperty property = mAccessor.getProperty(state);
-
- assert mOldValue == null : "Transform cannot be applied multiple times";
- if (mPredicate != null) {
- // if predicate is not null, then first check if the current value
- // passes the predicate function.
- if (!mPredicate.apply(property.getValue())) {
- return;
- }
- }
-
- if (property != null) {
- mOldValue = property.getValue();
- property.setValue(mNewValue);
- } else {
- throw new RuntimeException("No such property: " + mAccessor.getPath());
- }
- }
-
- /**
- * Reverses the effect of this state transform. It restores the property's value to the same
- * state as it was before this transformation was applied. If this transform was never
- * {@link #apply(IGLProperty)}'ed, then performing a revert has no effect.
- */
- @Override
- public void revert(IGLProperty state) {
- if (mOldValue != null) {
- IGLProperty property = mAccessor.getProperty(state);
- property.setValue(mOldValue);
- mOldValue = null;
- }
- }
-
- /** Gets the property that will be affected by applying this transformation. */
- @Override
- public IGLProperty getChangedProperty(IGLProperty state) {
- if (mPredicate != null) {
- Object value = mOldValue == null ? mNewValue : mOldValue;
- if (!mPredicate.apply(value)) {
- // if the value doesn't match the predicate, then this property
- // is not altered.
- return null;
- }
- }
-
- return mAccessor.getProperty(state);
- }
-}