From bea0a04d24c668161a19180b48576e4da04ad266 Mon Sep 17 00:00:00 2001 From: Glen Stampoultzis Date: Sat, 29 Apr 2006 00:18:16 +0000 Subject: [PATCH] Support for line thicknes through escher graphics 2d interface. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@398044 13f79535-47bb-0310-9956-ffa450edef68 --- .../examples/OfficeDrawingWithGraphics.java | 1 + .../poi/hssf/usermodel/EscherGraphics.java | 14 ++++++++--- .../poi/hssf/usermodel/EscherGraphics2d.java | 24 ++++++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawingWithGraphics.java b/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawingWithGraphics.java index 8d656a952..70823ca4c 100644 --- a/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawingWithGraphics.java +++ b/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawingWithGraphics.java @@ -91,6 +91,7 @@ public class OfficeDrawingWithGraphics int y1 = (int) ( Math.sin(i) * 138.0 ) + 138; int x2 = (int) ( -Math.cos(i) * 160.0 ) + 160; int y2 = (int) ( -Math.sin(i) * 138.0 ) + 138; + g2d.setStroke(new BasicStroke(2)); g2d.drawLine(x1,y1,x2,y2); } g2d.setFont(new Font("SansSerif",Font.BOLD | Font.ITALIC, 20)); diff --git a/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java b/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java index 0bf84d885..6b898ce96 100644 --- a/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java +++ b/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java @@ -16,9 +16,9 @@ package org.apache.poi.hssf.usermodel; +import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; -import org.apache.poi.hssf.util.HSSFColor; import java.awt.*; import java.awt.image.ImageObserver; @@ -203,10 +203,15 @@ public class EscherGraphics } public void drawLine(int x1, int y1, int x2, int y2) + { + drawLine(x1,y1,x2,y2,0); + } + + public void drawLine(int x1, int y1, int x2, int y2, int width) { HSSFSimpleShape shape = escherGroup.createShape(new HSSFChildAnchor(x1, y1, x2, y2) ); shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE); - shape.setLineWidth(0); + shape.setLineWidth(width); shape.setLineStyleColor(foreground.getRed(), foreground.getGreen(), foreground.getBlue()); } @@ -475,6 +480,9 @@ public class EscherGraphics this.background = background; } - + HSSFShapeGroup getEscherGraphics() + { + return escherGroup; + } } diff --git a/src/java/org/apache/poi/hssf/usermodel/EscherGraphics2d.java b/src/java/org/apache/poi/hssf/usermodel/EscherGraphics2d.java index 0d2cd16aa..e9bd19aa3 100644 --- a/src/java/org/apache/poi/hssf/usermodel/EscherGraphics2d.java +++ b/src/java/org/apache/poi/hssf/usermodel/EscherGraphics2d.java @@ -23,7 +23,10 @@ import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.font.GlyphVector; import java.awt.font.TextLayout; -import java.awt.geom.*; +import java.awt.geom.AffineTransform; +import java.awt.geom.Area; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; import java.awt.image.BufferedImage; import java.awt.image.BufferedImageOp; import java.awt.image.ImageObserver; @@ -142,7 +145,13 @@ public class EscherGraphics2d extends Graphics2D if (shape instanceof Line2D) { Line2D shape2d = (Line2D) shape; - drawLine((int)shape2d.getX1(), (int)shape2d.getY1(), (int)shape2d.getX2(), (int)shape2d.getY2()); + + int width = 0; + if (stroke != null && stroke instanceof BasicStroke) { + width = (int) ((BasicStroke)stroke).getLineWidth() * 12700; + } + + drawLine((int)shape2d.getX1(), (int)shape2d.getY1(), (int)shape2d.getX2(), (int)shape2d.getY2(), width); } else { @@ -216,9 +225,18 @@ public class EscherGraphics2d extends Graphics2D drawImage(((Image) (img)), new AffineTransform(1.0F, 0.0F, 0.0F, 1.0F, x, y), null); } + public void drawLine(int x1, int y1, int x2, int y2, int width) + { + getEscherGraphics().drawLine(x1,y1,x2,y2, width); + } + public void drawLine(int x1, int y1, int x2, int y2) { - getEscherGraphics().drawLine(x1,y1,x2,y2); + int width = 0; + if (stroke != null && stroke instanceof BasicStroke) { + width = (int) ((BasicStroke)stroke).getLineWidth() * 12700; + } + getEscherGraphics().drawLine(x1,y1,x2,y2, width); // draw(new GeneralPath(new java.awt.geom.Line2D.Float(x1, y1, x2, y2))); }