Project

General

Profile

LineStrokeTest2.html

Sergey Ivanovskiy, 02/17/2016 02:48 PM

Download (6 KB)

 
1
<!DOCTYPE html>
2
<html lang="en">
3
   <head>
4
      <meta charset="utf-8" />
5
      <title>Canvas Stroke Line Test 2</title>
6
      <script type="text/javascript" src="./common/p2j.js"></script>
7
      <script type="text/javascript" src="./common/p2j.logger.js"></script>
8
      <script type="text/javascript" src="./common/p2j.sound.js"></script>
9
      <script type="text/javascript" src="./client/p2j.strokes.js"></script>
10
      <script type="text/javascript" src="./client/p2j.canvas_renderer.js"></script>
11
      <script type="text/javascript" src="./client/p2j.virtual_desktop.js"></script>
12
      <script type="text/javascript" src="./client/p2j.mouse.js"></script>
13
      <script type="text/javascript" src="./client/p2j.screen.js"></script>
14
      <script type="text/javascript" src="./common/p2j.socket.js"></script>
15
      <script type="text/javascript" src="./common/p2j.keymap.js"></script>
16
      <script type="text/javascript" src="./common/p2j.keyboard.js"></script>
17
      <script type="text/javascript" src="./client/p2j.clipboard_helpers.js"></script>
18
      <script type="text/javascript" src="./common/p2j.clipboard.js"></script>
19
      <script type="text/javascript" src="./common/p2j.fonts.js"></script>
20
      
21
      <script>
22
         "use strict";
23
         var dojo = {};
24
         dojo.style = function(element, styleObj)
25
         {
26
            for (var prop in styleObj)
27
            {
28
               if (styleObj.hasOwnProperty(prop))
29
               {
30
                  element.style[prop] = styleObj[prop];
31
               }
32
            }
33
         };
34
         var canvas;
35
         
36
         var ctx;
37
         
38
         var strokesManager;
39
         
40
         var strokeStyle;
41
         
42
         var yStep;
43

44
         var xStep;
45

46
         var xFrom;
47

48
         var yFrom;
49
         
50
         var pixel;
51
         
52
         var pixData;
53
         
54
         var renderer;
55
         
56
         function initCanvas(canvas, ctx, x, y, width, height)
57
         {
58
            canvas.style.top = y.toString() + "px";
59
            canvas.style.left = x.toString() + "px";
60
            canvas.width = width;
61
            canvas.height = height;
62
         };
63
         
64
         function applyStrokeStyle()
65
         {
66
            if (!strokesManager)
67
            {
68
               strokesManager = new LineStrokes();
69
            }
70
            strokesManager.applyStrokeToCanvas(ctx, strokeStyle, 1);
71
         };
72

73
         window.onload = function()
74
         {
75
            p2j.isGui = true;
76
            p2j.fonts.init({
77
               'font' : {'name' : 'serif', 'size' : 10, 'color' : {'f' : '#000000000', 'b' : '#255255255'}},
78
            });
79
            p2j.logger.init(4096, true);
80
            strokesManager = new LineStrokes();
81
            canvas = document.getElementById("canvas");
82
            ctx = canvas.getContext('2d', {alpha : true});
83
            initCanvas(canvas, ctx, 40, 80, 800, 600);
84
            /** Creates canvas renderer. */
85
            renderer = new CanvasRenderer(canvas, ctx, strokesManager,
86
                   p2j.fonts, p2j.logger);
87
         };
88
         
89
         function blankCanvas() {
90
            ctx.setTransform(1,0,0,1,0,0);
91
            ctx.clearRect(0, 0, canvas.width, canvas.height);
92
            ctx.fillStyle   = "#EEEEEE";
93
            ctx.fillRect(0, 0, canvas.width, canvas.height);
94
         };
95
         
96
         function drawXLineSeries0()
97
         {
98
            var t1 = (new Date()).getTime();
99
            var color = [255, 255, 0];
100
            var strokeRenderer = strokesManager.getStrokePathRenderer(renderer, strokeStyle,
101
                  (strokeStyle > 1)? 1 : 2, color);
102
            strokeRenderer.beginStroke();
103
            var c = 0;
104
            for(var i = 0; i < 800; i += 5)
105
            {
106
               strokeRenderer.strokeLine(i, 100, i, 500);
107
               c++;
108
            }
109
            var t2 = (new Date()).getTime();
110
            console.debug("Average X-lines of 400 pixel width draw time is " + (t2 - t1)/c);
111
            console.debug("All time to draw " + c + " X-lines of 400 pixel width draw time is " + (t2 - t1));
112
         }
113
         function drawXLineSeries1()
114
         {
115
            var t1 = (new Date()).getTime();
116
            var color = [255, 255, 0];
117
            var strokeRenderer = strokesManager.getStrokePathRenderer(renderer, strokeStyle,
118
                  (strokeStyle > 1)? 1 : 2, color);
119
            strokeRenderer.beginStroke();
120
            var c = 0;
121
            for(var i = 0; i < 800; i += 5)
122
            {
123
               for(var j = 100; j < 501; j++)
124
               {
125
                  strokeRenderer.strokePoint(i, j);
126
               }
127
               
128
               c++;
129
            }
130
            var t2 = (new Date()).getTime();
131
            console.debug("Average X-lines of 400 pixel width draw time is " + (t2 - t1)/c);
132
            console.debug("All time to draw " + c + " X-lines of 400 pixel width draw time is " + (t2 - t1));
133
         }
134
   </script>
135
   </head>
136
   <body>
137
      <canvas id="canvas" style="position:absolute; z-index:0">No HTML5 support in your browser!</canvas>
138
      <div style="position:absolute;top:10px;left:10px;">
139
         <button style="position:relative" onclick="drawXLineSeries0();">Draw X-Line Series as Images</button>
140
         <button style="position:relative" onclick="drawXLineSeries1();">Draw X-Line Series By Pixels</button>
141
         <button style="display:inline;position:relative" onclick="blankCanvas();">Clear</button>
142
      </div>
143
      <div style="position:absolute;top:80px;left:850px;">
144
         <div style="display:inline">Stroke Styles</div>
145
         <select id="strokeStyleSelector" style="display:block" onchange="strokeStyle = Number(this.value);applyStrokeStyle();">
146
            <option value="0">Default</option>
147
            <option value="1">Fixed Width</option>
148
            <option value="2">Dots</option>
149
            <option value="3">Small Dots</option>
150
            <option value="4">Small Thin Dots</option>
151
         </select>
152
      </div>
153
   </body>
154
</html>