Code archives/Graphics/Dot Matrix Font
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Create different looking retro fonts by adjusting 'scale' (size of letters) 'dotSize' (size of oval or rect used to draw the letters) Characters 0-255 included (DOS extended character set) | |||||
AppTitle "Dot Matrix Font" Global sw%, sh% Const fntWide% = 8 Const fntHigh% = 12 screen% = 1 Select screen Case 1: sw% = 800: sh% = 600 Case 2: sw% = 1024: sh% = 768 Case 3: sw% = 1280: sh% = 1024 Case 4: sw% = 1600: sh% = 1200 End Select Graphics sw, sh , 32, 2 SetBuffer BackBuffer() Dim char%(255,11), pow2%(fntWide-1), colr%(fntHigh,3) ;store powers of 2 in pow2() array For i = 0 To fntWide-1 pow2%(i) = 2^i Next Restore dotMatrixData ;read in data and store in char() array For i = 0 To 252 Step 4 Read hexNum$ counter = 1 For j = 0 To 3 For k = 0 To 11 char(i+j,k) = hex2dec(Mid$(hexNum$,counter,2)) counter = counter + 2 Next Next Next Color 0,255,0 st = MilliSecs() ;play with scale and 'dotSize' for different looks (last two parameters) dotMatrix(50,30,"Dot Matrix Font", 6, 5) dotMatrix(10,100,"A scalable dot matrix font for Blitz+ and Blitz3D",2,2) tx = 10 ty = 220 For i = 0 To 224 Step 32 msg$ = "" For j = 0 To 31 msg$ = msg$ + Chr$(i+j) Next dotMatrix(tx, ty, msg$, 3, 3) ty = ty + 42 Next et = MilliSecs()-st dotMatrix(10, 570, "Elapsed Rendering Time: "+et+" milliseconds", 1,1) Flip WaitMouse() End Function hex2dec(hexNum$) Local hLen%, hx$, ms$, ls$, hi%, lo% hLen% = Len(hexNum$) If hLen% > 2 Then RuntimeError "Hex number is too big!" hx$ = "0123456789ABCDEF" hexNum$ = Upper(hexNum$) ms$ = Mid(hexNum$,1,1) ls$ = Mid(hexNum$,2,1) hi% = Instr(hx$, ms$)-1 lo% = Instr(hx$, ls$)-1 Return (hi Shl 4) + lo End Function ;============================================================= ; Function dotMatrix ;============================================================= ; x%, y% are the coordinates where message appears on screen ; msg$ is the text you wish to display ; scale% changes the size of the individual letters ; dotSize% allows different sized 'dots' to create the letters ;============================================================= Function dotMatrix(x%, y%, msg$, scale%, dotSize%) Local ox%, oy%, powMax%, h%, ltr%, j%, i%, chkBit% ox% = dotSize% Shr 1 oy% = ox% powMax% = fntWide% - 1 If msg$ <> "" Then For h% = 1 To Len(msg$) ltr% = Asc(Mid$(msg$, h% ,1)) For j% = 0 To fntHigh% - 1 For i% = 0 To powMax% chkBit% = char%(ltr%, j%) And pow2(powMax% - i%) If chkBit% > 0 Then Oval x% + i% * scale% - ox%, y% + j% * scale% - oy%, dotSize%, dotSize%, True ;Comment line above and un-comment line below for a different look ;Rect x% + i% * scale% - ox%, y% + j% * scale% - oy%, dotSize%, dotSize%, True End If Next Next x% = x% + fntWide% * scale% Next End If End Function .dotMatrixData Data "FFFFFFFFFFFFFFFFFFFFFFFF007EC381A581BD99C37E0000007EFFFFDBFFC3E7FF7E0000000044EEFEFEFE7C38100000" Data "0010387CFEFE7C381000000000183C3CFFE7E718187E000000183C7EFFFF7E18187E0000000000003C7E7E3C00000000" Data "FFFFFFFFC38181C3FFFFFFFF00003C7E664242667E3C0000FFFFC38199BDBD9981C3FFFF003E0E3A72F8CCCCCC780000" Data "003C6666663C187E18180000001F19191F181878F8700000007F637F63636367E7E6C000000018DB7EE7E77EDB180000" Data "0080C0E0F8FEF8E0C08000000002060E3EFE3E0E0602000000183C7E1818187E3C180000006666666666000066660000" Data "007FDBDBDB7B1B1B1B1B0000007E63303C66663C0CC67E0000000000000000FEFEFE000000183C7E1818187E3C187E00" Data "00183C7E1818181818180000001818181818187E3C180000000000180CFE0C18000000000000003060FE603000000000" Data "00000000C0C0C0FE000000000000002466FF6624000000000000101038387C7CFEFE00000000FEFE7C7C383810100000" Data "000000000000000000000000003078787830300030300000006666662400000000000000006C6CFE6C6C6CFE6C6C0000" Data "30307CC0C0780C0CF8303000000000C4CC183060CC8C00000070D8D870FADECCDC760000003030306000000000000000" Data "000C183060606030180C0000006030180C0C0C1830600000000000663CFF3C660000000000000018187E181800000000" Data "0000000000000000383860000000000000FE000000000000000000000000000038380000000002060C183060C0800000" Data "007CC6CEDED6F6E6C67C0000001030F03030303030FC00000078CCCC0C183060CCFC00000078CC0C0C380C0CCC780000" Data "000C1C3C6CCCFE0C0C1E000000FCC0C0C0F80C0CCC780000003860C0C0F8CCCCCC78000000FEC6C6060C183030300000" Data "0078CCCCEC78DCCCCC7800000078CCCCCC7C181830700000000000383800003838000000000000383800003838183000" Data "000C183060C06030180C0000000000007E007E0000000000006030180C060C18306000000078CC0C1830300030300000" Data "007CC6C6DEDEDEC0C07C0000003078CCCCCCFCCCCCCC000000FC6666667C666666FC0000003C66C6C0C0C0C6663C0000" Data "00F86C66666666666CF8000000FE6260647C646062FE000000FE6662647C646060F00000003C66C6C0C0CEC6663E0000" Data "00CCCCCCCCFCCCCCCCCC0000007830303030303030780000001E0C0C0C0CCCCCCC78000000E6666C6C786C6C66E60000" Data "00F060606060626666FE000000C6EEFEFED6C6C6C6C6000000C6C6E6F6FEDECEC6C6000000386CC6C6C6C6C66C380000" Data "00FC6666667C606060F0000000386CC6C6C6CEDE7C0C1E0000FC6666667C6C6666E600000078CCCCC07018CCCC780000" Data "00FCB430303030303078000000CCCCCCCCCCCCCCCC78000000CCCCCCCCCCCCCC7830000000C6C6C6C6D6D66C6C6C0000" Data "00CCCCCC783078CCCCCC000000CCCCCCCC7830303078000000FECE9818306062C6FE0000003C303030303030303C0000" Data "000080C06030180C06020000003C0C0C0C0C0C0C0C3C000010386CC6000000000000000000000000000000000000FF00" Data "30301800000000000000000000000000780C7CCCCC76000000E060607C66666666DC00000000000078CCC0C0CC780000" Data "001C0C0C7CCCCCCCCC7600000000000078CCFCC0CC78000000386C6060F8606060F000000000000076CCCCCC7C0CCC78" Data "00E060606C76666666E600000018180078181818187E0000000C0C003C0C0C0C0CCCCC7800E06060666C786C66E60000" Data "0078181818181818187E000000000000FCD6D6D6D6C6000000000000F8CCCCCCCCCC00000000000078CCCCCCCC780000" Data "00000000DC666666667C60F00000000076CCCCCCCC7C0C1E00000000EC6E766060F000000000000078CC6018CC780000" Data "00002060FC6060606C38000000000000CCCCCCCCCC76000000000000CCCCCCCC7830000000000000C6C6D6D66C6C0000" Data "00000000C66C38386CC6000000000000666666663C0C18F000000000FC8C1860C4FC0000001C303060C06030301C0000" Data "00181818180018181818000000E03030180C183030E000000073DACE000000000000000000000010386CC6C6FE000000" Data "0078CCCCC0C0C0CCCC7830F000CCCC00CCCCCCCCCC7600000C18300078CCFCC0CC7800003078CC00780C7CCCCC760000" Data "00CCCC00780C7CCCCC760000C0603000780C7CCCCC760000386C6C38F80C7CCCCC7600000000000078CCC0C0CC7830F0" Data "3078CC0078CCFCC0C07C000000CCCC0078CCFCC0C07C0000C060300078CCFCC0C07C0000006C6C0078181818187E0000" Data "10386C0078181818187E00006030180078181818187E000000CC003078CCCCFCCCCC000078CCCC7878CCCCFCCCCC0000" Data "0C1830FCC4C0F8C0C4FC000000000000FE1B7FD8D8EF0000003E78D8D8FED8D8D8DE00003078CC0078CCCCCCCC780000" Data "00CCCC0078CCCCCCCC780000C060300078CCCCCCCC7800003078CC00CCCCCCCCCC760000C0603000CCCCCCCCCC760000" Data "00666600666666663C0C18F0CC0078CCCCCCCCCCCC780000CC00CCCCCCCCCCCCCC78000000303078CCC0C0CC78303000" Data "3C66606060FC6060C0FE0000CCCCCCCC78FC30FC30300000F0888888F0889E8C8D8600000E1B18187E181818D8700000" Data "0C183000780C7CCCCC7600000C18300078181818187E00000C18300078CCCCCCCC7800000C183000CCCCCCCCCC760000" Data "0076DC00F8CCCCCCCCCC000076DC00C6E6F6DECEC6C600000078CCCC7E00FE00000000000078CCCC7800FE0000000000" Data "003030003060C0C0CC7800000000000000FCC0C0C00000000000000000FC0C0C0C0000000042C6CCD8306EC3860C1F00" Data "0063E66C78376FDBB33F0300003030003030787878300000000000003366CCCC6633000000000000CC66333366CC0000" Data "24924924924924924924924955AA55AA55AA55AA55AA55AA6DDBB66DDBB66DDBB66DDBB6181818181818181818181818" Data "1818181818F818181818181818181818F81818F8181818186666666666E66666666666660000000000FE666666666666" Data "00000000F81818F81818181866666666E60606E66666666666666666666666666666666600000000FE0606E666666666" Data "66666666E60606FE000000006666666666FE00000000000018181818F81818F8000000000000000000F8181818181818" Data "18181818181F0000000000001818181818FF0000000000000000000000FF18181818181818181818181F181818181818" Data "0000000000FF0000000000001818181818FF181818181818181818181F18181F18181818666666666667666666666666" Data "666666666760607F00000000000000007F6060676666666666666666E70000FF0000000000000000FF0000E766666666" Data "66666666676060676666666600000000FF0000FF0000000066666666E70000E76666666618181818FF0000FF00000000" Data "6666666666FF00000000000000000000FF0000FF181818180000000000FF66666666666666666666667F000000000000" Data "181818181F18181F00000000000000001F18181F1818181800000000007F6666666666666666666666E7666666666666" Data "18181818FF0000FF181818181818181818F800000000000000000000001F181818181818FFFFFFFFFFFFFFFFFFFFFFFF" Data "000000000000FFFFFFFFFFFFF0F0F0F0F0F0F0F0F0F0F0F00F0F0F0F0F0F0F0F0F0F0F0FFFFFFFFFFFFF000000000000" Data "0000000076DECCCCDE7600000078CCCCD8CCCCCCF8C0600000FCCCCCC0C0C0C0C0C0000000FE6C6C6C6C6C6C6C660000" Data "00FCC46460306064C4FC0000000000007EC8CCCCCC7800000000000066666666667B60C000000076DC181818180E0000" Data "00FC3078CCCCCC7830FC00000078CCCCCCFCCCCCCC780000007CC6C6C6C66C6C6CEE0000003C603078CCCCCCCC780000" Data "00000076DBDBDB6E000000000000067CDED6F67CC0000000003C60C0C0FCC0C0603C0000000078CCCCCCCCCCCCCC0000" Data "0000FC0000FC0000FC00000000003030FC303000FC0000000060301818306000FC0000000018306060301800FC000000" Data "00000E1B1B1818181818181818181818181818D8D87000000000303000FC003030000000000073DBCE0073DBCE000000" Data "003C6666663C000000000000000000001C1C00000000000000000000001800000000000000070404044464341C0C0000" Data "00D86C6C6C6C00000000000000780C18307C00000000000000003C3C3C3C3C3C3C3C0000000000000000000000000000" |
Comments
| ||
Nice! (BTW I removed the [code] tags from your source, as they're not needed when posting code archive entries.) |
| ||
That was COOL. |
Code Archives Forum