mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-15 07:48:29 -04:00
basic support for mm,cm and in units
This commit is contained in:
parent
a284b45b67
commit
92d1f0575b
@ -40,11 +40,16 @@ class Context {
|
||||
private float strokeOpacity;
|
||||
private float thickness;
|
||||
private float fontSize;
|
||||
private float pixelPerMM;
|
||||
private String textAnchor;
|
||||
private boolean fillRuleEvenOdd;
|
||||
private HashMap<String, String> classesMap;
|
||||
|
||||
Context() {
|
||||
this(72 / 25.4f * 4 / 3); // 72 DPI per default
|
||||
}
|
||||
|
||||
Context(float pixelsPerMM) {
|
||||
parent = null;
|
||||
tr = Transform.IDENTITY;
|
||||
thickness = 1;
|
||||
@ -53,6 +58,7 @@ class Context {
|
||||
fill = Color.BLACK;
|
||||
fillOpacity = 1;
|
||||
strokeOpacity = 1;
|
||||
this.pixelPerMM = pixelsPerMM;
|
||||
}
|
||||
|
||||
private Context(Context parent) {
|
||||
@ -66,6 +72,7 @@ class Context {
|
||||
fontSize = parent.fontSize;
|
||||
textAnchor = parent.textAnchor;
|
||||
fillRuleEvenOdd = parent.fillRuleEvenOdd;
|
||||
pixelPerMM = parent.pixelPerMM;
|
||||
}
|
||||
|
||||
Context(Context parent, Element element) throws SvgException {
|
||||
@ -260,6 +267,12 @@ class Context {
|
||||
return 16 * s;
|
||||
case "px":
|
||||
return s;
|
||||
case "mm":
|
||||
return s * c.pixelPerMM;
|
||||
case "cm":
|
||||
return 10 * s * c.pixelPerMM;
|
||||
case "in":
|
||||
return 25.4f * s * c.pixelPerMM;
|
||||
default:
|
||||
return c.getFontSize();
|
||||
}
|
||||
|
@ -43,6 +43,9 @@ public class ContextTest extends TestCase {
|
||||
assertEquals(10, Context.readStyle(new Context(), "font-size:10px").getFontSize(), 1e-4);
|
||||
assertEquals(20, Context.readStyle(new Context(), "font-size:10;font-size:2em").getFontSize(), 1e-4);
|
||||
assertEquals(15, Context.readStyle(new Context(), "font-size:10;font-size:150%").getFontSize(), 1e-4);
|
||||
assertEquals(96, Context.readStyle(new Context(), "font-size:25.4mm").getFontSize(), 1e-4);
|
||||
assertEquals(96, Context.readStyle(new Context(), "font-size:2.54cm").getFontSize(), 1e-4);
|
||||
assertEquals(96, Context.readStyle(new Context(), "font-size:1in").getFontSize(), 1e-4);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user