main.qml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import QtQuick 2.5
  2. import QtQuick.Controls 1.4
  3. import QtWebSockets 1.0
  4. import "./simplify.js" as Simplify
  5. ApplicationWindow {
  6. visible: true
  7. width: 640
  8. height: 480
  9. title: qsTr("Hello World")
  10. WebSocket {
  11. id: socket
  12. url: "wss://ws.especificosba.com.ar"
  13. onTextMessageReceived: {
  14. console.log("\nReceived message: " + message);
  15. }
  16. onStatusChanged: if (socket.status == WebSocket.Error) {
  17. console.log("Error: " + socket.errorString)
  18. } else if (socket.status == WebSocket.Open) {
  19. socket.sendTextMessage("Hello World")
  20. } else if (socket.status == WebSocket.Closed) {
  21. console.log("\nSocket closed");
  22. }
  23. active: false
  24. }
  25. MainForm {
  26. property int curImage:1
  27. anchors.fill: parent
  28. button1.enabled: socket.active
  29. button2.enabled: socket.active
  30. button3.enabled: socket.active
  31. button4.enabled: socket.active
  32. button1.onClicked: {
  33. curImage=Math.min(curImage+1,5);
  34. }
  35. button2.onClicked: {
  36. curImage=Math.max(curImage-1,1);
  37. }
  38. onCurImageChanged: {
  39. canvas.change_image("EBA",curImage);
  40. }
  41. button3.onClicked: {
  42. canvas.paint_canvas();
  43. }
  44. mouseArea1.onPressed: {
  45. if (!socket.active)
  46. return;
  47. canvas.start_path();
  48. }
  49. mouseArea1.onPositionChanged: {
  50. if (!socket.active)
  51. return;
  52. canvas.add_point({x:mouse.x,y:mouse.y});
  53. }
  54. mouseArea1.onReleased: {
  55. if (!socket.active)
  56. return;
  57. canvas.finish_path();
  58. }
  59. Canvas {
  60. id: canvas
  61. width: parent.width
  62. height: 250
  63. antialiasing: true
  64. property color strokeStyle: Qt.darker(fillStyle, 1.2)
  65. property color fillStyle: "#6400aa"
  66. property int lineWidth: 2
  67. property real px: width/2
  68. property real py: height/2 + 10
  69. property real alpha: 1.0
  70. property variant points_array: [ ]
  71. property string curImageUrl: "https://plataforma.especificosba.com.ar/diapo/EBA/1.png";
  72. onPaint: paint_canvas();
  73. onLineWidthChanged: requestPaint();
  74. onImageLoaded: requestPaint();
  75. function start_path(){
  76. points_array.push([]);
  77. }
  78. function finish_path(){
  79. points_array[points_array.length-1]=Simplify.simplify(points_array[points_array.length-1],3);
  80. requestPaint();
  81. //ws.send()..
  82. }
  83. function change_image(pdf,number){
  84. curImageUrl="https://plataforma.especificosba.com.ar/diapo/"+pdf+"/"+number+".png";
  85. requestPaint();
  86. }
  87. function add_point(p) {
  88. points_array[points_array.length-1].push(p);
  89. requestPaint();
  90. }
  91. function paint_canvas(){
  92. var curColor= '#ff0000';
  93. var ctx = canvas.getContext("2d");
  94. canvas.loadImage(curImageUrl);
  95. if (canvas.isImageLoaded(curImageUrl)){
  96. ctx.drawImage(curImageUrl,0,0,canvas.width,canvas.height);
  97. }
  98. ctx.lineCap = 'square';
  99. ctx.lineWidth = 2;
  100. ctx.strokeStyle = curColor;
  101. ctx.beginPath();
  102. var i=0,j=0;
  103. for(j=0;j<points_array.length;j++){
  104. var points = points_array[j];
  105. ctx.moveTo(points[0].x, points[0].y);
  106. for(i=0;i<points.length-1;i++){
  107. ctx.moveTo(points[i].x, points[i].y);
  108. ctx.lineTo(points[i+1].x, points[i+1].y);
  109. }
  110. }
  111. ctx.stroke();
  112. }
  113. }
  114. }
  115. }