diff --git a/displayclienthtml/codef_core.js b/displayclienthtml/codef_core.js
new file mode 100644
index 0000000..c916023
--- /dev/null
+++ b/displayclienthtml/codef_core.js
@@ -0,0 +1,604 @@
+/*------------------------------------------------------------------------------
+Copyright (c) 2011 Antoine Santo Aka NoNameNo
+
+This File is part of the CODEF project.
+
+More info : http://codef.santo.fr
+Demo gallery http://www.wab.com
+
+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 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.
+------------------------------------------------------------------------------*/
+
+window.requestAnimFrame = (function(){
+ return window.requestAnimationFrame ||
+ window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.oRequestAnimationFrame ||
+ window.msRequestAnimationFrame ||
+ function(/* function */ callback, /* DOMElement */ element){
+ window.setTimeout(callback, 1000 / 60);
+ };
+})();
+
+/**
+ Create a new canvas object.
+ canvas(w, h, divname)
+
+ @class canvas
+ @param {Number in pixel} w The Width of the canvas you want to create.
+ @param {Number in pixel} h The Height of the canvas you want to create.
+ @param {String} [divname] The div id you want the create the canvas to. If not specified, the canvas will be hidden.
+ @property {Number in pixel} width The Width of the canvas.
+ @property {Number in pixel} height The Height of the canvas.
+ @property {Object} canvas object of this canvas. ;)
+ @property {Object} contex the 2d context of this canvas.
+ @property {Number in pixel} handlex the x coord of the handle (0 by default).
+ @property {Number in pixel} handley the y coord of the handle (0 by default).
+ @property {Number in pixel} tilew the Width of a tile (IF this canvas is a tileset).
+ @property {Number in pixel} tileh the Height of a tile (IF this canvas is a tileset).
+ @property {Number} tilestart the number of the first tile (usefull for tileset like font).
+ @example
+ var mycanvas = new canvas(640, 480, "main");
+
+*/
+function canvas(w, h, divname){
+ this.width=w;
+ this.height=h;
+ this.canvas;
+ this.contex;
+ this.canvas = document.createElement("canvas");
+ if(divname) document.getElementById(divname).appendChild(this.canvas);
+ this.canvas.setAttribute('width', w);
+ this.canvas.setAttribute('height', h);
+ this.contex = this.canvas.getContext('2d');
+
+ this.handlex=0;
+ this.handley=0;
+ this.midhandled=false;
+ this.tilew=0;
+ this.tileh=0;
+ this.tilestart=0;
+
+ /**
+ Fill the canvas.
+ canvas.fill(color)
+
+ @function canvas.fill
+ @param {Color} color The color you want to fill the canvas with.
+ @example
+ mycanvas.fill('#FF0000');
+ */
+ this.fill = function(color){
+ var tmp = this.contex.fillStyle;
+ var tmp2= this.contex.globalAlpha;
+ this.contex.globalAlpha=1;
+ this.contex.fillStyle = color;
+ this.contex.fillRect (0, 0, this.canvas.width, this.canvas.height);
+ this.contex.fillStyle = tmp
+ this.contex.globalAlpha=tmp2;
+ }
+
+ /**
+ Clear the canvas.
+
+ @function canvas.clear
+ @example
+ mycanvas.clear();
+ */
+ this.clear = function(){
+ this.contex.clearRect (0, 0, this.canvas.width, this.canvas.height);
+ }
+
+ /**
+ Draw a plot on the canvas.
+ canvas.plot(x1,y1,width,color)
+
+ @function canvas.plot
+ @param {Number in pixel} x The x coord you want to plot in the canvas.
+ @param {Number in pixel} y The y coord you want to plot in the canvas.
+ @param {Number in pixel} width The size of the plot.
+ @param {Color} color The color of the plot.
+ @example
+ mycanvas.plot(20,20,50,'#FF0000');
+ */
+ this.plot = function(x,y,width,color){
+ // save old fillstyle
+ var oldcolor = this.contex.fillStyle ;
+
+ this.contex.fillStyle=color;
+ this.contex.fillRect(x,y,width,width) ;
+
+ // restore old fillstyle
+ this.contex.fillStyle=oldcolor;
+ }
+
+ /**
+ Draw a line on the canvas.
+ canvas.line(x1,y1,x2,y2,width,color)
+
+ @function canvas.line
+ @param {Number in pixel} x1 The x coord of the line start in the canvas.
+ @param {Number in pixel} y1 The y coord of the line start in the canvas.
+ @param {Number in pixel} x2 The x coord of the line end in the canvas.
+ @param {Number in pixel} y2 The y coord of the line end in the canvas.
+ @param {Number in pixel} width The width of the line.
+ @param {Color} color The color of the plot.
+ @example
+ mycanvas.line(0,0,50,50,2,'#FF0000');
+ */
+ this.line = function(x1,y1,x2,y2,width,color){
+ var tmp=this.contex.strokeStyle;
+ this.contex.strokeStyle=color;
+ this.contex.lineWidth=width;
+ this.contex.beginPath();
+ this.contex.moveTo(x1,y1);
+ this.contex.lineTo(x2,y2);
+ this.contex.stroke();
+ this.contex.closePath();
+ this.contex.strokeStyle=tmp;
+ }
+
+ /**
+ Draw a filled triangle on the canvas.
+ canvas.triangle(x1,y1,x2,y2,x3,y3,color)
+
+ @function canvas.triangle
+ @param {Number in pixel} x1 The x coord of the 1st edge of the triangle in the canvas.
+ @param {Number in pixel} y1 The y coord of the 1st edge of the triangle in the canvas.
+ @param {Number in pixel} x2 The x coord of the 2nd edge of the triangle in the canvas.
+ @param {Number in pixel} y2 The y coord of the 2nd edge of the triangle in the canvas.
+ @param {Number in pixel} x3 The x coord of the 3rd edge of the triangle in the canvas.
+ @param {Number in pixel} y3 The y coord of the 3rd edge of the triangle in the canvas.
+ @param {Color} color The color of the plot.
+ @example
+ mycanvas.triangle(150,150,250,250,50,250,'#FF0000');
+ */
+ this.triangle = function(x1,y1,x2,y2,x3,y3,color){
+ this.contex.beginPath();
+ this.contex.moveTo(x1,y1);
+ this.contex.lineTo(x2,y2);
+ this.contex.lineTo(x3,y3);
+ this.contex.closePath();
+ this.contex.fillStyle=color;
+ this.contex.fill();
+ }
+
+ /**
+ Draw a filled quad on the canvas.
+
+ it can be used with 5 params :
+ canvas.quad(x1,y1,w,h,color)
+
+ or it can be used with 9 params :
+ canvas.quad(x1,y1,x2,y2,x3,y3,x4,y4,color)
+ @function canvas.quad
+ @param {Number in pixel} x1 The x coord of the 1st edge of the quad in the canvas.
+ @param {Number in pixel} y1 The y coord of the 1st edge of the quad in the canvas.
+ @param {Number in pixel} x2 The x coord of the 2nd edge of the quad in the canvas.
+ @param {Number in pixel} y2 The y coord of the 2nd edge of the quad in the canvas.
+ @param {Number in pixel} x3 The x coord of the 3rd edge of the quad in the canvas.
+ @param {Number in pixel} y3 The y coord of the 3rd edge of the quad in the canvas.
+ @param {Number in pixel} x4 The x coord of the 4th edge of the quad in the canvas.
+ @param {Number in pixel} y4 The y coord of the 4th edge of the quad in the canvas.
+ @param {Number in pixel} w The Width of the quad in the canvas.
+ @param {Number in pixel} h The Height of the quad in the canvas.
+ @param {Color} color The color of the plot.
+ @example
+ mycanvas.quad(150,150,250,250,'#FF0000');
+ or
+ mycanvas.quad(0,150,300,150,250,250,50,250,'#FF0000');
+ */
+ this.quad = function(x1,y1,x2,y2,x3,y3,x4,y4,color){
+ // save old fillstyle
+ var oldcolor = this.contex.fillStyle ;
+
+ // if x1 y1 width height color
+ if(arguments.length==5){
+ this.contex.fillStyle=x3;
+ this.contex.fillRect(x1,y1,x2,y2) ;
+ }
+ // if all quad coordinates
+ else{
+ this.contex.beginPath();
+ this.contex.moveTo(x1,y1);
+ this.contex.lineTo(x2,y2);
+ this.contex.lineTo(x3,y3);
+ this.contex.lineTo(x4,y4);
+ this.contex.closePath();
+ this.contex.fillStyle=color;
+ this.contex.fill();
+ }
+ // restore old fillstyle
+ this.contex.fillStyle=oldcolor;
+ }
+ /**
+ Init a tileset canvas.
+ canvas.initTile(tilew,tileh, tilestart)
+
+ @function canvas.initTile
+ @param {Number in pixel} tilew The Width of one tile.
+ @param {Number in pixel} tileh The Height of one tile.
+ @param {Number} [tilestart] The number of the first tile. (0 by default)
+ @example
+ mycanvas.initTile(32,32);
+ */
+ this.initTile=function(tilew,tileh, tilestart){
+ this.tileh=tileh;
+ this.tilew=tilew;
+ if(typeof(tilestart)!='undefined')
+ this.tilestart=tilestart;
+ }
+
+ /**
+ Draw the canvas to another canvas.
+ canvas.draw(dst,x,y,alpha, rot,w,h)
+
+ @function canvas.draw
+ @param {Object} dst The destination canvas.
+ @param {Number in pixel} x The x coord in the destination canvas (based on the handle coord).
+ @param {Number in pixel} y The y coord in the destination canvas (based on the handle coord).
+ @param {Number} [alpha] The normalized value of the alpha (1 by default).
+ @param {Number} [rot] The rotation angle in degrees (0 by default) (will use the handle coord as rotation axis).
+ @param {Number} [w] The normalized zoom factor on x (1 by default).
+ @param {Number} [h] The normalized zoom factor on y (1 by default).
+ @example
+ mycanvas.draw(destcanvas,10,10,1,0,1,1);
+ */
+ this.draw = function(dst,x,y,alpha, rot,w,h){
+ var tmp=dst.contex.globalAlpha;
+ if(typeof(alpha)=='undefined') alpha=1;
+ dst.contex.globalAlpha=alpha;
+ if(arguments.length==3 || arguments.length==4)
+ dst.contex.drawImage(this.canvas, x-this.handlex,y-this.handley);
+ else if(arguments.length==5){
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.canvas, 0,0);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ else{
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ dst.contex.scale(w,h);
+ dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.canvas, 0,0);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ dst.contex.globalAlpha=tmp;
+ }
+
+ /**
+ Draw a tile from this canvas to another canvas.
+ canvas.drawTile(dst, nb, x, y, alpha, rot, w, h)
+
+ @function canvas.drawTile
+ @param {Object} dst The destination canvas.
+ @param {Number} nb the tile number.
+ @param {Number in pixel} x The x coord in the destination canvas (based on the handle coord).
+ @param {Number in pixel} y The y coord in the destination canvas (based on the handle coord).
+ @param {Number} [alpha] The normalized value of the alpha (1 by default).
+ @param {Number} [rot] The rotation angle in degrees (0 by default) (will use the handle coord as rotation axis).
+ @param {Number} [w] The normalized zoom factor on x (1 by default).
+ @param {Number} [h] The normalized zoom factor on y (1 by default).
+ @example
+ mycanvas.drawTile(destcanvas,5,10,10,1,0,1,1);
+ */
+ this.drawTile = function(dst, nb, x, y, alpha, rot, w, h){
+ var tmp=dst.contex.globalAlpha;
+ if(typeof(alpha)=='undefined') alpha=1;
+ dst.contex.globalAlpha=alpha;
+ this.drawPart(dst,x,y,Math.floor((nb%(this.canvas.width/this.tilew)))*this.tilew,Math.floor(nb/(this.canvas.width/this.tilew))*this.tileh,this.tilew,this.tileh,alpha, rot, w, h);
+ dst.contex.globalAlpha=tmp;
+
+ }
+
+ /**
+ Draw a part of this canvas to another canvas.
+ canvas.drawPart(dst,x,y,partx,party,partw,parth,alpha, rot,zx,zy)
+
+ @function canvas.drawPart
+ @param {Object} dst The destination canvas.
+ @param {Number in pixel} x The x coord in the destination canvas (based on the handle coord).
+ @param {Number in pixel} y The y coord in the destination canvas (based on the handle coord).
+ @param {Number in pixel} partx The x coord of the part in the source canvas.
+ @param {Number in pixel} party The y coord of the part in the source canvas.
+ @param {Number in pixel} partw The width of the part in the source canvas.
+ @param {Number in pixel} parth The height of the part in the source canvas.
+ @param {Number} [alpha] The normalized value of the alpha (1 by default).
+ @param {Number} [rot] The rotation angle in degrees (0 by default) (will use the handle coord as rotation axis).
+ @param {Number} [zx] The normalized zoom factor on x (1 by default).
+ @param {Number} [zy] The normalized zoom factor on y (1 by default).
+ @example
+ mycanvas.drawTile(mycanvas,10,10,0,0,50,50,1,0,1,1);
+ */
+ this.drawPart = function(dst,x,y,partx,party,partw,parth,alpha, rot,zx,zy){
+ var tmp=dst.contex.globalAlpha;
+ if(typeof(alpha)=='undefined') alpha=1;
+ dst.contex.globalAlpha=alpha;
+ if(arguments.length==7 || arguments.length==8){
+ dst.contex.translate(x,y);
+ if(this.midhandled==true) dst.contex.translate(-partw/2,-parth/2); else dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.canvas,partx,party,partw,parth,null,null,partw,parth);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ else if(arguments.length==9){
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ if(this.midhandled==true) dst.contex.translate(-partw/2,-parth/2); else dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.canvas,partx,party,partw,parth,null,null,partw,parth);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ else{
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ dst.contex.scale(zx,zy);
+ if(this.midhandled==true) dst.contex.translate(-partw/2,-parth/2); else dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.canvas,partx,party,partw,parth,null,null,partw,parth);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ dst.contex.globalAlpha=tmp;
+ }
+
+ /**
+ Set the handle coord of this canvas to the center.
+
+ @function canvas.setmidhandle
+ @example
+ mycanvas.setmidhandle();
+ */
+ this.setmidhandle=function(){
+ this.handlex=parseInt(this.canvas.width/2);
+ this.handley=parseInt(this.canvas.height/2);
+ this.midhandled=true;
+ }
+
+ /**
+ Set the handle of the canvas.
+ canvas.sethandle(x,y)
+
+ @function canvas.sethandle
+ @param {Number in pixel} x The x coord of the handle of the canvas.
+ @param {Number in pixel} y The y coord of the handle of the canvas.
+ @example
+ mycanvas.sethandle(50,50);
+ */
+ this.sethandle=function(x,y){
+ this.handlex=x;
+ this.handley=y;
+ this.midhandled=false;
+ }
+
+ this.print=function(dst, str, x, y, alpha, rot, w, h){
+ for(var i=0; iCreate an image object and load a remote/local png/gif/jpg in it.
+ image(img)
+
+ @class image
+ @param {string} img local or url to an jpg/png/gif image.
+ @property {Object} img the dom image object.
+ @property {Number in pixel} handlex the x coord of the handle (0 by default).
+ @property {Number in pixel} handley the y coord of the handle (0 by default).
+ @property {Number in pixel} tilew the Width of a tile (IF this canvas is a tileset).
+ @property {Number in pixel} tileh the Height of a tile (IF this canvas is a tileset).
+ @property {Number} tilestart the number of the first tile (usefull for tileset like font).
+ @example
+ // with a local file
+ var mylogo = new image('logo.png');
+
+ // with a remote image
+ var mylogo = new image('http://www.myremotesite.com/logo.png');
+
+*/
+function image(img){
+ this.img = new Image();
+ this.img.src=img;
+ this.handlex=0;
+ this.handley=0;
+ this.midhandled=false;
+ this.tilew=0;
+ this.tileh=0;
+ this.tilestart=0;
+
+ /**
+ Init a tileset image.
+ image.initTile(tilew,tileh, tilestart)
+
+ @function image.initTile
+ @param {Number in pixel} tilew The Width of one tile.
+ @param {Number in pixel} tileh The Height of one tile.
+ @param {Number} [tilestart] The number of the first tile. (0 by default)
+ @example
+ myimage.initTile(32,32);
+ */
+ this.initTile=function(tilew,tileh,tilestart){
+ this.tileh=tileh;
+ this.tilew=tilew;
+ if(typeof(tilestart)!='undefined')
+ this.tilestart=tilestart;
+
+ }
+
+/**
+ Draw the image to a canvas.
+ image.draw(dst,x,y,alpha, rot,w,h)
+
+ @function image.draw
+ @param {Object} dst The destination canvas.
+ @param {Number in pixel} x The x coord in the destination canvas (based on the handle coord of the image).
+ @param {Number in pixel} y The y coord in the destination canvas (based on the handle coord of the image).
+ @param {Number} [alpha] The normalized value of the alpha (1 by default).
+ @param {Number} [rot] The rotation angle in degrees (0 by default) (will use the handle coord as rotation axis).
+ @param {Number} [w] The normalized zoom factor on x (1 by default).
+ @param {Number} [h] The normalized zoom factor on y (1 by default).
+ @example
+ myimage.draw(destcanvas,10,10,1,0,1,1);
+ */
+ this.draw = function(dst,x,y,alpha, rot,w,h){
+ var tmp=dst.contex.globalAlpha;
+ if(typeof(alpha)=='undefined') alpha=1;
+ dst.contex.globalAlpha=alpha;
+ if(arguments.length==3 || arguments.length==4)
+ dst.contex.drawImage(this.img, x-this.handlex,y-this.handley);
+ else if(arguments.length==5){
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.img, 0,0);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ else{
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ dst.contex.scale(w,h);
+ dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.img, 0,0);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ dst.contex.globalAlpha=tmp;
+ }
+
+ /**
+ Draw a tile from this image to a canvas.
+ image.drawTile(dst, nb, x, y, alpha, rot, w, h)
+
+ @function image.drawTile
+ @param {Object} dst The destination canvas.
+ @param {Number} nb the tile number.
+ @param {Number in pixel} x The x coord in the destination canvas (based on the handle coord of the image).
+ @param {Number in pixel} y The y coord in the destination canvas (based on the handle coord of the image).
+ @param {Number} [alpha] The normalized value of the alpha (1 by default).
+ @param {Number} [rot] The rotation angle in degrees (0 by default) (will use the handle coord as rotation axis).
+ @param {Number} [w] The normalized zoom factor on x (1 by default).
+ @param {Number} [h] The normalized zoom factor on y (1 by default).
+ @example
+ myimage.drawTile(destcanvas,5,10,10,1,0,1,1);
+ */
+ this.drawTile = function(dst, nb, x, y, alpha, rot, w, h){
+ var tmp=dst.contex.globalAlpha;
+ if(typeof(alpha)=='undefined') alpha=1;
+ dst.contex.globalAlpha=alpha;
+ this.drawPart(dst,x,y,Math.floor((nb%(this.img.width/this.tilew)))*this.tilew,Math.floor(nb/(this.img.width/this.tilew))*this.tileh,this.tilew,this.tileh,alpha, rot, w, h);
+ dst.contex.globalAlpha=tmp;
+
+ }
+
+ /**
+ Draw a part of this image to a canvas.
+ image.drawPart(dst,x,y,partx,party,partw,parth,alpha, rot,zx,zy)
+
+ @function image.drawPart
+ @param {Object} dst The destination canvas.
+ @param {Number in pixel} x The x coord in the destination canvas (based on the handle coord of the image).
+ @param {Number in pixel} y The y coord in the destination canvas (based on the handle coord of the image).
+ @param {Number in pixel} partx The x coord of the part in the source canvas.
+ @param {Number in pixel} party The y coord of the part in the source canvas.
+ @param {Number in pixel} partw The width of the part in the source canvas.
+ @param {Number in pixel} parth The height of the part in the source canvas.
+ @param {Number} [alpha] The normalized value of the alpha (1 by default).
+ @param {Number} [rot] The rotation angle in degrees (0 by default) (will use the handle coord as rotation axis).
+ @param {Number} [zx] The normalized zoom factor on x (1 by default).
+ @param {Number} [zy] The normalized zoom factor on y (1 by default).
+ @example
+ myimage.drawTile(mycanvas,10,10,0,0,50,50,1,0,1,1);
+ */
+ this.drawPart = function(dst,x,y,partx,party,partw,parth,alpha, rot,zx,zy){
+ var tmp=dst.contex.globalAlpha;
+ if(typeof(alpha)=='undefined') alpha=1;
+ dst.contex.globalAlpha=alpha;
+ if(arguments.length==7 || arguments.length==8){
+ dst.contex.translate(x,y);
+ if(this.midhandled==true) dst.contex.translate(-partw/2,-parth/2); else dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.img,partx,party,partw,parth,null,null,partw,parth);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ else if(arguments.length==9){
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ if(this.midhandled==true) dst.contex.translate(-partw/2,-parth/2); else dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.img,partx,party,partw,parth,null,null,partw,parth);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ else{
+ dst.contex.translate(x,y);
+ dst.contex.rotate(rot*Math.PI/180);
+ dst.contex.scale(zx,zy);
+ if(this.midhandled==true) dst.contex.translate(-partw/2,-parth/2); else dst.contex.translate(-this.handlex,-this.handley);
+ dst.contex.drawImage(this.img,partx,party,partw,parth,null,null,partw,parth);
+ dst.contex.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ dst.contex.globalAlpha=tmp;
+ }
+
+
+
+ /**
+ Set the handle coord of this image to the center.
+
+ @function image.setmidhandle
+ @example
+ myimage.setmidhandle();
+ */
+ this.setmidhandle=function(){
+ this.handlex=parseInt(this.img.width/2);
+ this.handley=parseInt(this.img.height/2);
+ this.midhandled=true;
+ }
+
+ /**
+ Set the handle of the image.
+ image.sethandle(x,y)
+
+ @function image.sethandle
+ @param {Number in pixel} x The x coord of the handle of the image.
+ @param {Number in pixel} y The y coord of the handle of the image.
+ @example
+ myimage.sethandle(50,50);
+ */
+ this.sethandle=function(x,y){
+ this.handlex=x;
+ this.handley=y;
+ this.midhandled=false;
+ }
+
+ this.print=function(dst, str, x, y, alpha, rot, w, h){
+ for(var i=0; i y) ? 1 : 0));
+}
+
+function sortPosy(a, b) {
+ var x = a.posy;
+ var y = b.posy;
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+}
+
+function scrolltext_horizontal(){
+ this.scroffset=0;
+ this.oldspeed=0;
+ this.speed=1;
+ this.font;
+ this.letters = new Object();
+ this.scrtxt=" ";
+ this.pausetimer=0;
+ this.pausedelay=0;
+
+ this.init = function(dst, font,speed,sinparam,type){
+ this.speed=speed;
+ this.dst=dst;
+ this.font=font;
+ this.fontw = this.font.tilew;
+ this.fonth = this.font.tileh;
+ this.fontstart = this.font.tilestart;
+ this.wide=Math.ceil(this.dst.canvas.width/this.fontw)+1;
+ for(i=0;i<=this.wide;i++){
+ this.letters[i]=new ltrobj(Math.ceil((this.wide*this.fontw)+i*this.fontw),0,this.scrtxt.charCodeAt(this.scroffset));
+ this.scroffset++;
+ }
+ if(typeof(sinparam)!='undefined')
+ this.sinparam=sinparam;
+ if(typeof(type)=='undefined')
+ this.type=0;
+ else
+ this.type=type;
+ }
+
+ this.draw = function(posy){
+ var prov = 0;
+ var temp = new Array();
+ var tmp=this.dst.contex.globalAlpha;
+ this.dst.contex.globalAlpha=1;
+ var oldvalue=new Array();
+ var i;
+ if(typeof(this.sinparam)!='undefined'){
+ for(var j=0;j this.scrtxt.length-1)
+ this.scroffset=0;
+ }
+ }
+ }
+ if(typeof(this.sinparam)!='undefined'){
+ for(var j=0;j this.scrtxt.length-1)
+ this.scroffset=0;
+ }
+ }
+ }
+ if(typeof(this.sinparam)!='undefined'){
+ for(var j=0;j
+
+
+
+
+
diff --git a/displayclienthtml/demo-codef.html b/displayclienthtml/demo-codef.html
new file mode 100644
index 0000000..e733b49
--- /dev/null
+++ b/displayclienthtml/demo-codef.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/displayclienthtml/font.png b/displayclienthtml/font.png
new file mode 100644
index 0000000..e05e4f3
Binary files /dev/null and b/displayclienthtml/font.png differ