/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * Copyright © 2010, Oracle and/or its affiliates. All rights reserved. * Oracle is a registered trademark of Oracle Corporation and/or its affiliates. * Oracle and Java are registered trademarks of Oracle and/or its affiliates. * Other names may be trademarks of their respective owners. * * This file is available and licensed under the following license: * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, trademark notice, this list of conditions, and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, trademark notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * * Neither the name of Oracle nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.scene.paint.Color; import javafx.scene.paint.Stop; import javafx.scene.paint.LinearGradient; import javafx.scene.shape.Path; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.ArcTo; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.transform.Transform; import javafx.scene.transform.Rotate; import javafx.scene.transform.Shear; import javafx.geometry.Insets; import javafx.geometry.VPos; def image1 = Image{url: "{__DIR__}strawberry.jpg"}; def image2 = Image{url: "{__DIR__}ok.png"}; Stage { title: "Transformations" width: 240 height: 350 scene: Scene{ fill: Color.WHITE content:[ VBox{ spacing: 20 content: [ // Rotated graphics HBox{ padding: Insets{top: 10 left: 20} spacing: 50 content: [ for (angle in [2, 4]){ Path{ stroke: null transforms: Rotate { angle: angle * 40 pivotX: 40 pivotY: 40 }; fill: LinearGradient { startX:60, startY:10, endX:10 endY:80 , proportional: false stops: [ Stop {offset: 0.0 color: Color.DODGERBLUE}, Stop {offset: 0.5 color: Color.LIGHTSKYBLUE}, Stop {offset: 1.0 color: Color.WHITE} ] } elements: [ MoveTo {x: 40 y: 10 }, LineTo {x: 60 y: 30}, LineTo {x: 40 y: 50 }, LineTo {x: 40 y: 40 }, ArcTo {x: 40 y: 80 radiusX: 20 radiusY: 20}, ArcTo {x: 40 y: 20 radiusX: 30 radiusY: 30 sweepFlag: true}, LineTo {x: 40 y:10} ] } //Path }//for ] },//HBox //Transformed image, shear transformation HBox{ content:[ for (value in [1, 2]){ ImageView{ transforms: Shear { x: value / 2, y: value / 3 }; image: image1 }//ImageView }//for ] },//HBox //Scalable graphics HBox{ padding: Insets{left: 10} spacing: 45 vpos: VPos.CENTER content:[ for (scale in [0.8, 1, 1.2]) { ImageView{ image: image2 transforms: Transform.scale(scale, scale); }//Group }//for ] },//HBox //Translated text HBox{ spacing: 10 content:[ for (delta in [10, 20, 30]){ Text{ content:"Translation" transforms: Transform.translate(delta / 2, delta); }//Text }//for ] },//HBox ]//content } //VBox ] }//Scene }//Stage