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 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 javafx.scene.CacheHint;
33 import org.junit.Test;
34
35 import static org.junit.Assert.*;
36
37 /**
38 */
39 public class CacheFilterTest {
40
41 /******************************************************************
42 * *
43 * Tests to make sure that the different cache hints get *
44 * turned into the right values for rotateHint and scaleHint. *
45 * *
46 *****************************************************************/
47
48 @Test public void settingCacheHintToDefaultInConstructor() {
49 NGRectangle r = new NGRectangle();
50 CacheFilter cf = new CacheFilter(r, CacheHint.DEFAULT);
51 assertFalse(cf.isRotateHint());
52 assertFalse(cf.isScaleHint());
53 }
54
55 @Test public void settingCacheHintToDefault() {
56 NGRectangle r = new NGRectangle();
57 CacheFilter cf = new CacheFilter(r, CacheHint.SPEED);
58 cf.setHint(CacheHint.DEFAULT);
59 assertFalse(cf.isRotateHint());
60 assertFalse(cf.isScaleHint());
61 }
62
63 @Test public void settingCacheHintToSpeedInConstructor() {
64 NGRectangle r = new NGRectangle();
65 CacheFilter cf = new CacheFilter(r, CacheHint.SPEED);
66 assertTrue(cf.isRotateHint());
67 assertTrue(cf.isScaleHint());
68 }
69
70 @Test public void settingCacheHintToSpeed() {
71 NGRectangle r = new NGRectangle();
72 CacheFilter cf = new CacheFilter(r, CacheHint.DEFAULT);
73 cf.setHint(CacheHint.SPEED);
74 assertTrue(cf.isRotateHint());
75 assertTrue(cf.isScaleHint());
76 }
77
78 @Test public void settingCacheHintToQualityInConstructor() {
79 NGRectangle r = new NGRectangle();
80 CacheFilter cf = new CacheFilter(r, CacheHint.QUALITY);
81 assertFalse(cf.isRotateHint());
82 assertFalse(cf.isScaleHint());
83 }
84
85 @Test public void settingCacheHintToQuality() {
86 NGRectangle r = new NGRectangle();
87 CacheFilter cf = new CacheFilter(r, CacheHint.SPEED);
88 cf.setHint(CacheHint.QUALITY);
89 assertFalse(cf.isRotateHint());
90 assertFalse(cf.isScaleHint());
91 }
92
93 @Test public void settingCacheHintToRotateInConstructor() {
94 NGRectangle r = new NGRectangle();
95 CacheFilter cf = new CacheFilter(r, CacheHint.ROTATE);
96 assertTrue(cf.isRotateHint());
97 assertFalse(cf.isScaleHint());
98 }
99
100 @Test public void settingCacheHintToRotate() {
101 NGRectangle r = new NGRectangle();
102 CacheFilter cf = new CacheFilter(r, CacheHint.DEFAULT);
103 cf.setHint(CacheHint.ROTATE);
104 assertTrue(cf.isRotateHint());
105 assertFalse(cf.isScaleHint());
106 }
107
108 @Test public void settingCacheHintToScaleInConstructor() {
109 NGRectangle r = new NGRectangle();
110 CacheFilter cf = new CacheFilter(r, CacheHint.SCALE);
111 assertFalse(cf.isRotateHint());
112 assertTrue(cf.isScaleHint());
113 }
114
115 @Test public void settingCacheHintToScale() {
116 NGRectangle r = new NGRectangle();
117 CacheFilter cf = new CacheFilter(r, CacheHint.DEFAULT);
118 cf.setHint(CacheHint.SCALE);
119 assertFalse(cf.isRotateHint());
120 assertTrue(cf.isScaleHint());
121 }
122
123 @Test public void settingCacheHintToScaleAndRotateInConstructor() {
124 NGRectangle r = new NGRectangle();
125 CacheFilter cf = new CacheFilter(r, CacheHint.SCALE_AND_ROTATE);
126 assertTrue(cf.isRotateHint());
127 assertTrue(cf.isScaleHint());
128 }
129
130 @Test public void settingCacheHintToScaleAndRotate() {
131 NGRectangle r = new NGRectangle();
132 CacheFilter cf = new CacheFilter(r, CacheHint.DEFAULT);
133 cf.setHint(CacheHint.SCALE_AND_ROTATE);
134 assertTrue(cf.isRotateHint());
135 assertTrue(cf.isScaleHint());
136 }
137
138 @Test public void cacheFilterReturnsCorrectDirtyBounds() {
139
140 NGRectangle r = new NGRectangle();
141 r.updateRectangle(0.3f, 0.9f, 100.3f, 119.9f, 0, 0);
142 r.setTransformMatrix(BaseTransform.IDENTITY_TRANSFORM);
143 r.setTransformedBounds(new RectBounds(0.3f, 0.9f, 100.6f, 120.8f), false);
144 CacheFilter cf = new CacheFilter(r, CacheHint.DEFAULT);
145 RectBounds result = new RectBounds();
146 cf.computeDirtyBounds(result, BaseTransform.IDENTITY_TRANSFORM, new GeneralTransform3D());
147 assertEquals(new RectBounds(0, 0, 101, 121), result);
148
149 r.clearDirty();
150
151 final Translate2D translation = new Translate2D(10, 10);
152 r.setTransformMatrix(translation);
153 r.setTransformedBounds(new RectBounds(10.3f, 10, 110.6f, 130.8f), false);
154 cf.computeDirtyBounds(result, BaseTransform.IDENTITY_TRANSFORM, new GeneralTransform3D());
155 assertEquals(new RectBounds(0, 0, 111, 131), result);
156 }
157 }
|
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 }
|