_TITLE "Ascii Character Editor" 'started 2018-08-27 by bplus
'QB64 X 64 version 1.2 20180228/86 from git b301f92
'========================== Instructions: =================================
'
' Arrow keys move the highlighter around, spacebar toggles tile on/off
' or just click with mouse to do the same.
' Click buttons to either
' 1. Enter an ascii by number to edit.
' 2. Enter a character by pressing the key(s) from which the anscii number is taken.
' 3. Save a modified character.
' 4. Save all edits made to flie called "Character Set.DAT".
' Note: If want to work with more sets, just rename Character Set.DAT
' If that file isn't found, this app will start from scratch.
'
'==========================================================================
'============================== main
'see if there is a file in the works to load else start from scratch
FILE$ = "Character Set.DAT"
b$ = ""
CS(a) = b$
FILE$ = "Nothing saved yet."
'END
'sample B for starters
AN% = 66
load AN%
CX = 1: CY = 1
'ascii # to edit
LINE (500, 50)-(700, 100), BLK
, BF
IF a%
>= 0 AND a%
<= 255 THEN AN%
= a%: load AN%
'chr$ to edit
LINE (500, 110)-(700, 160), BLK
, BF
IF a%
>= 0 AND a%
<= 255 THEN AN%
= a%: load AN%
'save character edit
b$ = ""
b$ = b$ + MAP(x, y)
CS(AN%) = b$
LINE (500, 170)-(700, 220), BLK
, BF
'file character set
LINE (500, 230)-(700, 280), BLK
, BF
'mouse over edit box, toggle tiles and update cursor
tx = (mx - XOFF) \ SQ: ty = (my - YOFF) \ SQ
CX = tx: CY = ty
IF MAP
(CX
, CY
) = "1" THEN MAP
(CX
, CY
) = "0" ELSE MAP
(CX
, CY
) = "1" IF MAP
(CX
, CY
) = "1" THEN MAP
(CX
, CY
) = "0" ELSE MAP
(CX
, CY
) = "1" IF CY
- 1 >= 1 THEN CY
= CY
- 1 IF CY
+ 1 <= CH
THEN CY
= CY
+ 1 IF CX
- 1 >= 1 THEN CX
= CX
- 1 IF CX
+ 1 <= CW
THEN CX
= CX
+ 1
update
y = i \ CW + 1
MAP
(x
, y
) = MID$(CS
(asci
), i
, 1)
drwBtn 500, 50, "Load map with Ascii"
drwBtn 500, 110, "Load map with Chr$"
drwBtn 500, 170, "Save Character Edit"
drwBtn 500, 230, "File Character Set"
LINE (XOFF
- 1, YOFF
- 1)-STEP((CW
+ 2) * SQ
+ 2, (CH
+ 2) * SQ
+ 2), _RGB32(255, 255, 0), B
LINE (XOFF
+ 1, YOFF
+ 1)-STEP((CW
+ 2) * SQ
, (CH
+ 2) * SQ
), BLK
, B
LINE (XOFF
, YOFF
)-STEP((CW
+ 2) * SQ
, (CH
+ 2) * SQ
), _RGB32(255, 80, 0), BF
LINE ((x
) * SQ
+ XOFF
, (y
) * SQ
+ YOFF
)-STEP(SQ
- 2, SQ
- 2), c&
, BF
' let's see actual size!
drwChar XOFF + 16 * (i * 2), .5 * YOFF - (16 * i) / 2, AN%, i
'highlight sqr
LINE (CX
* SQ
- 1 + XOFF
, CY
* SQ
- 1 + YOFF
)-STEP(SQ
, SQ
), WHT
, B
th
= 16: tw
= 8 * LEN(s$
): gray&
= _RGB32(190, 190, 190) LINE (x
+ 1, y
+ 1)-STEP(197, 47), gray&
, BF
SUB drwChar
(x0
, y0
, ascn
, size
) 'what ever the present color is set at i = i + 1
IF MID$(CS
(ascn
), i
, 1) = "1" THEN LINE (x0
+ x
* size
, y0
+ y
* size
)-STEP(size
- 1, size
- 1), , BF