Difference between revisions of "OddFont"

From CodeStuff
Jump to: navigation, search
(Created page with "This is a little tool for making fonts for an emulator. It is somewhat unusual in that the fonts are made out of 3x3 cells with the top left pixel always clear. <edcode>...")
 
 
Line 2: Line 2:
  
 
<edcode>
 
<edcode>
 +
 +
  
 
var origin = {x:100,y:100};
 
var origin = {x:100,y:100};
Line 9: Line 11:
 
   fillRectangle(x,y,size,size);
 
   fillRectangle(x,y,size,size);
  
 +
  setColour("grey");
 +
  if ( (data & 1) !==0 ) {
 +
    fillRectangle(x+size,y,size,size);   
 +
  }
 +
  if ( (data & 2) !==0 ) {
 +
    fillRectangle(x+size*2,y,size,size);   
 +
  }
 +
  if ( (data & 4) !==0 ) {
 +
    fillRectangle(x,y+size,size,size);   
 +
  }
 +
  if ( (data & 8) !==0 ) {
 +
    fillRectangle(x+size,y+size,size,size);   
 +
  }
 +
  if ( (data & 16) !==0 ) {
 +
    fillRectangle(x+size*2,y+size,size,size);   
 +
  }
 +
 
 +
  if ( (data & 32) !==0 ) {
 +
    fillRectangle(x,y+size*2,size,size);   
 +
  }
 +
  if ( (data & 64) !==0 ) {
 +
    fillRectangle(x+size,y+size*2,size,size);   
 +
  }
 +
  if ( (data & 128) !==0 ) {
 +
    fillRectangle(x+size*2,y+size*2,size,size);   
 +
  }
 +
 
 +
 
 
   setColour("black");   
 
   setColour("black");   
 
   drawRectangle(x,y,size,size);
 
   drawRectangle(x,y,size,size);
Line 35: Line 65:
  
 
drawBlock(origin.x,origin.y,[0xff,0xff,0xff,0x55,0x55,0x80],32);
 
drawBlock(origin.x,origin.y,[0xff,0xff,0xff,0x55,0x55,0x80],32);
−
 
+
var character = [0xff,0xff,0xff,0x55,0x55,0x80];
 +
   
 
var note ="";
 
var note ="";
 
function move() {
 
function move() {
−
   var cellSize=32*3;
+
   var size = 32;
 +
  var cellSize=size*3;
 
   var m = getMouseInfo();
 
   var m = getMouseInfo();
 
   var cellX = Math.floor((m.x-origin.x) /cellSize);
 
   var cellX = Math.floor((m.x-origin.x) /cellSize);
Line 48: Line 80:
 
    
 
    
 
   var cellIndex = cellX+cellY*2;
 
   var cellIndex = cellX+cellY*2;
−
   note=cellIndex;
+
 
 +
  var cellLeft = origin.x+cellSize*cellX;
 +
  var cellTop = origin.y+cellSize*cellY;
 +
 
 +
  var pixelX = Math.floor((m.x-cellLeft) / size);
 +
  var pixelY = Math.floor((m.y-cellTop) / size);
 +
 
 +
  if (pixelX < 0) pixelX=0;
 +
  if (pixelY < 0) pixelY=0;
 +
  if (pixelX > 2) pixelX=2;
 +
  if (pixelY > 2) pixelY=2;
 +
 
 +
  var pixelIndex = pixelY*3+pixelX;
 +
  if (pixelIndex !==0) {
 +
if (m.right) {
 +
character[cellIndex]&= ~(1 << (pixelIndex-1));
 +
    }
 +
if (m.left) {
 +
character[cellIndex]|= (1 << (pixelIndex-1));
 +
    }
 +
  }
 +
   note="cell:"+cellIndex+"    pixel:"+pixelIndex+"    "+JSON.stringify(m);
 
}
 
}
  
 
function draw() {
 
function draw() {
 
   clear();
 
   clear();
−
   print(note);
+
   print(character);
−
   drawBlock(origin.x,origin.y,[0xff,0xff,0xff,0x55,0x55,0x80],32);   
+
   drawBlock(origin.x,origin.y,character,32);   
 
}
 
}
 
run(move,draw);
 
run(move,draw);
 +
 +
  
  
  
 
</edcode>
 
</edcode>

Latest revision as of 00:09, 13 September 2015

This is a little tool for making fonts for an emulator. It is somewhat unusual in that the fonts are made out of 3x3 cells with the top left pixel always clear.