Difference between revisions of "OddFont"
From CodeStuff
(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 | + | 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( | + | print(character); |
| − | drawBlock(origin.x,origin.y, | + | 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.