From 5f6ad4e11970312ad8d2a57b2d3b2260d99cdb59 Mon Sep 17 00:00:00 2001 From: zheng_wenlong Date: Tue, 9 Jul 2019 15:36:00 +0900 Subject: add new design --- app/Hudtbt.qml | 196 +++++++++++++++++++++++++++++++++++--- app/NextCrossDistance.qml | 92 ++++++++++++++++++ app/TbtBoard.qml | 36 ++++--- app/TotalDistance.qml | 78 +++++++++++++++ app/hudtbt.qrc | 2 + app/images/arrow-0-full.png | Bin 12088 -> 0 bytes app/images/arrow-l-180-full.png | Bin 21134 -> 0 bytes app/images/arrow-l-30-full.png | Bin 17061 -> 0 bytes app/images/arrow-l-45-full.png | Bin 17970 -> 0 bytes app/images/arrow-l-75-full.png | Bin 22426 -> 0 bytes app/images/arrow-r-180-full.png | Bin 21211 -> 0 bytes app/images/arrow-r-30-full.png | Bin 16478 -> 0 bytes app/images/arrow-r-45-full.png | Bin 17690 -> 0 bytes app/images/arrow-r-75-full.png | Bin 23047 -> 0 bytes app/images/destination_full.png | Bin 16658 -> 0 bytes app/images/distance_meter.png | Bin 0 -> 1407 bytes app/images/distance_meterline.png | Bin 0 -> 580 bytes app/images/images.qrc | 45 +++++++-- app/images/no_0.png | Bin 0 -> 264 bytes app/images/no_1.png | Bin 0 -> 198 bytes app/images/no_2.png | Bin 0 -> 289 bytes app/images/no_3.png | Bin 0 -> 340 bytes app/images/no_4.png | Bin 0 -> 306 bytes app/images/no_5.png | Bin 0 -> 291 bytes app/images/no_6.png | Bin 0 -> 299 bytes app/images/no_7.png | Bin 0 -> 278 bytes app/images/no_8.png | Bin 0 -> 327 bytes app/images/no_9.png | Bin 0 -> 298 bytes app/images/no_comma.png | Bin 0 -> 127 bytes app/images/tbt_0.png | Bin 0 -> 394 bytes app/images/tbt_1.png | Bin 0 -> 257 bytes app/images/tbt_2.png | Bin 0 -> 444 bytes app/images/tbt_3.png | Bin 0 -> 525 bytes app/images/tbt_4.png | Bin 0 -> 411 bytes app/images/tbt_5.png | Bin 0 -> 445 bytes app/images/tbt_6.png | Bin 0 -> 459 bytes app/images/tbt_7.png | Bin 0 -> 425 bytes app/images/tbt_8.png | Bin 0 -> 521 bytes app/images/tbt_9.png | Bin 0 -> 472 bytes app/images/tbt_B_L-45.png | Bin 0 -> 926 bytes app/images/tbt_B_L-90.png | Bin 0 -> 1041 bytes app/images/tbt_B_L45.png | Bin 0 -> 792 bytes app/images/tbt_B_L90.png | Bin 0 -> 796 bytes app/images/tbt_B_R-45.png | Bin 0 -> 971 bytes app/images/tbt_B_R-90.png | Bin 0 -> 1042 bytes app/images/tbt_B_R45.png | Bin 0 -> 754 bytes app/images/tbt_B_R90.png | Bin 0 -> 760 bytes app/images/tbt_B_centor.png | Bin 0 -> 629 bytes app/images/tbt_dest.png | Bin 0 -> 1349 bytes app/images/tbt_m.png | Bin 0 -> 384 bytes app/images/tbt_park.png | Bin 0 -> 1044 bytes 51 files changed, 412 insertions(+), 37 deletions(-) create mode 100644 app/NextCrossDistance.qml create mode 100644 app/TotalDistance.qml delete mode 100644 app/images/arrow-0-full.png delete mode 100644 app/images/arrow-l-180-full.png delete mode 100644 app/images/arrow-l-30-full.png delete mode 100644 app/images/arrow-l-45-full.png delete mode 100644 app/images/arrow-l-75-full.png delete mode 100644 app/images/arrow-r-180-full.png delete mode 100644 app/images/arrow-r-30-full.png delete mode 100644 app/images/arrow-r-45-full.png delete mode 100644 app/images/arrow-r-75-full.png delete mode 100644 app/images/destination_full.png create mode 100644 app/images/distance_meter.png create mode 100644 app/images/distance_meterline.png create mode 100644 app/images/no_0.png create mode 100644 app/images/no_1.png create mode 100644 app/images/no_2.png create mode 100644 app/images/no_3.png create mode 100644 app/images/no_4.png create mode 100644 app/images/no_5.png create mode 100644 app/images/no_6.png create mode 100644 app/images/no_7.png create mode 100644 app/images/no_8.png create mode 100644 app/images/no_9.png create mode 100644 app/images/no_comma.png create mode 100644 app/images/tbt_0.png create mode 100644 app/images/tbt_1.png create mode 100644 app/images/tbt_2.png create mode 100644 app/images/tbt_3.png create mode 100644 app/images/tbt_4.png create mode 100644 app/images/tbt_5.png create mode 100644 app/images/tbt_6.png create mode 100644 app/images/tbt_7.png create mode 100644 app/images/tbt_8.png create mode 100644 app/images/tbt_9.png create mode 100644 app/images/tbt_B_L-45.png create mode 100644 app/images/tbt_B_L-90.png create mode 100644 app/images/tbt_B_L45.png create mode 100644 app/images/tbt_B_L90.png create mode 100644 app/images/tbt_B_R-45.png create mode 100644 app/images/tbt_B_R-90.png create mode 100644 app/images/tbt_B_R45.png create mode 100644 app/images/tbt_B_R90.png create mode 100644 app/images/tbt_B_centor.png create mode 100644 app/images/tbt_dest.png create mode 100644 app/images/tbt_m.png create mode 100644 app/images/tbt_park.png diff --git a/app/Hudtbt.qml b/app/Hudtbt.qml index 8d26719..6f3458b 100644 --- a/app/Hudtbt.qml +++ b/app/Hudtbt.qml @@ -15,30 +15,46 @@ * limitations under the License. */ +//import QtQuick 2.6 +//import QtQuick.Window 2.2 +//import QtQuick.Layouts 1.1 +//import QtQuick.Controls 1.4 +//import QtWebSockets 1.0 import QtQuick 2.6 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 import QtWebSockets 1.0 +import QtQuick.Controls.Styles 1.4 ApplicationWindow { id: window title: "HUD Tbt Demo" - width: 1920 - height: 1080 + width: 1024 + height: 768 visible: true property string api_str: "naviapi" property string verb_subscribe: "subscribe" property string verb_getcurretdirstate: "navicore_getcurrentdestdir" + property string verb_getcurretdistance: "navicore_getcurrentdistance" + property string verb_getcurrentguidancestate: "navicore_getcurrentguidancestate" property string event_getdestdir: "naviapi/navicore_getdestdir" + property string event_getdistance: "naviapi/navicore_getdistance" property string event_cancelguidance: "naviapi/navicore_cancelguidance" - property string nodirection_str:"0" + property string event_startguidance: "naviapi/navicore_startguidance" + + property string park_str:"13" property string arrivedirection_str:"12" + property string cancelguidance_str:"false" + property string startguidance_str:"true" property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 } property string request_str: "" property string status_str: "" + property real val: 0 + property int total_distance: 0 + property int cumulative_distance: 0 property double state: 0 WebSocket { @@ -51,9 +67,12 @@ ApplicationWindow { websocket.active = false }else if (websocket.status === WebSocket.Open){ console.log ("Socket Open") - do_getcurrentdirstate() + do_getcurrentguidancestate() do_subscribe("getdestdir") do_subscribe("cancelguidance") + do_subscribe("getdistance") + do_subscribe("startguidance") + subscribe_timer.start() }else if (websocket.status === WebSocket.Closed){ console.log ("Socket closed") } @@ -61,8 +80,8 @@ ApplicationWindow { onTextMessageReceived: { var message_json = JSON.parse(message) - console.log ("Raw response: " + message) - console.log ("JSON response: " + message_json) + // console.log ("Raw response: " + message) + // console.log ("JSON response: " + message_json) if (message_json[0] === msgid_enu.event){ @@ -70,26 +89,66 @@ ApplicationWindow { { var state = message_json[2].data.state tbt_board.state = state - console.log ("state is ok !") + // console.log ("state is ok !dirstate="+state) if (tbt_board.state === arrivedirection_str) { clear_timer.start() - console.log ("clear arrive direction state 12 is ok !") + // console.log ("clear arrive direction state 12 is ok !") } } + else if(message_json[2].event === event_getdistance) + { + var totaldistance = message_json[2].data.totaldistance + var cumulativedistance = message_json[2].data.cumulativedistance + setProgress(totaldistance,cumulativedistance) + // console.log ("getdistance is ok !totaldistance="+totaldistance+"cumulativedistance="+cumulativedistance) + } else if(message_json[2].event === event_cancelguidance) { - tbt_board.state = nodirection_str + console.log ("cancelguidance !") + distanceBar.visible = false + totalDistance.visible = false + val = 0 + total_distance = 0 + cumulative_distance = 0 + setProgress(total_distance,cumulative_distance) + tbt_board.state = park_str + } + else if(message_json[2].event === event_startguidance) + { + console.log ("startguidance !") + distanceBar.visible = true + totalDistance.visible = true } } else if(message_json[0] === msgid_enu.retok){ if (message_json[2].request.info === verb_getcurretdirstate){ var currentdirstate = message_json[2].response[0].CurrentDirState tbt_board.state = currentdirstate - console.log ("get current state is ok !") + // console.log ("get current state is ok !currentdirstate="+currentdirstate) + } + else if (message_json[2].request.info === verb_getcurretdistance){ + var currenttotaldistance = message_json[2].response[0].CurrentTotalDistance + var currentcumulativedistance = message_json[2].response[0].CurrentCumulativeDistance + setProgress(currenttotaldistance,currenttotaldistance) + // console.log ("get current distance is ok !currenttotaldistance:"+currenttotaldistance+"currentcumulativedistance:"+currentcumulativedistance) + } + else if (message_json[2].request.info === verb_getcurrentguidancestate){ + var currentguidancestate = message_json[2].response[0].CurrentGuidanceState + if (currentguidancestate === startguidance_str) + { + distanceBar.visible = true + totalDistance.visible = true + do_getcurrentdirstate() + do_getcurrentdistance() + } + else + { + tbt_board.state = park_str + } + // console.log ("get current guidance state is ok !currentguidancestate="+currentguidancestate) } } - else{ if (message_json[0] !== msgid_enu.retok) { console.log ("Return value is not ok !") @@ -106,6 +165,20 @@ ApplicationWindow { console.log (request_str) websocket.sendTextMessage (request_str) + } + //get current total distance and cumulative distance + function do_getcurrentdistance() { + request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_getcurretdistance + '", {} ]' + console.log (request_str) + websocket.sendTextMessage (request_str) + + } + //get current guidance state + function do_getcurrentguidancestate() { + request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_getcurrentguidancestate + '", {} ]' + console.log (request_str) + websocket.sendTextMessage (request_str) + } //subscribe function do_subscribe( event ) { @@ -113,21 +186,116 @@ ApplicationWindow { console.log (request_str) websocket.sendTextMessage (request_str) } + //set distance + function setProgress(totaldistance,cumulativedistance) { + if (totaldistance === 0 && cumulativedistance === 0){ + val = 0 + total_distance = totaldistance + totalDistance.setTotalDistance(total_distance/1000) + }else{ + total_distance = totaldistance + cumulative_distance = cumulativedistance + totalDistance.setTotalDistance(total_distance/1000) + val = ((total_distance + 60)-cumulative_distance)/(total_distance + 60) + } + if ( (bar.from <= val) && (val < bar.to ) ) { + bar.value = val + } + else if ( bar.to < val ){ + bar.value = bar.to + } + // console.log ("setdistanceok! totalDistance:"+total_distance+"bar.value:"+val) + + } TbtBoard { id: tbt_board - z: 1 visible: true anchors.fill: parent } + + + Image { + id: distanceBar + width: 280 + height: 110 + anchors.right: parent.right + anchors.rightMargin: 10 + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: 65 + source: "qrc:distance_meter.png" + visible: false + Item { + width: 168 + height: 20 + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + + ProgressBar { + id: bar + anchors.fill: parent + + LayoutMirroring.enabled: true + LayoutMirroring.childrenInherit: true + value: 0.0 + from: 0.0 + to: 1.0 + + background: Rectangle { + radius: 2 + color: "#111111" + implicitWidth: 200 + implicitHeight: 24 + } + + contentItem: Rectangle { + anchors.left: bar.left + anchors.verticalCenter:bar.verticalCenter + width: (1.0 - bar.visualPosition) * bar.width + height: bar.height / 2 + color: "#00ff00" + } + } + } + + TotalDistance { + id: totalDistance + width: 30 + visible: false + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -10 + anchors.right: parent.right + anchors.rightMargin: 60 + } + } + Timer { id: clear_timer repeat: false interval: 5000 triggeredOnStart: false onTriggered: { - tbt_board.state = nodirection_str + tbt_board.state = park_str + val = 0 + total_distance = 0 + cumulative_distance = 0 + setProgress(total_distance,cumulative_distance) + distanceBar.visible = false + totalDistance.visible = false + } + } + Timer { + id: subscribe_timer + repeat: false + interval: 2000 + triggeredOnStart: false + onTriggered: { + console.log ("subscribe again") + do_getcurrentguidancestate() + do_subscribe("getdestdir") + do_subscribe("cancelguidance") + do_subscribe("getdistance") + do_subscribe("startguidance") } } - } diff --git a/app/NextCrossDistance.qml b/app/NextCrossDistance.qml new file mode 100644 index 0000000..7719976 --- /dev/null +++ b/app/NextCrossDistance.qml @@ -0,0 +1,92 @@ +import QtQuick 2.0 +import QtQuick.Layouts 1.1 + +Item { + id: root + property int units: 0 + property int tens: 0 + property int hundreds: 0 + ListModel { + id: model + ListElement { + name: "0" + picturePath: "qrc:tbt_0.png" + } + ListElement { + name: "1" + picturePath: "qrc:tbt_1.png" + } + ListElement { + name: "2" + picturePath: "qrc:tbt_2.png" + } + ListElement { + name: "3" + picturePath: "qrc:tbt_3.png" + } + ListElement { + name: "4" + picturePath: "qrc:tbt_4.png" + } + ListElement { + name: "5" + picturePath: "qrc:tbt_5.png" + } + ListElement { + name: "6" + picturePath: "qrc:tbt_6.png" + } + ListElement { + name: "7" + picturePath: "qrc:tbt_7.png" + } + ListElement { + name: "8" + picturePath: "qrc:tbt_8.png" + } + ListElement { + name: "9" + picturePath: "qrc:tbt_9.png" + } + } + + RowLayout { + anchors.fill: parent + Image { + id: hundreds_image + width: parent.width * 0.25 + } + Image { + id: tens_image + width: parent.width * 0.25 + } + Image { + id: units_image + width: parent.width * 0.25 + source: "qrc:tbt_0.png" + } + Image { + id: metre_image + width: parent.width * 0.25 + source: "qrc:tbt_m.png" + } + } + + function setCorssDistance(dis) { + hundreds = dis / 100 % 10 + tens = dis / 10 % 10 + units = dis % 10 + if(hundreds != 0) { + hundreds_image.source = model.get(hundreds).picturePath + tens_image.source = model.get(tens).picturePath + units_image.source = model.get(units).picturePath + } else { + if(tens != 0) { + tens_image.source = model.get(tens).picturePath + } + units_image.source = model.get(units).picturePath + } + + } + +} diff --git a/app/TbtBoard.qml b/app/TbtBoard.qml index 19daad2..d902721 100644 --- a/app/TbtBoard.qml +++ b/app/TbtBoard.qml @@ -3,13 +3,19 @@ //turn by turn board view Rectangle { id: tbt_board - color: '#111111' + color: "#111111" // turn direction arrow board image Image { id: turnDirectionBoard visible: true - anchors.centerIn: parent - z: 3 + width: sourceSize.width*1.5 + height: sourceSize.height*1.5 + + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + // anchors.verticalCenterOffset: 10 + anchors.horizontalCenterOffset: 50 +// z: 3 } // the cases of direction arrow board @@ -20,7 +26,7 @@ Rectangle { }, State { name: "1" // DirectionForward - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-0-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_centor.png" } }, State { name: "2" // DirectionBearRight @@ -28,37 +34,37 @@ Rectangle { }, State { name: "3" // DirectionLightRight - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-30-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_R45.png" } }, State { name: "4" // DirectionRight - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-45-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_R90.png" } }, State { name: "5" // DirectionHardRight - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-75-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_R-45.png" } }, State { name: "6" // DirectionUTurnRight //TODO modify qtlocation U-Turn best.For test, change app source. - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-180-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_L-90.png" } }, State { name: "7" // DirectionUTurnLeft //TODO modify qtlocation U-Turn best.For test, change app source. - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-180-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_R-90.png" } }, State { name: "8" // DirectionHardLeft - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-75-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_L-45.png" } }, State { name: "9" // DirectionLeft - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-45-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_L90.png" } }, State { name: "10" // DirectionLightLeft - PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-30-full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_B_L45.png" } }, State { name: "11" // DirectionBearLeft @@ -66,7 +72,11 @@ Rectangle { }, State { name: "12" //arrive the destination - PropertyChanges { target: turnDirectionBoard; source: "qrc:destination_full.png" } + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_dest.png" } + }, + State { + name: "13" //park + PropertyChanges { target: turnDirectionBoard; source: "qrc:tbt_park.png" } }, State { name: "invisible" diff --git a/app/TotalDistance.qml b/app/TotalDistance.qml new file mode 100644 index 0000000..c8fadeb --- /dev/null +++ b/app/TotalDistance.qml @@ -0,0 +1,78 @@ +import QtQuick 2.0 +import QtQuick.Layouts 1.1 + +Item { + id: root + property int units: 0 + property int tenths: 0 + ListModel { + id: model + ListElement { + name: "0" + picturePath: "qrc:no_0.png" + } + ListElement { + name: "1" + picturePath: "qrc:no_1.png" + } + ListElement { + name: "2" + picturePath: "qrc:no_2.png" + } + ListElement { + name: "3" + picturePath: "qrc:no_3.png" + } + ListElement { + name: "4" + picturePath: "qrc:no_4.png" + } + ListElement { + name: "5" + picturePath: "qrc:no_5.png" + } + ListElement { + name: "6" + picturePath: "qrc:no_6.png" + } + ListElement { + name: "7" + picturePath: "qrc:no_7.png" + } + ListElement { + name: "8" + picturePath: "qrc:no_8.png" + } + ListElement { + name: "9" + picturePath: "qrc:no_9.png" + } + } + + RowLayout { + anchors.fill: parent + Image { + id: units_image + width: parent.width * 0.45 + source: "qrc:no_0.png" + } + Image { + id: point_image + width: parent.width * 0.1 + source: "qrc:no_comma.png" + } + Image { + id: tenths_image + width: parent.width * 0.45 + source: "qrc:no_0.png" + } + } + + function setTotalDistance(dis) { + units = dis % 10 + tenths = (dis - units) * 10 + units_image.source = model.get(units).picturePath + tenths_image.source = model.get(tenths).picturePath + } + +} diff --git a/app/hudtbt.qrc b/app/hudtbt.qrc index fd5fd7f..7d5d4cb 100644 --- a/app/hudtbt.qrc +++ b/app/hudtbt.qrc @@ -2,5 +2,7 @@ TbtBoard.qml Hudtbt.qml + TotalDistance.qml + NextCrossDistance.qml diff --git a/app/images/arrow-0-full.png b/app/images/arrow-0-full.png deleted file mode 100644 index d390db7..0000000 Binary files a/app/images/arrow-0-full.png and /dev/null differ diff --git a/app/images/arrow-l-180-full.png b/app/images/arrow-l-180-full.png deleted file mode 100644 index 0c71027..0000000 Binary files a/app/images/arrow-l-180-full.png and /dev/null differ diff --git a/app/images/arrow-l-30-full.png b/app/images/arrow-l-30-full.png deleted file mode 100644 index de799ac..0000000 Binary files a/app/images/arrow-l-30-full.png and /dev/null differ diff --git a/app/images/arrow-l-45-full.png b/app/images/arrow-l-45-full.png deleted file mode 100644 index a3d8354..0000000 Binary files a/app/images/arrow-l-45-full.png and /dev/null differ diff --git a/app/images/arrow-l-75-full.png b/app/images/arrow-l-75-full.png deleted file mode 100644 index cd92e2d..0000000 Binary files a/app/images/arrow-l-75-full.png and /dev/null differ diff --git a/app/images/arrow-r-180-full.png b/app/images/arrow-r-180-full.png deleted file mode 100644 index d761b48..0000000 Binary files a/app/images/arrow-r-180-full.png and /dev/null differ diff --git a/app/images/arrow-r-30-full.png b/app/images/arrow-r-30-full.png deleted file mode 100644 index 0bebfb9..0000000 Binary files a/app/images/arrow-r-30-full.png and /dev/null differ diff --git a/app/images/arrow-r-45-full.png b/app/images/arrow-r-45-full.png deleted file mode 100644 index fa170f0..0000000 Binary files a/app/images/arrow-r-45-full.png and /dev/null differ diff --git a/app/images/arrow-r-75-full.png b/app/images/arrow-r-75-full.png deleted file mode 100644 index 08dc143..0000000 Binary files a/app/images/arrow-r-75-full.png and /dev/null differ diff --git a/app/images/destination_full.png b/app/images/destination_full.png deleted file mode 100644 index e5c79d9..0000000 Binary files a/app/images/destination_full.png and /dev/null differ diff --git a/app/images/distance_meter.png b/app/images/distance_meter.png new file mode 100644 index 0000000..449f7f7 Binary files /dev/null and b/app/images/distance_meter.png differ diff --git a/app/images/distance_meterline.png b/app/images/distance_meterline.png new file mode 100644 index 0000000..31b7ec2 Binary files /dev/null and b/app/images/distance_meterline.png differ diff --git a/app/images/images.qrc b/app/images/images.qrc index 1e519b9..6bd1a65 100644 --- a/app/images/images.qrc +++ b/app/images/images.qrc @@ -1,14 +1,39 @@ - arrow-l-30-full.png - arrow-l-45-full.png - arrow-l-75-full.png - arrow-l-180-full.png - arrow-r-30-full.png - arrow-r-45-full.png - arrow-r-75-full.png - arrow-r-180-full.png - destination_full.png - arrow-0-full.png + distance_meter.png + distance_meterline.png + tbt_B_centor.png + tbt_B_L-45.png + tbt_B_L-90.png + tbt_B_L45.png + tbt_B_L90.png + tbt_B_R-45.png + tbt_B_R-90.png + tbt_B_R45.png + tbt_B_R90.png + tbt_dest.png + tbt_park.png + no_0.png + no_1.png + no_2.png + no_3.png + no_4.png + no_5.png + no_6.png + no_7.png + no_8.png + no_9.png + no_comma.png + tbt_0.png + tbt_1.png + tbt_2.png + tbt_3.png + tbt_4.png + tbt_5.png + tbt_6.png + tbt_7.png + tbt_8.png + tbt_9.png + tbt_m.png diff --git a/app/images/no_0.png b/app/images/no_0.png new file mode 100644 index 0000000..ae94f48 Binary files /dev/null and b/app/images/no_0.png differ diff --git a/app/images/no_1.png b/app/images/no_1.png new file mode 100644 index 0000000..bd8deea Binary files /dev/null and b/app/images/no_1.png differ diff --git a/app/images/no_2.png b/app/images/no_2.png new file mode 100644 index 0000000..faa7809 Binary files /dev/null and b/app/images/no_2.png differ diff --git a/app/images/no_3.png b/app/images/no_3.png new file mode 100644 index 0000000..88ff0fa Binary files /dev/null and b/app/images/no_3.png differ diff --git a/app/images/no_4.png b/app/images/no_4.png new file mode 100644 index 0000000..9bd7c31 Binary files /dev/null and b/app/images/no_4.png differ diff --git a/app/images/no_5.png b/app/images/no_5.png new file mode 100644 index 0000000..ab4dc55 Binary files /dev/null and b/app/images/no_5.png differ diff --git a/app/images/no_6.png b/app/images/no_6.png new file mode 100644 index 0000000..0c23cca Binary files /dev/null and b/app/images/no_6.png differ diff --git a/app/images/no_7.png b/app/images/no_7.png new file mode 100644 index 0000000..9d7d1dd Binary files /dev/null and b/app/images/no_7.png differ diff --git a/app/images/no_8.png b/app/images/no_8.png new file mode 100644 index 0000000..8a2aee9 Binary files /dev/null and b/app/images/no_8.png differ diff --git a/app/images/no_9.png b/app/images/no_9.png new file mode 100644 index 0000000..c91fa29 Binary files /dev/null and b/app/images/no_9.png differ diff --git a/app/images/no_comma.png b/app/images/no_comma.png new file mode 100644 index 0000000..ce00b6d Binary files /dev/null and b/app/images/no_comma.png differ diff --git a/app/images/tbt_0.png b/app/images/tbt_0.png new file mode 100644 index 0000000..b35238f Binary files /dev/null and b/app/images/tbt_0.png differ diff --git a/app/images/tbt_1.png b/app/images/tbt_1.png new file mode 100644 index 0000000..65c300d Binary files /dev/null and b/app/images/tbt_1.png differ diff --git a/app/images/tbt_2.png b/app/images/tbt_2.png new file mode 100644 index 0000000..8672016 Binary files /dev/null and b/app/images/tbt_2.png differ diff --git a/app/images/tbt_3.png b/app/images/tbt_3.png new file mode 100644 index 0000000..0a8e10f Binary files /dev/null and b/app/images/tbt_3.png differ diff --git a/app/images/tbt_4.png b/app/images/tbt_4.png new file mode 100644 index 0000000..be8bc0d Binary files /dev/null and b/app/images/tbt_4.png differ diff --git a/app/images/tbt_5.png b/app/images/tbt_5.png new file mode 100644 index 0000000..9b5cc55 Binary files /dev/null and b/app/images/tbt_5.png differ diff --git a/app/images/tbt_6.png b/app/images/tbt_6.png new file mode 100644 index 0000000..5eb6ed2 Binary files /dev/null and b/app/images/tbt_6.png differ diff --git a/app/images/tbt_7.png b/app/images/tbt_7.png new file mode 100644 index 0000000..2ee6b53 Binary files /dev/null and b/app/images/tbt_7.png differ diff --git a/app/images/tbt_8.png b/app/images/tbt_8.png new file mode 100644 index 0000000..bef0410 Binary files /dev/null and b/app/images/tbt_8.png differ diff --git a/app/images/tbt_9.png b/app/images/tbt_9.png new file mode 100644 index 0000000..77a7412 Binary files /dev/null and b/app/images/tbt_9.png differ diff --git a/app/images/tbt_B_L-45.png b/app/images/tbt_B_L-45.png new file mode 100644 index 0000000..dcdd847 Binary files /dev/null and b/app/images/tbt_B_L-45.png differ diff --git a/app/images/tbt_B_L-90.png b/app/images/tbt_B_L-90.png new file mode 100644 index 0000000..d5ddef9 Binary files /dev/null and b/app/images/tbt_B_L-90.png differ diff --git a/app/images/tbt_B_L45.png b/app/images/tbt_B_L45.png new file mode 100644 index 0000000..6a2c50b Binary files /dev/null and b/app/images/tbt_B_L45.png differ diff --git a/app/images/tbt_B_L90.png b/app/images/tbt_B_L90.png new file mode 100644 index 0000000..3bfa4f1 Binary files /dev/null and b/app/images/tbt_B_L90.png differ diff --git a/app/images/tbt_B_R-45.png b/app/images/tbt_B_R-45.png new file mode 100644 index 0000000..59a2a02 Binary files /dev/null and b/app/images/tbt_B_R-45.png differ diff --git a/app/images/tbt_B_R-90.png b/app/images/tbt_B_R-90.png new file mode 100644 index 0000000..cecbf2f Binary files /dev/null and b/app/images/tbt_B_R-90.png differ diff --git a/app/images/tbt_B_R45.png b/app/images/tbt_B_R45.png new file mode 100644 index 0000000..fdacc59 Binary files /dev/null and b/app/images/tbt_B_R45.png differ diff --git a/app/images/tbt_B_R90.png b/app/images/tbt_B_R90.png new file mode 100644 index 0000000..beecc29 Binary files /dev/null and b/app/images/tbt_B_R90.png differ diff --git a/app/images/tbt_B_centor.png b/app/images/tbt_B_centor.png new file mode 100644 index 0000000..3b692f4 Binary files /dev/null and b/app/images/tbt_B_centor.png differ diff --git a/app/images/tbt_dest.png b/app/images/tbt_dest.png new file mode 100644 index 0000000..2666224 Binary files /dev/null and b/app/images/tbt_dest.png differ diff --git a/app/images/tbt_m.png b/app/images/tbt_m.png new file mode 100644 index 0000000..814533d Binary files /dev/null and b/app/images/tbt_m.png differ diff --git a/app/images/tbt_park.png b/app/images/tbt_park.png new file mode 100644 index 0000000..3d76d70 Binary files /dev/null and b/app/images/tbt_park.png differ -- cgit 1.2.3-korg