< prev index next >

modules/graphics/src/main/java/javafx/scene/transform/Transform.java

Print this page




  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package javafx.scene.transform;
  27 
  28 import java.util.Iterator;
  29 
  30 import com.sun.javafx.geometry.BoundsUtils;
  31 import javafx.event.EventDispatchChain;
  32 
  33 import javafx.scene.Node;
  34 
  35 import com.sun.javafx.util.WeakReferenceQueue;
  36 import com.sun.javafx.binding.ExpressionHelper;
  37 import com.sun.javafx.event.EventHandlerManager;
  38 import com.sun.javafx.geom.transform.Affine3D;
  39 import com.sun.javafx.geom.transform.BaseTransform;

  40 import com.sun.javafx.scene.transform.TransformHelper;
  41 import com.sun.javafx.scene.transform.TransformUtils;
  42 import java.lang.ref.SoftReference;
  43 import javafx.beans.InvalidationListener;
  44 import javafx.beans.property.ObjectProperty;
  45 import javafx.beans.property.ReadOnlyBooleanProperty;
  46 import javafx.beans.property.SimpleObjectProperty;
  47 import javafx.beans.value.ChangeListener;
  48 import javafx.event.Event;
  49 import javafx.event.EventHandler;
  50 import javafx.event.EventTarget;
  51 import javafx.event.EventType;
  52 import javafx.geometry.Bounds;
  53 import javafx.geometry.Point2D;
  54 import javafx.geometry.Point3D;
  55 
  56 // PENDING_DOC_REVIEW of this whole class
  57 /**
  58  * This class is a base class for different affine transformations.
  59  * It provides factory methods for the simple transformations - rotating,


2051 
2052     void add(final Node node) {
2053         nodes.add(node);
2054     }
2055 
2056     void remove(final Node node) {
2057         nodes.remove(node);
2058     }
2059 
2060     /**
2061      * This method must be called by all transforms whenever any of their
2062      * parameters changes. It is typically called when any of the transform's
2063      * properties is invalidated (it is OK to skip the call if an invalid
2064      * property is set).
2065      * @since JavaFX 8.0
2066      */
2067     protected void transformChanged() {
2068         inverseCache = null;
2069         final Iterator iterator = nodes.iterator();
2070         while (iterator.hasNext()) {
2071             ((Node) iterator.next()).impl_transformsChanged();
2072         }
2073 
2074         if (type2D != null) {
2075             type2D.invalidate();
2076         }
2077 
2078         if (identity != null) {
2079             identity.invalidate();
2080         }
2081 
2082         if (internalEventDispatcher != null) {
2083             // need to validate all properties for the event to be fired next time
2084             validate();
2085             Event.fireEvent(this, new TransformChangedEvent(this, this));
2086         }
2087     }
2088 
2089     /**
2090      * Visitor from {@code Affine} class which provides an efficient
2091      * {@code append} operation for the subclasses.




  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package javafx.scene.transform;
  27 
  28 import java.util.Iterator;
  29 
  30 import com.sun.javafx.geometry.BoundsUtils;
  31 import javafx.event.EventDispatchChain;
  32 
  33 import javafx.scene.Node;
  34 
  35 import com.sun.javafx.util.WeakReferenceQueue;
  36 import com.sun.javafx.binding.ExpressionHelper;
  37 import com.sun.javafx.event.EventHandlerManager;
  38 import com.sun.javafx.geom.transform.Affine3D;
  39 import com.sun.javafx.geom.transform.BaseTransform;
  40 import com.sun.javafx.scene.NodeHelper;
  41 import com.sun.javafx.scene.transform.TransformHelper;
  42 import com.sun.javafx.scene.transform.TransformUtils;
  43 import java.lang.ref.SoftReference;
  44 import javafx.beans.InvalidationListener;
  45 import javafx.beans.property.ObjectProperty;
  46 import javafx.beans.property.ReadOnlyBooleanProperty;
  47 import javafx.beans.property.SimpleObjectProperty;
  48 import javafx.beans.value.ChangeListener;
  49 import javafx.event.Event;
  50 import javafx.event.EventHandler;
  51 import javafx.event.EventTarget;
  52 import javafx.event.EventType;
  53 import javafx.geometry.Bounds;
  54 import javafx.geometry.Point2D;
  55 import javafx.geometry.Point3D;
  56 
  57 // PENDING_DOC_REVIEW of this whole class
  58 /**
  59  * This class is a base class for different affine transformations.
  60  * It provides factory methods for the simple transformations - rotating,


2052 
2053     void add(final Node node) {
2054         nodes.add(node);
2055     }
2056 
2057     void remove(final Node node) {
2058         nodes.remove(node);
2059     }
2060 
2061     /**
2062      * This method must be called by all transforms whenever any of their
2063      * parameters changes. It is typically called when any of the transform's
2064      * properties is invalidated (it is OK to skip the call if an invalid
2065      * property is set).
2066      * @since JavaFX 8.0
2067      */
2068     protected void transformChanged() {
2069         inverseCache = null;
2070         final Iterator iterator = nodes.iterator();
2071         while (iterator.hasNext()) {
2072             NodeHelper.transformsChanged(((Node) iterator.next()));
2073         }
2074 
2075         if (type2D != null) {
2076             type2D.invalidate();
2077         }
2078 
2079         if (identity != null) {
2080             identity.invalidate();
2081         }
2082 
2083         if (internalEventDispatcher != null) {
2084             // need to validate all properties for the event to be fired next time
2085             validate();
2086             Event.fireEvent(this, new TransformChangedEvent(this, this));
2087         }
2088     }
2089 
2090     /**
2091      * Visitor from {@code Affine} class which provides an efficient
2092      * {@code append} operation for the subclasses.


< prev index next >