1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
/*
This file is part of Kig, a KDE program for Interactive Geometry.
SPDX-FileCopyrightText: 2006 Pino Toscano <toscano.pino@tiscali.it>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "unit.h"
#include <QDebug>
#include <KLocalizedString>
Unit::Unit(double value, Unit::MetricalUnit unit, int dpi)
{
mvalue = value;
munit = unit;
mdpi = dpi;
}
Unit::~Unit()
{
}
void Unit::setValue(double value)
{
mvalue = value;
}
double Unit::value() const
{
return mvalue;
}
void Unit::setUnit(Unit::MetricalUnit unit)
{
munit = unit;
}
void Unit::convertTo(Unit::MetricalUnit unit)
{
mvalue = convert(mvalue, munit, unit, mdpi);
munit = unit;
}
Unit::MetricalUnit Unit::unit() const
{
return munit;
}
double Unit::getValue(Unit::MetricalUnit unit) const
{
return convert(mvalue, munit, unit, mdpi);
}
void Unit::setDpi(int dpi)
{
mdpi = dpi;
}
int Unit::dpi() const
{
return mdpi;
}
Unit &Unit::operator=(const Unit &u)
{
mvalue = u.mvalue;
munit = u.munit;
mdpi = u.mdpi;
return *this;
}
double Unit::convert(double value, Unit::MetricalUnit from, Unit::MetricalUnit to, int dpi)
{
switch (from) {
case pixel: {
if (to == cm)
return value / dpi * 2.53995;
if (to == in)
return value / dpi;
break;
}
case cm: {
if (to == pixel)
return value * 0.3937 * dpi;
if (to == in)
return value * 0.3937;
break;
}
case in: {
if (to == pixel)
return value * dpi;
if (to == cm)
return value * 2.53995;
break;
}
}
return value;
}
QStringList Unit::unitList()
{
QStringList ul;
ul << i18nc("Translators: Pixel", "pixel");
ul << i18nc("Translators: Centimeter", "cm");
ul << i18nc("Translators: Inch", "in");
return ul;
}
Unit::MetricalUnit Unit::intToUnit(int index)
{
if (index == 0)
return pixel;
else if (index == 1)
return cm;
else if (index == 2)
return in;
qDebug() << "No measure unit with index " << index;
return pixel;
}
int Unit::precision(Unit::MetricalUnit unit)
{
if (unit == Unit::pixel)
return 0;
else
return 2;
}
|