HTML 5 Previous version: HTML4.01, 1999 Still work in progress, most browsers support some of it
HTML 5 • New features based on HTML, CSS, DOM, Javascript • Reduces need for externals plugins (like Flash, ..) • “Should be” device independent
HTML 5 – interesting features • <canvas> element tag for 2D drawing • <audio> and <video> for media playback • Other new elements ( <article>, <footer>, <mark>, ...) • Support for local storage • New form controls (calendar, ..)
HTML 5 – Canvas element • Focus on <canvas> element • A container for graphics • ( 0, 0 ) is top left corner of canvas • Need to use a script to draw the graphics • Supported by IE9, Firefox, Safari, Opera, Chrome
500 X 200 Canvas element (0, 0) (500, 0) (200, 0) (500, 200)
HTML 5 • getContext( “2d” ) returns a CanvasRenderingContext2D object that allows to draw on the canvas • could ultimately reduce need for Flash • var can = document.getElementsByTagName( “canvas” )[0]; • var context = can.getContext( “2d” );
HTML 5 • Draw and paint text, lines, rectangles, circles, polygons, images, .. • Save and restore state of context • Change coordinate system (rotate, translate, ..) • Gradients, shadows, images (access pixels), ..
HTML 5 – setting the context • Set value of fillStyle and strokeStyle of the context • rgb 3 parameters • rgba 4th parameter is for opacity value • context.fillStyle = "rgb(255, 0, 0 )"; • context.strokeStyle = "rgba(0, 255, 0, 0.8 )"; • 20% transparent (80% opaque)
HTML 5 – rectangle • To paint the inside of a rectangle, use fillRect; to draw the rectangle, use strokeRect (x and y are relative to the canvas) • void fillRect ( floatx, floaty, floatwidth, floatheight); • void strokeRect ( doublex, doubley, doublewidth, doubleheight);
HTML 5 – rectangle • To clear a rectangle • void clearRect ( floatx, floaty, floatwidth, floatheight); • Color used is the color of the canvas
HTML 5 – drawing shapes • Set context (stroke and/or fill color) • Start a “path” to draw or fill context.beginPath( ); • Build the path • Close the path (or not) • Draw it or fill it
HTML 5 - line • To draw a line context.beginPath( ); context.moveTo( 50, 50 ); // start point context.lineTo( 250, 50 ); context.stroke( ); // use current strokeStyle color
HTML 5 - polygon • // build a polygon context.beginPath( ); context.moveTo( 50, 100 ); context.lineTo( 250, 100 ); context.lineTo( 120, 180 ); context.lineTo( 80, 150 ); context.closePath( ); // close the polygon
HTML 5 - polygon • Now draw the polygon (defined by the current path) context.stroke( ); • Now fill the polygon (defined by the current path) context.fill( );
HTML 5 – arcs and circles • A circle is an arc that is full • An arc is a portion of a circle defined by a start angle and an endAngle • Need center, radius, and whether the drawing is clockwise or counterclockwise
HTML 5 – arcs and circles • void arc ( floatx, floaty, floatradius, floatstartAngle, floatendAngle, booleananticlockwise); • Angles are in radians, measured from x axis, going clockwise • If endAngle – startAngle = 2 * PI ( or a multiple of 2 * PI ) circle • If endAngle – startAngle = PI ( or –PI) half circle
HTML 5 – arcs and circles • // build an arc context.beginPath( ); x = 200; // relative to canvas y = 100; // relative to canvas radius = 50; startAngle = 0; endAngle = Math.PI / 4; // 45 degrees anticlockwise = true;
HTML 5 – arcs and circles context.arc( x, y, radius, startAngle, endAngle, anticlockwise ); • Draw the arc context.stroke( ); • Fill the arc context.fill( );
HTML 5 – arcs and circles • Not what you expected for the filling of the arc? • Fill 2 half circles instead
HTML 5 – Pacman • Paint the Pacman, Paint the full circle, erase the full circle, Paint the Pacman, .. • Need to do the above with some time between the paintings (otherwise too fast) • Can make Pacman move
HTML 5 – More Pacman • Can make Pacman move responding to an event ( right key for example) • onkeydown event