< prev index next >

modules/graphics/src/main/java/javafx/scene/image/ImageView.java

Print this page




 755 
 756         if (vw > 0 && vh > 0) {
 757             viewWidth = vw;
 758             viewHeight = vh;
 759         }
 760 
 761         // desWidth Note and destHeight are computed by impl_computeGeomBounds()
 762         // via a call from Node.contains() before calling
 763         // impl_computeContains().
 764         // Transform into image's coordinate system.
 765         dx = vminx + dx * viewWidth / destWidth;
 766         dy = vminy + dy * viewHeight / destHeight;
 767         // test whether it's inside the original image AND inside of viewport
 768         // (viewport may stick out from the image bounds)
 769         if (dx < 0.0 || dy < 0.0 || dx >= srcWidth || dy >= srcHeight ||
 770                 dx < vminx || dy < vminy ||
 771                 dx >= vminx + viewWidth || dy >= vminy + viewHeight) {
 772             return false;
 773         }
 774         // Do alpha test on the picked pixel.
 775         return Toolkit.getToolkit().imageContains(localImage.impl_getPlatformImage(), (float)dx, (float)dy);

 776     }
 777 
 778     /***************************************************************************
 779      * * Stylesheet Handling * *
 780      **************************************************************************/
 781 
 782     private static final String DEFAULT_STYLE_CLASS = "image-view";
 783 
 784      /**
 785       * Super-lazy instantiation pattern from Bill Pugh.
 786       * @treatAsPrivate implementation detail
 787       */
 788      private static class StyleableProperties {
 789         // TODO
 790         // "preserve-ratio","smooth","viewport","fit-width","fit-height"
 791          private static final CssMetaData<ImageView, String> IMAGE =
 792             new CssMetaData<ImageView,String>("-fx-image",
 793                 URLConverter.getInstance()) {
 794 
 795             @Override


 819      * @since JavaFX 8.0
 820      */
 821     public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
 822         return StyleableProperties.STYLEABLES;
 823     }
 824 
 825     /**
 826      * {@inheritDoc}
 827      *
 828      * @since JavaFX 8.0
 829      */
 830 
 831 
 832     @Override
 833     public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() {
 834         return getClassCssMetaData();
 835     }
 836 
 837     void updateViewport() {
 838         recomputeWidthHeight();
 839         if (getImage() == null || getImage().impl_getPlatformImage() == null) {
 840             return;
 841         }
 842 
 843         Rectangle2D localViewport = getViewport();
 844         final NGImageView peer = impl_getPeer();
 845         if (localViewport != null) {
 846             peer.setViewport((float)localViewport.getMinX(), (float)localViewport.getMinY(),
 847                     (float)localViewport.getWidth(), (float)localViewport.getHeight(),
 848                     (float)destWidth, (float)destHeight);
 849         } else {
 850             peer.setViewport(0, 0, 0, 0, (float)destWidth, (float)destHeight);
 851         }
 852     }
 853 
 854     /**
 855      * @treatAsPrivate implementation detail
 856      * @deprecated This is an internal API that is not intended for use and will be removed in the next version
 857      */
 858     @Deprecated
 859     @Override public void impl_updatePeer() {
 860         super.impl_updatePeer();
 861 
 862         final NGImageView peer = impl_getPeer();
 863         if (impl_isDirty(DirtyBits.NODE_GEOMETRY)) {
 864             peer.setX((float)getX());
 865             peer.setY((float)getY());
 866         }
 867         if (impl_isDirty(DirtyBits.NODE_SMOOTH)) {
 868             peer.setSmooth(isSmooth());
 869         }
 870         if (impl_isDirty(DirtyBits.NODE_CONTENTS)) {
 871             peer.setImage(getImage()!= null? getImage().impl_getPlatformImage():null);

 872         }
 873         // The NG part expects this to be called when image changes
 874         if (impl_isDirty(DirtyBits.NODE_VIEWPORT) || impl_isDirty(DirtyBits.NODE_CONTENTS)) {
 875             updateViewport();
 876         }
 877     }
 878 
 879     /**
 880      * @treatAsPrivate implementation detail
 881      * @deprecated This is an internal API that is not intended for use and will be removed in the next version
 882      */
 883     @Deprecated
 884     @Override public Object impl_processMXNode(MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) {
 885         return alg.processLeafNode(this, ctx);
 886     }
 887 }


 755 
 756         if (vw > 0 && vh > 0) {
 757             viewWidth = vw;
 758             viewHeight = vh;
 759         }
 760 
 761         // desWidth Note and destHeight are computed by impl_computeGeomBounds()
 762         // via a call from Node.contains() before calling
 763         // impl_computeContains().
 764         // Transform into image's coordinate system.
 765         dx = vminx + dx * viewWidth / destWidth;
 766         dy = vminy + dy * viewHeight / destHeight;
 767         // test whether it's inside the original image AND inside of viewport
 768         // (viewport may stick out from the image bounds)
 769         if (dx < 0.0 || dy < 0.0 || dx >= srcWidth || dy >= srcHeight ||
 770                 dx < vminx || dy < vminy ||
 771                 dx >= vminx + viewWidth || dy >= vminy + viewHeight) {
 772             return false;
 773         }
 774         // Do alpha test on the picked pixel.
 775         return Toolkit.getToolkit().imageContains(
 776                 Toolkit.getImageAccessor().getPlatformImage(localImage), (float)dx, (float)dy);
 777     }
 778 
 779     /***************************************************************************
 780      * * Stylesheet Handling * *
 781      **************************************************************************/
 782 
 783     private static final String DEFAULT_STYLE_CLASS = "image-view";
 784 
 785      /**
 786       * Super-lazy instantiation pattern from Bill Pugh.
 787       * @treatAsPrivate implementation detail
 788       */
 789      private static class StyleableProperties {
 790         // TODO
 791         // "preserve-ratio","smooth","viewport","fit-width","fit-height"
 792          private static final CssMetaData<ImageView, String> IMAGE =
 793             new CssMetaData<ImageView,String>("-fx-image",
 794                 URLConverter.getInstance()) {
 795 
 796             @Override


 820      * @since JavaFX 8.0
 821      */
 822     public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
 823         return StyleableProperties.STYLEABLES;
 824     }
 825 
 826     /**
 827      * {@inheritDoc}
 828      *
 829      * @since JavaFX 8.0
 830      */
 831 
 832 
 833     @Override
 834     public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() {
 835         return getClassCssMetaData();
 836     }
 837 
 838     void updateViewport() {
 839         recomputeWidthHeight();
 840         if (getImage() == null || Toolkit.getImageAccessor().getPlatformImage(getImage()) == null) {
 841             return;
 842         }
 843 
 844         Rectangle2D localViewport = getViewport();
 845         final NGImageView peer = impl_getPeer();
 846         if (localViewport != null) {
 847             peer.setViewport((float)localViewport.getMinX(), (float)localViewport.getMinY(),
 848                     (float)localViewport.getWidth(), (float)localViewport.getHeight(),
 849                     (float)destWidth, (float)destHeight);
 850         } else {
 851             peer.setViewport(0, 0, 0, 0, (float)destWidth, (float)destHeight);
 852         }
 853     }
 854 
 855     /**
 856      * @treatAsPrivate implementation detail
 857      * @deprecated This is an internal API that is not intended for use and will be removed in the next version
 858      */
 859     @Deprecated
 860     @Override public void impl_updatePeer() {
 861         super.impl_updatePeer();
 862 
 863         final NGImageView peer = impl_getPeer();
 864         if (impl_isDirty(DirtyBits.NODE_GEOMETRY)) {
 865             peer.setX((float)getX());
 866             peer.setY((float)getY());
 867         }
 868         if (impl_isDirty(DirtyBits.NODE_SMOOTH)) {
 869             peer.setSmooth(isSmooth());
 870         }
 871         if (impl_isDirty(DirtyBits.NODE_CONTENTS)) {
 872             peer.setImage(getImage() != null
 873                     ? Toolkit.getImageAccessor().getPlatformImage(getImage()) : null);
 874         }
 875         // The NG part expects this to be called when image changes
 876         if (impl_isDirty(DirtyBits.NODE_VIEWPORT) || impl_isDirty(DirtyBits.NODE_CONTENTS)) {
 877             updateViewport();
 878         }
 879     }
 880 
 881     /**
 882      * @treatAsPrivate implementation detail
 883      * @deprecated This is an internal API that is not intended for use and will be removed in the next version
 884      */
 885     @Deprecated
 886     @Override public Object impl_processMXNode(MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) {
 887         return alg.processLeafNode(this, ctx);
 888     }
 889 }
< prev index next >