Bladeren bron

misc+performance

David 9 jaren geleden
bovenliggende
commit
da1e2c636a
4 gewijzigde bestanden met toevoegingen van 79 en 61 verwijderingen
  1. 5 5
      CanvasController.pro.user
  2. 0 5
      WebSocket.qml
  3. 11 8
      components/WebSocket.qml
  4. 63 43
      main.qml

+ 5 - 5
CanvasController.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.0.3, 2016-11-09T21:58:57. -->
+<!-- Written by QtCreator 4.0.3, 2016-11-10T13:27:13. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -8,7 +8,7 @@
  </data>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="int">2</value>
+  <value type="int">0</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.EditorSettings</variable>
@@ -64,7 +64,7 @@
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.7.0 GCC 64bit</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.7.0 GCC 64bit</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.57.gcc_64_kit</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">2</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
@@ -312,7 +312,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">CanvasController.pro</value>
     <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/david/build-CanvasController-Desktop_Qt_5_7_0_GCC_64bit-Debug</value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/david/build-CanvasController-Desktop_Qt_5_7_0_GCC_64bit-Profile</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -649,7 +649,7 @@
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android for armeabi-v7a (GCC 4.9, Qt 5.7.0)</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Android for armeabi-v7a (GCC 4.9, Qt 5.7.0)</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{adf126d9-d8b7-4993-bb9f-0f17f134f6d3}</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">2</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">

+ 0 - 5
WebSocket.qml

@@ -1,5 +0,0 @@
-import QtQuick 2.0
-
-Item {
-
-}

+ 11 - 8
components/WebSocket.qml

@@ -3,9 +3,7 @@ import QtQuick 2.5
 
 Item {
     property alias tot_slides : socket.total_slides
-    function isOpen(){
-        return  socket.status == WebSocket.Open;
-    }
+    property alias isOpen : socket.isOpen
     function send_obj(obj) {
         socket.sendTextMessage(JSON.stringify(obj))
     }
@@ -45,7 +43,6 @@ Item {
                      type: "command",
                      commandtype: "clean"
                  })
