1
|
<!DOCTYPE html>
|
2
|
<html lang="en">
|
3
|
<head>
|
4
|
<meta charset="utf-8" />
|
5
|
<title>Canvas Renderer Test</title>
|
6
|
<script type="text/javascript" >
|
7
|
var p2j = {};
|
8
|
|
9
|
|
10
|
p2j.isWindows = navigator.appVersion.indexOf('Win') > -1;
|
11
|
p2j.isMac = navigator.appVersion.indexOf('Mac') > -1;
|
12
|
p2j.isUnix = navigator.appVersion.indexOf('X11') > -1;
|
13
|
p2j.isLinux = navigator.appVersion.indexOf('Linux') > -1;
|
14
|
|
15
|
|
16
|
|
17
|
p2j.isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
18
|
p2j.isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
|
19
|
p2j.isChromium = !!window.chrome;
|
20
|
p2j.isIE11 = navigator.userAgent.indexOf("Trident") > -1
|
21
|
|| navigator.userAgent.indexOf("Edge") > -1;
|
22
|
p2j.isIe = !!window.ActiveXObject || p2j.isIE11;
|
23
|
p2j.isSafari = (navigator.userAgent.toLowerCase().indexOf('safari/') > -1) && !p2j.isChrome;
|
24
|
</script>
|
25
|
<script type="text/javascript" src="./driver/web/res/p2j.js"></script>
|
26
|
<script type="text/javascript" src="./driver/web/res/p2j.logger.js"></script>
|
27
|
<script type="text/javascript" src="./driver/web/res/p2j.sound.js"></script>
|
28
|
<script type="text/javascript" src="./gui/driver/web/res/p2j.strokes.js"></script>
|
29
|
<script type="text/javascript" src="./gui/driver/web/res/p2j.canvas_renderer.js"></script>
|
30
|
<script type="text/javascript" src="./gui/driver/web/res/p2j.virtual_desktop.js"></script>
|
31
|
<script type="text/javascript" src="./gui/driver/web/res/p2j.mouse.js"></script>
|
32
|
<script type="text/javascript" src="./gui/driver/web/res/p2j.screen.js"></script>
|
33
|
<script type="text/javascript" src="./driver/web/res/p2j.socket.js"></script>
|
34
|
<script type="text/javascript" src="./driver/web/res/p2j.keymap.js"></script>
|
35
|
<script type="text/javascript" src="./driver/web/res/p2j.keyboard.js"></script>
|
36
|
<script type="text/javascript" src="./gui/driver/web/res/p2j.clipboard_helpers.js"></script>
|
37
|
<script type="text/javascript" src="./driver/web/res/p2j.clipboard.js"></script>
|
38
|
<script type="text/javascript" src="./driver/web/res/p2j.fonts.js"></script>
|
39
|
|
40
|
<script>
|
41
|
"use strict";
|
42
|
var dojo = {};
|
43
|
dojo.style = function(element, styleObj)
|
44
|
{
|
45
|
for (var prop in styleObj)
|
46
|
{
|
47
|
if (styleObj.hasOwnProperty(prop))
|
48
|
{
|
49
|
element.style[prop] = styleObj[prop];
|
50
|
}
|
51
|
}
|
52
|
};
|
53
|
var canvas;
|
54
|
|
55
|
var ctx;
|
56
|
|
57
|
var offscreenCanvas;
|
58
|
|
59
|
var offscreenContext;
|
60
|
|
61
|
var strokesManager;
|
62
|
|
63
|
var strokeStyle;
|
64
|
|
65
|
var yStep;
|
66
|
|
67
|
var xStep;
|
68
|
|
69
|
var xFrom;
|
70
|
|
71
|
var yFrom;
|
72
|
|
73
|
var pixel;
|
74
|
|
75
|
var pixData;
|
76
|
|
77
|
var renderer;
|
78
|
|
79
|
function initCanvas(canvas, ctx, x, y, width, height)
|
80
|
{
|
81
|
canvas.style.top = y.toString() + "px";
|
82
|
canvas.style.left = x.toString() + "px";
|
83
|
canvas.width = width;
|
84
|
canvas.height = height;
|
85
|
};
|
86
|
|
87
|
function applyStrokeStyle()
|
88
|
{
|
89
|
renderer.setLineStroke(strokeStyle, 2);
|
90
|
};
|
91
|
|
92
|
window.onload = function()
|
93
|
{
|
94
|
p2j.isGui = true;
|
95
|
p2j.fonts.init({
|
96
|
'font' : {'name' : 'serif', 'size' : 10, 'color' : {'f' : '#000000000', 'b' : '#255255255'}},
|
97
|
});
|
98
|
p2j.logger.init(4096, true);
|
99
|
strokesManager = new LineStrokes();
|
100
|
canvas = document.getElementById("canvas");
|
101
|
ctx = canvas.getContext('2d', {alpha : true});
|
102
|
initCanvas(canvas, ctx, 40, 80, 800, 600);
|
103
|
|
104
|
renderer = new CanvasRenderer(canvas, ctx,
|
105
|
canvas, strokesManager, p2j.fonts, p2j.logger);
|
106
|
strokeStyle = 0;
|
107
|
applyStrokeStyle();
|
108
|
};
|
109
|
|
110
|
function blankCanvas() {
|
111
|
ctx.setTransform(1,0,0,1,0,0);
|
112
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
113
|
ctx.fillStyle = "rgba(228,228,228,0.5)";
|
114
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
115
|
};
|
116
|
|
117
|
function whiteCanvas() {
|
118
|
ctx.setTransform(1,0,0,1,0,0);
|
119
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
120
|
ctx.fillStyle = "rgba(255,255,255,0.5)";
|
121
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
122
|
};
|
123
|
|
124
|
function drawXORLine()
|
125
|
{
|
126
|
renderer.setColor([128, 128, 128]);
|
127
|
renderer.setXORComposite();
|
128
|
for(var i = 0; i < 800; i += 10)
|
129
|
{
|
130
|
renderer.strokeLineSegment(i, 100, i, 500, renderer.rawColor);
|
131
|
}
|
132
|
console.debug("renderer.rawColor=" + renderer.rawColor);
|
133
|
|
134
|
renderer.resetComposite();
|
135
|
}
|
136
|
</script>
|
137
|
</head>
|
138
|
<body>
|
139
|
<canvas id="canvas" style="position:absolute; z-index:0">No HTML5 support in your browser!</canvas>
|
140
|
<div style="position:absolute;top:10px;left:10px;">
|
141
|
<button style="position:relative" onclick="drawXORLine();">Draw XOR X-Line Series with grey color</button>
|
142
|
<button style="position:relative" onclick="whiteCanvas();">Clear with half-transparent white</button>
|
143
|
<button style="display:inline;position:relative" onclick="blankCanvas();">Clear with half-transparent light grey</button>
|
144
|
</div>
|
145
|
<div style="position:absolute;top:80px;left:850px;">
|
146
|
<div style="display:inline">Stroke Styles</div>
|
147
|
<select id="strokeStyleSelector" style="display:block" onchange="strokeStyle = Number(this.value);applyStrokeStyle();">
|
148
|
<option value="0">Default</option>
|
149
|
<option value="1">Fixed Width</option>
|
150
|
<option value="2">Dots</option>
|
151
|
<option value="3">Small Dots</option>
|
152
|
<option value="4">Small Thin Dots</option>
|
153
|
</select>
|
154
|
</div>
|
155
|
</body>
|
156
|
</html>
|