diff --git a/build.xml b/build.xml index 9e2148fb2..29a7b5448 100644 --- a/build.xml +++ b/build.xml @@ -275,6 +275,7 @@ Main targets: + @@ -293,6 +294,7 @@ Main targets: + @@ -307,6 +309,7 @@ Main targets: + @@ -341,6 +344,7 @@ Main targets: + @@ -376,6 +380,7 @@ Main targets: + diff --git a/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java b/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java index fa8065a44..d2ee6f653 100644 --- a/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java +++ b/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java @@ -253,9 +253,9 @@ public class EscherGraphics excelFont = new Font( font.getName(), font.getStyle(), (int) ( font.getSize() / verticalPixelsPerPoint )); } FontDetails d = StaticFontMetrics.getFontDetails( excelFont ); - int width = (int) ( (d.getStringWidth( str ) * 2.5) + 12 ); - int height = (int) ( ( font.getSize() * 2.0 * verticalPixelsPerPoint ) + 6 ); - y -= ( font.getSize() * verticalPixelsPerPoint ); // we want to draw the shape from the top-left + int width = (int) ( (d.getStringWidth( str ) * 8) + 12 ); + int height = (int) ( ( font.getSize() / verticalPixelsPerPoint ) + 6 ) * 2; + y -= ( font.getSize() / verticalPixelsPerPoint ) + 2 * verticalPixelsPerPoint; // we want to draw the shape from the top-left HSSFTextbox textbox = escherGroup.createTextbox( new HSSFChildAnchor( x, y, x + width, y + height ) ); textbox.setNoFill( true ); textbox.setLineStyle( HSSFShape.LINESTYLE_NONE ); diff --git a/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java b/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java index 336b961f4..71e02add6 100644 --- a/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java +++ b/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics.java @@ -27,11 +27,15 @@ public class TestEscherGraphics extends TestCase public void testGetFont() throws Exception { Font f = graphics.getFont(); - assertEquals("java.awt.Font[family=Arial,name=Arial,style=plain,size=10]", f.toString()); + if (f.toString().indexOf("dialog") == -1) + assertEquals("java.awt.Font[family=Arial,name=Arial,style=plain,size=10]", f.toString()); } public void testGetFontMetrics() throws Exception { + Font f = graphics.getFont(); + if (f.toString().indexOf("dialog") != -1) + return; FontMetrics fontMetrics = graphics.getFontMetrics(graphics.getFont()); assertEquals(7, fontMetrics.charWidth('X')); assertEquals("java.awt.Font[family=Arial,name=Arial,style=plain,size=10]", fontMetrics.getFont().toString()); diff --git a/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics2d.java b/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics2d.java index 22f0e28c4..3f77c8b95 100644 --- a/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics2d.java +++ b/src/java/org/apache/poi/hssf/usermodel/TestEscherGraphics2d.java @@ -49,6 +49,8 @@ public class TestEscherGraphics2d extends TestCase public void testGetFontMetrics() throws Exception { FontMetrics fontMetrics = graphics.getFontMetrics(graphics.getFont()); + if (graphics.getFont().toString().indexOf("dialog") != -1) // if dialog is returned we can't run the test properly. + return; assertEquals(7, fontMetrics.charWidth('X')); assertEquals("java.awt.Font[family=Arial,name=Arial,style=plain,size=10]", fontMetrics.getFont().toString()); } @@ -69,6 +71,9 @@ public class TestEscherGraphics2d extends TestCase public void testGetFont() throws Exception { Font f = graphics.getFont(); + if (graphics.getFont().toString().indexOf("dialog") != -1) // if dialog is returned we can't run the test properly. + return; + assertEquals("java.awt.Font[family=Arial,name=Arial,style=plain,size=10]", f.toString()); } }