-        canvas.clean_path()
     }
     function send_drawing(d) {
 
@@ -63,8 +60,12 @@ Item {
         id: socket
         url: "wss://wscasa.especificosba.com.ar"
         active: true
+        property bool isOpen: false
 
         onTextMessageReceived: {
+            /*if (message.indexOf("snowmix") > -1)
+                return
+            */
             var obj = JSON.parse(message)
             switch (obj.type) {
             case "diapo":
@@ -88,6 +89,8 @@ Item {
                 break
             case "draw":
                 break
+            case "clean":
+                break
             case "snowmix":
                 break
             default:
@@ -95,9 +98,9 @@ Item {
             }
         }
 
-
-
         onStatusChanged: {
+            isOpen = (socket.status == WebSocket.Open);
+
             if (socket.status == WebSocket.Open) {
                 wsStatus.text = qsTr("Conectado")
             } else {
@@ -107,11 +110,11 @@ Item {
     }
 
     Timer {
-        interval: 800;
+        interval: 1000;
         running: true;
         repeat: true;
         onTriggered: {
-            if (socket.status != WebSocket.Open){//Reconnect
+            if (!socket.isOpen){//Reconnect
                 socket.active = false
                 socket.active = true
                 console.log("Connecting... " +Date().toString())

+ 63 - 43
main.qml

@@ -78,24 +78,30 @@ ApplicationWindow {
                     property color strokeStyle: Qt.darker(fillStyle, 1.2)
                     property color fillStyle: "#6400aa"
                     property string curColor: "#ff0000"
+                    property int count: 0
 
                     property real px: width / 2
                     property real py: height / 2 + 10
                     property real alpha: 1.0
                     property variant points_array: []
                     property string curImageUrl: "https://plataforma.especificosba.com.ar/diapo/EBA/1.png"
+                    property var ctx: canvas.getContext("2d")
                     width: parent.width
                     height: parent.height
 
                     onPaint: paint_canvas()
                     onImageLoaded: {
                         clean_path()
+                        ctx.lineCap = 'square'
+                        ctx.lineWidth = 4
+                        ctx.strokeStyle = "#000000"
                         requestPaint()
                     }
 
                     function clean_path() {
                         points_array = []
                         requestPaint()
+                        canvas.count = 0
                     }
 
                     function start_path() {
@@ -109,8 +115,9 @@ ApplicationWindow {
                         points_array[points_array.length - 1].points = Simplify.simplify(
                                     points_array[points_array.length - 1].points,
                                     2.2)
-                        requestPaint()
-
+                        //requestPaint()
+                        if (points_array[points_array.length - 1].points.length <=1)
+                            return;
                         //normalized to 800x600
                         var ar = points_array[points_array.length - 1].points.map(
                                     function (el) {
@@ -121,10 +128,13 @@ ApplicationWindow {
                                                    el.y * 600 / canvas.height)
                                         }
                                     })
-                        while (ar.length > 30) {
-                            socket.send_drawing(ar.splice(0, 29))
+
+                        console.log(ar.length);
+                        var MAX_ELEMS=65;
+                        while (ar.length > MAX_ELEMS) {
+                            socket.send_drawing(ar.splice(0, MAX_ELEMS-1));
                         }
-                        socket.send_drawing(ar)
+                        socket.send_drawing(ar);
                     }
 
                     function change_image(pdf, number) {
@@ -136,41 +146,41 @@ ApplicationWindow {
                     function add_point(p) {
                         var pts = points_array[points_array.length - 1].points
                         pts.push(p)
-                        if (pts.length > 60) {
+                        if (pts.length > 80) {
                             //FIXME
                             finish_path()
                             start_path()
                             pts.push(p)
-                        } else {
-                            requestPaint()
                         }
+
+                        requestPaint()
+                    }
+
+
+                    function stroke(points, color) {
+                        ctx.strokeStyle = color;
+                        ctx.beginPath()
+                        ctx.moveTo(points[0].x, points[0].y)
+                        var i = 0;
+                        for (i = 0; i < points.length - 1; i++) {
+                            ctx.moveTo(points[i].x, points[i].y)
+                            ctx.lineTo(points[i + 1].x, points[i + 1].y)
+                        }
+                        ctx.stroke()
                     }
 
                     function paint_canvas() {
-                        var ctx = canvas.getContext("2d")
                         canvas.loadImage(curImageUrl)
                         if (canvas.isImageLoaded(curImageUrl)) {
                             ctx.drawImage(curImageUrl, 0, 0, canvas.width,
                                           canvas.height)
                         }
-                        ctx.lineCap = 'square'
-                        ctx.lineWidth = 4
-                        ctx.strokeStyle = "#000000"
-
-                        var i = 0, j = 0
+                        var j = 0
                         for (j = 0; j < points_array.length; j++) {
-                            var points = points_array[j].points
-
-                            if (points.length === 0)
+                            if (points_array[j].points.length <= 1)
                                 continue
-                            ctx.strokeStyle = points_array[j].color
-                            ctx.beginPath()
-                            ctx.moveTo(points[0].x, points[0].y)
-                            for (i = 0; i < points.length - 1; i++) {
-                                ctx.moveTo(points[i].x, points[i].y)
-                                ctx.lineTo(points[i + 1].x, points[i + 1].y)
-                            }
-                            ctx.stroke()
+                            //setTimeout( function() { }, 0);
+                            stroke(points_array[j].points,points_array[j].color);
                         }
                     }
                 }
@@ -181,24 +191,35 @@ ApplicationWindow {
                     y: 0
                     width: canvas.width
                     height: canvas.height
+                    property var last_point;
+
                     onPressed: {
-                        if (!socket.isOpen())
+                        if (!socket.isOpen)
                             return
                         canvas.start_path()
+                        last_point = { x: mouse.x, y: mouse.y }
+                        canvas.add_point(last_point)
                     }
                     onPositionChanged: {
-                        if (!socket.isOpen())
+                        if (!socket.isOpen)
                             return
-
-                        canvas.add_point({
-                                             x: mouse.x,
-                                             y: mouse.y
-                                         })
+                        var point = { x: mouse.x, y: mouse.y }
+                        if (distance(last_point, point) <= 81) //distance returns squared dsitance
+                            return;
+                        last_point = point
+                        canvas.add_point(point)
+                        canvas.count++
+                        /*console.log(canvas.count)
+                        console.log(canvas.points_array[canvas.points_array.length-1].length)*/
                     }
                     onReleased: {
-                        if (!socket.isOpen())
+                        if (!socket.isOpen)
                             return
                         canvas.finish_path()
+                        canvas.requestPaint()
+                    }
+                    function distance(p1,p2){
+                        return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)
                     }
                 }
             }
@@ -227,7 +248,7 @@ ApplicationWindow {
                                 fillMode: Image.PreserveAspectFit
 
                             }
-                            enabled: socket.isOpen() && (item1.curImage > 1)
+                            enabled: socket.isOpen && (item1.curImage > 1)
                             onClicked : socket.prev_diapo()
                         }
                         MouseArea {
@@ -239,7 +260,7 @@ ApplicationWindow {
                                 source: "qrc:///images/fwd.png"
                                 fillMode: Image.PreserveAspectFit
                             }
-                            enabled: socket.isOpen() && (item1.curImage < t_slides)
+                            enabled: socket.isOpen && (item1.curImage < t_slides)
                             onClicked: socket.next_diapo()
                         }
 
@@ -270,10 +291,6 @@ ApplicationWindow {
                             }
                         }
                     }
-
-
-
-
                 }
 
                 Column {
@@ -372,18 +389,21 @@ ApplicationWindow {
                         width: parent.width
                         id: button3
                         text: qsTr("Limpiar")
-                        enabled: socket.isOpen()
-                        onClicked: socket.clear_path()
+                        enabled: socket.isOpen
+                        onClicked: {
+                            socket.clear_path();
+                            canvas.clean_path();
+                        }
                     }
 
                     Text {
                         id: wsStatus
-                        text: qsTr("WS")
+                        text: qsTr("WS Status")
                     }
 
                     Text {
                         id: diapoStatus
-                        text: qsTr("test123")
+                        text: qsTr("Diapo status")
                     }