bella 01/07/04 23:47:04
Modified: sources/org/apache/batik/bridge UnitProcessor.java
Log:
fixed problem with em and ex unit conversion when font size is not a float value (eg
medium)
Revision Changes Path
1.3 +63 -19 xml-batik/sources/org/apache/batik/bridge/UnitProcessor.java
Index: UnitProcessor.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/UnitProcessor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- UnitProcessor.java 2001/03/15 16:28:08 1.2
+++ UnitProcessor.java 2001/07/05 06:47:03 1.3
@@ -26,7 +26,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a>
- * @version $Id: UnitProcessor.java,v 1.2 2001/03/15 16:28:08 tkormann Exp $
+ * @version $Id: UnitProcessor.java,v 1.3 2001/07/05 06:47:03 bella Exp $
*/
public abstract class UnitProcessor {
@@ -699,10 +699,20 @@
protected static float pixelsToEms(float v, short d, Context ctx) {
CSSPrimitiveValue fontSize = ctx.getFontSize();
short type = fontSize.getPrimitiveType();
- return v / cssToUserSpace(fontSize.getFloatValue(type),
- type,
- d,
- ctx);
+ switch (type) {
+ case CSSPrimitiveValue.CSS_IDENT:
+ float fs = ctx.getMediumFontSize();
+ fs = TextUtilities.parseFontSize(fontSize.getStringValue(), fs);
+ return v / cssToUserSpace(fs,
+ CSSPrimitiveValue.CSS_PT,
+ d,
+ ctx);
+ default:
+ return v / cssToUserSpace(fontSize.getFloatValue(type),
+ type,
+ d,
+ ctx);
+ }
}
/**
@@ -715,10 +725,20 @@
protected static float emsToPixels(float v, short d, Context ctx) {
CSSPrimitiveValue fontSize = ctx.getFontSize();
short type = fontSize.getPrimitiveType();
- return v * cssToUserSpace(fontSize.getFloatValue(type),
- type,
- d,
- ctx);
+ switch (type) {
+ case CSSPrimitiveValue.CSS_IDENT:
+ float fs = ctx.getMediumFontSize();
+ fs = TextUtilities.parseFontSize(fontSize.getStringValue(), fs);
+ return v * cssToUserSpace(fs,
+ CSSPrimitiveValue.CSS_PT,
+ d,
+ ctx);
+ default:
+ return v * cssToUserSpace(fontSize.getFloatValue(type),
+ type,
+ d,
+ ctx);
+ }
}
/**
@@ -731,12 +751,24 @@
protected static float pixelsToExs(float v, short d, Context ctx) {
CSSPrimitiveValue fontSize = ctx.getFontSize();
short type = fontSize.getPrimitiveType();
- float fs = cssToUserSpace(fontSize.getFloatValue(type),
- type,
- d,
- ctx);
+ float fontSizeVal;
+ switch (type) {
+ case CSSPrimitiveValue.CSS_IDENT:
+ float fs = ctx.getMediumFontSize();
+ fs = TextUtilities.parseFontSize(fontSize.getStringValue(), fs);
+ fontSizeVal = cssToUserSpace(fs,
+ CSSPrimitiveValue.CSS_PT,
+ d,
+ ctx);
+ break;
+ default:
+ fontSizeVal = cssToUserSpace(fontSize.getFloatValue(type),
+ type,
+ d,
+ ctx);
+ }
float xh = ctx.getXHeight();
- return v / xh / fs;
+ return v / xh / fontSizeVal;
}
/**
@@ -749,12 +781,24 @@
protected static float exsToPixels(float v, short d, Context ctx) {
CSSPrimitiveValue fontSize = ctx.getFontSize();
short type = fontSize.getPrimitiveType();
- float fs = cssToUserSpace(fontSize.getFloatValue(type),
- type,
- d,
- ctx);
+ float fontSizeVal;
+ switch (type) {
+ case CSSPrimitiveValue.CSS_IDENT:
+ float fs = ctx.getMediumFontSize();
+ fs = TextUtilities.parseFontSize(fontSize.getStringValue(), fs);
+ fontSizeVal = cssToUserSpace(fs,
+ CSSPrimitiveValue.CSS_PT,
+ d,
+ ctx);
+ break;
+ default:
+ fontSizeVal = cssToUserSpace(fontSize.getFloatValue(type),
+ type,
+ d,
+ ctx);
+ }
float xh = ctx.getXHeight();
- return v * xh * fs;
+ return v * xh * fontSizeVal;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]