aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache
diff options
context:
space:
mode:
authorAdrian Cumiskey <acumiskey@apache.org>2008-08-14 13:37:33 +0000
committerAdrian Cumiskey <acumiskey@apache.org>2008-08-14 13:37:33 +0000
commit39f5b053cc82f71efa6014c36c0de2f36534bd19 (patch)
treedb7e342c32dea5c7dcbba7258b110c60578fc8f3 /src/java/org/apache
parent427e2d22a628b77cce5e7c22b32610b5ff23d8b2 (diff)
downloadxmlgraphics-fop-39f5b053cc82f71efa6014c36c0de2f36534bd19.tar.gz
xmlgraphics-fop-39f5b053cc82f71efa6014c36c0de2f36534bd19.zip
Merged revisions 685573,685785,685879,685885 via svnmerge from
https://svn.eu.apache.org/repos/asf/xmlgraphics/fop/trunk ........ r685573 | jeremias | 2008-08-13 15:34:03 +0100 (Wed, 13 Aug 2008) | 1 line Fixed border trait parsing for the area tree XML when CMYK or ICC colors were used. ........ r685785 | jeremias | 2008-08-14 07:32:52 +0100 (Thu, 14 Aug 2008) | 1 line Removed three unused classes in the traits package. ........ r685879 | jeremias | 2008-08-14 14:03:20 +0100 (Thu, 14 Aug 2008) | 2 lines Fixed the source for a NullPointerException when the content of an fo:leader with leader-pattern="use-content" collapses to zero width during layout. ........ r685885 | acumiskey | 2008-08-14 14:25:54 +0100 (Thu, 14 Aug 2008) | 1 line Moved static method lightenColor() from PrintRenderer to ColorUtil. Thats one less Renderer interface dependency to worry about :). ........ git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_AFPGOCAResources@685891 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache')
-rw-r--r--src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java26
-rw-r--r--src/java/org/apache/fop/render/PrintRenderer.java24
-rw-r--r--src/java/org/apache/fop/render/afp/AFPRenderer.java9
-rw-r--r--src/java/org/apache/fop/render/java2d/Java2DRenderer.java15
-rw-r--r--src/java/org/apache/fop/render/pdf/PDFRenderer.java15
-rw-r--r--src/java/org/apache/fop/render/ps/PSRenderer.java15
-rw-r--r--src/java/org/apache/fop/traits/BlockProps.java36
-rw-r--r--src/java/org/apache/fop/traits/BorderProps.java21
-rw-r--r--src/java/org/apache/fop/traits/InlineProps.java35
-rw-r--r--src/java/org/apache/fop/traits/LayoutProps.java88
-rw-r--r--src/java/org/apache/fop/util/ColorUtil.java23
11 files changed, 82 insertions, 225 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
index 1e163bef8..f3bbc454a 100644
--- a/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
@@ -183,17 +183,23 @@ public class LeaderLayoutManager extends LeafNodeLayoutManager {
childContext.setAlignmentContext(context.getAlignmentContext());
contentList = clm.getNextKnuthElements(childContext, 0);
int width = clm.getStackingSize();
- Space spacer = null;
- if (fobj.getLeaderPatternWidth().getValue(this) > width) {
- spacer = new Space();
- spacer.setIPD(fobj.getLeaderPatternWidth().getValue(this) - width);
- width = fobj.getLeaderPatternWidth().getValue(this);
- }
- fa.setUnitWidth(width);
- if (spacer != null) {
- fa.addChildArea(spacer);
+ if (width != 0) {
+ Space spacer = null;
+ if (fobj.getLeaderPatternWidth().getValue(this) > width) {
+ spacer = new Space();
+ spacer.setIPD(fobj.getLeaderPatternWidth().getValue(this) - width);
+ width = fobj.getLeaderPatternWidth().getValue(this);
+ }
+ fa.setUnitWidth(width);
+ if (spacer != null) {
+ fa.addChildArea(spacer);
+ }
+ leaderArea = fa;
+ } else {
+ //Content collapsed to nothing, so use a space
+ leaderArea = new Space();
+ leaderArea.setBPD(1);
}
- leaderArea = fa;
}
TraitSetter.setProducerID(leaderArea, fobj.getId());
return leaderArea;
diff --git a/src/java/org/apache/fop/render/PrintRenderer.java b/src/java/org/apache/fop/render/PrintRenderer.java
index 44b0a211d..56504ff53 100644
--- a/src/java/org/apache/fop/render/PrintRenderer.java
+++ b/src/java/org/apache/fop/render/PrintRenderer.java
@@ -20,7 +20,6 @@
package org.apache.fop.render;
// FOP
-import java.awt.Color;
import java.awt.geom.Rectangle2D;
import java.util.List;
import java.util.Map;
@@ -113,29 +112,6 @@ public abstract class PrintRenderer extends AbstractRenderer {
}
/**
- * Lightens up a color for groove, ridge, inset and outset border effects.
- * @param col the color to lighten up
- * @param factor factor by which to lighten up (negative values darken the color)
- * @return the modified color
- */
- public static Color lightenColor(Color col, float factor) {
- // TODO: This function converts the color into the sRGB namespace.
- // This should be avoided if possible.
- float[] cols = new float[4];
- cols = col.getRGBComponents(cols);
- if (factor > 0) {
- cols[0] += (1.0 - cols[0]) * factor;
- cols[1] += (1.0 - cols[1]) * factor;
- cols[2] += (1.0 - cols[2]) * factor;
- } else {
- cols[0] -= cols[0] * -factor;
- cols[1] -= cols[1] * -factor;
- cols[2] -= cols[2] * -factor;
- }
- return new Color(cols[0], cols[1], cols[2], cols[3]);
- }
-
- /**
* Creates a RendererContext for an image.
* @param x the x coordinate (in millipoints)
* @param y the y coordinate (in millipoints)
diff --git a/src/java/org/apache/fop/render/afp/AFPRenderer.java b/src/java/org/apache/fop/render/afp/AFPRenderer.java
index 94918f7ec..6d4e8fafd 100644
--- a/src/java/org/apache/fop/render/afp/AFPRenderer.java
+++ b/src/java/org/apache/fop/render/afp/AFPRenderer.java
@@ -78,6 +78,7 @@ import org.apache.fop.render.afp.fonts.AFPFont;
import org.apache.fop.render.afp.fonts.AFPFontCollection;
import org.apache.fop.render.afp.modca.AFPDataStream;
import org.apache.fop.render.afp.modca.PageObject;
+import org.apache.fop.util.ColorUtil;
/**
* This is an implementation of a FOP Renderer that renders areas to AFP.
@@ -502,7 +503,7 @@ public class AFPRenderer extends AbstractPathOrientedRenderer {
float h3 = height / 3;
- lineDataInfo.color = lightenColor(col, -colFactor);
+ lineDataInfo.color = ColorUtil.lightenColor(col, -colFactor);
lineDataInfo.thickness = Math.round(h3);
lineDataInfo.y1 = lineDataInfo.y2 = coords[Y1];
afpDataStream.createLine(lineDataInfo);
@@ -511,7 +512,7 @@ public class AFPRenderer extends AbstractPathOrientedRenderer {
lineDataInfo.y1 = lineDataInfo.y2 = Math.round(dstPts[Y1] + h3);
afpDataStream.createLine(lineDataInfo);
- lineDataInfo.color = lightenColor(col, colFactor);
+ lineDataInfo.color = ColorUtil.lightenColor(col, colFactor);
lineDataInfo.y1 = lineDataInfo.y2
= Math.round(dstPts[Y1] + h3 + h3);
afpDataStream.createLine(lineDataInfo);
@@ -524,7 +525,7 @@ public class AFPRenderer extends AbstractPathOrientedRenderer {
float w3 = width / 3;
float xm1 = dstPts[X1] + (w3 / 2);
- lineDataInfo.color = lightenColor(col, -colFactor);
+ lineDataInfo.color = ColorUtil.lightenColor(col, -colFactor);
lineDataInfo.x1 = lineDataInfo.x2 = Math.round(xm1);
afpDataStream.createLine(lineDataInfo);
@@ -532,7 +533,7 @@ public class AFPRenderer extends AbstractPathOrientedRenderer {
lineDataInfo.x1 = lineDataInfo.x2 = Math.round(xm1 + w3);
afpDataStream.createLine(lineDataInfo);
- lineDataInfo.color = lightenColor(col, colFactor);
+ lineDataInfo.color = ColorUtil.lightenColor(col, colFactor);
lineDataInfo.x1 = lineDataInfo.x2 = Math.round(xm1 + w3 + w3);
afpDataStream.createLine(lineDataInfo);
}
diff --git a/src/java/org/apache/fop/render/java2d/Java2DRenderer.java b/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
index 02b809ff7..1e396c247 100644
--- a/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
+++ b/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
@@ -77,6 +77,7 @@ import org.apache.fop.render.Graphics2DAdapter;
import org.apache.fop.render.RendererContext;
import org.apache.fop.render.pdf.CTMHelper;
import org.apache.fop.util.CharUtilities;
+import org.apache.fop.util.ColorUtil;
/**
* The <code>Java2DRenderer</code> class provides the abstract technical
@@ -625,8 +626,8 @@ public abstract class Java2DRenderer extends AbstractPathOrientedRenderer implem
case Constants.EN_RIDGE:
float colFactor = (style == EN_GROOVE ? 0.4f : -0.4f);
if (horz) {
- Color uppercol = lightenColor(col, -colFactor);
- Color lowercol = lightenColor(col, colFactor);
+ Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+ Color lowercol = ColorUtil.lightenColor(col, colFactor);
float h3 = h / 3;
float ym1 = y1 + (h3 / 2);
g2d.setStroke(new BasicStroke(h3));
@@ -637,8 +638,8 @@ public abstract class Java2DRenderer extends AbstractPathOrientedRenderer implem
g2d.setColor(lowercol);
g2d.draw(new Line2D.Float(x1, ym1 + h3 + h3, x2, ym1 + h3 + h3));
} else {
- Color leftcol = lightenColor(col, -colFactor);
- Color rightcol = lightenColor(col, colFactor);
+ Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+ Color rightcol = ColorUtil.lightenColor(col, colFactor);
float w3 = w / 3;
float xm1 = x1 + (w3 / 2);
g2d.setStroke(new BasicStroke(w3));
@@ -654,13 +655,13 @@ public abstract class Java2DRenderer extends AbstractPathOrientedRenderer implem
case Constants.EN_OUTSET:
colFactor = (style == EN_OUTSET ? 0.4f : -0.4f);
if (horz) {
- col = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+ col = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
g2d.setStroke(new BasicStroke(h));
float ym1 = y1 + (h / 2);
g2d.setColor(col);
g2d.draw(new Line2D.Float(x1, ym1, x2, ym1));
} else {
- col = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+ col = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
float xm1 = x1 + (w / 2);
g2d.setStroke(new BasicStroke(w));
g2d.setColor(col);
@@ -830,7 +831,7 @@ public abstract class Java2DRenderer extends AbstractPathOrientedRenderer implem
case EN_RIDGE:
float half = area.getRuleThickness() / 2000f;
- state.updateColor(lightenColor(col, 0.6f));
+ state.updateColor(ColorUtil.lightenColor(col, 0.6f));
moveTo(startx, starty);
lineTo(endx, starty);
lineTo(endx, starty + 2 * half);
diff --git a/src/java/org/apache/fop/render/pdf/PDFRenderer.java b/src/java/org/apache/fop/render/pdf/PDFRenderer.java
index 27caf86b4..61ed1ff07 100644
--- a/src/java/org/apache/fop/render/pdf/PDFRenderer.java
+++ b/src/java/org/apache/fop/render/pdf/PDFRenderer.java
@@ -117,6 +117,7 @@ import org.apache.fop.render.Graphics2DAdapter;
import org.apache.fop.render.RendererContext;
import org.apache.fop.util.CharUtilities;
import org.apache.fop.util.ColorProfileUtil;
+import org.apache.fop.util.ColorUtil;
/**
* Renderer that renders areas to PDF.
@@ -939,8 +940,8 @@ public class PDFRenderer extends AbstractPathOrientedRenderer {
float colFactor = (style == EN_GROOVE ? 0.4f : -0.4f);
currentStream.add("[] 0 d ");
if (horz) {
- Color uppercol = lightenColor(col, -colFactor);
- Color lowercol = lightenColor(col, colFactor);
+ Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+ Color lowercol = ColorUtil.lightenColor(col, colFactor);
float h3 = h / 3;
currentStream.add(format(h3) + " w\n");
float ym1 = y1 + (h3 / 2);
@@ -954,8 +955,8 @@ public class PDFRenderer extends AbstractPathOrientedRenderer {
currentStream.add(format(x1) + " " + format(ym1 + h3 + h3) + " m "
+ format(x2) + " " + format(ym1 + h3 + h3) + " l S\n");
} else {
- Color leftcol = lightenColor(col, -colFactor);
- Color rightcol = lightenColor(col, colFactor);
+ Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+ Color rightcol = ColorUtil.lightenColor(col, colFactor);
float w3 = w / 3;
currentStream.add(format(w3) + " w\n");
float xm1 = x1 + (w3 / 2);
@@ -978,14 +979,14 @@ public class PDFRenderer extends AbstractPathOrientedRenderer {
currentStream.add("[] 0 d ");
Color c = col;
if (horz) {
- c = lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
+ c = ColorUtil.lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
currentStream.add(format(h) + " w\n");
float ym1 = y1 + (h / 2);
setColor(c, false, null);
currentStream.add(format(x1) + " " + format(ym1) + " m "
+ format(x2) + " " + format(ym1) + " l S\n");
} else {
- c = lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
+ c = ColorUtil.lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
currentStream.add(format(w) + " w\n");
float xm1 = x1 + (w / 2);
setColor(c, false, null);
@@ -1773,7 +1774,7 @@ public class PDFRenderer extends AbstractPathOrientedRenderer {
case EN_RIDGE:
float half = area.getRuleThickness() / 2000f;
- setColor(lightenColor(col, 0.6f), true, null);
+ setColor(ColorUtil.lightenColor(col, 0.6f), true, null);
currentStream.add(format(startx) + " " + format(starty) + " m\n");
currentStream.add(format(endx) + " " + format(starty) + " l\n");
currentStream.add(format(endx) + " " + format(starty + 2 * half) + " l\n");
diff --git a/src/java/org/apache/fop/render/ps/PSRenderer.java b/src/java/org/apache/fop/render/ps/PSRenderer.java
index 9f8cdc771..4785ea14f 100644
--- a/src/java/org/apache/fop/render/ps/PSRenderer.java
+++ b/src/java/org/apache/fop/render/ps/PSRenderer.java
@@ -106,6 +106,7 @@ import org.apache.fop.render.ps.extensions.PSExtensionAttachment;
import org.apache.fop.render.ps.extensions.PSSetPageDevice;
import org.apache.fop.render.ps.extensions.PSSetupCode;
import org.apache.fop.util.CharUtilities;
+import org.apache.fop.util.ColorUtil;
/**
* Renderer that renders to PostScript.
@@ -839,8 +840,8 @@ public class PSRenderer extends AbstractPathOrientedRenderer
float colFactor = (style == EN_GROOVE ? 0.4f : -0.4f);
gen.useDash(null);
if (horz) {
- Color uppercol = lightenColor(col, -colFactor);
- Color lowercol = lightenColor(col, colFactor);
+ Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+ Color lowercol = ColorUtil.lightenColor(col, colFactor);
float h3 = h / 3;
gen.useLineWidth(h3);
float ym1 = y1 + (h3 / 2);
@@ -851,8 +852,8 @@ public class PSRenderer extends AbstractPathOrientedRenderer
gen.useColor(lowercol);
drawLine(x1, ym1 + h3 + h3, x2, ym1 + h3 + h3);
} else {
- Color leftcol = lightenColor(col, -colFactor);
- Color rightcol = lightenColor(col, colFactor);
+ Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+ Color rightcol = ColorUtil.lightenColor(col, colFactor);
float w3 = w / 3;
gen.useLineWidth(w3);
float xm1 = x1 + (w3 / 2);
@@ -869,13 +870,13 @@ public class PSRenderer extends AbstractPathOrientedRenderer
colFactor = (style == EN_OUTSET ? 0.4f : -0.4f);
gen.useDash(null);
if (horz) {
- Color c = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+ Color c = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
gen.useLineWidth(h);
float ym1 = y1 + (h / 2);
gen.useColor(c);
drawLine(x1, ym1, x2, ym1);
} else {
- Color c = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+ Color c = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
gen.useLineWidth(w);
float xm1 = x1 + (w / 2);
gen.useColor(c);
@@ -1570,7 +1571,7 @@ public class PSRenderer extends AbstractPathOrientedRenderer
case EN_RIDGE:
float half = area.getRuleThickness() / 2000f;
- gen.useColor(lightenColor(col, 0.6f));
+ gen.useColor(ColorUtil.lightenColor(col, 0.6f));
moveTo(startx, starty);
lineTo(endx, starty);
lineTo(endx, starty + 2 * half);
diff --git a/src/java/org/apache/fop/traits/BlockProps.java b/src/java/org/apache/fop/traits/BlockProps.java
deleted file mode 100644
index 370a97982..000000000
--- a/src/java/org/apache/fop/traits/BlockProps.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.traits;
-
-import org.apache.fop.datatypes.Length;
-
-/**
- * Store all block-level layout properties on an FO.
- * Public "structure" allows direct member access.
- */
-public class BlockProps {
-
- public Length firstIndent; // text-indent
- public int lastIndent; // last-line-indent
- public int textAlign;
- public int textAlignLast;
- public int lineStackType; // line-stacking-strategy (enum)
-
-}
diff --git a/src/java/org/apache/fop/traits/BorderProps.java b/src/java/org/apache/fop/traits/BorderProps.java
index 20e362674..338743538 100644
--- a/src/java/org/apache/fop/traits/BorderProps.java
+++ b/src/java/org/apache/fop/traits/BorderProps.java
@@ -21,7 +21,8 @@ package org.apache.fop.traits;
import java.awt.Color;
import java.io.Serializable;
-import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fo.Constants;
@@ -162,13 +163,19 @@ public class BorderProps implements Serializable {
public static BorderProps valueOf(FOUserAgent foUserAgent, String s) {
if (s.startsWith("(") && s.endsWith(")")) {
s = s.substring(1, s.length() - 1);
- StringTokenizer st = new StringTokenizer(s, ",");
- String style = st.nextToken();
- String color = st.nextToken();
- int width = Integer.parseInt(st.nextToken());
+ Pattern pattern = Pattern.compile("([^,\\(]+(?:\\(.*\\))?)");
+ Matcher m = pattern.matcher(s);
+ boolean found;
+ found = m.find();
+ String style = m.group();
+ found = m.find();
+ String color = m.group();
+ found = m.find();
+ int width = Integer.parseInt(m.group());
int mode = SEPARATE;
- if (st.hasMoreTokens()) {
- String ms = st.nextToken();
+ found = m.find();
+ if (found) {
+ String ms = m.group();
if ("collapse-inner".equalsIgnoreCase(ms)) {
mode = COLLAPSE_INNER;
} else if ("collapse-outer".equalsIgnoreCase(ms)) {
diff --git a/src/java/org/apache/fop/traits/InlineProps.java b/src/java/org/apache/fop/traits/InlineProps.java
deleted file mode 100644
index 06ca2553d..000000000
--- a/src/java/org/apache/fop/traits/InlineProps.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.traits;
-
-/**
- * Store all inline "margin" related properties
- * Public "structure" allows direct member access.
- */
-public class InlineProps {
-
- public int marginTop;
- public int marginBottom;
- public int marginLeft;
- public int marginRight;
- public SpaceVal spaceStart;
- public SpaceVal spaceEnd;
-
-}
diff --git a/src/java/org/apache/fop/traits/LayoutProps.java b/src/java/org/apache/fop/traits/LayoutProps.java
deleted file mode 100644
index eff218b37..000000000
--- a/src/java/org/apache/fop/traits/LayoutProps.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.traits;
-
-import org.apache.fop.datatypes.KeepValue;
-import org.apache.fop.fo.Constants;
-
-/**
- * Store properties affecting layout: break-before, break-after, keeps, span.
- * for a block level FO.
- * Public "structure" allows direct member access.
- */
-public class LayoutProps {
-
- public int breakBefore; // enum constant BreakBefore.xxx
- public int breakAfter; // enum constant BreakAfter.xxx
- public KeepValue keepWithPrevious; /*LF*/
- public KeepValue keepWithNext; /*LF*/
- public KeepValue keepTogether; /*LF*/
- public int orphans; /*LF*/
- public int widows; /*LF*/
- public int blockProgressionUnit; /*LF*/
- public int lineStackingStrategy; /*LF*/
- public boolean bIsSpan;
- public SpaceVal spaceBefore;
- public SpaceVal spaceAfter;
-
- private static final int[] BREAK_PRIORITIES =
- new int[]{ Constants.EN_AUTO, Constants.EN_COLUMN, Constants.EN_PAGE };
-
-
- public LayoutProps() {
- breakBefore = breakAfter = Constants.EN_AUTO;
- bIsSpan = false;
- }
-
- // public static int higherBreak(int brkParent, int brkChild) {
- // if (brkParent == brkChild) return brkChild;
- // for (int i=0; i < s_breakPriorities.length; i++) {
- // int bp = s_breakPriorities[i];
- // if (bp == brkParent) return brkChild;
- // else if (bp == brkChild) return brkParent;
- // }
- // return brkChild;
- // }
-
- public void combineWithParent(LayoutProps parentLP) {
- if (parentLP.breakBefore != breakBefore) {
- for (int i = 0; i < BREAK_PRIORITIES.length; i++) {
- int bp = BREAK_PRIORITIES[i];
- if (bp == breakBefore) {
- breakBefore = parentLP.breakBefore;
- break;
- } else if (bp == parentLP.breakBefore) {
- break;
- }
- }
- }
- // Parent span always overrides child span
- bIsSpan = parentLP.bIsSpan;
- }
-
- public String toString() {
- return "LayoutProps:\n" +
- "breakBefore = " + breakBefore + "; breakAfter = " + breakAfter + "\n" +
- "spaceBefore = " + ((spaceBefore != null) ? spaceBefore.toString() : "null") + "\n" +
- "spaceAfter = " + ((spaceAfter != null) ? spaceAfter.toString() : "null") + "\n" +
- "bIsSpan = " + bIsSpan + "\n";
- }
-}
-
diff --git a/src/java/org/apache/fop/util/ColorUtil.java b/src/java/org/apache/fop/util/ColorUtil.java
index b85b0c017..9534bfba3 100644
--- a/src/java/org/apache/fop/util/ColorUtil.java
+++ b/src/java/org/apache/fop/util/ColorUtil.java
@@ -658,4 +658,27 @@ public final class ColorUtil {
colorMap.put("transparent", new Color(0, 0, 0, 0));
}
+ /**
+ * Lightens up a color for groove, ridge, inset and outset border effects.
+ * @param col the color to lighten up
+ * @param factor factor by which to lighten up (negative values darken the color)
+ * @return the modified color
+ */
+ public static Color lightenColor(Color col, float factor) {
+ // TODO: This function converts the color into the sRGB namespace.
+ // This should be avoided if possible.
+ float[] cols = new float[4];
+ cols = col.getRGBComponents(cols);
+ if (factor > 0) {
+ cols[0] += (1.0 - cols[0]) * factor;
+ cols[1] += (1.0 - cols[1]) * factor;
+ cols[2] += (1.0 - cols[2]) * factor;
+ } else {
+ cols[0] -= cols[0] * -factor;
+ cols[1] -= cols[1] * -factor;
+ cols[2] -= cols[2] * -factor;
+ }
+ return new Color(cols[0], cols[1], cols[2], cols[3]);
+ }
+
}