6699843: IllegalArgumentException when using Graphics.drawString( "", 0, 0 )
Reviewed-by: igor, tdv
This commit is contained in:
parent
faadc39966
commit
6014ce6668
@ -2805,6 +2805,9 @@ public final class SunGraphics2D
|
||||
}
|
||||
|
||||
if (font.hasLayoutAttributes()) {
|
||||
if (str.length() == 0) {
|
||||
return;
|
||||
}
|
||||
new TextLayout(str, font, getFontRenderContext()).draw(this, x, y);
|
||||
return;
|
||||
}
|
||||
@ -2831,6 +2834,9 @@ public final class SunGraphics2D
|
||||
}
|
||||
|
||||
if (font.hasLayoutAttributes()) {
|
||||
if (str.length() == 0) {
|
||||
return;
|
||||
}
|
||||
new TextLayout(str, font, getFontRenderContext()).draw(this, x, y);
|
||||
return;
|
||||
}
|
||||
@ -2856,6 +2862,9 @@ public final class SunGraphics2D
|
||||
if (iterator == null) {
|
||||
throw new NullPointerException("AttributedCharacterIterator is null");
|
||||
}
|
||||
if (iterator.getBeginIndex() == iterator.getEndIndex()) {
|
||||
return; /* nothing to draw */
|
||||
}
|
||||
TextLayout tl = new TextLayout(iterator, getFontRenderContext());
|
||||
tl.draw(this, (float) x, (float) y);
|
||||
}
|
||||
@ -2865,6 +2874,9 @@ public final class SunGraphics2D
|
||||
if (iterator == null) {
|
||||
throw new NullPointerException("AttributedCharacterIterator is null");
|
||||
}
|
||||
if (iterator.getBeginIndex() == iterator.getEndIndex()) {
|
||||
return; /* nothing to draw */
|
||||
}
|
||||
TextLayout tl = new TextLayout(iterator, getFontRenderContext());
|
||||
tl.draw(this, x, y);
|
||||
}
|
||||
@ -2900,6 +2912,9 @@ public final class SunGraphics2D
|
||||
throw new ArrayIndexOutOfBoundsException("bad offset/length");
|
||||
}
|
||||
if (font.hasLayoutAttributes()) {
|
||||
if (data.length == 0) {
|
||||
return;
|
||||
}
|
||||
new TextLayout(new String(data, offset, length),
|
||||
font, getFontRenderContext()).draw(this, x, y);
|
||||
return;
|
||||
@ -2934,6 +2949,9 @@ public final class SunGraphics2D
|
||||
chData[i] = (char)(data[i+offset] & 0xff);
|
||||
}
|
||||
if (font.hasLayoutAttributes()) {
|
||||
if (data.length == 0) {
|
||||
return;
|
||||
}
|
||||
new TextLayout(new String(chData),
|
||||
font, getFontRenderContext()).draw(this, x, y);
|
||||
return;
|
||||
|
58
jdk/test/java/awt/Graphics2D/DrawString/EmptyAttrString.java
Normal file
58
jdk/test/java/awt/Graphics2D/DrawString/EmptyAttrString.java
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 6699843
|
||||
* @summary IllegalArgumentException when using Graphics.drawString( "", 0, 0 )
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.font.*;
|
||||
import java.awt.image.*;
|
||||
import java.text.*;
|
||||
import java.util.*;
|
||||
|
||||
public class EmptyAttrString {
|
||||
|
||||
public static void main(String[] args) {
|
||||
BufferedImage bi =
|
||||
new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
|
||||
Graphics2D g = bi.createGraphics();
|
||||
Font f = new Font( "Dialog", Font.PLAIN, 12 );
|
||||
Map map = new HashMap();
|
||||
map.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
|
||||
f = f.deriveFont(map);
|
||||
g.setFont(f);
|
||||
g.drawString("", 50, 50);
|
||||
g.drawString("", 50f, 50f);
|
||||
char[] chs = { } ;
|
||||
g.drawChars(chs, 0, 0, 50, 50);
|
||||
byte[] bytes = { } ;
|
||||
g.drawBytes(bytes, 0, 0, 50, 50);
|
||||
AttributedString astr = new AttributedString("");
|
||||
g.drawString(astr.getIterator(), 50, 50);
|
||||
g.drawString(astr.getIterator(), 50f, 50f);
|
||||
return;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user