forked from David-Geary/Image-Panner
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.js
More file actions
94 lines (77 loc) · 3.42 KB
/
Copy pathexample.js
File metadata and controls
94 lines (77 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
* Copyright (C) 2012 David Geary. This code is from the book
* Core HTML5 Canvas, published by Prentice-Hall in 2012.
*
* License:
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* The Software may not be used to create training material of any sort,
* including courses, books, instructional videos, presentations, etc.
* without the express written consent of David Geary.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
var context = document.getElementById('canvas').getContext('2d'),
image = new Image(),
alphaSpan = document.getElementById('alphaSpan'),
sizeSpan = document.getElementById('sizeSpan'),
sizeSlider = new COREHTML5.Slider('blue', 'cornflowerblue',
0.85, // knob percent
90, // take up % of width
50), // take up % of height
alphaSlider = new COREHTML5.Slider('blue', 'cornflowerblue',
0.50, // knob percent
90, // take up % of width
50), // take up % of height
pan = new COREHTML5.Pan(context.canvas, image),
e = pan.domElement,
ALPHA_MAX = 1.0,
SIZE_MAX = 12;
// Event Handlers.....................................................
sizeSlider.addChangeListener(function (e) {
var size = (parseFloat(sizeSlider.knobPercent) * 12);
size = size < 2 ? 2 : size;
sizeSpan.innerHTML = size.toFixed(1) + '%';
pan.imageContext.setTransform(1,0,0,1,0,0); // identity matrix
pan.viewportPercent = size;
pan.erase();
pan.initialize();
pan.draw();
});
alphaSlider.addChangeListener(function (e) {
alphaSpan.innerHTML =
parseFloat(alphaSlider.knobPercent * 100).toFixed(0) + '%';
alphaSpan.style.opacity = parseFloat(alphaSlider.knobPercent);
pan.panCanvasAlpha = alphaSlider.knobPercent;
pan.erase();
pan.draw();
});
// Initialization....................................................
image.src = 'pencilsAndBrush.jpg';
document.getElementById('body').appendChild(e);
e.className = 'pan';
alphaSlider.appendTo('alphaSliderDiv');
sizeSlider.appendTo('sizeSliderDiv');
pan.viewportPercent = sizeSlider.knobPercent * SIZE_MAX;
pan.panCanvasAlpha = alphaSlider.knobPercent * ALPHA_MAX;
sizeSpan.innerHTML = pan.viewportPercent.toFixed(0) + '%';
alphaSpan.innerHTML = (pan.panCanvasAlpha * 100).toFixed(0) + '%';
alphaSlider.draw();
sizeSlider.draw();