Mercurial > projects > qtd
annotate demos/deform/pathdeform.d @ 296:5173835bb372 signals
iteration over QList with opApply
author | eldar |
---|---|
date | Sun, 22 Nov 2009 20:43:10 +0000 |
parents | 0f23cdea249a |
children | 5bcfe9e7db7f |
rev | line source |
---|---|
41 | 1 /**************************************************************************** |
2 ** | |
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). | |
4 ** Contact: Qt Software Information (qt-info@nokia.com) | |
5 ** | |
6 ** This file is part of the demonstration applications of the Qt Toolkit. | |
7 ** | |
8 ** $QT_BEGIN_LICENSE:LGPL$ | |
9 ** Commercial Usage | |
10 ** Licensees holding valid Qt Commercial licenses may use this file in | |
11 ** accordance with the Qt Commercial License Agreement provided with the | |
12 ** Software or, alternatively, in accordance with the terms contained in | |
13 ** a written agreement between you and Nokia. | |
14 ** | |
15 ** GNU Lesser General Public License Usage | |
16 ** Alternatively, this file may be used under the terms of the GNU Lesser | |
17 ** General Public License version 2.1 as published by the Free Software | |
18 ** Foundation and appearing in the file LICENSE.LGPL included in the | |
19 ** packaging of this file. Please review the following information to | |
20 ** ensure the GNU Lesser General Public License version 2.1 requirements | |
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | |
22 ** | |
23 ** In addition, as a special exception, Nokia gives you certain | |
24 ** additional rights. These rights are described in the Nokia Qt LGPL | |
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this | |
26 ** package. | |
27 ** | |
28 ** GNU General Public License Usage | |
29 ** Alternatively, this file may be used under the terms of the GNU | |
30 ** General Public License version 3.0 as published by the Free Software | |
31 ** Foundation and appearing in the file LICENSE.GPL included in the | |
32 ** packaging of this file. Please review the following information to | |
33 ** ensure the GNU General Public License version 3.0 requirements will be | |
34 ** met: http://www.gnu.org/copyleft/gpl.html. | |
35 ** | |
36 ** If you are unsure which license is appropriate for your use, please | |
37 ** contact the sales department at qt-sales@nokia.com. | |
38 ** $QT_END_LICENSE$ | |
39 ** | |
40 ****************************************************************************/ | |
161 | 41 module pathdeform; |
42 | |
41 | 43 |
44 import arthurwidgets, | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
45 qt.gui.QPainterPath, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
46 qt.gui.QApplication, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
47 qt.gui.QMouseEvent, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
48 qt.core.QDateTime, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
49 qt.core.QTimerEvent, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
50 qt.core.QBasicTimer, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
51 qt.gui.QLayout, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
52 qt.gui.QLineEdit, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
53 qt.gui.QPainter, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
54 qt.gui.QSlider, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
55 qt.gui.QLabel, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
56 qt.gui.QDesktopWidget, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
57 qt.gui.QGroupBox, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
58 qt.gui.QPushButton, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
59 qt.gui.QVBoxLayout, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
60 qt.gui.QGridLayout, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
61 qt.gui.QHBoxLayout, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
62 qt.gui.QRadialGradient, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
63 qt.opengl.QGLFormat, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
64 tango.math.Math; |
41 | 65 |
161 | 66 |
41 | 67 class PathDeformControls : QWidget |
68 { | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
69 private PathDeformRenderer m_renderer; |
41 | 70 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
71 mixin Signal!("okPressed"); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
72 mixin Signal!("quitPressed"); |
41 | 73 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
74 this(QWidget parent, PathDeformRenderer renderer, bool smallScreen) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
75 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
76 super(parent); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
77 m_renderer = renderer; |
41 | 78 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
79 if (smallScreen) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
80 layoutForSmallScreen(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
81 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
82 layoutForDesktop(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
83 } |
41 | 84 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
85 void layoutForDesktop() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
86 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
87 QGroupBox mainGroup = new QGroupBox(this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
88 mainGroup.setTitle(tr("Controls")); |
41 | 89 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
90 QGroupBox radiusGroup = new QGroupBox(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
91 radiusGroup.setTitle(tr("Lens Radius")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
92 QSlider radiusSlider = new QSlider(Qt.Horizontal, radiusGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
93 radiusSlider.setRange(15, 150); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
94 radiusSlider.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed); |
41 | 95 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
96 QGroupBox deformGroup = new QGroupBox(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
97 deformGroup.setTitle(tr("Deformation")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
98 QSlider deformSlider = new QSlider(Qt.Horizontal, deformGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
99 deformSlider.setRange(-100, 100); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
100 deformSlider.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed); |
41 | 101 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
102 QGroupBox fontSizeGroup = new QGroupBox(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
103 fontSizeGroup.setTitle(tr("Font Size")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
104 QSlider fontSizeSlider = new QSlider(Qt.Horizontal, fontSizeGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
105 fontSizeSlider.setRange(16, 200); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
106 fontSizeSlider.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed); |
41 | 107 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
108 QGroupBox textGroup = new QGroupBox(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
109 textGroup.setTitle(tr("Text")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
110 QLineEdit textInput = new QLineEdit(textGroup); |
41 | 111 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
112 QPushButton animateButton = new QPushButton(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
113 animateButton.setText(tr("Animated")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
114 animateButton.setCheckable(true); |
41 | 115 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
116 QPushButton showSourceButton = new QPushButton(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
117 showSourceButton.setText(tr("Show Source")); |
41 | 118 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
119 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
120 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
121 QPushButton enableOpenGLButton = new QPushButton(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
122 enableOpenGLButton.setText(tr("Use OpenGL")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
123 enableOpenGLButton.setCheckable(true); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
124 enableOpenGLButton.setChecked(m_renderer.usesOpenGL()); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
125 if (!QGLFormat.hasOpenGL()) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
126 enableOpenGLButton.hide(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
127 } |
41 | 128 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
129 QPushButton whatsThisButton = new QPushButton(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
130 whatsThisButton.setText(tr("What's This?")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
131 whatsThisButton.setCheckable(true); |
41 | 132 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
133 mainGroup.setFixedWidth(180); |
41 | 134 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
135 QVBoxLayout mainGroupLayout = new QVBoxLayout(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
136 mainGroupLayout.addWidget(radiusGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
137 mainGroupLayout.addWidget(deformGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
138 mainGroupLayout.addWidget(fontSizeGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
139 mainGroupLayout.addWidget(textGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
140 mainGroupLayout.addWidget(animateButton); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
141 mainGroupLayout.addStretch(1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
142 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
143 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
144 mainGroupLayout.addWidget(enableOpenGLButton); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
145 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
146 mainGroupLayout.addWidget(showSourceButton); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
147 mainGroupLayout.addWidget(whatsThisButton); |
41 | 148 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
149 QVBoxLayout radiusGroupLayout = new QVBoxLayout(radiusGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
150 radiusGroupLayout.addWidget(radiusSlider); |
41 | 151 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
152 QVBoxLayout deformGroupLayout = new QVBoxLayout(deformGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
153 deformGroupLayout.addWidget(deformSlider); |
41 | 154 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
155 QVBoxLayout fontSizeGroupLayout = new QVBoxLayout(fontSizeGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
156 fontSizeGroupLayout.addWidget(fontSizeSlider); |
41 | 157 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
158 QVBoxLayout textGroupLayout = new QVBoxLayout(textGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
159 textGroupLayout.addWidget(textInput); |
41 | 160 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
161 QVBoxLayout mainLayout = new QVBoxLayout(this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
162 mainLayout.addWidget(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
163 mainLayout.setMargin(0); |
41 | 164 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
165 radiusSlider.valueChanged.connect(&m_renderer.setRadius); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
166 deformSlider.valueChanged.connect(&m_renderer.setIntensity); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
167 fontSizeSlider.valueChanged.connect(&m_renderer.setFontSize); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
168 animateButton.clicked.connect(&m_renderer.setAnimated); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
169 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
170 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
171 enableOpenGLButton.clicked.connect(&m_renderer.enableOpenGL); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
172 } |
41 | 173 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
174 textInput.textChanged.connect(&m_renderer.setText); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
175 m_renderer.descriptionEnabledChanged.connect(&whatsThisButton.setChecked); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
176 whatsThisButton.clicked.connect(&m_renderer.setDescriptionEnabled); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
177 showSourceButton.clicked.connect(&m_renderer.showSource); |
41 | 178 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
179 animateButton.animateClick(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
180 deformSlider.setValue(80); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
181 fontSizeSlider.setValue(120); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
182 radiusSlider.setValue(100); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
183 textInput.setText(tr("Qt")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
184 } |
41 | 185 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
186 void layoutForSmallScreen() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
187 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
188 QGroupBox mainGroup = new QGroupBox(this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
189 mainGroup.setTitle(tr("Controls")); |
41 | 190 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
191 QLabel radiusLabel = new QLabel(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
192 radiusLabel.setText(tr("Lens Radius:")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
193 QSlider radiusSlider = new QSlider(Qt.Horizontal, mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
194 radiusSlider.setRange(15, 150); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
195 radiusSlider.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed); |
41 | 196 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
197 QLabel deformLabel = new QLabel(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
198 deformLabel.setText(tr("Deformation:")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
199 QSlider deformSlider = new QSlider(Qt.Horizontal, mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
200 deformSlider.setRange(-100, 100); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
201 deformSlider.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed); |
41 | 202 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
203 QLabel fontSizeLabel = new QLabel(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
204 fontSizeLabel.setText(tr("Font Size:")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
205 QSlider fontSizeSlider = new QSlider(Qt.Horizontal, mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
206 fontSizeSlider.setRange(16, 200); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
207 fontSizeSlider.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed); |
41 | 208 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
209 QPushButton animateButton = new QPushButton(tr("Animated"), mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
210 animateButton.setCheckable(true); |
41 | 211 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
212 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
213 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
214 QPushButton enableOpenGLButton = new QPushButton(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
215 enableOpenGLButton.setText(tr("Use OpenGL")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
216 enableOpenGLButton.setCheckable(true); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
217 enableOpenGLButton.setChecked(m_renderer.usesOpenGL()); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
218 if (!QGLFormat.hasOpenGL()) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
219 enableOpenGLButton.hide(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
220 } |
41 | 221 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
222 QPushButton quitButton = new QPushButton(tr("Quit"), mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
223 QPushButton okButton = new QPushButton(tr("OK"), mainGroup); |
41 | 224 |
225 | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
226 QGridLayout mainGroupLayout = new QGridLayout(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
227 mainGroupLayout.setMargin(0); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
228 mainGroupLayout.addWidget(radiusLabel, 0, 0, Qt.AlignRight); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
229 mainGroupLayout.addWidget(radiusSlider, 0, 1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
230 mainGroupLayout.addWidget(deformLabel, 1, 0, Qt.AlignRight); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
231 mainGroupLayout.addWidget(deformSlider, 1, 1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
232 mainGroupLayout.addWidget(fontSizeLabel, 2, 0, Qt.AlignRight); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
233 mainGroupLayout.addWidget(fontSizeSlider, 2, 1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
234 mainGroupLayout.addWidget(animateButton, 3,0, 1,2); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
235 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
236 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
237 mainGroupLayout.addWidget(enableOpenGLButton, 4,0, 1,2); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
238 } |
41 | 239 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
240 QVBoxLayout mainLayout = new QVBoxLayout(this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
241 mainLayout.addWidget(mainGroup); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
242 mainLayout.addStretch(1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
243 mainLayout.addWidget(okButton); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
244 mainLayout.addWidget(quitButton); |
41 | 245 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
246 quitButton.clicked.connect(&emitQuitSignal); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
247 okButton.clicked.connect(&emitOkSignal); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
248 radiusSlider.valueChanged.connect(&m_renderer.setRadius); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
249 deformSlider.valueChanged.connect(&m_renderer.setIntensity); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
250 fontSizeSlider.valueChanged.connect(&m_renderer.setFontSize); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
251 animateButton.clicked.connect(&m_renderer.setAnimated); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
252 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
253 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
254 enableOpenGLButton.clicked.connect(&m_renderer.enableOpenGL); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
255 } |
41 | 256 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
257 animateButton.animateClick(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
258 deformSlider.setValue(80); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
259 fontSizeSlider.setValue(120); |
41 | 260 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
261 QRect screen_size = QApplication.desktop().screenGeometry(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
262 radiusSlider.setValue(qMin(screen_size.width(), screen_size.height())/5); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
263 m_renderer.setText(tr("Qt")); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
264 } |
41 | 265 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
266 void emitQuitSignal() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
267 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
268 quitPressed.emit; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
269 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
270 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
271 void emitOkSignal() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
272 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
273 okPressed.emit; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
274 } |
41 | 275 } |
276 | |
277 | |
278 class PathDeformWidget : QWidget | |
279 { | |
280 private: | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
281 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
282 PathDeformRenderer m_renderer; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
283 PathDeformControls m_controls; |
41 | 284 |
285 public: | |
286 | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
287 this(QWidget parent, bool smallScreen) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
288 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
289 super(parent); |
41 | 290 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
291 setWindowTitle(tr("Vector Deformation")); |
41 | 292 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
293 m_renderer = new PathDeformRenderer(this, smallScreen); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
294 m_renderer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding); |
41 | 295 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
296 // Layouts |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
297 QHBoxLayout mainLayout = new QHBoxLayout(this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
298 mainLayout.addWidget(m_renderer); |
41 | 299 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
300 m_controls = new PathDeformControls(null, m_renderer, smallScreen); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
301 m_controls.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum); |
41 | 302 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
303 if (!smallScreen) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
304 mainLayout.addWidget(m_controls); |
41 | 305 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
306 m_renderer.loadSourceFile(":res/deform/pathdeform.d"); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
307 m_renderer.loadDescription(":res/deform/pathdeform.html"); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
308 m_renderer.setDescriptionEnabled(false); |
41 | 309 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
310 m_renderer.clicked.connect(&showControls); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
311 m_controls.okPressed.connect(&hideControls); |
41 | 312 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
313 m_controls.quitPressed.connect(&QApplication.quit); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
314 } |
41 | 315 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
316 void showControls() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
317 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
318 m_controls.showFullScreen; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
319 } |
41 | 320 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
321 void hideControls() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
322 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
323 m_controls.hide; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
324 } |
41 | 325 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
326 void setWidgetStyle(QStyle style) // TODO: QWidget.setStyle is not virtual |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
327 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
328 super.setStyle(style); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
329 if (m_controls) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
330 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
331 m_controls.setStyle(style); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
332 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
333 QWidget[] widgets = m_controls.findChildren!(QWidget); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
334 foreach (w; widgets) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
335 w.setStyle(style); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
336 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
337 } |
41 | 338 } |
339 | |
340 private QRect circle_bounds(QPointF center, qreal radius, qreal compensation) | |
341 { | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
342 return QRect(qRound(center.x() - radius - compensation), |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
343 qRound(center.y() - radius - compensation), |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
344 qRound((radius + compensation) * 2), |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
345 qRound((radius + compensation) * 2)); |
41 | 346 } |
347 | |
348 enum | |
349 { | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
350 LENS_EXTENT = 10 |
41 | 351 } |
352 | |
353 class PathDeformRenderer : ArthurFrame | |
354 { | |
355 private: | |
356 | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
357 QBasicTimer m_repaintTimer; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
358 // QBasicTimer m_fpsTimer; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
359 // int m_fpsCounter; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
360 QTime m_repaintTracker; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
361 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
362 QPainterPath[] m_paths; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
363 QPointF[] m_advances; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
364 QRectF m_pathBounds; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
365 string m_text; |
41 | 366 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
367 QPixmap m_lens_pixmap; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
368 QImage m_lens_image; |
41 | 369 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
370 int m_fontSize; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
371 bool m_animated; |
41 | 372 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
373 qreal m_intensity; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
374 qreal m_radius; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
375 QPointF m_pos; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
376 QPointF m_offset; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
377 QPointF m_direction; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
378 QPointF m_mousePress; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
379 bool m_mouseDrag; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
380 bool m_smallScreen; |
41 | 381 |
382 public: | |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
383 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
384 mixin Signal!("clicked"); |
41 | 385 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
386 this(QWidget widget, bool smallScreen) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
387 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
388 super(widget); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
389 m_radius = 100; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
390 m_pos = QPointF(m_radius, m_radius); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
391 m_direction = QPointF(1, 1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
392 m_fontSize = 24; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
393 m_animated = true; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
394 m_repaintTimer.start(25, this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
395 m_repaintTracker.start(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
396 m_intensity = 100; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
397 m_smallScreen = smallScreen; |
41 | 398 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
399 // m_fpsTimer.start(1000, this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
400 // m_fpsCounter = 0; |
41 | 401 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
402 generateLensPixmap(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
403 } |
41 | 404 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
405 void setFontSize(int fontSize) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
406 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
407 m_fontSize = fontSize; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
408 setText(m_text); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
409 } |
41 | 410 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
411 override QSize sizeHint() { return QSize(600, 500); } |
41 | 412 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
413 bool animated() { return m_animated; } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
414 int radius() { return cast(int) m_radius; } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
415 int fontSize() { return m_fontSize; } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
416 int intensity() { return cast(int) m_intensity; } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
417 string text() { return m_text; } |
41 | 418 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
419 void setText(string text) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
420 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
421 m_text = text; |
41 | 422 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
423 auto f = new QFont("times new roman,utopia"); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
424 f.setStyleStrategy(QFont.ForceOutline); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
425 f.setPointSize(m_fontSize); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
426 f.setStyleHint(QFont.Times); |
41 | 427 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
428 m_paths = null; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
429 m_pathBounds = QRectF(); |
41 | 430 |
165 | 431 QPointF advance; |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
432 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
433 bool do_quick = true; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
434 for (int i = 0; i < text.length; ++i) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
435 if (text[i].unicode() >= 0x4ff && text.at(i).unicode() <= 0x1e00) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
436 do_quick = false; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
437 break; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
438 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
439 } |
41 | 440 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
441 if (do_quick) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
442 for (int i = 0; i < text.length; ++i) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
443 QPainterPath path = new QPainterPath; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
444 path.addText(advance, f, text.mid(i, 1)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
445 m_pathBounds |= path.boundingRect(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
446 m_paths ~= path; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
447 advance += QPointF(fm.width(text.mid(i, 1)), 0); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
448 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
449 } else { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
450 QPainterPath path = new QPainterPath; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
451 path.addText(advance, f, text); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
452 m_pathBounds |= path.boundingRect(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
453 m_paths ~= path; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
454 } |
41 | 455 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
456 for (int i = 0; i < m_paths.length; ++i) |
165 | 457 m_paths[i] = m_paths[i] * (new QMatrix(1, 0, 0, 1, -m_pathBounds.x(), -m_pathBounds.y())); |
41 | 458 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
459 update(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
460 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
461 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
462 void generateLensPixmap() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
463 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
464 qreal rad = m_radius + LENS_EXTENT; |
41 | 465 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
466 QRect bounds = circle_bounds(QPointF(), rad, 0); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
467 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
468 QPainter painter = new QPainter; |
41 | 469 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
470 if (preferImage()) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
471 m_lens_image = new QImage(bounds.size(), QImage.Format_ARGB32_Premultiplied); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
472 m_lens_image.fill(0); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
473 painter.begin(m_lens_image); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
474 } else { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
475 m_lens_pixmap = new QPixmap(bounds.size()); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
476 m_lens_pixmap.fill(new QColor(Qt.transparent)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
477 painter.begin(m_lens_pixmap); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
478 } |
41 | 479 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
480 auto gr = new QRadialGradient(rad, rad, rad, 3 * rad / 5, 3 * rad / 5); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
481 gr.setColorAt(0.0, new QColor(255, 255, 255, 191)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
482 gr.setColorAt(0.2, new QColor(255, 255, 127, 191)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
483 gr.setColorAt(0.9, new QColor(150, 150, 200, 63)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
484 gr.setColorAt(0.95, new QColor(0, 0, 0, 127)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
485 gr.setColorAt(1, new QColor(0, 0, 0, 0)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
486 painter.setRenderHint(QPainter.Antialiasing); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
487 painter.setBrush(gr); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
488 painter.setPen(Qt.NoPen); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
489 painter.drawEllipse(0, 0, bounds.width(), bounds.height()); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
490 } |
41 | 491 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
492 void setAnimated(bool animated) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
493 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
494 m_animated = animated; |
41 | 495 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
496 if (m_animated) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
497 // m_fpsTimer.start(1000, this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
498 // m_fpsCounter = 0; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
499 m_repaintTimer.start(25, this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
500 m_repaintTracker.start(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
501 } else { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
502 // m_fpsTimer.stop(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
503 m_repaintTimer.stop(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
504 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
505 } |
41 | 506 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
507 override void timerEvent(QTimerEvent e) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
508 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
509 if (e.timerId == m_repaintTimer.timerId) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
510 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
511 if ((QLineF(QPointF(0,0), m_direction)).length() > 1) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
512 m_direction *= 0.995; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
513 qreal time = m_repaintTracker.restart(); |
41 | 514 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
515 QRect rectBefore = circle_bounds(m_pos, m_radius, m_fontSize); |
41 | 516 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
517 qreal dx = m_direction.x(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
518 qreal dy = m_direction.y(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
519 if (time > 0) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
520 dx = dx * time * .1; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
521 dy = dy * time * .1; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
522 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
523 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
524 m_pos += QPointF(dx, dy); |
41 | 525 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
526 if (m_pos.x() - m_radius < 0) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
527 m_direction.x = -m_direction.x; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
528 m_pos.x = m_radius; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
529 } else if (m_pos.x + m_radius > width) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
530 m_direction.x = -m_direction.x; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
531 m_pos.x = width - m_radius; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
532 } |
41 | 533 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
534 if (m_pos.y - m_radius < 0) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
535 m_direction.y = -m_direction.y; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
536 m_pos.y = m_radius; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
537 } else if (m_pos.y + m_radius > height) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
538 m_direction.y = -m_direction.y; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
539 m_pos.y = height - m_radius; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
540 } |
41 | 541 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
542 void noGLUpdate() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
543 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
544 QRect rectAfter = circle_bounds(m_pos, m_radius, m_fontSize); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
545 update(rectAfter.united(rectBefore)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
546 QApplication.syncX(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
547 } |
41 | 548 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
549 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
550 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
551 if (usesOpenGL()) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
552 update; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
553 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
554 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
555 noGLUpdate; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
556 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
557 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
558 noGLUpdate; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
559 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
560 // else if (e.timerId() == m_fpsTimer.timerId()) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
561 // printf("fps: %d\n", m_fpsCounter); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
562 // emit frameRate(m_fpsCounter); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
563 // m_fpsCounter = 0; |
41 | 564 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
565 // } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
566 } |
41 | 567 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
568 override void mousePressEvent(QMouseEvent e) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
569 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
570 setDescriptionEnabled(false); |
41 | 571 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
572 m_repaintTimer.stop(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
573 m_offset = QPointF(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
574 if ((QLineF(m_pos, QPointF(e.pos))).length <= m_radius) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
575 m_offset = m_pos - QPointF(e.pos); |
41 | 576 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
577 m_mousePress = QPointF(e.pos); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
578 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
579 // If we're not running in small screen mode, always assume we're dragging |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
580 m_mouseDrag = !m_smallScreen; |
41 | 581 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
582 mouseMoveEvent(e); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
583 } |
41 | 584 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
585 override void mouseReleaseEvent(QMouseEvent e) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
586 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
587 if (e.buttons() == Qt.NoButton && m_animated) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
588 m_repaintTimer.start(10, this); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
589 m_repaintTracker.start(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
590 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
591 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
592 if (!m_mouseDrag && m_smallScreen) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
593 clicked.emit; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
594 } |
41 | 595 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
596 override void mouseMoveEvent(QMouseEvent e) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
597 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
598 auto epos = QPointF(e.pos); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
599 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
600 if (!m_mouseDrag && (QLineF(m_mousePress, QPointF(e.pos))).length() > 25.0) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
601 m_mouseDrag = true; |
41 | 602 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
603 if (m_mouseDrag) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
604 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
605 QRect rectBefore = circle_bounds(m_pos, m_radius, m_fontSize); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
606 if (e.type() == QEvent.MouseMove) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
607 QLineF line = QLineF(m_pos, epos + m_offset); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
608 line.setLength(line.length() * .1); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
609 auto dir = QPointF(line.dx(), line.dy()); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
610 m_direction = (m_direction + dir) / 2; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
611 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
612 m_pos = epos + m_offset; |
41 | 613 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
614 void noGLUpdate() |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
615 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
616 QRect rectAfter = circle_bounds(m_pos, m_radius, m_fontSize); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
617 update(rectBefore.united(rectAfter)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
618 } |
41 | 619 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
620 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
621 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
622 if (usesOpenGL()) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
623 update; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
624 } else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
625 noGLUpdate; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
626 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
627 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
628 noGLUpdate; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
629 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
630 } |
41 | 631 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
632 QPainterPath lensDeform(QPainterPath source, QPointF offset) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
633 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
634 auto path = new QPainterPath; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
635 path.addPath(source); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
636 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
637 qreal flip = m_intensity / 100.0; |
41 | 638 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
639 for (int i=0; i<path.elementCount; ++i) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
640 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
641 auto e = path.elementAt(i); |
41 | 642 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
643 qreal x = e.x + offset.x(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
644 qreal y = e.y + offset.y(); |
41 | 645 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
646 qreal dx = x - m_pos.x(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
647 qreal dy = y - m_pos.y(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
648 qreal len = m_radius - sqrt(dx * dx + dy * dy); |
41 | 649 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
650 if (len > 0) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
651 path.setElementPositionAt(i, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
652 x + flip * dx * len / m_radius, |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
653 y + flip * dy * len / m_radius); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
654 } else { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
655 path.setElementPositionAt(i, x, y); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
656 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
657 } |
41 | 658 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
659 return path; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
660 } |
41 | 661 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
662 override void paint(QPainter painter) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
663 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
664 int pad_x = 5; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
665 int pad_y = 5; |
41 | 666 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
667 int skip_x = qRound(m_pathBounds.width() + pad_x + m_fontSize/2); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
668 int skip_y = qRound(m_pathBounds.height() + pad_y); |
41 | 669 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
670 painter.setPen(Qt.NoPen); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
671 painter.setBrush(new QColor(Qt.black)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
672 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
673 auto clip = painter.clipPath().boundingRect(); |
41 | 674 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
675 int overlap = pad_x / 2; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
676 |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
677 for (int start_y=0; start_y < height(); start_y += skip_y) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
678 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
679 if (start_y > clip.bottom()) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
680 break; |
41 | 681 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
682 int start_x = -overlap; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
683 for (; start_x < width(); start_x += skip_x) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
684 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
685 if (start_y + skip_y >= clip.top() && |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
686 start_x + skip_x >= clip.left() && |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
687 start_x <= clip.right()) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
688 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
689 for (int i=0; i<m_paths.length; ++i) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
690 QPainterPath path = lensDeform(m_paths[i], QPointF(start_x, start_y)); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
691 painter.drawPath(path); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
692 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
693 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
694 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
695 overlap = skip_x - (start_x - width()); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
696 } |
41 | 697 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
698 if (preferImage) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
699 painter.drawImage(m_pos - QPointF(m_radius + LENS_EXTENT, m_radius + LENS_EXTENT), m_lens_image); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
700 } else { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
701 painter.drawPixmap(m_pos - QPointF(m_radius + LENS_EXTENT, m_radius + LENS_EXTENT), m_lens_pixmap); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
702 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
703 } |
41 | 704 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
705 void setRadius(int radius) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
706 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
707 qreal max = max(m_radius, cast(qreal)radius); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
708 m_radius = radius; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
709 generateLensPixmap(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
710 if (!m_animated || m_radius < max) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
711 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
712 auto noGLUpdate = (){ update(circle_bounds(m_pos, max, m_fontSize)); }; |
41 | 713 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
714 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
715 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
716 if (usesOpenGL()) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
717 update(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
718 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
719 noGLUpdate(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
720 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
721 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
722 noGLUpdate(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
723 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
724 } |
41 | 725 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
726 void setIntensity(int intensity) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
727 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
728 m_intensity = intensity; |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
729 if (!m_animated) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
730 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
731 auto noGLUpdate = (){ update(circle_bounds(m_pos, m_radius, m_fontSize)); }; |
41 | 732 |
163
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
733 version (QT_OPENGL_SUPPORT) |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
734 { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
735 if (usesOpenGL()) { |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
736 update(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
737 } else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
738 noGLUpdate(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
739 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
740 else |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
741 noGLUpdate(); |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
742 } |
ab01453c9d56
change to QObject.findChildren and code formatting
mwarning
parents:
161
diff
changeset
|
743 } |
41 | 744 } |