@Override public Expression rescaleToExpression(Expression scaleFactor, Measure measure) { if (measure.isRealWorldUnit()) { return measure.expression; } else { return super.rescaleToExpression(scaleFactor, measure); } } },
@Override protected Expression rescale(Expression expr) { // handle null values if (expr == null) { return null; } if (expr == Expression.NIL) { return Expression.NIL; } // delegate the handling of the rescaling to ValueAndUnit // to deal with local uom (px, m, ft suffixes) Measure v = new Measure(expr, defaultUnit); return RescalingMode.Pixels.rescaleToExpression(scale, v); }
/** * Used to rescale the provided expr. * * <p>We do optimize the case where the provided expression is a literal; no sense doing a * calculation each time if we don't have to. * * @param expr * @return expr multiplied by the provided scale */ protected Expression rescale(Expression expr) { if (expr == null) { return null; } if (expr == Expression.NIL) { return Expression.NIL; } Measure m = new Measure(expr, defaultUnit); return RescalingMode.KeepUnits.rescaleToExpression(scale, m); }
/** * Used to rescaleDashArray the provided unscaled value. * * @param unscaled the unscaled value. * @param mapScale the mapScale in pixels per meter. * @param uom the unit of measure that will be used to scale. * @return the expression multiplied by the provided scale. */ protected Expression rescale(Expression unscaled, Unit<Length> uom) { if (unscaled == null || unscaled.equals(Expression.NIL)) { return unscaled; } Measure m = new Measure(unscaled, uom); return RescalingMode.RealWorld.rescaleToExpression(ff.literal(mapScale), m); }