]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #45956:
authorJeremias Maerki <jeremias@apache.org>
Mon, 20 Oct 2008 15:11:08 +0000 (15:11 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 20 Oct 2008 15:11:08 +0000 (15:11 +0000)
Minimal support for leader-pattern="rule" for PCL output.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@706319 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/render/pcl/PCLRenderer.java

index 5896ad3182bf238d17ef39f02c435a8d4f657cf2..5aad343910b5b0a337b3202b2b48918866b37be3 100644 (file)
@@ -59,6 +59,7 @@ import org.apache.xmlgraphics.image.loader.util.ImageUtil;
 import org.apache.xmlgraphics.java2d.GraphicContext;
 import org.apache.xmlgraphics.java2d.Graphics2DImagePainter;
 import org.apache.xmlgraphics.util.QName;
+import org.apache.xmlgraphics.util.UnitConv;
 
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.MimeConstants;
@@ -74,6 +75,7 @@ import org.apache.fop.area.inline.AbstractTextArea;
 import org.apache.fop.area.inline.ForeignObject;
 import org.apache.fop.area.inline.Image;
 import org.apache.fop.area.inline.InlineArea;
+import org.apache.fop.area.inline.Leader;
 import org.apache.fop.area.inline.SpaceArea;
 import org.apache.fop.area.inline.TextArea;
 import org.apache.fop.area.inline.Viewport;
@@ -97,7 +99,6 @@ import org.apache.fop.render.java2d.InstalledFontCollection;
 import org.apache.fop.render.java2d.Java2DRenderer;
 import org.apache.fop.render.pcl.extensions.PCLElementMapping;
 import org.apache.fop.traits.BorderProps;
-import org.apache.xmlgraphics.util.UnitConv;
 
 /* Note:
  * There are some commonalities with AbstractPathOrientedRenderer but it's not possible
@@ -1658,6 +1659,37 @@ public class PCLRenderer extends PrintRenderer {
         }
     }
 
+    /** {@inheritDoc} */
+    public void renderLeader(Leader area) {
+        renderInlineAreaBackAndBorders(area);
+
+        saveGraphicsState();
+        int style = area.getRuleStyle();
+        float startx = (currentIPPosition + area.getBorderAndPaddingWidthStart()) / 1000f;
+        float starty = (currentBPPosition + area.getOffset()) / 1000f;
+        float endx = (currentIPPosition + area.getBorderAndPaddingWidthStart()
+                        + area.getIPD()) / 1000f;
+        float ruleThickness = area.getRuleThickness() / 1000f;
+        Color col = (Color)area.getTrait(Trait.COLOR);
+
+        switch (style) {
+            case EN_SOLID:
+            case EN_DASHED: //TODO Improve me and following (this is just a quick-fix ATM)
+            case EN_DOUBLE:
+            case EN_DOTTED:
+            case EN_GROOVE:
+            case EN_RIDGE:
+                updateFillColor(col);
+                fillRect(startx, starty, endx - startx, ruleThickness);
+                break;
+            default:
+                throw new UnsupportedOperationException("rule style not supported");
+        }
+
+        restoreGraphicsState();
+        super.renderLeader(area);
+    }
+
     /**
      * Controls whether all text should be generated as bitmaps or only text for which there's
      * no native font.