I've separated the specific PDFRender functionality from the CTM class and created a small utility class for the renderer to use.
This solves the problem I was having using the CTM and PDF classes outside of the FOP context. -k
Index: org/apache/fop/area/CTM.java +AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0 RCS file: /home/cvspublic/xml-fop/src/org/apache/fop/area/CTM.java,v retrieving revision 1.4 diff -u -3 -p -r1.4 CTM.java --- org/apache/fop/area/CTM.java 18 Jun 2002 13:42:55 -0000 1.4 +-+-+- org/apache/fop/area/CTM.java 30 Jul 2002 11:49:31 -0000 +AEAAQA -207,11 +-207,7 +AEAAQA public class CTM implements Serializable return +ACIAWwAi +- a +- +ACI +ACI +- b +- +ACI +ACI +- c +- +ACI +ACI +- d +- +ACI +ACI +- e +- +ACI +ACI +- f +- +ACIAXQAiADs +AH0 - public String toPDFctm() +AHs - return a +- +ACI +ACI +- b +- +ACI +ACI +- c +- +ACI +ACI +- d +- +ACI +ACI +- e/1000f +- +ACI +ACI +- f/1000f+ADs - +AH0 - public double+AFsAXQ toArray() +AHs - return new double+AFsAXQ +AHs-a, b, c, d, e / 1000.0, f / 1000.0+AH0AOw +- return new double+AFsAXQ +AHs-a, b, c, d, e , f+AH0AOw +AH0 +AH0 Index: org/apache/fop/render/pdf/PDFRenderer.java +AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0 RCS file: /home/cvspublic/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.111 diff -u -3 -p -r1.111 PDFRenderer.java --- org/apache/fop/render/pdf/PDFRenderer.java 23 Jul 2002 11:06:51 -0000 1.111 +-+-+- org/apache/fop/render/pdf/PDFRenderer.java 30 Jul 2002 11:49:34 -0000 +AEAAQA -11,6 +-11,7 +AEAAQA package org.apache.fop.render.pdf+ADs import org.apache.fop.render.PrintRenderer+ADs import org.apache.fop.render.XMLHandler+ADs import org.apache.fop.render.RendererContext+ADs +-import org.apache.fop.render.pdf.CTMHelper+ADs import org.apache.fop.fo.FOUserAgent+ADs import org.apache.fop.image.+ACoAOw import org.apache.fop.apps.FOPException+ADs +AEAAQA -243,11 +-244,11 +AEAAQA public class PDFRenderer extends PrintRe protected void startVParea(CTM ctm) +AHs // Set the given CTM in the graphics state currentState.push()+ADs - currentState.setTransform(new AffineTransform(ctm.toArray()))+ADs +- currentState.setTransform(new AffineTransform(CTMHelper.toPDFArray(ctm)))+ADs currentStream.add(+ACI-q+AFw-n+ACI)+ADs // multiply with current CTM - currentStream.add(ctm.toPDFctm() +- +ACI cm+AFw-n+ACI)+ADs +- currentStream.add(CTMHelper.toPDFString(ctm) +- +ACI cm+AFw-n+ACI)+ADs // Set clip? currentStream.add(+ACI-BT+AFw-n+ACI)+ADs +AH0
/+ACo +ACo +ACQ-Id: +ACQ +ACo Copyright (C) 2001 The Apache Software Foundation. All rights reserved. +ACo +ACo For details on use and redistribution please refer to the +ACo LICENSE file included with these sources. +ACo-/ package org.apache.fop.render.pdf+ADs import org.apache.fop.area.CTM+ADs /+ACoAKg +ACo CTMHelper converts FOP transformation matrixis to those suitable for use by the PDFRender. The e and f elements +ACo of the matrix will be divided by 1000 as FOP uses millipoints as it's default user space and PDF uses +ACo points. +ACo +ACo +AEA-see org.apache.fop.area.CTM +ACo +ACo +AEA-author +ADw-a href+AD0AIg-kevin+AEA-rocketred.com+AD4-Kevin O'Neill+ADw-/a+AD4 +ACo-/ public final class CTMHelper +AHs /+ACoAKg +ACo +ADw-p+AD4-Converts the sourceMatrix to a string for use in the PDFRender cm operations.+ADw-/p+AD4 +ACo +ADw-p+AD4-For example: +ACo +ADw-pre+AD4 +ACo org.apache.fop.area.CTM ctm +AD0 new org.apache.fop.area.CTM(1.0, 0.0, 0.0, 1.0, 1000.0, 1000.0)+ADs +ACo String pdfMatrix +AD0 org.apache.fop.render.pdf.CTMHelper.toPDFString(ctm)+ADs +ACo +ADw-/pre+AD4 +ACo will return the string +ACIAPA-code+AD4-1.0 0.0 0.0 1.0 1.0 1.0+ADw-/code+AD4AIg. +ACo +ACo +AEA-param sourceMatrix - The matrix to convert. +ACo +ACo +AEA-return a space seperated string containing the matrix elements. +ACo +ACo +AEA-throws IllegalArgumentException if the sourceMatrix parameter is null. +ACo-/ public static String toPDFString(CTM sourceMatrix) +AHs if (null +AD0APQ sourceMatrix) +AHs throw new IllegalArgumentException(+ACI-sourceMatrix must not be null+ACI)+ADs +AH0 final double matrix+AFsAXQ +AD0 toPDFArray(sourceMatrix)+ADs return matrix+AFs-0+AF0 +- +ACI +ACI +- matrix+AFs-1+AF0 +- +ACI +ACI +- matrix+AFs-2+AF0 +- +ACI +ACI +- matrix+AFs-3+AF0 +- +ACI +ACI +- matrix+AFs-4+AF0 +- +ACI +ACI +- matrix+AFs-5+AF0AOw +AH0 /+ACoAKg +ACo +ADw-p+AD4-Creates a new CTM based in the sourceMatrix.+ADw-/p+AD4 +ACo +ADw-p+AD4-For example: +ACo +ADw-pre+AD4 +ACo org.apache.fop.area.CTM inCTM +AD0 new org.apache.fop.area.CTM(1.0, 0.0, 0.0, 1.0, 1000.0, 1000.0)+ADs +ACo org.apache.fop.area.CTM outCTM org.apache.fop.render.pdf.CTMHelper.toPDFCTM(ctm)+ADs +ACo +ADw-/pre+AD4 +ACo will return a new CTM where a +AD0APQ 1.0, b +AD0APQ 0.0, c +AD0APQ 0.0, d +AD0APQ 1.0, e +AD0APQ 1.0 and f +AD0APQ 1.0. +ACo +ACo +AEA-param sourceMatrix - The matrix to convert. +ACo +ACo +AEA-return a new converted matrix. +ACo +ACo +AEA-throws IllegalArgumentException if the sourceMatrix parameter is null. +ACo-/ public static CTM toPDFCTM(CTM sourceMatrix) +AHs if (null +AD0APQ sourceMatrix) +AHs throw new IllegalArgumentException(+ACI-sourceMatrix must not be null+ACI)+ADs +AH0 final double matrix+AFsAXQ +AD0 toPDFArray(sourceMatrix)+ADs return new CTM(matrix+AFs-0+AF0, matrix+AFs-1+AF0, matrix+AFs-2+AF0, matrix+AFs-3+AF0, matrix+AFs-4+AF0, matrix+AFs-5+AF0)+ADs +AH0 /+ACoAKg +ACo +ADw-p+AD4-Creates an array of six doubles from the source CTM.+ADw-/p+AD4 +ACo +ADw-p+AD4-For example: +ACo +ADw-pre+AD4 +ACo org.apache.fop.area.CTM inCTM +AD0 new org.apache.fop.area.CTM(1.0, 0.0, 0.0, 1.0, 1000.0, 1000.0)+ADs +ACo double matrix+AFsAXQ +AD0 org.apache.fop.render.pdf.CTMHelper.toPDFArray(ctm)+ADs +ACo +ADw-/pre+AD4 +ACo will return a new array where matrix+AFs-0+AF0 +AD0APQ 1.0, matrix+AFs-1+AF0 +AD0APQ 0.0, matrix+AFs-2+AF0 +AD0APQ 0.0, matrix+AFs-3+AF0 +AD0APQ 1.0, +ACo matrix+AFs-4+AF0 +AD0APQ 1.0 and matrix+AFs-5+AF0 +AD0APQ 1.0. +ACo +ACo +AEA-param sourceMatrix - The matrix to convert. +ACo +ACo +AEA-return an array of doubles containing the converted matrix. +ACo +ACo +AEA-throws IllegalArgumentException if the sourceMatrix parameter is null. +ACo-/ public static double+AFsAXQ toPDFArray(CTM sourceMatrix) +AHs if (null +AD0APQ sourceMatrix) +AHs throw new IllegalArgumentException(+ACI-sourceMatrix must not be null+ACI)+ADs +AH0 final double matrix+AFsAXQ +AD0 sourceMatrix.toArray()+ADs return new double+AFsAXQ +AHs-matrix+AFs-0+AF0, matrix+AFs-1+AF0, matrix+AFs-2+AF0, matrix+AFs-3+AF0, matrix+AFs-4+AF0 / 1000.0, matrix+AFs-5+AF0 / 1000.0+AH0AOw +AH0 +AH0
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]