Skip to content

Commit

Permalink
Fix #7: New border format for CEWE version 6.x
Browse files Browse the repository at this point in the history
  • Loading branch information
albrechtf committed Nov 6, 2016
1 parent 1f112fd commit 3897fcc
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 11 deletions.
2 changes: 2 additions & 0 deletions src/main/java/net/sf/mcf2pdf/mcfelements/McfArea.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,6 @@ public interface McfArea {

public McfAreaContent getContent();

public McfBorder getBorder();

}
15 changes: 15 additions & 0 deletions src/main/java/net/sf/mcf2pdf/mcfelements/McfBorder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package net.sf.mcf2pdf.mcfelements;

import java.awt.Color;

public interface McfBorder {

public Color getColor();

public float getOffset();

public float getWidth();

public boolean isEnabled();

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,19 @@
import java.util.List;
import java.util.Vector;

import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.AbstractConverter;
import org.apache.commons.digester3.Digester;
import org.apache.commons.digester3.Substitutor;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.AttributesImpl;

import net.sf.mcf2pdf.mcfelements.DigesterConfigurator;
import net.sf.mcf2pdf.mcfelements.McfArea;
import net.sf.mcf2pdf.mcfelements.McfBackground;
import net.sf.mcf2pdf.mcfelements.McfBorder;
import net.sf.mcf2pdf.mcfelements.McfClipart;
import net.sf.mcf2pdf.mcfelements.McfFotobook;
import net.sf.mcf2pdf.mcfelements.McfImage;
Expand All @@ -20,15 +30,6 @@
import net.sf.mcf2pdf.mcfelements.McfText;
import net.sf.mcf2pdf.mcfelements.util.DigesterUtil;

import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.AbstractConverter;
import org.apache.commons.digester3.Digester;
import org.apache.commons.digester3.Substitutor;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.AttributesImpl;


/**
* Default Digester configurator. Configures the digester to use classes from
Expand Down Expand Up @@ -73,6 +74,7 @@ private Color longToColor(long colorValue) {
}
};

@Override
public void configureDigester(Digester digester, File mcfFile)
throws IOException {
digester.setSubstitutor(createSubstitutor());
Expand All @@ -99,6 +101,11 @@ public void configureDigester(Digester digester, File mcfFile)
DigesterUtil.addSetProperties(digester, "fotobook/page/area", getSpecialAreaAttributes());
digester.addSetNext("fotobook/page/area", "addArea", McfArea.class.getName());

// border element
digester.addObjectCreate("fotobook/page/area/border", getBorderClass());
DigesterUtil.addSetProperties(digester, "fotobook/page/area/border", getSpecialBorderAttributes());
digester.addSetNext("fotobook/page/area/border", "setBorder");

// text element, including textFormat element
digester.addObjectCreate("fotobook/page/area/text", getTextClass());
digester.addSetProperties("fotobook/page/area/text");
Expand Down Expand Up @@ -245,5 +252,17 @@ protected Class<? extends McfImageBackground> getImageBackgroundClass() {
return McfImageBackgroundImpl.class;
}

protected Class<? extends McfBorder> getBorderClass() {
return McfBorderImpl.class;
}

protected List<String[]> getSpecialBorderAttributes() {
List<String[]> result = new Vector<String[]>();
result.add(new String[] { "color", "color" });
result.add(new String[] { "offset", "offset" });
result.add(new String[] { "width", "width" });
result.add(new String[] { "enabled", "enabled" });
return result;
}

}
28 changes: 28 additions & 0 deletions src/main/java/net/sf/mcf2pdf/mcfelements/impl/McfAreaImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import net.sf.mcf2pdf.mcfelements.McfArea;
import net.sf.mcf2pdf.mcfelements.McfAreaContent;
import net.sf.mcf2pdf.mcfelements.McfBorder;
import net.sf.mcf2pdf.mcfelements.McfPage;


Expand Down Expand Up @@ -46,6 +47,9 @@ public class McfAreaImpl implements McfArea {

private McfAreaContent content;

private McfBorder border;

@Override
public McfPage getPage() {
return page;
}
Expand All @@ -54,6 +58,7 @@ public void setPage(McfPage page) {
this.page = page;
}

@Override
public float getLeft() {
return left;
}
Expand All @@ -62,6 +67,7 @@ public void setLeft(float left) {
this.left = left;
}

@Override
public float getTop() {
return top;
}
Expand All @@ -70,6 +76,7 @@ public void setTop(float top) {
this.top = top;
}

@Override
public float getWidth() {
return width;
}
Expand All @@ -78,6 +85,7 @@ public void setWidth(float width) {
this.width = width;
}

@Override
public float getHeight() {
return height;
}
Expand All @@ -86,6 +94,7 @@ public void setHeight(float height) {
this.height = height;
}

@Override
public float getRotation() {
return rotation;
}
Expand All @@ -94,6 +103,7 @@ public void setRotation(float rotation) {
this.rotation = rotation;
}

@Override
public int getZPosition() {
return zPosition;
}
Expand All @@ -102,6 +112,7 @@ public void setZPosition(int zPosition) {
this.zPosition = zPosition;
}

@Override
public String getAreaType() {
return areaType;
}
Expand All @@ -110,6 +121,7 @@ public void setAreaType(String areaType) {
this.areaType = areaType;
}

@Override
public boolean isBorderEnabled() {
return borderEnabled;
}
Expand All @@ -118,6 +130,7 @@ public void setBorderEnabled(boolean borderEnabled) {
this.borderEnabled = borderEnabled;
}

@Override
public float getBorderSize() {
return borderSize;
}
Expand All @@ -126,6 +139,7 @@ public void setBorderSize(float borderSize) {
this.borderSize = borderSize;
}

@Override
public Color getBorderColor() {
return borderColor;
}
Expand All @@ -134,6 +148,7 @@ public void setBorderColor(Color borderColor) {
this.borderColor = borderColor;
}

@Override
public boolean isShadowEnabled() {
return shadowEnabled;
}
Expand All @@ -142,6 +157,7 @@ public void setShadowEnabled(boolean shadowEnabled) {
this.shadowEnabled = shadowEnabled;
}

@Override
public int getShadowAngle() {
return shadowAngle;
}
Expand All @@ -150,6 +166,7 @@ public void setShadowAngle(int shadowAngle) {
this.shadowAngle = shadowAngle;
}

@Override
public int getShadowIntensity() {
return shadowIntensity;
}
Expand All @@ -158,6 +175,7 @@ public void setShadowIntensity(int shadowIntensity) {
this.shadowIntensity = shadowIntensity;
}

@Override
public float getShadowDistance() {
return shadowDistance;
}
Expand All @@ -166,6 +184,7 @@ public void setShadowDistance(float shadowDistance) {
this.shadowDistance = shadowDistance;
}

@Override
public Color getBackgroundColor() {
return backgroundColor;
}
Expand All @@ -174,6 +193,7 @@ public void setBackgroundColor(Color backgroundColor) {
this.backgroundColor = backgroundColor;
}

@Override
public McfAreaContent getContent() {
return content;
}
Expand All @@ -182,4 +202,12 @@ public void setContent(McfAreaContent content) {
this.content = content;
}

public McfBorder getBorder() {
return border;
}

public void setBorder(McfBorder border) {
this.border = border;
}

}
53 changes: 53 additions & 0 deletions src/main/java/net/sf/mcf2pdf/mcfelements/impl/McfBorderImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package net.sf.mcf2pdf.mcfelements.impl;

import java.awt.Color;

import net.sf.mcf2pdf.mcfelements.McfBorder;

public class McfBorderImpl implements McfBorder {

private Color color;

private float offset;

private float width;

private boolean enabled;

@Override
public Color getColor() {
return color;
}

public void setColor(Color color) {
this.color = color;
}

@Override
public float getOffset() {
return offset;
}

public void setOffset(float offset) {
this.offset = offset;
}

@Override
public float getWidth() {
return width;
}

public void setWidth(float width) {
this.width = width;
}

@Override
public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

}
14 changes: 12 additions & 2 deletions src/main/java/net/sf/mcf2pdf/pagebuild/PageImage.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.io.IOException;
import java.io.Writer;

import net.sf.mcf2pdf.mcfelements.McfBorder;
import net.sf.mcf2pdf.mcfelements.McfImage;
import net.sf.mcf2pdf.mcfelements.util.FadingComposite;
import net.sf.mcf2pdf.mcfelements.util.ImageUtil;
Expand Down Expand Up @@ -92,7 +93,16 @@ public BufferedImage renderAsBitmap(PageRenderContext context, Point drawOffsetP
double sh = (tmmY * resY) / scale;

// draw border and / or shadow?
int borderWidth = (maskFile != null | !image.getArea().isBorderEnabled()) ? 0 : context.toPixel(image.getArea().getBorderSize() / 10.0f);
int borderWidth = (maskFile != null || !image.getArea().isBorderEnabled()) ? 0
: context.toPixel(image.getArea().getBorderSize() / 10.0f);
Color borderColor = image.getArea().getBorderColor();
// check for Format 6 - border may be child element
if (image.getArea().getBorder() != null) {
McfBorder border = image.getArea().getBorder();
borderWidth = border.isEnabled() ? context.toPixel(border.getWidth() / 10.0f) : 0;
borderColor = border.getColor();
}

int shadowDistance = (maskFile != null | !image.getArea().isShadowEnabled()) ? 0 : context.toPixel(image.getArea().getShadowDistance() / 10.0f);
int xAddShadow = (int)Math.round(shadowDistance * Math.sin(Math.toRadians(image.getArea().getShadowAngle())));
int yAddShadow = (int)Math.round(shadowDistance * -Math.cos(Math.toRadians(image.getArea().getShadowAngle())));
Expand Down Expand Up @@ -127,7 +137,7 @@ public BufferedImage renderAsBitmap(PageRenderContext context, Point drawOffsetP
int btop = yAddShadow < 0 ? Math.max(0, -yAddShadow - borderWidth) : 0;
imgLeft = bleft + borderWidth;
imgTop = btop + borderWidth;
g2d.setColor(image.getArea().getBorderColor());
g2d.setColor(borderColor);
g2d.fillRect(bleft, btop, widthPixel + 2 * borderWidth, heightPixel + 2 * borderWidth);
}

Expand Down

0 comments on commit 3897fcc

Please sign in to comment.