on xenial help sign in
Remove OrientedShell.qml - not enabling rotation for now
commit3d9e1dc00aae77fb1094cee101abe48308c894f5 authorGerry Boland <gerry.boland@canonical.com> dateTue 8 Jul 2014, 19:53 (12 years ago) parentd6a8208
2 files changed−460
debian/unity8.install−1 qml/OrientedShell.qml−459
debian/unity8.install−1
@@ -6,5 +6,4 @@ usr/share/unity8/Hud
66usr/share/unity8/Launcher
77usr/share/unity8/Panel
88usr/share/unity8/Shell.qml
9−usr/share/unity8/OrientedShell.qml
109usr/share/unity8/Stages
qml/OrientedShell.qmldeleted−459
@@ -1,459 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import QtQuick.Window 2.0
19−import Ubuntu.Components 0.1
20−import "Components"
21−
22−Rectangle {
23− // white background when dash is shown to better match Dashes own background, making for
24− // a nicer rotation animation effect. If gives the illusion that the dash is always taking the entire
25− // screen during the rotation.
26− color: shell.dashShown ? "white" : "black"
27− id: orientedShell
28−
29− // this is only here to select the width / height of the window if not running fullscreen
30− property bool tablet: false
31− width: tablet ? units.gu(160) : applicationArguments.hasGeometry() ? applicationArguments.width() : units.gu(40)
32− height: tablet ? units.gu(100) : applicationArguments.hasGeometry() ? applicationArguments.height() : units.gu(71)
33−
34− // Hack to avoid animating during startup
35− property bool ready: false
36− Timer { id: readyTimer; interval: 50; onTriggered: ready = true }
37− Component.onCompleted: readyTimer.start()
38−
39− property int acceptedOrientationAngle: {
40− var screenOrientation = Screen.orientation;
41− var acceptedOrientation;
42−
43− if (screenOrientation & shell.supportedScreenOrientations) {
44− acceptedOrientation = screenOrientation;
45− } else {
46− // try orientations at -90, 90 and 180
47− switch (screenOrientation) {
48− case Qt.PortraitOrientation:
49− if (Qt.LandscapeOrientation & shell.supportedScreenOrientations) {
50− acceptedOrientation = Qt.LandscapeOrientation;
51− } else if (Qt.InvertedLandscapeOrientation & shell.supportedScreenOrientations) {
52− acceptedOrientation = Qt.InvertedLandscapeOrientation;
53− } else {
54− acceptedOrientation = Qt.InvertedPortraitOrientation;
55− }
56− break;
57− case Qt.InvertedPortraitOrientation:
58− if (Qt.LandscapeOrientation & shell.supportedScreenOrientations) {
59− acceptedOrientation = Qt.LandscapeOrientation;
60− } else if (Qt.InvertedLandscapeOrientation & shell.supportedScreenOrientations) {
61− acceptedOrientation = Qt.InvertedLandscapeOrientation;
62− } else {
63− acceptedOrientation = Qt.PortraitOrientation;
64− }
65− break;
66− case Qt.LandscapeOrientation:
67− if (Qt.PortraitOrientation & shell.supportedScreenOrientations) {
68− acceptedOrientation = Qt.PortraitOrientation;
69− } else if (Qt.InvertedPortraitOrientation & shell.supportedScreenOrientations) {
70− acceptedOrientation = Qt.InvertedPortraitOrientation;
71− } else {
72− acceptedOrientation = Qt.InvertedLandscapeOrientation;
73− }
74− break;
75− default: // Qt.InvertedLandscapeOrientation
76− if (Qt.PortraitOrientation & shell.supportedScreenOrientations) {
77− acceptedOrientation = Qt.PortraitOrientation;
78− } else if (Qt.InvertedPortraitOrientation & shell.supportedScreenOrientations) {
79− acceptedOrientation = Qt.InvertedPortraitOrientation;
80− } else {
81− acceptedOrientation = Qt.LandscapeOrientation;
82− }
83− break;
84− }
85− }
86−
87− return Screen.angleBetween(Screen.primaryOrientation, acceptedOrientation);
88− }
89−
90− state: acceptedOrientationAngle.toString()
91− states: [
92− State {
93− name: "0"
94− PropertyChanges {
95− target: shell
96− transformRotationAngle: 0
97− transformOriginX: orientedShell.width / 2
98− transformOriginY: orientedShell.width / 2
99− x: 0
100− y: 0
101− width: orientedShell.width
102− height: orientedShell.height
103− }
104− },
105− State {
106− name: "90"
107− PropertyChanges {
108− target: shell
109− transformRotationAngle: 90
110− transformOriginX: orientedShell.width / 2
111− transformOriginY: orientedShell.width / 2
112− x: 0
113− y: 0
114− width: orientedShell.height
115− height: orientedShell.width
116− }
117− },
118− State {
119− name: "180"
120− PropertyChanges {
121− target: shell
122− transformRotationAngle: 180
123− transformOriginX: orientedShell.width / 2
124− transformOriginY: orientedShell.width / 2
125− x: 0
126− y: orientedShell.height - orientedShell.width
127− width: orientedShell.width
128− height: orientedShell.height
129− }
130− },
131− State {
132− name: "270"
133− PropertyChanges {
134− target: shell
135− transformRotationAngle: -90
136− transformOriginX: orientedShell.height / 2
137− transformOriginY: orientedShell.height / 2
138− x: 0
139− y: 0
140− width: orientedShell.height
141− height: orientedShell.width
142− }
143− }
144− ]
145−
146−
147− property int rotationDuration: 450
148− property int rotationEasing: Easing.InOutCubic
149− // Those values are good for debugging/development
150− //property int rotationDuration: 6000
151− //property int rotationEasing: Easing.Linear
152−
153− transitions: [
154− Transition {
155− from: "90"
156− to: "0"
157− enabled: ready
158− SequentialAnimation {
159− ScriptAction { script: { windowScreenshot.take(); } }
160− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
161− PropertyAction { target: shell; property: "width"; value: orientedShell.width }
162− PropertyAction { target: shell; property: "height"; value: orientedShell.height }
163− PropertyAction { target: shell; property: "transformRotationAngle"; value: 90 }
164− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
165− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
166− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.width / 2 }
167− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.width / 2 }
168− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
169− ParallelAnimation {
170− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
171− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 0; duration: rotationDuration; easing.type: rotationEasing }
172−
173− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
174− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: -90; duration: rotationDuration; easing.type: rotationEasing }
175− }
176− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
177− ScriptAction { script: { windowScreenshot.discard(); } }
178− }
179− },
180− Transition {
181− from: "0"
182− to: "90"
183− enabled: ready
184− SequentialAnimation {
185− ScriptAction { script: { windowScreenshot.take(); } }
186− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
187− PropertyAction { target: shell; property: "width"; value: orientedShell.height }
188− PropertyAction { target: shell; property: "height"; value: orientedShell.width }
189− PropertyAction { target: shell; property: "transformRotationAngle"; value: 0 }
190− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
191− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
192− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.width / 2 }
193− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.width / 2 }
194− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
195− ParallelAnimation {
196− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
197− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 90; duration: rotationDuration; easing.type: rotationEasing }
198−
199− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
200− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: 90; duration: rotationDuration; easing.type: rotationEasing }
201− }
202− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
203− ScriptAction { script: { windowScreenshot.discard(); } }
204− }
205− },
206− Transition {
207− from: "0"
208− to: "270"
209− enabled: ready
210− SequentialAnimation {
211− ScriptAction { script: { windowScreenshot.take(); } }
212− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
213− PropertyAction { target: shell; property: "width"; value: orientedShell.height }
214− PropertyAction { target: shell; property: "height"; value: orientedShell.width }
215− PropertyAction { target: shell; property: "transformRotationAngle"; value: 0 }
216− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.height / 2 }
217− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.height / 2 }
218− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.height / 2 }
219− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.height / 2 }
220− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
221− ParallelAnimation {
222− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
223− NumberAnimation { target: shell; property: "transformRotationAngle"; to: -90; duration: rotationDuration; easing.type: rotationEasing }
224−
225− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
226− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: -90; duration: rotationDuration; easing.type: rotationEasing }
227− }
228− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
229− ScriptAction { script: { windowScreenshot.discard(); } }
230− }
231− },
232− Transition {
233− from: "270"
234− to: "0"
235− enabled: ready
236− SequentialAnimation {
237− ScriptAction { script: { windowScreenshot.take(); } }
238− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
239− PropertyAction { target: shell; property: "width"; value: orientedShell.width }
240− PropertyAction { target: shell; property: "height"; value: orientedShell.height }
241− PropertyAction { target: shell; property: "transformRotationAngle"; value: -90 }
242− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.height / 2 }
243− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.height / 2 }
244− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.height / 2 }
245− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.height / 2 }
246− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
247− ParallelAnimation {
248− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
249− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 0; duration: rotationDuration; easing.type: rotationEasing }
250−
251− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
252− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: 90; duration: rotationDuration; easing.type: rotationEasing }
253− }
254− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
255− ScriptAction { script: { windowScreenshot.discard(); } }
256− }
257− },
258− Transition {
259− from: "90"
260− to: "180"
261− enabled: true
262− SequentialAnimation {
263− ScriptAction { script: { windowScreenshot.take(); } }
264− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
265− PropertyAction { target: shell; property: "width"; value: orientedShell.width }
266− PropertyAction { target: shell; property: "height"; value: orientedShell.height }
267− PropertyAction { target: shell; property: "transformRotationAngle"; value: 90 }
268− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
269− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
270− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.width / 2 }
271− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.width / 2 }
272− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
273− ParallelAnimation {
274− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
275− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 180; duration: rotationDuration; easing.type: rotationEasing }
276− NumberAnimation { target: shell; property: "y"; from: 0; to: orientedShell.height - orientedShell.width; duration: rotationDuration; easing.type: rotationEasing }
277−
278− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
279− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: 90; duration: rotationDuration; easing.type: rotationEasing }
280− NumberAnimation { target: windowScreenshot; property: "y"; from: 0; to: orientedShell.height - orientedShell.width; duration: rotationDuration; easing.type: rotationEasing }
281− }
282− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
283− ScriptAction { script: { windowScreenshot.discard(); } }
284− }
285− },
286− Transition {
287− from: "180"
288− to: "90"
289− enabled: true
290− SequentialAnimation {
291− ScriptAction { script: { windowScreenshot.take(); } }
292− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
293− PropertyAction { target: shell; property: "width"; value: orientedShell.height }
294− PropertyAction { target: shell; property: "height"; value: orientedShell.width }
295− PropertyAction { target: shell; property: "transformRotationAngle"; value: 180 }
296− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
297− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
298− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.width / 2 }
299− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.height - (orientedShell.width / 2) }
300− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
301− ParallelAnimation {
302− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
303− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 90; duration: rotationDuration; easing.type: rotationEasing }
304− NumberAnimation { target: shell; property: "y"; from: orientedShell.height - orientedShell.width; to: 0; duration: rotationDuration; easing.type: rotationEasing }
305−
306− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
307− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: -90; duration: rotationDuration; easing.type: rotationEasing }
308− NumberAnimation { target: windowScreenshot; property: "y"; from: 0; to: -orientedShell.height + orientedShell.width; duration: rotationDuration; easing.type: rotationEasing }
309− }
310− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
311− ScriptAction { script: { windowScreenshot.discard(); } }
312− }
313− },
314− Transition {
315− from: "180"
316− to: "270"
317− enabled: true
318− SequentialAnimation {
319− ScriptAction { script: { windowScreenshot.take(); } }
320− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
321− PropertyAction { target: shell; property: "width"; value: orientedShell.height }
322− PropertyAction { target: shell; property: "height"; value: orientedShell.width }
323− PropertyAction { target: shell; property: "y"; value: orientedShell.height - orientedShell.width }
324− PropertyAction { target: shell; property: "transformRotationAngle"; value: 180 }
325− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
326− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
327− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.width / 2 }
328− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.height - (orientedShell.width / 2) }
329− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
330− ParallelAnimation {
331− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
332− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 270; duration: rotationDuration; easing.type: rotationEasing }
333−
334− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
335− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: 90; duration: rotationDuration; easing.type: rotationEasing }
336− }
337− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
338− ScriptAction { script: { windowScreenshot.discard(); } }
339− }
340− },
341− Transition {
342− from: "270"
343− to: "180"
344− enabled: ready
345− SequentialAnimation {
346− ScriptAction { script: { windowScreenshot.take(); } }
347− PropertyAction { target: windowScreenshot; property: "visible"; value: true }
348− PropertyAction { target: shell; property: "width"; value: orientedShell.width }
349− PropertyAction { target: shell; property: "height"; value: orientedShell.height }
350− PropertyAction { target: shell; property: "y"; value: orientedShell.height - orientedShell.width }
351− PropertyAction { target: shell; property: "transformRotationAngle"; value: 270 }
352− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
353− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
354− PropertyAction { target: windowScreenshot; property: "transformOriginX"; value: orientedShell.width / 2 }
355− PropertyAction { target: windowScreenshot; property: "transformOriginY"; value: orientedShell.height - (orientedShell.width / 2) }
356− PropertyAction { target: windowScreenshot; property: "y"; value: 0 }
357− ParallelAnimation {
358− NumberAnimation { target: shell; property: "opacity"; from: 0; to: 1; duration: rotationDuration; easing.type: rotationEasing }
359− NumberAnimation { target: shell; property: "transformRotationAngle"; to: 180; duration: rotationDuration; easing.type: rotationEasing }
360−
361− NumberAnimation { target: windowScreenshot; property: "opacity"; from: 1; to: 0; duration: rotationDuration; easing.type: rotationEasing }
362− NumberAnimation { target: windowScreenshot; property: "transformRotationAngle"; from: 0; to: -90; duration: rotationDuration; easing.type: rotationEasing }
363− }
364− PropertyAction { target: windowScreenshot; property: "visible"; value: false }
365− ScriptAction { script: { windowScreenshot.discard(); } }
366− }
367− },
368− Transition {
369− from: "0"
370− to: "180"
371− enabled: ready
372− SequentialAnimation {
373− PropertyAction { target: shell; property: "y"; value: 0 }
374− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
375− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.height / 2 }
376−
377− NumberAnimation { target: shell; property: "transformRotationAngle"; from: 0; to: 180; duration: rotationDuration; easing.type: rotationEasing }
378− }
379− },
380− Transition {
381− from: "180"
382− to: "0"
383− enabled: ready
384− SequentialAnimation {
385− PropertyAction { target: shell; property: "y"; value: 0 }
386− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
387− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.height / 2 }
388−
389− NumberAnimation { target: shell; property: "transformRotationAngle"; from: 180; to: 0; duration: rotationDuration; easing.type: rotationEasing }
390− }
391− },
392− Transition {
393− from: "90"
394− to: "270"
395− enabled: ready
396− SequentialAnimation {
397− PropertyAction { target: shell; property: "x"; value: -(orientedShell.height - orientedShell.width) / 2 }
398− PropertyAction { target: shell; property: "y"; value: (orientedShell.height - orientedShell.width) / 2 }
399− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.height / 2 }
400− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
401−
402− NumberAnimation { target: shell; property: "transformRotationAngle"; from: 90; to: 270; duration: rotationDuration; easing.type: rotationEasing }
403−
404− // Explicitly apply state "270" values as Qt doesn't seem to properly apply them after the transition is done
405− PropertyAction { target: shell; property: "x"; value: 0 }
406− PropertyAction { target: shell; property: "y"; value: 0 }
407− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.height / 2 }
408− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.height / 2 }
409− }
410− },
411− Transition {
412− from: "270"
413− to: "90"
414− enabled: ready
415− SequentialAnimation {
416− PropertyAction { target: shell; property: "x"; value: -(orientedShell.height - orientedShell.width) / 2 }
417− PropertyAction { target: shell; property: "y"; value: (orientedShell.height - orientedShell.width) / 2 }
418− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.height / 2 }
419− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
420−
421− NumberAnimation { target: shell; property: "transformRotationAngle"; from: 270; to: 90; duration: rotationDuration; easing.type: rotationEasing }
422−
423− // Explicitly apply state "90" values as Qt doesn't seem to properly apply them after the transition is done
424− PropertyAction { target: shell; property: "x"; value: 0 }
425− PropertyAction { target: shell; property: "y"; value: 0 }
426− PropertyAction { target: shell; property: "transformOriginX"; value: orientedShell.width / 2 }
427− PropertyAction { target: shell; property: "transformOriginY"; value: orientedShell.width / 2 }
428− }
429− }
430− ]
431−
432− Shell {
433− id: shell
434− property real transformRotationAngle
435− property real transformOriginX
436− property real transformOriginY
437−
438− transform: Rotation {
439− origin.x: shell.transformOriginX; origin.y: shell.transformOriginY; axis { x: 0; y: 0; z: 1 }
440− angle: shell.transformRotationAngle
441− }
442− }
443−
444− WindowScreenshot {
445− id: windowScreenshot
446− visible: false
447− width: orientedShell.width
448− height: orientedShell.height
449−
450− property real transformRotationAngle
451− property real transformOriginX
452− property real transformOriginY
453−
454− transform: Rotation {
455− origin.x: windowScreenshot.transformOriginX; origin.y: windowScreenshot.transformOriginY; axis { x: 0; y: 0; z: 1 }
456− angle: windowScreenshot.transformRotationAngle
457− }
458− }
459−}