// -------------------- Uniboard -------------------- // Ces fonctions permettent de dessiner le graphique directement dans Uniboard. function colorToHex(color) { var addZero = function(myString){ if (myString.length == 1) return "0" + myString; else return myString; } var digits = /(.*?)rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(color); if (digits == null){ digits = /(.*?)rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(color); } if(digits == null){ return ""; } var red = parseInt(digits[2]); var green = parseInt(digits[3]); var blue = parseInt(digits[4]); var hexcode = addZero(red.toString(16)) + addZero(green.toString(16)) + addZero(blue.toString(16)); return '#' + hexcode.toUpperCase(); } function initUniboard(){ if(!window.uniboard && window.sankore){ uniboard = sankore; } uniboard.centerOn(337,245); // uniboard.setTool("pen"); // Paramètres par défaut uniboard.lineWidth = 1; uniboard.fillStyle = "black"; uniboard.strokeStyle = "black"; // Position du curseur pour écrire des nombres uniboard.cursorX = 0; uniboard.cursorY = 0; // Fonctions uniboard.strokeColor = function(){ this.setPenColor(colorToHex(this.strokeStyle)); }; uniboard.fillColor = function(){ this.setPenColor(colorToHex(this.fillStyle)); }; uniboard.lineTo = function(x, y){ if(y>-20 && y<affichage.hauteur+20){ this.strokeColor(); this.drawLineTo(x, y, this.lineWidth/2); } }; uniboard.arc = function(x, y, r){ this.fillColor(); this.moveTo(x, y); this.drawLineTo(x, y, r*2); }; uniboard.clearRect = function(x, y, width, height){ if(height<0){ height = Math.abs(height); y -= height; } if(width<0){ width = Math.abs(width); x -= width; } this.moveTo(x, y) this.eraseLineTo(x+width, y+height, this.lineWidth); }; uniboard.fillRect = function(x, y, width, height){ this.fillColor(); if(height<0){ height = Math.abs(height); y -= height; } if(width<0){ width = Math.abs(width); x -= width; } this.moveTo(x, y) this.drawLineTo(x+width, y+height, this.lineWidth); }; uniboard.fillText = function(txt, x, y){ // TODO this.fillNumber(txt, x, y); }; uniboard.beginPath = function(){ this.moveTo(0, 0); }; uniboard.fill = function(){}; uniboard.stroke = function(){}; uniboard.fillNumber = function(nbr, x, y){ var w = 5; var number = "" + nbr; if(!x || !y){ x = this.cursorX; y = this.cursorY; } else{ x += 3; y -= 12; } this.moveTo(x, y); this.fillColor(); var move = function(){ uniboard.moveTo(x, y); }; var draw = function(){ uniboard.drawLineTo(x, y, uniboard.lineWidth) }; var space = function(){ x += 2*w/3; move(); }; for(var i=0; i<number.length; i++){ switch(number.charAt(i)){ case "1": y += w move() x += w y -= w draw() y += 2*w draw() y -= 2*w space() break; case "2": x += w draw() y += w draw() x -= w draw() y += w draw() x += w draw() y -= 2*w space() break; case "3": x += w draw() y += w draw() x -= w draw() x += w move() y += w draw() x -= w draw() y -= 2*w x += w space() break; case "4": y += w draw() x += w draw() y -= w draw() y += w move() y += w draw() y -= 2*w space() break; case "5": x += w move() x -= w draw() y += w draw() x += w draw() y += w draw() x -= w draw() x += w y -= 2*w space() break; case "6": x += w move() x -= w draw() y += w draw() x += w draw() y += w draw() x -= w draw() y -= w draw() x += w y -= w space() break; case "7": x += w draw() x -= w/2 y += 2*w draw() x += w/2 y -= 2*w space() break; case "8": x += w draw() y += 2*w draw() x -= w draw() y -= 2*w draw() y += w move() x += w draw() y -= w move() space() break; case "9": x += w move() x -= w draw() y += w draw() x += w draw() y += w draw() x -= w draw() y -= w x += w move() y -= w draw() space() break; case "0": x += w draw() y += 2*w draw() x -= w draw() y -= 2*w draw() x += w move() space() break; case "-": y += w move() x += w draw() y -= w move() space() break; default: // Nombre inconnu // this.showMessage("Error : "+number.charAt(i)+" isn't a number"); } } this.cursorX = x; this.cursorY = y; // this.showMessage(number); } }