vectorfont.bmx 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. Strict
  2. 'Framework BRL.D3D7Max2D
  3. Import BRL.Retro
  4. Type bbdigit
  5. Field x1#,y1#,x2#,y2#
  6. End Type
  7. Global letterlen[128]
  8. Global letters:bbdigit[128,8]
  9. SetUpVectorFont()
  10. 'Test()
  11. Function Test()
  12. Graphics 800,600,0
  13. Local sc# = 3.0
  14. Local dir = 1
  15. While Not KeyHit(key_escape)
  16. Cls
  17. sc = sc + .1*dir
  18. If sc > 10 Or sc < 1 Then dir = -dir
  19. DrawString(" !"+Chr$(30)+"#$%&'()*+,-./",400-sc*40,200-sc*15,sc)
  20. DrawString("0123456789:;<=>?",400-sc*40,225-sc*10,sc)
  21. DrawString("@ABCDEFGHIJKLMNO",400-sc*40,250-sc*5,sc)
  22. DrawString("PQRSTUVWXYZ[\]^_",400-sc*40,275+sc*5,sc)
  23. DrawString("`abcdefghijklmno",400-sc*40,300+sc*10,sc)
  24. DrawString("pqrstuvwxyz{|}~~" ,400-sc*40,325+sc*15,sc)
  25. Flip
  26. Delay Int(16+sc*5)
  27. Wend
  28. End Function
  29. Function SetUpVectorFont()
  30. RestoreData letterdata
  31. Local np,t,s
  32. For t = 0 To 127
  33. letterlen[t] = -1
  34. Next
  35. For t = 32 To 127
  36. ReadData np 'number of lines in letter (max 6) x1,y1, x2,y2
  37. letterlen[t] = np-1
  38. For s = 0 To letterlen[t]
  39. letters[t,s] = New bbdigit
  40. ReadData letters[t,s].x1
  41. ReadData letters[t,s].y1
  42. ReadData letters[t,s].x2
  43. ReadData letters[t,s].y2
  44. Next
  45. Next
  46. End Function
  47. Function DrawDigit(d,xd,yd,sc#)
  48. Local t
  49. ' If d > 32 And d < 128
  50. ' If letterlen[d] > -1
  51. For t = 0 To letterlen[d]
  52. DrawLine letters[d,t].x1*sc+xd,letters[d,t].y1*sc+yd,letters[d,t].x2*sc+xd,letters[d,t].y2*sc+yd
  53. Next
  54. ' EndIf
  55. ' EndIf
  56. End Function
  57. Function DrawString(st$,xd:Float,yd:Float,sc#)
  58. Local s,d,ln,t
  59. ln = Len(st$)
  60. For s = 0 To ln-1
  61. d = Asc(Mid$(st$,s+1,1))
  62. ' If d > 32 And d < 128
  63. ' If letterlen[d] > -1
  64. For t = 0 To letterlen[d]
  65. DrawLine letters[d,t].x1*sc+xd+sc*5*s,letters[d,t].y1*sc+yd,letters[d,t].x2*sc+xd+sc*5*s,letters[d,t].y2*sc+yd
  66. Next
  67. ' EndIf
  68. ' EndIf
  69. Next
  70. End Function
  71. ' ************************** vector text data *******************************************
  72. ' chars 32-127
  73. ' spc!"#$%&'()*+`-,/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"
  74. #letterdata
  75. ' spc
  76. DefData 0
  77. ' !
  78. DefData 2, 2,0, 2,4, 2,5, 2,6
  79. ' ""
  80. DefData 2, 1,1, 1,3, 3,1, 3,3
  81. ' #
  82. DefData 4, 1,0, 1,6, 3,0, 3,6, 0,2, 4,2, 0,4, 4,4
  83. ' $
  84. DefData 6, 0,1, 0,3, 0,3, 4,3, 4,3, 4,5, 4,5, 0,5, 0,1, 4,1, 2,0, 2,6
  85. ' %
  86. DefData 3, 3,0, 1,6, 1,1, 1,2, 3,4, 3,5
  87. ' &
  88. DefData 6, 0,1, 4,5, 0,1, 1,0, 1,0, 2,1, 2,1, 0,4, 0,4, 2,6, 2,6, 4,4
  89. ' '
  90. DefData 1, 3,1, 2,2
  91. ' (
  92. DefData 3, 3,0, 1,2, 1,2, 1,4, 1,4, 3,6
  93. ' )
  94. DefData 3, 1,0, 3,2, 3,2, 3,4, 3,4, 1,6
  95. ' *
  96. DefData 3, 1,1, 3,5, 1,5, 3,1, 0,3, 4,3
  97. ' +
  98. DefData 2, 2,2, 2,4, 1,3, 3,3
  99. ' ,
  100. DefData 1, 2,5, 2,6
  101. ' -
  102. DefData 1, 1,3, 3,3
  103. ' .
  104. DefData 1, 2,5, 2,5
  105. ' /
  106. DefData 1, 4,0, 0,6
  107. ' 0
  108. DefData 4, 0,0, 0,6, 0,6, 4,6, 4,6, 4,0, 4,0, 0,0
  109. ' 1
  110. DefData 1, 2,0, 2,6
  111. ' 2
  112. DefData 5, 0,0, 4,0, 4,0, 4,3, 4,3, 0,3, 0,3, 0,6, 0,6, 4,6
  113. ' 3
  114. DefData 4, 0,0, 4,0, 4,0, 4,6, 4,6, 0,6, 2,3, 4,3
  115. ' 4
  116. DefData 3, 0,0, 0,3, 0,3, 4,3, 4,0, 4,6
  117. ' 5
  118. DefData 5, 0,0, 4,0, 0,0, 0,3, 0,3, 4,3, 4,3, 4,6, 0,6, 4,6
  119. ' 6
  120. DefData 4, 0,0, 0,6, 0,3, 4,3, 4,3, 4,6, 0,6, 4,6
  121. ' 7
  122. DefData 2, 0,0, 4,0, 4,0, 4,6
  123. ' 8
  124. DefData 5, 0,0, 0,6, 0,6, 4,6, 4,6, 4,0, 4,0, 0,0, 0,3, 4,3
  125. ' 9
  126. DefData 4, 0,0, 4,0, 4,0, 4,6, 0,0, 0,3, 0,3, 4,3
  127. ' :
  128. DefData 2, 2,1, 2,1, 2,5, 2,5
  129. ' ;
  130. DefData 2, 2,1, 2,1, 2,5, 2,6
  131. ' <
  132. DefData 2, 4,0, 1,3, 1,3, 4,6
  133. ' =
  134. DefData 2, 1,2, 3,2, 1,4, 3,4
  135. ' >
  136. DefData 2, 0,0, 3,3, 3,3, 0,6
  137. ' ?
  138. DefData 6, 1,1, 1,0, 1,0, 3,0, 3,0, 3,2, 3,2, 2,3, 2,3, 2,4, 2,5, 2,6
  139. ' @
  140. DefData 6, 2,2, 2,4, 2,4, 4,4, 4,4, 4,0, 4,0, 0,0, 0,0, 0,6, 0,6, 4,6
  141. ' A (65)
  142. DefData 5, 2,0, 0,2, 2,0, 4,2, 0,2, 0,6, 4,2, 4,6, 0,3, 4,3
  143. ' B
  144. DefData 6, 0,0, 0,6, 0,6, 4,6, 4,6, 4,3, 4,3, 0,3, 0,0, 3,0, 3,0, 3,3
  145. ' C
  146. DefData 3, 0,0, 0,6, 0,6, 4,6, 0,0, 4,0
  147. ' D
  148. DefData 6, 0,0, 0,6, 0,6, 2,6, 2,6, 4,4, 4,4, 4,2, 4,2, 2,0, 2,0, 0,0
  149. ' E
  150. DefData 4, 0,0, 0,6, 0,6, 4,6, 0,0, 4,0, 0,3, 2,3
  151. ' F
  152. DefData 3, 0,0, 0,6, 0,0, 4,0, 0,3, 2,3
  153. ' G
  154. DefData 5, 0,0, 0,6, 0,6, 4,6, 0,0, 4,0, 4,6, 4,3, 4,3, 2,3
  155. ' H
  156. DefData 3, 0,0, 0,6, 0,3, 4,3, 4,0, 4,6
  157. ' I
  158. DefData 3, 0,0, 4,0, 0,6, 4,6, 2,0, 2,6
  159. ' J
  160. DefData 4, 3,0, 4,0, 4,0, 4,6, 4,6, 2,6, 2,6, 1,4
  161. ' K
  162. DefData 4, 0,0, 0,6, 0,3, 2,3, 2,3, 4,0, 2,3, 4,6
  163. ' L
  164. DefData 2, 0,0, 0,6, 0,6, 4,6
  165. ' M
  166. DefData 4, 0,0, 0,6, 0,0, 2,3, 2,3, 4,0, 4,0, 4,6
  167. ' N
  168. DefData 3, 0,0, 0,6, 0,0, 4,6, 4,6, 4,0
  169. ' O
  170. DefData 4, 0,0, 0,6, 0,6, 4,6, 4,6, 4,0, 4,0, 0,0
  171. ' P
  172. DefData 4, 0,0, 0,6, 0,0, 4,0, 0,3, 4,3, 4,3, 4,0
  173. ' Q
  174. DefData 6, 0,0, 0,6, 0,6, 2,6, 2,6, 4,4, 4,4, 4,0, 4,0, 0,0, 4,6, 2,4
  175. ' R
  176. DefData 5, 0,0, 0,6, 0,0, 4,0, 0,3, 4,3, 4,0, 4,3, 2,3, 4,6
  177. ' S
  178. DefData 5, 0,0, 0,3, 0,3, 4,3, 4,3, 4,6, 4,6, 0,6, 0,0, 4,0
  179. ' T
  180. DefData 2, 0,0, 4,0, 2,0, 2,6
  181. ' U
  182. DefData 3, 0,0, 0,6, 0,6, 4,6, 4,6, 4,0
  183. ' V
  184. DefData 4, 0,0, 0,3, 0,3, 2,6, 2,6, 4,3, 4,3, 4,0
  185. ' W
  186. DefData 4, 0,0, 1,6, 1,6, 2,4, 2,4, 3,6, 3,6, 4,0
  187. ' X
  188. DefData 2, 0,0, 4,6, 0,6, 4,0
  189. ' Y
  190. DefData 3, 0,0, 2,3, 2,3, 4,0, 2,3, 2,6
  191. ' Z
  192. DefData 3, 0,0, 4,0, 4,0, 0,6, 0,6, 4,6
  193. ' [
  194. DefData 3, 3,0, 1,0, 1,0, 1,6, 1,6, 3,6
  195. ' \
  196. DefData 1, 0,0, 4,6
  197. ' ]
  198. DefData 3, 1,0, 3,0, 3,0, 3,6, 3,6, 1,6
  199. ' ^
  200. DefData 2, 1,2, 2,0, 2,0, 3,2
  201. ' _
  202. DefData 1, 0,7, 4,7
  203. ' `
  204. DefData 1, 1,1, 2,2
  205. ' a (97)
  206. DefData 5, 0,2, 4,2, 4,2, 4,6, 4,6, 0,6, 0,6, 0,3, 0,3, 4,3
  207. ' b
  208. DefData 4, 0,0, 0,6, 0,6, 4,6, 4,6, 4,2, 4,2, 0,2
  209. ' c
  210. DefData 3, 0,2, 0,6, 0,6, 4,6, 0,2, 4,2
  211. ' d
  212. DefData 4, 4,0, 4,6, 4,6, 0,6, 0,6, 0,2, 0,2, 4,2
  213. ' e
  214. DefData 5, 4,6, 0,6, 0,6, 0,2, 0,2, 4,2, 4,2, 4,3, 4,3, 1,3
  215. ' f
  216. DefData 3, 4,0, 2,0, 2,0, 2,6, 1,2, 3,2
  217. ' g
  218. DefData 5, 0,7, 4,7, 4,7, 4,2, 4,2, 0,2, 0,2, 0,6, 0,6, 4,6
  219. ' h
  220. DefData 3, 0,0, 0,6, 0,2, 4,2, 4,2, 4,6
  221. ' i
  222. DefData 2, 2,2, 2,6, 2,1, 2,1
  223. ' j
  224. DefData 4, 3,1, 3,1, 3,2, 3,7, 3,7, 0,7, 0,7, 0,5
  225. ' k
  226. DefData 3, 0,0, 0,6, 0,4, 3,2, 0,4, 3,6
  227. ' l
  228. DefData 1, 2,0, 2,6
  229. ' m
  230. DefData 4, 0,6, 0,2, 0,2, 4,2, 2,2, 2,4, 4,2, 4,6
  231. ' n
  232. DefData 4, 0,2, 0,6, 0,3, 1,2, 1,2, 4,2, 4,2, 4,6
  233. ' o
  234. DefData 4, 0,2, 0,6, 0,6, 4,6, 4,6, 4,2, 4,2, 0,2
  235. ' p
  236. DefData 4, 0,2, 0,7, 0,2, 4,2, 0,6, 4,6, 4,2, 4,6
  237. ' q
  238. DefData 4, 0,2, 0,6, 0,6, 4,6, 4,2, 4,7, 0,2, 4,2
  239. ' r
  240. DefData 3, 0,2, 0,6, 0,3, 1,2, 1,2, 4,2
  241. ' s
  242. DefData 5, 4,2, 0,2, 0,2, 0,4, 0,4, 4,4, 4,4, 4,6, 4,6, 0,6
  243. ' t
  244. DefData 2, 0,2, 4,2, 2,0, 2,6
  245. ' u
  246. DefData 3, 0,2, 0,6, 0,6, 4,6, 4,6, 4,2
  247. ' v
  248. DefData 2, 0,2, 2,6, 2,6, 4,2
  249. ' w
  250. DefData 4, 0,2, 1,6, 1,6, 2,4, 2,4, 3,6, 3,6, 4,2
  251. ' x
  252. DefData 2, 0,2, 4,6, 0,6, 4,2
  253. ' y
  254. DefData 2, 0,2, 2,5, 4,2, 1,7
  255. ' z
  256. DefData 3, 0,2, 4,2, 4,2, 0,6, 0,6, 4,6
  257. ' {
  258. DefData 4, 3,0, 2,0, 2,0, 2,6, 2,6, 3,6, 1,3, 2,3
  259. ' |
  260. DefData 1, 2,0, 2,6
  261. ' }
  262. DefData 4, 1,0, 2,0, 2,0, 2,6, 2,6, 1,6, 2,3, 3,3
  263. ' ~ (126)
  264. DefData 5, 0,3, 0,1, 0,1, 2,1, 2,1, 2,3, 2,3, 4,3, 4,3, 4,1
  265. ' <-
  266. DefData 3, 3,1, 0,3, 0,3, 3,5, 0,3, 4,3
  267. ' checkmark
  268. DefData 2, 0,4, 2,6, 2,6, 4,0
  269. ' ->
  270. DefData 3, 1,1, 4,3, 4,3, 1,5, 0,3, 4,3