From 2f663a6b85afc863928095d8fc45a11758f4108f Mon Sep 17 00:00:00 2001 From: Ale32bit Date: Sun, 13 Nov 2016 21:46:56 +0100 Subject: [PATCH] Add files via upload --- src/apis/bigfont | 305 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 src/apis/bigfont diff --git a/src/apis/bigfont b/src/apis/bigfont new file mode 100644 index 0000000..2d81862 --- /dev/null +++ b/src/apis/bigfont @@ -0,0 +1,305 @@ +--# BigFont API - Write bigger letters. v1.1 +--# Made By Wojbie +--# http://pastebin.com/3LfWxRWh + +local rawFont = { +{ +"\32\32\32\137\156\148\158\159\148\135\135\144\159\139\32\136\157\32\159\139\32\32\143\32\32\143\32\32\32\32\32\32\32\32\147\148\150\131\148\32\32\32\151\140\148\151\140\147", +"\32\32\32\149\132\149\136\156\149\144\32\133\139\159\129\143\159\133\143\159\133\138\32\133\138\32\133\32\32\32\32\32\32\150\150\129\137\156\129\32\32\32\133\131\129\133\131\132", +"\32\32\32\130\131\32\130\131\32\32\129\32\32\32\32\130\131\32\130\131\32\32\32\32\143\143\143\32\32\32\32\32\32\130\129\32\130\135\32\32\32\32\131\32\32\131\32\131", +"\139\144\32\32\143\148\135\130\144\149\32\149\150\151\149\158\140\129\32\32\32\135\130\144\135\130\144\32\149\32\32\139\32\159\148\32\32\32\32\159\32\144\32\148\32\147\131\132", +"\159\135\129\131\143\149\143\138\144\138\32\133\130\149\149\137\155\149\159\143\144\147\130\132\32\149\32\147\130\132\131\159\129\139\151\129\148\32\32\139\131\135\133\32\144\130\151\32", +"\32\32\32\32\32\32\130\135\32\130\32\129\32\129\129\131\131\32\130\131\129\140\141\132\32\129\32\32\129\32\32\32\32\32\32\32\131\131\129\32\32\32\32\32\32\32\32\32", +"\32\32\32\32\149\32\159\154\133\133\133\144\152\141\132\133\151\129\136\153\32\32\154\32\159\134\129\130\137\144\159\32\144\32\148\32\32\32\32\32\32\32\32\32\32\32\151\129", +"\32\32\32\32\133\32\32\32\32\145\145\132\141\140\132\151\129\144\150\146\129\32\32\32\138\144\32\32\159\133\136\131\132\131\151\129\32\144\32\131\131\129\32\144\32\151\129\32", +"\32\32\32\32\129\32\32\32\32\130\130\32\32\129\32\129\32\129\130\129\129\32\32\32\32\130\129\130\129\32\32\32\32\32\32\32\32\133\32\32\32\32\32\129\32\129\32\32", +"\150\156\148\136\149\32\134\131\148\134\131\148\159\134\149\136\140\129\152\131\32\135\131\149\150\131\148\150\131\148\32\148\32\32\148\32\32\152\129\143\143\144\130\155\32\134\131\148", +"\157\129\149\32\149\32\152\131\144\144\131\148\141\140\149\144\32\149\151\131\148\32\150\32\150\131\148\130\156\133\32\144\32\32\144\32\130\155\32\143\143\144\32\152\129\32\134\32", +"\130\131\32\131\131\129\131\131\129\130\131\32\32\32\129\130\131\32\130\131\32\32\129\32\130\131\32\130\129\32\32\129\32\32\133\32\32\32\129\32\32\32\130\32\32\32\129\32", +"\150\140\150\137\140\148\136\140\132\150\131\132\151\131\148\136\147\129\136\147\129\150\156\145\138\143\149\130\151\32\32\32\149\138\152\129\149\32\32\157\152\149\157\144\149\150\131\148", +"\149\143\142\149\32\149\149\32\149\149\32\144\149\32\149\149\32\32\149\32\32\149\32\149\149\32\149\32\149\32\144\32\149\149\130\148\149\32\32\149\32\149\149\130\149\149\32\149", +"\130\131\129\129\32\129\131\131\32\130\131\32\131\131\32\131\131\129\129\32\32\130\131\32\129\32\129\130\131\32\130\131\32\129\32\129\131\131\129\129\32\129\129\32\129\130\131\32", +"\136\140\132\150\131\148\136\140\132\153\140\129\131\151\129\149\32\149\149\32\149\149\32\149\137\152\129\137\152\129\131\156\133\149\131\32\150\32\32\130\148\32\152\137\144\32\32\32", +"\149\32\32\149\159\133\149\32\149\144\32\149\32\149\32\149\32\149\150\151\129\138\155\149\150\130\148\32\149\32\152\129\32\149\32\32\32\150\32\32\149\32\32\32\32\32\32\32", +"\129\32\32\130\129\129\129\32\129\130\131\32\32\129\32\130\131\32\32\129\32\129\32\129\129\32\129\32\129\32\131\131\129\130\131\32\32\32\129\130\131\32\32\32\32\140\140\132", +"\32\154\32\159\143\32\149\143\32\159\143\32\159\144\149\159\143\32\159\137\145\159\143\144\149\143\32\32\145\32\32\32\145\149\32\144\32\149\32\143\159\32\143\143\32\159\143\32", +"\32\32\32\152\140\149\151\32\149\149\32\145\149\130\149\157\140\133\32\149\32\154\143\149\151\32\149\32\149\32\144\32\149\149\153\32\32\149\32\149\133\149\149\32\149\149\32\149", +"\32\32\32\130\131\129\131\131\32\130\131\32\130\131\129\130\131\129\32\129\32\140\140\129\129\32\129\32\129\32\137\140\129\130\32\129\32\130\32\129\32\129\129\32\129\130\131\32", +"\144\143\32\159\144\144\144\143\32\159\143\144\159\138\32\144\32\144\144\32\144\144\32\144\144\32\144\144\32\144\143\143\144\32\150\129\32\149\32\130\150\32\134\137\134\134\131\148", +"\136\143\133\154\141\149\151\32\129\137\140\144\32\149\32\149\32\149\154\159\133\149\148\149\157\153\32\154\143\149\159\134\32\130\148\32\32\149\32\32\151\129\32\32\32\32\134\32", +"\133\32\32\32\32\133\129\32\32\131\131\32\32\130\32\130\131\129\32\129\32\130\131\129\129\32\129\140\140\129\131\131\129\32\130\129\32\129\32\130\129\32\32\32\32\32\129\32", +"\32\32\32\32\149\32\32\149\32\32\32\32\32\32\32\32\149\32\32\149\32\32\32\32\32\32\32\32\149\32\32\149\32\32\32\32\32\32\32\32\149\32\32\149\32\32\32\32", +"\32\32\32\32\32\32\32\32\32\32\32\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\32\32\32\32\32\32\32\32\32\32\32", +"\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32", +"\32\32\32\32\149\32\32\149\32\32\32\32\32\32\32\32\149\32\32\149\32\32\32\32\32\32\32\32\149\32\32\149\32\32\32\32\32\32\32\32\149\32\32\149\32\32\32\32", +"\32\32\32\32\32\32\32\32\32\32\32\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\32\32\32\32\32\32\32\32\32\32\32", +"\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32\32\149\32", +"\32\32\32\32\145\32\159\139\32\151\131\132\155\143\132\134\135\145\32\149\32\158\140\129\130\130\32\152\147\155\157\134\32\32\144\144\32\32\32\32\32\32\152\131\155\131\131\129", +"\32\32\32\32\149\32\149\32\145\148\131\32\149\32\149\140\157\132\32\148\32\137\155\149\32\32\32\149\154\149\137\142\32\153\153\32\131\131\149\131\131\129\149\135\145\32\32\32", +"\32\32\32\32\129\32\130\135\32\131\131\129\134\131\132\32\129\32\32\129\32\131\131\32\32\32\32\130\131\129\32\32\32\32\129\129\32\32\32\32\32\32\130\131\129\32\32\32", +"\150\150\32\32\148\32\134\32\32\132\32\32\134\32\32\144\32\144\150\151\149\32\32\32\32\32\32\145\32\32\152\140\144\144\144\32\133\151\129\133\151\129\132\151\129\32\145\32", +"\130\129\32\131\151\129\141\32\32\142\32\32\32\32\32\149\32\149\130\149\149\32\143\32\32\32\32\142\132\32\154\143\133\157\153\132\151\150\148\151\158\132\151\150\148\144\130\148", +"\32\32\32\140\140\132\32\32\32\32\32\32\32\32\32\151\131\32\32\129\129\32\32\32\32\134\32\32\32\32\32\32\32\129\129\32\129\32\129\129\130\129\129\32\129\130\131\32", +"\156\143\32\159\141\129\153\140\132\153\137\32\157\141\32\159\142\32\150\151\129\150\131\132\140\143\144\143\141\145\137\140\148\141\141\144\157\142\32\159\140\32\151\134\32\157\141\32", +"\157\140\149\157\140\149\157\140\149\157\140\149\157\140\149\157\140\149\151\151\32\154\143\132\157\140\32\157\140\32\157\140\32\157\140\32\32\149\32\32\149\32\32\149\32\32\149\32", +"\129\32\129\129\32\129\129\32\129\129\32\129\129\32\129\129\32\129\129\131\129\32\134\32\131\131\129\131\131\129\131\131\129\131\131\129\130\131\32\130\131\32\130\131\32\130\131\32", +"\151\131\148\152\137\145\155\140\144\152\142\145\153\140\132\153\137\32\154\142\144\155\159\132\150\156\148\147\32\144\144\130\145\136\137\32\146\130\144\144\130\145\130\136\32\151\140\132", +"\151\32\149\151\155\149\149\32\149\149\32\149\149\32\149\149\32\149\149\32\149\152\137\144\157\129\149\149\32\149\149\32\149\149\32\149\149\32\149\130\150\32\32\157\129\149\32\149", +"\131\131\32\129\32\129\130\131\32\130\131\32\130\131\32\130\131\32\130\131\32\32\32\32\130\131\32\130\131\32\130\131\32\130\131\32\130\131\32\32\129\32\130\131\32\133\131\32", +"\156\143\32\159\141\129\153\140\132\153\137\32\157\141\32\159\142\32\159\159\144\152\140\144\156\143\32\159\141\129\153\140\132\157\141\32\130\145\32\32\147\32\136\153\32\130\146\32", +"\152\140\149\152\140\149\152\140\149\152\140\149\152\140\149\152\140\149\149\157\134\154\143\132\157\140\133\157\140\133\157\140\133\157\140\133\32\149\32\32\149\32\32\149\32\32\149\32", +"\130\131\129\130\131\129\130\131\129\130\131\129\130\131\129\130\131\129\130\130\131\32\134\32\130\131\129\130\131\129\130\131\129\130\131\129\32\129\32\32\129\32\32\129\32\32\129\32", +"\159\134\144\137\137\32\156\143\32\159\141\129\153\140\132\153\137\32\157\141\32\32\132\32\159\143\32\147\32\144\144\130\145\136\137\32\146\130\144\144\130\145\130\138\32\146\130\144", +"\149\32\149\149\32\149\149\32\149\149\32\149\149\32\149\149\32\149\149\32\149\131\147\129\138\134\149\149\32\149\149\32\149\149\32\149\149\32\149\154\143\149\32\157\129\154\143\149", +"\130\131\32\129\32\129\130\131\32\130\131\32\130\131\32\130\131\32\130\131\32\32\32\32\130\131\32\130\131\129\130\131\129\130\131\129\130\131\129\140\140\129\130\131\32\140\140\129", +}, +{ +[[000110000110110000110010101000000010000000100101]], +[[000000110110000000000010101000000010000000100101]], +[[000000000000000000000000000000000000000000000000]], +[[100010110100000010000110110000010100000100000110]], +[[000000110000000010110110000110000000000000110000]], +[[000000000000000000000000000000000000000000000000]], +[[000000110110000010000000100000100000000000000010]], +[[000000000110110100010000000010000000000000000100]], +[[000000000000000000000000000000000000000000000000]], +[[010000000000100110000000000000000000000110010000]], +[[000000000000000000000000000010000000010110000000]], +[[000000000000000000000000000000000000000000000000]], +[[011110110000000100100010110000000100000000000000]], +[[000000000000000000000000000000000000000000000000]], +[[000000000000000000000000000000000000000000000000]], +[[110000110110000000000000000000010100100010000000]], +[[000010000000000000110110000000000100010010000000]], +[[000000000000000000000000000000000000000000000000]], +[[010110010110100110110110010000000100000110110110]], +[[000000000000000000000110000000000110000000000000]], +[[000000000000000000000000000000000000000000000000]], +[[010100010110110000000000000000110000000010000000]], +[[110110000000000000110000110110100000000010000000]], +[[000000000000000000000000000000000000000000000000]], +[[000100011111000100011111000100011111000100011111]], +[[000000000000100100100100011011011011111111111111]], +[[000000000000000000000000000000000000000000000000]], +[[000100011111000100011111000100011111000100011111]], +[[000000000000100100100100011011011011111111111111]], +[[100100100100100100100100100100100100100100100100]], +[[000000110100110110000010000011110000000000011000]], +[[000000000100000000000010000011000110000000001000]], +[[000000000000000000000000000000000000000000000000]], +[[010000100100000000000000000100000000010010110000]], +[[000000000000000000000000000000110110110110110000]], +[[000000000000000000000000000000000000000000000000]], +[[110110110110110110000000110110110110110110110110]], +[[000000000000000000000110000000000000000000000000]], +[[000000000000000000000000000000000000000000000000]], +[[000000000000110110000110010000000000000000010010]], +[[000010000000000000000000000000000000000000000000]], +[[000000000000000000000000000000000000000000000000]], +[[110110110110110110110000110110110110000000000000]], +[[000000000000000000000110000000000000000000000000]], +[[000000000000000000000000000000000000000000000000]], +[[110110110110110110110000110000000000000000010000]], +[[000000000000000000000000100000000000000110000110]], +[[000000000000000000000000000000000000000000000000]], +} +} +--Cut for 3x3 chars per a character. (1 character is 6x9 pixels) + +local fonts = {} +do + local firstFont = {} + local char = 0 + local height = #rawFont[1] + local lenght = #rawFont[1][1] + for i=1,height,3 do + for j=1,lenght,3 do + local thisChar = string.char(char) + + local temp = {} + temp[1] = rawFont[1][i]:sub(j,j+2) + temp[2] = rawFont[1][i+1]:sub(j,j+2) + temp[3] = rawFont[1][i+2]:sub(j,j+2) + + local temp2 = {} + temp2[1] = rawFont[2][i]:sub(j,j+2) + temp2[2] = rawFont[2][i+1]:sub(j,j+2) + temp2[3] = rawFont[2][i+2]:sub(j,j+2) + + firstFont[thisChar] = {temp,temp2} + char = char + 1 + end + end + fonts[1] = firstFont + + local inverter = {["0"]="1",["1"]="0"} --:gsub("[01]",inverter) + for f=2,3 do + --automagicly make bigger fonts using firstFont and fonts[f-1]. + local nextFont = {} + local lastFont = fonts[f-1] + for char=0,255 do + local thisChar = string.char(char) + + local temp = {} + local temp2 = {} + + local templateChar = lastFont[thisChar][1] + local templateBack = lastFont[thisChar][2] + for i=1,#templateChar do + local line1,line2,line3,back1,back2,back3={},{},{},{},{},{} + for j=1,#templateChar[1] do + local currentChar = firstFont[templateChar[i]:sub(j,j)][1] + table.insert(line1,currentChar[1]) + table.insert(line2,currentChar[2]) + table.insert(line3,currentChar[3]) + + local currentBack = firstFont[templateChar[i]:sub(j,j)][2] + if templateBack[i]:sub(j,j) =="1" then + table.insert(back1,(currentBack[1]:gsub("[01]",inverter))) + table.insert(back2,(currentBack[2]:gsub("[01]",inverter))) + table.insert(back3,(currentBack[3]:gsub("[01]",inverter))) + else + table.insert(back1,currentBack[1]) + table.insert(back2,currentBack[2]) + table.insert(back3,currentBack[3]) + end + end + table.insert(temp,table.concat(line1)) + table.insert(temp,table.concat(line2)) + table.insert(temp,table.concat(line3)) + table.insert(temp2,table.concat(back1)) + table.insert(temp2,table.concat(back2)) + table.insert(temp2,table.concat(back3)) + end + + nextFont[thisChar] = {temp,temp2} + end + fonts[f] = nextFont + end +end + +--Make a big font of big font + +local tHex = { + [ colors.white ] = "0", + [ colors.orange ] = "1", + [ colors.magenta ] = "2", + [ colors.lightBlue ] = "3", + [ colors.yellow ] = "4", + [ colors.lime ] = "5", + [ colors.pink ] = "6", + [ colors.gray ] = "7", + [ colors.lightGray ] = "8", + [ colors.cyan ] = "9", + [ colors.purple ] = "a", + [ colors.blue ] = "b", + [ colors.brown ] = "c", + [ colors.green ] = "d", + [ colors.red ] = "e", + [ colors.black ] = "f", +} + +local function stamp(tTerminal,tData,nX,nY) + + local oX,oY = tTerminal.getSize() + local cX,cY = #tData[1][1],#tData[1] + nX = nX or math.floor((oX-cX)/2)+1 + nY = nY or math.floor((oY-cY)/2)+1 + + for i=1,cY do + if i > 1 and nY+i-1 > oY then term.scroll(1) nY = nY-1 end + tTerminal.setCursorPos(nX,nY+i-1) + tTerminal.blit(tData[1][i],tData[2][i],tData[3][i]) + end +end + +local function makeText(nSize,sString,nFC,nBC,bBlit) + if not type(sString) == "string" then error("Not a String") end + local cFC = type(nFC)=="string" and nFC:sub(1,1) or tHex[nFC] or error("Wrong Front Color") + local cBC = type(nBC)=="string" and nBC:sub(1,1) or tHex[nBC] or error("Wrong Back Color") + local font = fonts[nSize] or error("Wrong font size selected") + + local input = {} + for i in sString:gmatch('.') do table.insert(input,i) end + + local tText = {} + local height = #font[input[1]][1] + + + for nLine=1,height do + local outLine={} + for i=1,#input do + outLine[i] = (font[input[i]] and font[input[i]][1][nLine] or "") + end + tText[nLine] = table.concat(outLine) + end + + local tFront = {} + local tBack = {} + local tFrontSub = {["0"]=cFC,["1"]=cBC} + local tBackSub = {["0"]=cBC,["1"]=cFC} + + for nLine=1,height do + local front={} + local back={} + for i=1,#input do + local template = (font[input[i]] and font[input[i]][2][nLine] or "") + front[i] = template:gsub("[01]",bBlit and {["0"]=nFC:sub(i,i),["1"]=nBC:sub(i,i)} or tFrontSub) + back[i] = template:gsub("[01]",bBlit and {["0"]=nBC:sub(i,i),["1"]=nFC:sub(i,i)} or tBackSub) + end + tFront[nLine] = table.concat(front) + tBack[nLine] = table.concat(back) + end + + return {tText,tFront,tBack} +end + +function bigWrite(sString) + stamp(term,makeText(1,sString,term.getTextColor(),term.getBackgroundColor()),term.getCursorPos()) + local x,y = term.getCursorPos() + term.setCursorPos(x,y-2) +end + +function bigBlit(sString,sFront,sBack) + stamp(term,makeText(1,sString,sFront,sBack,true),term.getCursorPos()) + local x,y = term.getCursorPos() + term.setCursorPos(x,y-2) +end + +function bigPrint(sString) + stamp(term,makeText(1,sString,term.getTextColor(),term.getBackgroundColor()),term.getCursorPos()) + print() +end + + +function hugeWrite(sString) + stamp(term,makeText(2,sString,term.getTextColor(),term.getBackgroundColor()),term.getCursorPos()) + local x,y = term.getCursorPos() + term.setCursorPos(x,y-8) +end + +function hugeBlit(sString,sFront,sBack) + stamp(term,makeText(2,sString,sFront,sBack,true),term.getCursorPos()) + local x,y = term.getCursorPos() + term.setCursorPos(x,y-8) +end + +function hugePrint(sString) + stamp(term,makeText(2,sString,term.getTextColor(),term.getBackgroundColor()),term.getCursorPos()) + print() +end + +function writeOn(tTerminal,nSize,sString,nX,nY) + stamp(tTerminal,makeText(nSize,sString,tTerminal.getTextColor(),tTerminal.getBackgroundColor()),nX,nY) +end + +function blitOn(tTerminal,nSize,sString,sFront,sBack,nX,nY) + stamp(tTerminal,makeText(nSize,sString,sFront,sBack,true),nX,nY) +end + +function makeBlittleText(nSize,sString,nFC,nBC) + local out = makeText(nSize,sString,nFC,nBC) + out.height=#out[1] + out.width=#out[1][1] + return out +end \ No newline at end of file