Render themes: allow custom scaling #67, closes #180

This commit is contained in:
Emux 2016-09-24 15:09:55 +03:00
parent f9aa723e53
commit 1b9e9206cb
2 changed files with 13 additions and 8 deletions

View File

@ -48,6 +48,11 @@ public abstract class CanvasAdapter {
*/ */
public static float dpi = 240; public static float dpi = 240;
/**
* The scale.
*/
public static float scale = 1;
/** /**
* The text scale. * The text scale.
*/ */

View File

@ -133,7 +133,7 @@ public class XmlThemeBuilder extends DefaultHandler {
private final ThemeFile mTheme; private final ThemeFile mTheme;
private RenderTheme mRenderTheme; private RenderTheme mRenderTheme;
private final float mScaleValue; private final float mScale;
private Set<String> mCategories; private Set<String> mCategories;
private XmlRenderThemeStyleLayer mCurrentLayer; private XmlRenderThemeStyleLayer mCurrentLayer;
@ -141,7 +141,7 @@ public class XmlThemeBuilder extends DefaultHandler {
public XmlThemeBuilder(ThemeFile theme) { public XmlThemeBuilder(ThemeFile theme) {
mTheme = theme; mTheme = theme;
mScaleValue = 1 + (CanvasAdapter.dpi / 240 - 1) * 0.5f; mScale = CanvasAdapter.scale + (CanvasAdapter.dpi / 240 - 1) * 0.5f;
} }
@Override @Override
@ -478,7 +478,7 @@ public class XmlThemeBuilder extends DefaultHandler {
b.color(value); b.color(value);
else if ("width".equals(name) || "stroke-width".equals(name)) { else if ("width".equals(name) || "stroke-width".equals(name)) {
b.strokeWidth = parseFloat(value) * mScaleValue; b.strokeWidth = parseFloat(value) * mScale;
if (line == null) { if (line == null) {
if (!isOutline) if (!isOutline)
validateNonNegative("width", b.strokeWidth); validateNonNegative("width", b.strokeWidth);
@ -495,7 +495,7 @@ public class XmlThemeBuilder extends DefaultHandler {
b.fixed = parseBoolean(value); b.fixed = parseBoolean(value);
else if ("stipple".equals(name)) else if ("stipple".equals(name))
b.stipple = Math.round(parseInt(value) * mScaleValue); b.stipple = Math.round(parseInt(value) * mScale);
else if ("stipple-stroke".equals(name)) else if ("stipple-stroke".equals(name))
b.stippleColor(value); b.stippleColor(value);
@ -582,7 +582,7 @@ public class XmlThemeBuilder extends DefaultHandler {
else if ("stroke-width".equals(name)) { else if ("stroke-width".equals(name)) {
float strokeWidth = Float.parseFloat(value); float strokeWidth = Float.parseFloat(value);
validateNonNegative("stroke-width", strokeWidth); validateNonNegative("stroke-width", strokeWidth);
b.strokeWidth = strokeWidth * mScaleValue; b.strokeWidth = strokeWidth * mScale;
} else if ("fade".equals(name)) } else if ("fade".equals(name))
b.fadeScale = Integer.parseInt(value); b.fadeScale = Integer.parseInt(value);
@ -855,7 +855,7 @@ public class XmlThemeBuilder extends DefaultHandler {
b.strokeColor = Color.parseColor(value); b.strokeColor = Color.parseColor(value);
else if ("stroke-width".equals(name)) else if ("stroke-width".equals(name))
b.strokeWidth = Float.parseFloat(value) * mScaleValue; b.strokeWidth = Float.parseFloat(value) * mScale;
else if ("caption".equals(name)) else if ("caption".equals(name))
b.caption = Boolean.parseBoolean(value); b.caption = Boolean.parseBoolean(value);
@ -907,7 +907,7 @@ public class XmlThemeBuilder extends DefaultHandler {
String value = attributes.getValue(i); String value = attributes.getValue(i);
if ("r".equals(name) || "radius".equals(name)) if ("r".equals(name) || "radius".equals(name))
radius = Float.parseFloat(value) * mScaleValue; radius = Float.parseFloat(value) * mScale;
else if ("cat".equals(name)) else if ("cat".equals(name))
cat = value; cat = value;
@ -922,7 +922,7 @@ public class XmlThemeBuilder extends DefaultHandler {
stroke = Color.parseColor(value); stroke = Color.parseColor(value);
else if ("stroke-width".equals(name)) else if ("stroke-width".equals(name))
strokeWidth = Float.parseFloat(value) * mScaleValue; strokeWidth = Float.parseFloat(value) * mScale;
else else
logUnknownAttribute(elementName, name, value, i); logUnknownAttribute(elementName, name, value, i);