#include "DistanceMapping.h"

namespace msdfgen {

DistanceMapping DistanceMapping::inverse(Range range) {
    double rangeWidth = range.upper-range.lower;
    return DistanceMapping(rangeWidth, range.lower/(rangeWidth ? rangeWidth : 1));
}

DistanceMapping::DistanceMapping() : scale(1), translate(0) { }

DistanceMapping::DistanceMapping(Range range) : scale(1/(range.upper-range.lower)), translate(-range.lower) { }

double DistanceMapping::operator()(double d) const {
    return scale*(d+translate);
}

double DistanceMapping::operator()(Delta d) const {
    return scale*d.value;
}

DistanceMapping DistanceMapping::inverse() const {
    return DistanceMapping(1/scale, -scale*translate);
}

}