KWin
Loading...
Searching...
No Matches
test_window_paint_data.cpp
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2012 Martin Gräßlin <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9
11
12#include "virtualdesktops.h"
13
14#include <QGraphicsRotation>
15#include <QGraphicsScale>
16#include <QVector2D>
17
18#include <QTest>
19
20using namespace KWin;
21
22class TestWindowPaintData : public QObject
23{
24 Q_OBJECT
25private Q_SLOTS:
26 void testCtor();
27 void testCopyCtor();
28 void testOperatorMultiplyAssign();
29 void testOperatorPlus();
30 void testMultiplyOpacity();
31 void testMultiplySaturation();
32 void testMultiplyBrightness();
33};
34
35void TestWindowPaintData::testCtor()
36{
37 WindowPaintData data;
38 QCOMPARE(data.xScale(), 1.0);
39 QCOMPARE(data.yScale(), 1.0);
40 QCOMPARE(data.zScale(), 1.0);
41 QCOMPARE(data.xTranslation(), 0.0);
42 QCOMPARE(data.yTranslation(), 0.0);
43 QCOMPARE(data.zTranslation(), 0.0);
44 QCOMPARE(data.translation(), QVector3D());
45 QCOMPARE(data.rotationAngle(), 0.0);
46 QCOMPARE(data.rotationOrigin(), QVector3D());
47 QCOMPARE(data.rotationAxis(), QVector3D(0.0, 0.0, 1.0));
48 QCOMPARE(data.opacity(), 1.0);
49 QCOMPARE(data.brightness(), 1.0);
50 QCOMPARE(data.saturation(), 1.0);
51}
52
53void TestWindowPaintData::testCopyCtor()
54{
55 WindowPaintData data;
56 WindowPaintData data2(data);
57 // no value had been changed
58 QCOMPARE(data2.xScale(), 1.0);
59 QCOMPARE(data2.yScale(), 1.0);
60 QCOMPARE(data2.zScale(), 1.0);
61 QCOMPARE(data2.xTranslation(), 0.0);
62 QCOMPARE(data2.yTranslation(), 0.0);
63 QCOMPARE(data2.zTranslation(), 0.0);
64 QCOMPARE(data2.translation(), QVector3D());
65 QCOMPARE(data2.rotationAngle(), 0.0);
66 QCOMPARE(data2.rotationOrigin(), QVector3D());
67 QCOMPARE(data2.rotationAxis(), QVector3D(0.0, 0.0, 1.0));
68 QCOMPARE(data2.opacity(), 1.0);
69 QCOMPARE(data2.brightness(), 1.0);
70 QCOMPARE(data2.saturation(), 1.0);
71
72 data2.setScale(QVector3D(0.5, 2.0, 3.0));
73 data2.translate(0.5, 2.0, 3.0);
74 data2.setRotationAngle(45.0);
75 data2.setRotationOrigin(QVector3D(1.0, 2.0, 3.0));
76 data2.setRotationAxis(QVector3D(1.0, 1.0, 0.0));
77 data2.setOpacity(0.1);
78 data2.setBrightness(0.3);
79 data2.setSaturation(0.4);
80
81 WindowPaintData data3(data2);
82 QCOMPARE(data3.xScale(), 0.5);
83 QCOMPARE(data3.yScale(), 2.0);
84 QCOMPARE(data3.zScale(), 3.0);
85 QCOMPARE(data3.xTranslation(), 0.5);
86 QCOMPARE(data3.yTranslation(), 2.0);
87 QCOMPARE(data3.zTranslation(), 3.0);
88 QCOMPARE(data3.translation(), QVector3D(0.5, 2.0, 3.0));
89 QCOMPARE(data3.rotationAngle(), 45.0);
90 QCOMPARE(data3.rotationOrigin(), QVector3D(1.0, 2.0, 3.0));
91 QCOMPARE(data3.rotationAxis(), QVector3D(1.0, 1.0, 0.0));
92 QCOMPARE(data3.opacity(), 0.1);
93 QCOMPARE(data3.brightness(), 0.3);
94 QCOMPARE(data3.saturation(), 0.4);
95}
96
97void TestWindowPaintData::testOperatorMultiplyAssign()
98{
99 WindowPaintData data;
100 // without anything set, it's 1.0 on all axis
101 QCOMPARE(data.xScale(), 1.0);
102 QCOMPARE(data.yScale(), 1.0);
103 QCOMPARE(data.zScale(), 1.0);
104 // multiplying by a factor should set all components
105 data *= 2.0;
106 QCOMPARE(data.xScale(), 2.0);
107 QCOMPARE(data.yScale(), 2.0);
108 QCOMPARE(data.zScale(), 2.0);
109 // multiplying by a vector2D should set x and y components
110 data *= QVector2D(2.0, 3.0);
111 QCOMPARE(data.xScale(), 4.0);
112 QCOMPARE(data.yScale(), 6.0);
113 QCOMPARE(data.zScale(), 2.0);
114 // multiplying by a vector3d should set all components
115 data *= QVector3D(0.5, 1.5, 2.0);
116 QCOMPARE(data.xScale(), 2.0);
117 QCOMPARE(data.yScale(), 9.0);
118 QCOMPARE(data.zScale(), 4.0);
119}
120
121void TestWindowPaintData::testOperatorPlus()
122{
123 WindowPaintData data;
124 QCOMPARE(data.xTranslation(), 0.0);
125 QCOMPARE(data.yTranslation(), 0.0);
126 QCOMPARE(data.zTranslation(), 0.0);
127 QCOMPARE(data.translation(), QVector3D());
128 // test with point
129 data += QPoint(1, 2);
130 QCOMPARE(data.translation(), QVector3D(1.0, 2.0, 0.0));
131 // test with pointf
132 data += QPointF(0.5, 0.75);
133 QCOMPARE(data.translation(), QVector3D(1.5, 2.75, 0.0));
134 // test with QVector2D
135 data += QVector2D(0.25, 1.5);
136 QCOMPARE(data.translation(), QVector3D(1.75, 4.25, 0.0));
137 // test with QVector3D
138 data += QVector3D(1.0, 2.0, 3.5);
139 QCOMPARE(data.translation(), QVector3D(2.75, 6.25, 3.5));
140}
141
142void TestWindowPaintData::testMultiplyBrightness()
143{
144 WindowPaintData data;
145 QCOMPARE(0.2, data.multiplyBrightness(0.2));
146 QCOMPARE(0.2, data.brightness());
147 QCOMPARE(0.6, data.multiplyBrightness(3.0));
148 QCOMPARE(0.6, data.brightness());
149 // just for safety
150 QCOMPARE(1.0, data.opacity());
151 QCOMPARE(1.0, data.saturation());
152}
153
154void TestWindowPaintData::testMultiplyOpacity()
155{
156 WindowPaintData data;
157 QCOMPARE(0.2, data.multiplyOpacity(0.2));
158 QCOMPARE(0.2, data.opacity());
159 QCOMPARE(0.6, data.multiplyOpacity(3.0));
160 QCOMPARE(0.6, data.opacity());
161 // just for safety
162 QCOMPARE(1.0, data.brightness());
163 QCOMPARE(1.0, data.saturation());
164}
165
166void TestWindowPaintData::testMultiplySaturation()
167{
168 WindowPaintData data;
169 QCOMPARE(0.2, data.multiplySaturation(0.2));
170 QCOMPARE(0.2, data.saturation());
171 QCOMPARE(0.6, data.multiplySaturation(3.0));
172 QCOMPARE(0.6, data.saturation());
173 // just for safety
174 QCOMPARE(1.0, data.brightness());
175 QCOMPARE(1.0, data.opacity());
176}
177
179#include "test_window_paint_data.moc"
QVector3D rotationOrigin() const
Definition effect.cpp:156
qreal saturation() const
Definition effect.cpp:264
qreal multiplySaturation(qreal factor)
Definition effect.cpp:315
qreal multiplyOpacity(qreal factor)
Definition effect.cpp:309
const QVector3D & translation() const
Definition effect.cpp:141
qreal yTranslation() const
Definition effect.cpp:131
qreal yScale() const
Definition effect.cpp:61
qreal brightness() const
Definition effect.cpp:269
qreal multiplyBrightness(qreal factor)
Definition effect.cpp:321
qreal zTranslation() const
Definition effect.cpp:136
qreal zScale() const
Definition effect.cpp:66
QVector3D rotationAxis() const
Definition effect.cpp:151
qreal xScale() const
Definition effect.cpp:56
qreal xTranslation() const
Definition effect.cpp:126
qreal opacity() const
Definition effect.cpp:259
qreal rotationAngle() const
Definition effect.cpp:146
QTEST_MAIN(OnScreenNotificationTest)