File: unit.cc

package info (click to toggle)
kig 4%3A25.08.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,716 kB
  • sloc: cpp: 41,465; xml: 851; python: 486; perl: 23; sh: 17; makefile: 3
file content (129 lines) | stat: -rw-r--r-- 2,273 bytes parent folder | download | duplicates (2)
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;
}