/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. * * 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, * this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * * Neither the name of Sun Microsystems 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.Group; import javafx.scene.text.Text; import javafx.scene.paint.Color; import javafx.scene.paint.Stop; import javafx.scene.paint.LinearGradient; import javafx.scene.shape.Circle; import javafx.scene.shape.Line; 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; Stage { title: "Transformations" width: 250 height: 300 scene: Scene{ fill: Color.WHITE content:[ VBox{ spacing: 10 content: [ // Rotated graphics HBox{ spacing: 10 content: [ for (angle in [2, 4]){ Path{ stroke: null transforms: Rotate { angle: bind angle * 60 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 //Translated text HBox{ spacing: 10 content:[ for (delta in [10, 20, 30]){ Text{ content:"Translation" transforms: Transform.translate(delta / 2, delta); }//Text }//for ] },//HBox //Transformed image, shear transformation HBox{ content:[ for (value in [1, 2]){ ImageView{ transforms: Shear { x: value / 2, y: value / 3 }; image: Image{ url: "{__DIR__}strawberry.jpg" } }//ImageView }//for ] },//HBox //Scalable graphics HBox{ spacing: 15 content:[ for (scale in [1, 1.5, 2]) { Group{ content:[ Circle{ centerX: 20 centerY:20 radius:20 fill: Color.RED}, Line { startX: 10 startY: 10 endX: 30 endY: 30 stroke: Color.WHITE strokeWidth: 2}, Line { startX: 10 startY: 30 endX: 30 endY: 10 stroke: Color.WHITE strokeWidth: 2} ] opacity: 0.8 transforms: Transform.scale(scale, scale); }//Group }//for ] },//HBox //Transformed image, perspective transformation ]//content } //VBox ] }//Scene }//Stage