From 0709fc32997c6e83b49e1311b000ba9717b87fb6 Mon Sep 17 00:00:00 2001 From: zheng_wenlong Date: Wed, 14 Nov 2018 12:44:57 +0900 Subject: Add tachometer for horizontal mode Add tachometer for horizontal mode. Change-Id: Ia5ae863dc1b2bfc6c282015c5c01a47c60cc429c Signed-off-by: zheng_wenlong --- demo3/horizontal/tachometer/app/Tacho.qml | 101 ++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 demo3/horizontal/tachometer/app/Tacho.qml (limited to 'demo3/horizontal/tachometer/app/Tacho.qml') diff --git a/demo3/horizontal/tachometer/app/Tacho.qml b/demo3/horizontal/tachometer/app/Tacho.qml new file mode 100644 index 0000000..4dd71d2 --- /dev/null +++ b/demo3/horizontal/tachometer/app/Tacho.qml @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtWebSockets 1.0 + +Item { + property real imgwidth: 500 + property real imgheight: 500 + + property real tacho: enginespeed === undefined ? 0 : (enginespeed > 9000 ? 9 : enginespeed*9/9000) + + Image { + width: imgwidth + height: imgheight + fillMode: Image.PreserveAspectFit + smooth: true + asynchronous: true + source: "images/meters/tacho_center.svg" + } + Image { + width: imgwidth + height: imgheight + fillMode: Image.PreserveAspectFit + smooth: true + asynchronous: true + source: "images/meters/tacho_frame.svg" + } + Image { + width: imgwidth + height: imgheight + fillMode: Image.PreserveAspectFit + smooth: true + asynchronous: true + source: "images/meters/tacho_scale.svg" + } + Shift { + percent: imgwidth/480 + anchors.right: parent.right + anchors.rightMargin: (wshift == "N" || wshift == "P" ||wshift == "R" )? (imgwidth-width)/2+25 : (imgwidth-width)/2-5 + anchors.bottom: parent.bottom + anchors.bottomMargin: 100 + spacing: -10 + } + Canvas { + id: canvas + property real engleoffset: Math.PI*3/2.04 + property int linewidth: 90 + anchors.centerIn: parent + width: 420 + height: 420 + visible: tacho >= 0.05 + rotation: 135 + opacity: 0.5 + onPaint: { + var ctx = getContext("2d") + var gradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height) + gradient.addColorStop(0.0, Qt.rgba(1.0, 1.0, 1.0, 1.0)) + gradient.addColorStop(1.0, Qt.rgba(1.0, 1.0, 1.0, 0.0)) + + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.beginPath(); + ctx.lineWidth = linewidth; + ctx.strokeStyle = gradient + ctx.arc(canvas.width/2, + canvas.height/2, + (canvas.width-ctx.lineWidth)/2, + 0.1, + engleoffset*(tacho/9) + (tacho < 3 ? 0.1 : (tacho < 7 ? 0.05 : 0.0)), + false) + ctx.stroke() + ctx.closePath() + } + } + Image { + width: imgwidth + height: imgheight + fillMode: Image.PreserveAspectFit + smooth: true + asynchronous: true + rotation: 28.8*tacho + source: "images/meters/tacho_hand.svg" + } + + onTachoChanged: { + canvas.requestPaint() + } +} -- cgit 1.2.3-korg