First Draft
First Draft of the Example Files
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The HTML5 Canvas</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='320' height='240'>
|
||||
This is a canvas element given the ID <i>mycanvas</i>
|
||||
This text is only visible in non-HTML5 browsers
|
||||
</canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
context.fillStyle = 'red'
|
||||
S(canvas).border = '1px solid black'
|
||||
|
||||
context.beginPath()
|
||||
context.moveTo(160, 120)
|
||||
context.arc(160, 120, 70, 0, Math.PI * 2, false)
|
||||
context.closePath()
|
||||
context.fill()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Copying a Canvas</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='320' height='240'>
|
||||
This is a canvas element given the ID <i>mycanvas</i>
|
||||
This text is only visible in non-HTML5 browsers
|
||||
</canvas>
|
||||
|
||||
<img id='myimage'>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
context.fillStyle = 'red'
|
||||
S(canvas).border = '1px solid black'
|
||||
|
||||
context.beginPath()
|
||||
context.moveTo(160, 120)
|
||||
context.arc(160, 120, 70, 0, Math.PI * 2, false)
|
||||
context.closePath()
|
||||
context.fill()
|
||||
|
||||
S('myimage').border = '1px solid black'
|
||||
O('myimage').src = canvas.toDataURL()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Drawing Rectangles</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.fillStyle = 'blue'
|
||||
context.strokeStyle = 'green'
|
||||
|
||||
context.fillRect( 20, 20, 600, 200)
|
||||
context.clearRect( 40, 40, 560, 160)
|
||||
context.strokeRect(60, 60, 520, 120)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Filling with Gradients</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.fillStyle = 'blue'
|
||||
context.strokeStyle = 'green'
|
||||
|
||||
context.fillRect( 20, 20, 600, 200)
|
||||
context.clearRect( 40, 40, 560, 160)
|
||||
context.strokeRect(60, 60, 520, 120)
|
||||
|
||||
gradient = context.createLinearGradient(0, 80, 640,80)
|
||||
gradient.addColorStop(0, 'white')
|
||||
gradient.addColorStop(1, 'black')
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(80, 80, 480,80)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Different Gradient Angles</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
gradient = context.createLinearGradient(0, 0, 160, 0)
|
||||
gradient.addColorStop(0, 'white')
|
||||
gradient.addColorStop(1, 'black')
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(20, 20, 135, 200)
|
||||
|
||||
gradient = context.createLinearGradient(0, 0, 0, 240)
|
||||
gradient.addColorStop(0, 'yellow')
|
||||
gradient.addColorStop(1, 'red')
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(175, 20, 135, 200)
|
||||
|
||||
gradient = context.createLinearGradient(320, 0, 480, 240)
|
||||
gradient.addColorStop(0, 'green')
|
||||
gradient.addColorStop(1, 'purple')
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(330, 20, 135, 200)
|
||||
|
||||
gradient = context.createLinearGradient(480, 240, 640, 0)
|
||||
gradient.addColorStop(0, 'orange')
|
||||
gradient.addColorStop(1, 'magenta')
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(485, 20, 135, 200)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Multiple Color Stops</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
gradient = context.createLinearGradient(0, 0, 640, 0)
|
||||
gradient.addColorStop(0.00, 'red')
|
||||
gradient.addColorStop(0.14, 'orange')
|
||||
gradient.addColorStop(0.28, 'yellow')
|
||||
gradient.addColorStop(0.42, 'green')
|
||||
gradient.addColorStop(0.56, 'blue')
|
||||
gradient.addColorStop(0.70, 'indigo')
|
||||
gradient.addColorStop(0.84, 'violet')
|
||||
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(20, 20, 600, 200)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>A Radial Gradient</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
gradient = context.createRadialGradient(320, 120, 0, 320, 120, 320)
|
||||
gradient.addColorStop(0.00, 'red')
|
||||
gradient.addColorStop(0.14, 'orange')
|
||||
gradient.addColorStop(0.28, 'yellow')
|
||||
gradient.addColorStop(0.42, 'green')
|
||||
gradient.addColorStop(0.56, 'blue')
|
||||
gradient.addColorStop(0.70, 'indigo')
|
||||
gradient.addColorStop(0.84, 'violet')
|
||||
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(20, 20, 600, 200)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>A Stretched Radial Gradient</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
gradient = context.createRadialGradient(0, 120, 0, 480, 120, 480)
|
||||
gradient.addColorStop(0.00, 'red')
|
||||
gradient.addColorStop(0.14, 'orange')
|
||||
gradient.addColorStop(0.28, 'yellow')
|
||||
gradient.addColorStop(0.42, 'green')
|
||||
gradient.addColorStop(0.56, 'blue')
|
||||
gradient.addColorStop(0.70, 'indigo')
|
||||
gradient.addColorStop(0.84, 'violet')
|
||||
|
||||
context.fillStyle = gradient
|
||||
context.fillRect(20, 20, 600, 200)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pattern Fill</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
image = new Image()
|
||||
image.src = 'image.png'
|
||||
|
||||
image.onload = function()
|
||||
{
|
||||
pattern = context.createPattern(image, 'repeat')
|
||||
context.fillStyle = pattern
|
||||
context.fillRect(20, 20, 600, 200)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Using Text</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='800' height='160'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
context.font = 'bold 140px Times'
|
||||
context.textBaseline = 'top'
|
||||
context.strokeText('WickerpediA', 0, 0)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Filling Text</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='800' height='160'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
context.font = 'bold 140px Times'
|
||||
context.textBaseline = 'top'
|
||||
image = new Image()
|
||||
image.src = 'wicker.jpg'
|
||||
|
||||
image.onload = function()
|
||||
{
|
||||
pattern = context.createPattern(image, 'repeat')
|
||||
context.fillStyle = pattern
|
||||
context.fillText( 'WickerpediA', 0, 0)
|
||||
context.strokeText('WickerpediA', 0, 0)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Drawing Lines</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='535' height='360'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.fillStyle = 'red'
|
||||
context.font = 'bold 13pt Courier'
|
||||
context.strokeStyle = 'blue'
|
||||
context.textBaseline = 'top'
|
||||
context.lineWidth = 20
|
||||
caps = ['butt', 'round', 'square']
|
||||
joins = ['round', 'bevel', 'miter']
|
||||
|
||||
for (j = 0 ; j < 3 ; ++j)
|
||||
{
|
||||
for (k = 0 ; k < 3 ; ++k)
|
||||
{
|
||||
context.lineCap = caps[j]
|
||||
context.lineJoin = joins[k]
|
||||
|
||||
context.fillText(' cap:' + caps[j], 33 + j * 180, 45 + k * 120)
|
||||
context.fillText('join:' + joins[k], 33 + j * 180, 65 + k * 120)
|
||||
|
||||
context.beginPath()
|
||||
context.moveTo( 20 + j * 180, 100 + k * 120)
|
||||
context.lineTo( 20 + j * 180, 20 + k * 120)
|
||||
context.lineTo(155 + j * 180, 20 + k * 120)
|
||||
context.lineTo(155 + j * 180, 100 + k * 120)
|
||||
context.stroke()
|
||||
context.closePath()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Filling a Path</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='320' height='320'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.strokeStyle = 'orange'
|
||||
context.fillStyle = 'yellow'
|
||||
|
||||
orig = 160
|
||||
points = 21
|
||||
dist = Math.PI / points * 2
|
||||
scale1 = 150
|
||||
scale2 = 80
|
||||
|
||||
context.beginPath()
|
||||
|
||||
for (j = 0 ; j < points ; ++j)
|
||||
{
|
||||
x = Math.sin(j * dist)
|
||||
y = Math.cos(j * dist)
|
||||
context.lineTo(orig + x * scale1, orig + y * scale1)
|
||||
context.lineTo(orig + x * scale2, orig + y * scale2)
|
||||
}
|
||||
|
||||
context.closePath()
|
||||
context.stroke()
|
||||
context.fill()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Clipping Areas (a)</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='480'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
|
||||
context.beginPath()
|
||||
|
||||
for (j = 0 ; j < 10 ; ++j)
|
||||
{
|
||||
context.moveTo(20, j * 48)
|
||||
context.lineTo(620, j * 48)
|
||||
context.lineTo(620, j * 48 + 30)
|
||||
context.lineTo(20, j * 48 + 30)
|
||||
}
|
||||
|
||||
context.stroke()
|
||||
context.closePath()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Clipping Areas (b)</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='480'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.fillStyle = 'white'
|
||||
context.strokeRect(20, 20, 600, 440) // Black border
|
||||
context.fillRect( 20, 20, 600, 440) // White background
|
||||
|
||||
context.beginPath()
|
||||
|
||||
for (j = 0 ; j < 10 ; ++j)
|
||||
{
|
||||
context.moveTo(20, j * 48)
|
||||
context.lineTo(620, j * 48)
|
||||
context.lineTo(620, j * 48 + 30)
|
||||
context.lineTo(20, j * 48 + 30)
|
||||
}
|
||||
|
||||
context.clip()
|
||||
context.closePath()
|
||||
|
||||
context.fillStyle = 'blue' // Blue sky
|
||||
context.fillRect(20, 20, 600, 320)
|
||||
context.fillStyle = 'green' // Green grass
|
||||
context.fillRect(20, 320, 600, 140)
|
||||
context.strokeStyle = 'orange'
|
||||
context.fillStyle = 'yellow'
|
||||
|
||||
orig = 170
|
||||
points = 21
|
||||
dist = Math.PI / points * 2
|
||||
scale1 = 130
|
||||
scale2 = 80
|
||||
|
||||
context.beginPath()
|
||||
|
||||
for (j = 0 ; j < points ; ++j)
|
||||
{
|
||||
x = Math.sin(j * dist)
|
||||
y = Math.cos(j * dist)
|
||||
context.lineTo(orig + x * scale1, orig + y * scale1)
|
||||
context.lineTo(orig + x * scale2, orig + y * scale2)
|
||||
}
|
||||
|
||||
context.closePath()
|
||||
context.stroke() // Sun outline
|
||||
context.fill() // Sun fill
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Drawing Arcs</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='480'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.lineWidth = 2
|
||||
context.strokeStyle = 'blue'
|
||||
|
||||
Math.degreesToRadians = function(degrees)
|
||||
{
|
||||
return degrees * Math.PI / 180
|
||||
}
|
||||
|
||||
// Following is the original example code
|
||||
//
|
||||
// arcs =
|
||||
// [
|
||||
// Math.PI,
|
||||
// Math.PI * 2,
|
||||
// Math.PI / 2,
|
||||
// Math.PI / 180 * 59
|
||||
// ]
|
||||
//
|
||||
// Below the code now uses degrees as arguments
|
||||
|
||||
arcs =
|
||||
[
|
||||
Math.degreesToRadians(180),
|
||||
Math.degreesToRadians(360),
|
||||
Math.degreesToRadians(90),
|
||||
Math.degreesToRadians(59)
|
||||
]
|
||||
|
||||
for (j = 0 ; j < 4 ; ++j)
|
||||
{
|
||||
context.beginPath()
|
||||
context.arc(80 + j * 160, 80, 70, 0, arcs[j])
|
||||
context.closePath()
|
||||
context.stroke()
|
||||
}
|
||||
|
||||
context.strokeStyle = 'red'
|
||||
|
||||
for (j = 0 ; j < 4 ; ++j)
|
||||
{
|
||||
context.beginPath()
|
||||
context.arc(80 + j * 160, 240, 70, 0, arcs[j])
|
||||
context.stroke()
|
||||
context.closePath()
|
||||
}
|
||||
|
||||
context.strokeStyle = 'green'
|
||||
|
||||
for (j = 0 ; j < 4 ; ++j)
|
||||
{
|
||||
context.beginPath()
|
||||
context.arc(80 + j * 160, 400, 70, 0, arcs[j], true)
|
||||
context.stroke()
|
||||
context.closePath()
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The arcTo Method</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='480' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.strokeStyle = 'blue'
|
||||
|
||||
for (j = 0 ; j <= 280 ; j += 40)
|
||||
{
|
||||
context.beginPath()
|
||||
context.moveTo( 20, 20)
|
||||
context.arcTo(240, 240, 460, 20, j)
|
||||
context.lineTo(460, 20)
|
||||
context.stroke()
|
||||
context.closePath()
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Quadratic Curves</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='480' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
context.beginPath()
|
||||
context.moveTo(180, 60)
|
||||
context.quadraticCurveTo(240, 0, 300, 60)
|
||||
context.quadraticCurveTo(460, 30, 420, 100)
|
||||
context.quadraticCurveTo(480, 210, 340, 170)
|
||||
context.quadraticCurveTo(240, 240, 200, 170)
|
||||
context.quadraticCurveTo(100, 200, 140, 130)
|
||||
context.quadraticCurveTo( 40, 40, 180, 60)
|
||||
context.fillStyle = 'white'
|
||||
context.fill()
|
||||
context.closePath()
|
||||
|
||||
// Illustrate the attractor points
|
||||
// IE, Chrome, Opera only
|
||||
|
||||
// context.beginPath()
|
||||
// context.moveTo(240, 0)
|
||||
// context.lineTo(460, 30)
|
||||
// context.lineTo(480, 210)
|
||||
// context.lineTo(240, 240)
|
||||
// context.lineTo(100, 200)
|
||||
// context.lineTo( 40, 40)
|
||||
// context.closePath()
|
||||
// context.setLineDash([2,3])
|
||||
// context.strokeStyle = 'green'
|
||||
// context.stroke()
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Bezier Curves</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='480' height='240'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
context.beginPath()
|
||||
context.moveTo(240, 20)
|
||||
context.bezierCurveTo(720, 480, -240, -240, 240, 220)
|
||||
context.stroke()
|
||||
context.closePath()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Drawing Images</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='480' height='260'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'image.png'
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
context.drawImage(myimage, 20, 20 )
|
||||
context.drawImage(myimage, 140, 20, 220, 220)
|
||||
context.drawImage(myimage, 380, 20, 80, 220)
|
||||
context.drawImage(myimage, 30, 30, 40, 40, 20, 140, 100, 100)
|
||||
|
||||
// Example of using a canvas as an image source
|
||||
context.drawImage(canvas, 0, 0, 480, 260, 20, 140, 100, 100)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Adding Shadows</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='480' height='190'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'apple.png'
|
||||
|
||||
orig = 95
|
||||
points = 21
|
||||
dist = Math.PI / points * 2
|
||||
scale1 = 75
|
||||
scale2 = 50
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
context.beginPath()
|
||||
|
||||
for (j = 0 ; j < points ; ++j)
|
||||
{
|
||||
x = Math.sin(j * dist)
|
||||
y = Math.cos(j * dist)
|
||||
context.lineTo(orig + x * scale1, orig + y * scale1)
|
||||
context.lineTo(orig + x * scale2, orig + y * scale2)
|
||||
}
|
||||
|
||||
context.closePath()
|
||||
|
||||
context.shadowOffsetX = 5
|
||||
context.shadowOffsetY = 5
|
||||
context.shadowBlur = 6
|
||||
context.shadowColor = '#444'
|
||||
context.fillStyle = 'red'
|
||||
context.stroke()
|
||||
context.fill()
|
||||
|
||||
context.shadowOffsetX = 2
|
||||
context.shadowOffsetY = 2
|
||||
context.shadowBlur = 3
|
||||
context.shadowColor = 'yellow'
|
||||
context.font = 'bold 36pt Times'
|
||||
context.textBaseline = 'top'
|
||||
context.fillStyle = 'green'
|
||||
context.fillText('Sale now on!', 200, 5)
|
||||
|
||||
context.shadowOffsetX = 3
|
||||
context.shadowOffsetY = 3
|
||||
context.shadowBlur = 5
|
||||
context.shadowColor = 'black'
|
||||
context.drawImage(myimage, 245, 45)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Manipulating Image Data</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='640' height='200'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'photo.jpg'
|
||||
myimage.crossOrigin = ''
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
context.drawImage(myimage, 0, 0)
|
||||
idata = context.getImageData(0, 0, myimage.width, myimage.height)
|
||||
|
||||
for (y = 0 ; y < myimage.height ; ++y)
|
||||
{
|
||||
for (x = 0 ; x < myimage.width ; ++x)
|
||||
{
|
||||
pos = y * myimage.width * 4 + x * 4
|
||||
average =
|
||||
(
|
||||
idata.data[pos] +
|
||||
idata.data[pos + 1] +
|
||||
idata.data[pos + 2]
|
||||
) / 3
|
||||
|
||||
idata.data[pos] = average + 50
|
||||
idata.data[pos + 1] = average
|
||||
idata.data[pos + 2] = average - 50
|
||||
}
|
||||
}
|
||||
context.putImageData(idata, 320, 0)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Compositing</title>
|
||||
<script src='OSC.js'></script>
|
||||
<style>
|
||||
.compositing {
|
||||
font-family:'courier new';
|
||||
font-size :9pt;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class='compositing'>
|
||||
<canvas class='canvas' id='c1' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c2' width='120' height='120'></canvas>
|
||||
|
||||
<canvas class='canvas' id='c3' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c4' width='120' height='120'></canvas>
|
||||
<br>
|
||||
source-over
|
||||
source-in source-out
|
||||
source-atop<br>
|
||||
|
||||
|
||||
<canvas class='canvas' id='c5' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c6' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c7' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c8' width='120' height='120'></canvas>
|
||||
<br>
|
||||
destination-over destination-in
|
||||
destination-out destination atop<br>
|
||||
|
||||
<canvas class='canvas' id='c9' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c10' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c11' width='120' height='120'></canvas>
|
||||
<canvas class='canvas' id='c12' width='120' height='120'></canvas>
|
||||
<br>
|
||||
lighter
|
||||
darker
|
||||
|
||||
|
||||
copy
|
||||
xor
|
||||
</div>
|
||||
|
||||
<script>
|
||||
image = new Image()
|
||||
image.src = 'image.png'
|
||||
|
||||
image.onload = function()
|
||||
{
|
||||
types =
|
||||
[
|
||||
'source-over', 'source-in', 'source-out',
|
||||
'source-atop', 'destination-over', 'destination-in',
|
||||
'destination-out', 'destination-atop', 'lighter',
|
||||
'darker', 'copy', 'xor'
|
||||
]
|
||||
|
||||
for (j = 0 ; j < 12 ; ++j)
|
||||
{
|
||||
canvas = O('c' + (j + 1))
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
context.fillStyle = 'red'
|
||||
|
||||
context.arc(50, 50, 50, 0, Math.PI * 2, false)
|
||||
context.fill()
|
||||
context.globalCompositeOperation = types[j]
|
||||
context.drawImage(image, 20, 20, 100, 100)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Scaling</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='420' height='200'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'image.png'
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
context.drawImage(myimage, 0, 0)
|
||||
context.scale(3, 2)
|
||||
|
||||
// Alternative to above using transform()
|
||||
// context.transform(3, 0, 0, 2, 0, 0)
|
||||
|
||||
context.drawImage(myimage, 40, 0)
|
||||
context.scale(.33, .5)
|
||||
context.drawImage(myimage, 0, 100)
|
||||
|
||||
// Improved version using save() and restore()
|
||||
//
|
||||
// context.drawImage(myimage, 0, 0)
|
||||
// context.save()
|
||||
// context.scale(3, 2)
|
||||
// context.drawImage(myimage, 40, 0)
|
||||
// context.restore()
|
||||
// context.drawImage(myimage, 0, 100)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Rotating (a)</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='500' height='280'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'image.png'
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
for (j = 0 ; j < 4 ; ++j)
|
||||
{
|
||||
context.drawImage(myimage, 20 + j * 120 , 20)
|
||||
context.rotate(Math.PI / 25)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Rotating (b)</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='500' height='140'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'image.png'
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
w = myimage.width
|
||||
h = myimage.height
|
||||
|
||||
for (j = 0 ; j < 4 ; ++j)
|
||||
{
|
||||
context.save()
|
||||
context.translate(20 + w / 2 + j * (w + 20), 20 + h / 2)
|
||||
|
||||
// Alternative to the above using transform()
|
||||
// context.transform(1, 0, 0, 1, 20 + w / 2 + j * (w + 20), 20 + h / 2)
|
||||
|
||||
context.rotate(Math.PI / 5 * j)
|
||||
context.drawImage(myimage, -(w / 2), -(h / 2))
|
||||
context.restore()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Skewing</title>
|
||||
<script src='OSC.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id='mycanvas' width='500' height='140'></canvas>
|
||||
|
||||
<script>
|
||||
canvas = O('mycanvas')
|
||||
context = canvas.getContext('2d')
|
||||
S(canvas).background = 'lightblue'
|
||||
|
||||
myimage = new Image()
|
||||
myimage.src = 'image.png'
|
||||
|
||||
myimage.onload = function()
|
||||
{
|
||||
context.drawImage(myimage, 20, 20)
|
||||
context.transform(1, 0, 1, 1, 0, 0)
|
||||
context.drawImage(myimage, 140, 20)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
function O(i) { return typeof i == 'object' ? i : document.getElementById(i) }
|
||||
function S(i) { return O(i).style }
|
||||
function C(i) { return document.getElementsByClassName(i) }
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
Reference in New Issue
Block a user