1 /* 2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 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 test.com.sun.javafx.sg.prism; 27 28 import com.sun.javafx.geom.RectBounds; 29 import com.sun.javafx.geom.transform.BaseTransform; 30 import com.sun.javafx.geom.transform.GeneralTransform3D; 31 import com.sun.javafx.geom.transform.Translate2D; 32 import com.sun.javafx.sg.prism.CacheFilter; 33 import com.sun.javafx.sg.prism.CacheFilterShim; 34 import com.sun.javafx.sg.prism.NGNodeShim; 35 import com.sun.javafx.sg.prism.NGRectangle; 36 import javafx.scene.CacheHint; 37 import org.junit.Test; 38 39 import static org.junit.Assert.*; 40 41 /** 42 */ 43 public class CacheFilterTest { 44 45 /****************************************************************** 46 * * 47 * Tests to make sure that the different cache hints get * 48 * turned into the right values for rotateHint and scaleHint. * 49 * * 50 *****************************************************************/ 51 52 @Test public void settingCacheHintToDefaultInConstructor() { 53 NGRectangle r = new NGRectangle(); 54 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.DEFAULT); 55 assertFalse(CacheFilterShim.isRotateHint(cf)); 56 assertFalse(CacheFilterShim.isScaleHint(cf)); 57 } 58 59 @Test public void settingCacheHintToDefault() { 60 NGRectangle r = new NGRectangle(); 61 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.SPEED); 62 cf.setHint(CacheHint.DEFAULT); 63 assertFalse(CacheFilterShim.isRotateHint(cf)); 64 assertFalse(CacheFilterShim.isScaleHint(cf)); 65 } 66 67 @Test public void settingCacheHintToSpeedInConstructor() { 68 NGRectangle r = new NGRectangle(); 69 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.SPEED); 70 assertTrue(CacheFilterShim.isRotateHint(cf)); 71 assertTrue(CacheFilterShim.isScaleHint(cf)); 72 } 73 74 @Test public void settingCacheHintToSpeed() { 75 NGRectangle r = new NGRectangle(); 76 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.DEFAULT); 77 cf.setHint(CacheHint.SPEED); 78 assertTrue(CacheFilterShim.isRotateHint(cf)); 79 assertTrue(CacheFilterShim.isScaleHint(cf)); 80 } 81 82 @Test public void settingCacheHintToQualityInConstructor() { 83 NGRectangle r = new NGRectangle(); 84 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.QUALITY); 85 assertFalse(CacheFilterShim.isRotateHint(cf)); 86 assertFalse(CacheFilterShim.isScaleHint(cf)); 87 } 88 89 @Test public void settingCacheHintToQuality() { 90 NGRectangle r = new NGRectangle(); 91 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.SPEED); 92 cf.setHint(CacheHint.QUALITY); 93 assertFalse(CacheFilterShim.isRotateHint(cf)); 94 assertFalse(CacheFilterShim.isScaleHint(cf)); 95 } 96 97 @Test public void settingCacheHintToRotateInConstructor() { 98 NGRectangle r = new NGRectangle(); 99 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.ROTATE); 100 assertTrue(CacheFilterShim.isRotateHint(cf)); 101 assertFalse(CacheFilterShim.isScaleHint(cf)); 102 } 103 104 @Test public void settingCacheHintToRotate() { 105 NGRectangle r = new NGRectangle(); 106 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.DEFAULT); 107 cf.setHint(CacheHint.ROTATE); 108 assertTrue(CacheFilterShim.isRotateHint(cf)); 109 assertFalse(CacheFilterShim.isScaleHint(cf)); 110 } 111 112 @Test public void settingCacheHintToScaleInConstructor() { 113 NGRectangle r = new NGRectangle(); 114 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.SCALE); 115 assertFalse(CacheFilterShim.isRotateHint(cf)); 116 assertTrue(CacheFilterShim.isScaleHint(cf)); 117 } 118 119 @Test public void settingCacheHintToScale() { 120 NGRectangle r = new NGRectangle(); 121 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.DEFAULT); 122 cf.setHint(CacheHint.SCALE); 123 assertFalse(CacheFilterShim.isRotateHint(cf)); 124 assertTrue(CacheFilterShim.isScaleHint(cf)); 125 } 126 127 @Test public void settingCacheHintToScaleAndRotateInConstructor() { 128 NGRectangle r = new NGRectangle(); 129 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.SCALE_AND_ROTATE); 130 assertTrue(CacheFilterShim.isRotateHint(cf)); 131 assertTrue(CacheFilterShim.isScaleHint(cf)); 132 } 133 134 @Test public void settingCacheHintToScaleAndRotate() { 135 NGRectangle r = new NGRectangle(); 136 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.DEFAULT); 137 cf.setHint(CacheHint.SCALE_AND_ROTATE); 138 assertTrue(CacheFilterShim.isRotateHint(cf)); 139 assertTrue(CacheFilterShim.isScaleHint(cf)); 140 } 141 142 @Test public void cacheFilterReturnsCorrectDirtyBounds() { 143 144 NGRectangle r = new NGRectangle(); 145 r.updateRectangle(0.3f, 0.9f, 100.3f, 119.9f, 0, 0); 146 r.setTransformMatrix(BaseTransform.IDENTITY_TRANSFORM); 147 r.setTransformedBounds(new RectBounds(0.3f, 0.9f, 100.6f, 120.8f), false); 148 CacheFilter cf = CacheFilterShim.getCacheFilter(r, CacheHint.DEFAULT); 149 RectBounds result = new RectBounds(); 150 CacheFilterShim.computeDirtyBounds(cf, result, BaseTransform.IDENTITY_TRANSFORM, new GeneralTransform3D()); 151 assertEquals(new RectBounds(0, 0, 101, 121), result); 152 153 NGNodeShim.clearDirty(r); 154 155 final Translate2D translation = new Translate2D(10, 10); 156 r.setTransformMatrix(translation); 157 r.setTransformedBounds(new RectBounds(10.3f, 10, 110.6f, 130.8f), false); 158 CacheFilterShim.computeDirtyBounds(cf, result, BaseTransform.IDENTITY_TRANSFORM, new GeneralTransform3D()); 159 assertEquals(new RectBounds(0, 0, 111, 131), result); 160 } 161 }