You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2006/06/29 12:13:08 UTC
svn commit: r417984 - in
/xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp:
AFPGraphics2DAdapter.java AFPRenderer.java AFPRendererContextConstants.java
SVGConverter.java
Author: jeremias
Date: Thu Jun 29 03:13:08 2006
New Revision: 417984
URL: http://svn.apache.org/viewvc?rev=417984&view=rev
Log:
Re-routing SVG painting to the Graphics2DAdapter and teach the latter to respect the renderer's colorImages setting.
Removed obsolete SVGConverter.
This fixes painting SVG at a hard-coded resolution. Now uses the target resolution from the user agent.
Added:
xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRendererContextConstants.java
Removed:
xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/SVGConverter.java
Modified:
xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPGraphics2DAdapter.java
xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRenderer.java
Modified: xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPGraphics2DAdapter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPGraphics2DAdapter.java?rev=417984&r1=417983&r2=417984&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPGraphics2DAdapter.java (original)
+++ xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPGraphics2DAdapter.java Thu Jun 29 03:13:08 2006
@@ -43,10 +43,12 @@
RendererContext.RendererContextWrapper wrappedContext
= new RendererContext.RendererContextWrapper(context);
AFPRenderer afp = (AFPRenderer)context.getRenderer();
+ Boolean grayObj = (Boolean)context.getProperty(AFPRendererContextConstants.AFP_GRAYSCALE);
+ boolean gray = (grayObj != null ? grayObj.booleanValue() : false);
//Paint to a BufferedImage
int resolution = (int)Math.round(context.getUserAgent().getTargetResolution());
- BufferedImage bi = paintToBufferedImage(painter, wrappedContext, resolution, false, false);
+ BufferedImage bi = paintToBufferedImage(painter, wrappedContext, resolution, gray, false);
afp.drawBufferedImage(bi, resolution, x, y, width, height);
}
Modified: xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRenderer.java?rev=417984&r1=417983&r2=417984&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRenderer.java Thu Jun 29 03:13:08 2006
@@ -67,6 +67,7 @@
import org.apache.fop.image.XMLImage;
import org.apache.fop.render.AbstractPathOrientedRenderer;
import org.apache.fop.render.Graphics2DAdapter;
+import org.apache.fop.render.RendererContext;
import org.apache.fop.render.afp.extensions.AFPElementMapping;
import org.apache.fop.render.afp.extensions.AFPPageSetup;
import org.apache.fop.render.afp.fonts.AFPFontInfo;
@@ -1054,6 +1055,18 @@
}
/**
+ * @see org.apache.fop.render.PrintRenderer#createRendererContext(
+ * int, int, int, int, java.util.Map)
+ */
+ protected RendererContext createRendererContext(int x, int y, int width, int height, Map foreignAttributes) {
+ RendererContext context;
+ context = super.createRendererContext(x, y, width, height, foreignAttributes);
+ context.setProperty(AFPRendererContextConstants.AFP_GRAYSCALE,
+ new Boolean(!this.colorImages));
+ return context;
+ }
+
+ /**
* Draw an image at the indicated location.
* @see org.apache.fop.render.AbstractRenderer#drawImage(String, Rectangle2D, Map)
*/
@@ -1077,7 +1090,7 @@
return;
}
String mime = fopimage.getMimeType();
- if ("text/xml".equals(mime)) {
+ if ("text/xml".equals(mime) || MimeConstants.MIME_SVG.equals(mime)) {
if (!fopimage.load(FopImage.ORIGINAL_DATA)) {
return;
}
@@ -1085,27 +1098,6 @@
String ns = ((XMLImage) fopimage).getNameSpace();
renderDocument(doc, ns, pos, foreignAttributes);
- } else if (MimeConstants.MIME_SVG.equals(mime)) {
- if (!fopimage.load(FopImage.ORIGINAL_DATA)) {
- return;
- }
- int x = mpts2units(pos.getX() + currentIPPosition);
- int y = mpts2units(pos.getY() + currentBPPosition);
- int w = mpts2units(pos.getWidth());
- int h = mpts2units(pos.getHeight());
- ImageObject io = _afpDataStream.getImageObject(x, y, w, h);
- io.setImageParameters(
- (int)(fopimage.getHorizontalResolution() * 10),
- (int)(fopimage.getVerticalResolution() * 10),
- fopimage.getWidth(),
- fopimage.getHeight()
- );
- if (colorImages) {
- io.setImageIDESize((byte)24);
- io.setImageData(SVGConverter.convertToTIFF((XMLImage)fopimage));
- } else {
- convertToGrayScaleImage(io, SVGConverter.convertToTIFF((XMLImage)fopimage));
- }
} else if (MimeConstants.MIME_EPS.equals(mime)) {
log.warn("EPS images are not supported by this renderer");
/*
@@ -1199,6 +1191,29 @@
}
/**
+ * Writes a BufferedImage to an OutputStream as raw sRGB bitmaps.
+ * @param img the BufferedImage
+ * @param out the OutputStream
+ * @throws IOException In case of an I/O error.
+ */
+ public static void writeImage(BufferedImage img, OutputStream out) throws IOException {
+ int w = img.getWidth();
+ int h = img.getHeight();
+ int[] tmpMap = img.getRGB(0, 0, w, h, null, 0, w);
+ for (int i = 0; i < h; i++) {
+ for (int j = 0; j < w; j++) {
+ int p = tmpMap[i * w + j];
+ int r = (p >> 16) & 0xFF;
+ int g = (p >> 8) & 0xFF;
+ int b = (p) & 0xFF;
+ out.write((byte)(r & 0xFF));
+ out.write((byte)(g & 0xFF));
+ out.write((byte)(b & 0xFF));
+ }
+ }
+ }
+
+ /**
* Draws a BufferedImage to AFP.
* @param bi the BufferedImage
* @param resolution the resolution of the BufferedImage
@@ -1215,7 +1230,7 @@
ByteArrayOutputStream baout = new ByteArrayOutputStream();
try {
//Serialize image
- SVGConverter.writeImage(bi, baout);
+ writeImage(bi, baout);
byte[] buf = baout.toByteArray();
//Generate image
Added: xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRendererContextConstants.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRendererContextConstants.java?rev=417984&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRendererContextConstants.java (added)
+++ xmlgraphics/fop/trunk/src/sandbox/org/apache/fop/render/afp/AFPRendererContextConstants.java Thu Jun 29 03:13:08 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.render.afp;
+
+import org.apache.fop.render.RendererContextConstants;
+
+/**
+ * Defines a number of standard constants (keys) for use by the RendererContext class.
+ */
+public interface AFPRendererContextConstants extends RendererContextConstants {
+
+ /**
+ * Key for a Boolean value that enables grayscale processing instead of color
+ * processing.
+ */
+ String AFP_GRAYSCALE = "afpGrayscale";
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org