1 /* 2 * Copyright (c) 2005, 2007, 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. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 /* @test 24 * @summary verify TextLayout.getBounds() return visual bounds 25 * @bug 6323611 6761856 26 */ 27 28 import java.awt.*; 29 import java.awt.font.*; 30 import java.awt.geom.*; 31 32 public class TextLayoutBounds { 33 main(String args[])34 public static void main(String args[]) { 35 FontRenderContext frc = new FontRenderContext(null, false, false); 36 Font f = new Font("SansSerif",Font.BOLD,32); 37 String s = new String("JAVA"); 38 TextLayout tl = new TextLayout(s, f, frc); 39 Rectangle2D tlBounds = tl.getBounds(); 40 GlyphVector gv = f.createGlyphVector(frc, s); 41 Rectangle2D gvvBounds = gv.getVisualBounds(); 42 Rectangle2D oBounds = tl.getOutline(null).getBounds2D(); 43 System.out.println("tlbounds="+tlBounds); 44 System.out.println("gvbounds="+gvvBounds); 45 System.out.println("outlineBounds="+oBounds); 46 if (!gvvBounds.equals(tlBounds)) { 47 throw new RuntimeException("Bounds differ [gvv != tl]"); 48 } 49 if (!tlBounds.equals(oBounds)) { 50 throw new RuntimeException("Bounds differ [tl != outline]"); 51 } 52 } 53 } 54