< prev index next >

modules/javafx.graphics/src/main/java/javafx/scene/shape/Shape3D.java

Print this page
rev 10859 : 8195788: Remove obsolete javafx.jmx module
Reviewed-by:


  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  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.shape;
  27 
  28 import com.sun.javafx.geom.BaseBounds;
  29 import com.sun.javafx.geom.BoxBounds;
  30 import com.sun.javafx.geom.transform.BaseTransform;
  31 import com.sun.javafx.jmx.MXNodeAlgorithm;
  32 import com.sun.javafx.jmx.MXNodeAlgorithmContext;
  33 import com.sun.javafx.scene.DirtyBits;
  34 import com.sun.javafx.scene.NodeHelper;
  35 import com.sun.javafx.scene.paint.MaterialHelper;
  36 import com.sun.javafx.scene.shape.Shape3DHelper;
  37 import com.sun.javafx.sg.prism.NGShape3D;
  38 import javafx.application.ConditionalFeature;
  39 import javafx.application.Platform;
  40 import javafx.beans.property.ObjectProperty;
  41 import javafx.beans.property.SimpleObjectProperty;
  42 import javafx.beans.value.ChangeListener;
  43 import javafx.beans.value.ObservableValue;
  44 import javafx.beans.value.WeakChangeListener;
  45 import javafx.scene.Node;
  46 import javafx.scene.paint.Material;
  47 import javafx.scene.paint.PhongMaterial;
  48 import sun.util.logging.PlatformLogger;
  49 
  50 
  51 /**
  52  * The {@code Shape3D} base class provides definitions of common properties for


  73 public abstract class Shape3D extends Node {
  74     static {
  75         // This is used by classes in different packages to get access to
  76         // private and package private methods.
  77         Shape3DHelper.setShape3DAccessor(new Shape3DHelper.Shape3DAccessor() {
  78             @Override
  79             public void doUpdatePeer(Node node) {
  80                 ((Shape3D) node).doUpdatePeer();
  81             }
  82 
  83             @Override
  84             public BaseBounds doComputeGeomBounds(Node node,
  85                     BaseBounds bounds, BaseTransform tx) {
  86                 return ((Shape3D) node).doComputeGeomBounds(bounds, tx);
  87             }
  88 
  89             @Override
  90             public boolean doComputeContains(Node node, double localX, double localY) {
  91                 return ((Shape3D) node).doComputeContains(localX, localY);
  92             }
  93 
  94             @Override
  95             public Object doProcessMXNode(Node node, MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) {
  96                 return ((Shape3D) node).doProcessMXNode(alg, ctx);
  97             }
  98         });
  99     }
 100 
 101     // NOTE: Need a way to specify shape tessellation resolution, may use metric relate to window resolution
 102     // Will not support dynamic refinement in FX8
 103 
 104     // TODO: 3D - May provide user convenient utility to compose images in a single image for shapes such as Box or Cylinder
 105 
 106     private static final PhongMaterial DEFAULT_MATERIAL = new PhongMaterial();
 107 
 108     protected Shape3D() {
 109         if (!Platform.isSupported(ConditionalFeature.SCENE3D)) {
 110             String logname = Shape3D.class.getName();
 111             PlatformLogger.getLogger(logname).warning("System can't support "
 112                                                       + "ConditionalFeature.SCENE3D");
 113         }
 114     }
 115 
 116     PredefinedMeshManager manager = PredefinedMeshManager.getInstance();
 117     int key = 0;


 240     private boolean doComputeContains(double localX, double localY) {
 241         return false;
 242     }
 243 
 244     /*
 245      * Note: This method MUST only be called via its accessor method.
 246      */
 247     private void doUpdatePeer() {
 248         final NGShape3D peer = NodeHelper.getPeer(this);
 249         if (NodeHelper.isDirty(this, DirtyBits.MATERIAL)) {
 250             Material mat = getMaterial() == null ? DEFAULT_MATERIAL : getMaterial();
 251             MaterialHelper.updatePG(mat); // new material should be updated
 252             peer.setMaterial(MaterialHelper.getNGMaterial(mat));
 253         }
 254         if (NodeHelper.isDirty(this, DirtyBits.NODE_DRAWMODE)) {
 255             peer.setDrawMode(getDrawMode() == null ? DrawMode.FILL : getDrawMode());
 256         }
 257         if (NodeHelper.isDirty(this, DirtyBits.NODE_CULLFACE)) {
 258             peer.setCullFace(getCullFace() == null ? CullFace.BACK : getCullFace());
 259         }
 260     }
 261 
 262     /*
 263      * Note: This method MUST only be called via its accessor method.
 264      */
 265     private Object doProcessMXNode(MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) {
 266         throw new UnsupportedOperationException("Not supported yet.");
 267     }
 268 
 269 }


  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  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.shape;
  27 
  28 import com.sun.javafx.geom.BaseBounds;
  29 import com.sun.javafx.geom.BoxBounds;
  30 import com.sun.javafx.geom.transform.BaseTransform;


  31 import com.sun.javafx.scene.DirtyBits;
  32 import com.sun.javafx.scene.NodeHelper;
  33 import com.sun.javafx.scene.paint.MaterialHelper;
  34 import com.sun.javafx.scene.shape.Shape3DHelper;
  35 import com.sun.javafx.sg.prism.NGShape3D;
  36 import javafx.application.ConditionalFeature;
  37 import javafx.application.Platform;
  38 import javafx.beans.property.ObjectProperty;
  39 import javafx.beans.property.SimpleObjectProperty;
  40 import javafx.beans.value.ChangeListener;
  41 import javafx.beans.value.ObservableValue;
  42 import javafx.beans.value.WeakChangeListener;
  43 import javafx.scene.Node;
  44 import javafx.scene.paint.Material;
  45 import javafx.scene.paint.PhongMaterial;
  46 import sun.util.logging.PlatformLogger;
  47 
  48 
  49 /**
  50  * The {@code Shape3D} base class provides definitions of common properties for


  71 public abstract class Shape3D extends Node {
  72     static {
  73         // This is used by classes in different packages to get access to
  74         // private and package private methods.
  75         Shape3DHelper.setShape3DAccessor(new Shape3DHelper.Shape3DAccessor() {
  76             @Override
  77             public void doUpdatePeer(Node node) {
  78                 ((Shape3D) node).doUpdatePeer();
  79             }
  80 
  81             @Override
  82             public BaseBounds doComputeGeomBounds(Node node,
  83                     BaseBounds bounds, BaseTransform tx) {
  84                 return ((Shape3D) node).doComputeGeomBounds(bounds, tx);
  85             }
  86 
  87             @Override
  88             public boolean doComputeContains(Node node, double localX, double localY) {
  89                 return ((Shape3D) node).doComputeContains(localX, localY);
  90             }





  91         });
  92     }
  93 
  94     // NOTE: Need a way to specify shape tessellation resolution, may use metric relate to window resolution
  95     // Will not support dynamic refinement in FX8
  96 
  97     // TODO: 3D - May provide user convenient utility to compose images in a single image for shapes such as Box or Cylinder
  98 
  99     private static final PhongMaterial DEFAULT_MATERIAL = new PhongMaterial();
 100 
 101     protected Shape3D() {
 102         if (!Platform.isSupported(ConditionalFeature.SCENE3D)) {
 103             String logname = Shape3D.class.getName();
 104             PlatformLogger.getLogger(logname).warning("System can't support "
 105                                                       + "ConditionalFeature.SCENE3D");
 106         }
 107     }
 108 
 109     PredefinedMeshManager manager = PredefinedMeshManager.getInstance();
 110     int key = 0;


 233     private boolean doComputeContains(double localX, double localY) {
 234         return false;
 235     }
 236 
 237     /*
 238      * Note: This method MUST only be called via its accessor method.
 239      */
 240     private void doUpdatePeer() {
 241         final NGShape3D peer = NodeHelper.getPeer(this);
 242         if (NodeHelper.isDirty(this, DirtyBits.MATERIAL)) {
 243             Material mat = getMaterial() == null ? DEFAULT_MATERIAL : getMaterial();
 244             MaterialHelper.updatePG(mat); // new material should be updated
 245             peer.setMaterial(MaterialHelper.getNGMaterial(mat));
 246         }
 247         if (NodeHelper.isDirty(this, DirtyBits.NODE_DRAWMODE)) {
 248             peer.setDrawMode(getDrawMode() == null ? DrawMode.FILL : getDrawMode());
 249         }
 250         if (NodeHelper.isDirty(this, DirtyBits.NODE_CULLFACE)) {
 251             peer.setCullFace(getCullFace() == null ? CullFace.BACK : getCullFace());
 252         }







 253     }
 254 
 255 }
< prev index next >