Author Topic: TEXT SIZING  (Read 2024 times)

0 Members and 1 Guest are viewing this topic.

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
TEXT SIZING
« on: June 05, 2011 »


Here's something from my archives.

A simple attempt at changing the size of text.
The text sample is a short story.

Use the up/down d-pad to change the size.

Code: [Select]
a$="once upon a time there was a king and queen,"
a$=a$+" and they lived happily ever after."
s=1
open window 640,512
x=20*s
y=60*s
repeat
setdrawbuf vm
vm=1-vm
setdispbuf vm
clear window
c=peek("port1")
if c=16 s=s+.01
if c=64 s=s-.01
x=20*s
y=60*s
for a=1 to len(a$)
if  mid$(a$,a,1)="a" then
line x-(18*s),y to x,y-(40*s)
line x,y-(40*s) to x+(18*s),y
line x-(13*s),y-(11*s) to x+(13*s),y-(11*s)
endif
if mid$(a$,a,1)="b" then
line x-(17*s),y to x-(17*s),y-(40*s)
line x-(17*s),y to x+(7*s),y
line x-(17*s),y-(20*s) to x+(7*s),y-(20*s)
line x-(17*s),y-(40*s) to x+(7*s),y-(40*s)
line x+(12*s),y-(35*s) to x+(12*s),y-(25*s)
line x+(12*s),y-(15*s) to x+(12*s),y-(5*s)
line x+(7*s),y-(40*s) to x+(12*s),y-(35*s)
line x+(7*s),y-(20*s) to x+(12*s),y-(25*s)
line x+(7*s),y-(20*s) to x+(12*s),y-(15*s)
line x+(7*s),y to x+(12*s),y-(5*s)
endif
if mid$(a$,a,1)="c" then
line x-(15*s),y-(5*s) to x-(15*s),y-(35*s)
line x-(10*s),y to x+(10*s),y
line x-(10*s),y-(40*s) to x+(10*s),y-(40*s)
line x-(15*s),y-(35*s) to x-(10*s),y-(40*s)
line x-(15*s),y-(5*s) to x-(10*s),y
line x+(10*s),y-(40*s) to x+(15*s),y-(35*s)
line x+(10*s),y to x+(15*s),y-(5*s)
endif
if mid$(a$,a,1)="d" then
line x-(15*s),y-(40*s) to x-(15*s),y
line x-(15*s),y-(40*s) to x+(7*s),y-(40*s)
line x-(15*s),y to x+(7*s),y
line x+(12*s),y-(35*s) to x+(12*s),y-(5*s)
line x+(7*s),y-(40*s) to x+(12*s),y-(35*s)
line x+(7*s),y to x+(12*s),y-(5*s)
endif
if mid$(a$,a,1)="e" then
line x-(17*s),y to x-(17*s),y-(40*s)
line x-(17*s),y-(40*s) to x+(15*s),y-(40*s)
line x-(17*s),y to x+(15*s),y
line x-(17*s),y-(20*s) to x+(12*s),y-(20*s)
endif
if mid$(a$,a,1)="f" then
line x-(17*s),y to x-(17*s),y-(40*s)
line x-(17*s),y-(40*s) to x+(17*s),y-(40*s)
line x-(17*s),y-(20*s) to x+(10*s),y-(20*s)
endif
if mid$(a$,a,1)="g" then
line x-(17*s),y-(35*s) to x-(17*s),y-(5*s)
line x-(12*s),y-(40*s) to x+(12*s),y-(40*s)
line x-(12*s),y to x+(12*s),y
line x+(17*s),y-(5*s) to x+(17*s),y-(20*s)
line x+(17*s),y-(35*s) to x+(17*s),y-(30*s)
line x+(17*s),y-(20*s) to x+(7*s),y-(20*s)
line x-(17*s),y-(35*s) to x-(12*s),y-(40*s)
line x-(17*s),y-(5*s) to x-(12*s),y
line x+(12*s),y-(40*s) to x+(17*s),y-(35*s)
line x+(12*s),y to x+(17*s),y-(5*s)
endif
if mid$(a$,a,1)="h" then
line x-(15*s),y to x-(15*s),y-(40*s)
line x+(15*s),y to x+(15*s),y-(40*s)
line x-(15*s),y-(20*s) to x+(15*s),y-(20*s)
endif
if mid$(a$,a,1)="i" then
line x,y to x,y-(40*s)
line x-(10*s),y to x+(10*s),y
line x-(10*s),y-(40*s) to x+(10*s),y-(40*s)
endif
if mid$(a$,a,1)="j" then
line x,y-(40*s) to x,y-(5*s)
line x-(10*s),y-(40*s) to x+(10*s),y-(40*s)
line x-(17*s),y-(5*s) to x-(12*s),y
line x,y-(5*s) to x-(5*s),y
line x-(5*s),y to x-(12*s),y
endif
if mid$(a$,a,1)="k" then
line x-(15*s),y to x-(15*s),y-(40*s)
line x+(15*s),y-(40*s) to x-(15*s),y-(15*s)
line x+(15*s),y to x-(10*s),y-(18*s)
endif
if mid$(a$,a,1)="l" then
line x-(15*s),y to x-(15*s),y-(40*s)
line x-(15*s),y to x+(10*s),y
endif
if mid$(a$,a,1)="m" then
line x-(17*s),y to x-(17*s),y-(40*s)
line x+(17*s),y to x+(17*s),y-(40*s)
line x-(17*s),y-(40*s) to x,y
line x+(17*s),y-(40*s) to x,y
endif
if mid$(a$,a,1)="n" then
line x-(15*s),y to x-(15*s),y-(40*s)
line x-(15*s),y-(40*s) to x+(15*s),y
line x+(15*s),y to x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="o" then
line x-(15*s),y-(5*s) to x-(15*s),y-(35*s)
line x+(15*s),y-(5*s) to x+(15*s),y-(35*s)
line x-(10*s),y-(40*s) to x+(10*s),y-(40*s)
line x-(10*s),y to x+(10*s),y
line x-(15*s),y-(35*s) to x-(10*s),y-(40*s)
line x-(15*s),y-(5*s) to x-(10*s),y
line x+(15*s),y-(35*s) to x+(10*s),y-(40*s)
line x+(15*s),y-(5*s) to x+(10*s),y
endif
if mid$(a$,a,1)="p" then
line x-(17*s),y to x-(17*s),y-(40*s)
line x-(17*s),y-(40*s) to x+(10*s),y-(40*s)
line x-(17*s),y-(15*s) to x+(10*s),y-(15*s)
line x+(15*s),y-(35*s) to x+(15*s),y-(20*s)
line x+(10*s),y-(40*s) to x+(15*s),y-(35*s)
line x+(10*s),y-(15*s) to x+(15*s),y-(20*s)
endif
if mid$(a$,a,1)="q" then
line x-(15*s),y-(5*s) to x-(15*s),y-(35*s)
line x+(15*s),y-(5*s) to x+(15*s),y-(35*s)
line x-(10*s),y-(40*s) to x+(10*s),y-(40*s)
line x-(10*s),y to x+(10*s),y
line x-(15*s),y-(35*s) to x-(10*s),y-(40*s)
line x-(15*s),y-(5*s) to x-(10*s),y
line x+(15*s),y-(35*s) to x+(10*s),y-(40*s)
line x+(15*s),y-(5*s) to x+(10*s),y
line x+(15*s),y to x+(5*s),y-(10*s)
endif
if mid$(a$,a,1)="r" then
line x-(17*s),y to x-(17*s),y-(40*s)
line x-(17*s),y-(40*s) to x+(10*s),y-(40*s)
line x-(17*s),y-(15*s) to x+(10*s),y-(15*s)
line x+(15*s),y-(35*s) to x+(15*s),y-(20*s)
line x+(10*s),y-(40*s) to x+(15*s),y-(35*s)
line x+(10*s),y-(15*s) to x+(15*s),y-(20*s)
line x+(17*s),y to x+(5*s),y-(15*s)
endif
if mid$(a$,a,1)="s" then
line x-(12*s),y to x+(12*s),y
line x-(12*s),y-(20*s) to x+(12*s),y-(20*s)
line x-(12*s),y-(40*s) to x+(12*s),y-(40*s)
line x-(17*s),y-(25*s) to x-(17*s),y-(35*s)
line x+(17*s),y-(5*s) to x+(17*s),y-(15*s)
line x-(17*s),y-(35*s) to x-(12*s),y-(40*s)
line x-(17*s),y-(5*s) to x-(12*s),y
line x+(17*s),y-(35*s) to x+(12*s),y-(40*s)
line x+(17*s),y-(5*s) to x+(12*s),y
line x-(17*s),y-(25*s) to x-(12*s),y-(20*s)
line x+(17*s),y-(15*s) to x+(12*s),y-(20*s)
endif
if mid$(a$,a,1)="t" then
line x,y to x,y-(40*s)
line x-(15*s),y-(40*s) to x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="u" then
line x-(15*s),y-(40*s) to x-(15*s),y-(5*s)
line x-(15*s),y-(5*s) to x-(10*s),y
line x-(10*s),y to x+(10*s),y
line x+(10*s),y to x+(15*s),y-(5*s)
line x+(15*s),y-(5*s) to x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="v" then
line x-(17*s),y-(40*s) to x,y
line x,y to x+(17*s),y-(40*s)
endif
if mid$(a$,a,1)="w" then
line x-(20*s),y-(40*s) to x-(10*s),y
line x-(10*s),y to x,y-(40*s)
line x,y-(40*s) to x+(10*s),y
line x+(10*s),y to x+(20*s),y-(40*s)
endif
if mid$(a$,a,1)="x" then
line x-(15*s),y-(40*s) to x+(15*s),y
line x-(15*s),y to x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="y" then
line x-(15*s),y-(40*s) to x,y-(15*s)
line x+(15*s),y-(40*s) to x,y-(15*s)
line x,y-(15*s) to x,y
endif
if mid$(a$,a,1)="z" then
line x-(15*s),y-(40*s) to x+(15*s),y-(40*s)
line x+(15*s),y-(40*s) to x-(15*s),y
line x-(15*s),y to x+(15*s),y
endif
if mid$(a$,a,1)="." fill circle x-(10*s),y,(2*s)
if mid$(a$,a,1)="," fill triangle x-(10*s),y-(2*s) to x-(7*s),y-(2*s) to x-11,y+(4*s)
x=x+(40*s)
if x>500 and mid$(a$,a,1)=" " then
y=y+(60*s)
x=20*s
endif
next a
until (1=0)

Unchanged since I did it.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline rain_storm

  • Here comes the Rain
  • DBF Aficionado
  • ******
  • Posts: 3072
  • Karma: 182
  • Rain never hurt nobody
    • View Profile
    • org_100h
Re: TEXT SIZING
« Reply #1 on: June 05, 2011 »
Lovely vector font. bikemadness. But all those if statements makes it more difficult than it needs to be if you want to reuse this wonderful code in other projects. I think a table driven approach, with predefined subroutines for loading and displaying characters, would suit this much better. It means less code to type for ever project that reuses this font, and it makes it much easier to update when you need to add in things like grammer, or extend the font to include the entire ascii character set:


Code: [Select]
a$="once upon a time there was a king and queen,"
a$=a$+" and they lived happily ever after."
LoadFont()
s = 1
open window 640,512
repeat
    setdrawbuf vm
    vm=1-vm
    setdispbuf vm
    clear window
    c=peek("port1")
    if c=16 s=s+.01
    if c=64 s=s-.01
    x=20*s
    y=60*s
    for a=1 to len(a$)
        PrintCharacter(mid$(a$,a,1), x, y)
        x=x+(CharacterWidth*s)
        if x>500 and mid$(a$,a,1)=" " then
            y=y+(CharacterHeight*s)
            x=CharacterWidth*s
        endif
    next a
until (1=0)





// ==================
// Binary Data Format
// ==================
//
// data NumCharacters
// data CharacterWidth
// data CharacterHeight
// for (NumCharacters) {
//     data ascii, NumLines
//     for (NumLines) {
//          data x1, y1, x2, y2
//     }
// }
sub LoadFont()
    MAX_CHARACTERS = 256
    dim Start(MAX_CHARACTERS) // holds first line number to index
    dim Count(MAX_CHARACTERS) // holds the number of lines to draw
    dim x1(1), y1(1), x2(1), y2(1) // array of lines
    read NumCharacters
    read CharacterWidth
    read CharacterHeight
    TotalLines = 1
    for ch = 1 to NumCharacters
        read Ascii$   // the character to use
        read NumLines // the number of lines to draw
        Ascii = asc(lower$(Ascii$))
        Start(Ascii) = TotalLines
        Count(Ascii) = NumLines
        for l = 1 to NumLines
            redim x1(TotalLines), y1(TotalLines)
            redim x2(TotalLines), y2(TotalLines)
            read x1(TotalLines), y1(TotalLines)
            read x2(TotalLines), y2(TotalLines)
            TotalLines = TotalLines + 1
        next l
    next ch
end sub

sub PrintCharacter(char$, x, y)
    ch = asc(mid$(char$,1,1))
    for i=Start(ch) to Start(ch)+Count(ch)-1
        line x+x1(i), y+y1(i) to x+x2(i), y+y2(i)
    next i
end sub

// ==================
// Binary Data Format
// ==================
//
// data NumCharacters
// data CharacterWidth
// data CharacterHeight
// for (NumCharacters) {
//     data ascii, NumLines
//     for (NumLines) {
//          data x1, y1, x2, y2
//     }
// }

data 26 // NumCharacters
data 40 // CharacterWidth
data 60 // CharacterHeight

data "a", 3
data -18, 00, 00,-40
data  00,-40, 18, 00
data -13,-11, 13,-11

data "b", 10
data -17, 00, -17,-40
data -17, 00,  07, 00
data -17,-20,  07,-20
data -17,-40,  07,-40
data  12,-35,  12,-25
data  12,-15,  12,-05
data  07,-40,  12,-35
data  07,-20,  12,-25
data  07,-20,  12,-15
data  07, 00,  12,-05

data "c", 7
data -15,-05, -15,-35
data -10, 00,  10, 00
data -10,-40,  10,-40
data -15,-35, -10,-40
data -15,-05, -10, 00
data  10,-40,  15,-35
data  10, 00,  15,-05

data "d", 6
data -15,-40, -15, 00
data -15,-40,  07,-40
data -15, 00,  07, 00
data  12,-35,  12,-05
data  07,-40,  12,-35
data  07, 00,  12,-05

data "e", 4
data -17, 00, -17,-40
data -17,-40,  15,-40
data -17, 00,  15, 00
data -17,-20,  12,-20

data "f", 3
data -17, 00, -17,-40
data -17,-40,  17,-40
data -17,-20,  10,-20

data "g", 10
data -17,-35, -17,-05
data -12,-40,  12,-40
data -12, 00,  12, 00
data  17,-05,  17,-20
data  17,-35,  17,-30
data  17,-20,  07,-20
data -17,-35, -12,-40
data -17,-05, -12, 00
data  12,-40,  17,-35
data  12, 00,  17,-05

data "h", 3
data -15, 00, -15,-40
data  15, 00,  15,-40
data -15,-20,  15,-20

data "i", 3
data  00, 00,  00,-40
data -10, 00,  10, 00
data -10,-40,  10,-40

data "j", 5
data  00,-40,  00,-05
data -10,-40,  10,-40
data -17,-05, -12, 00
data  00,-05, -05, 00
data -05, 00, -12, 00

data "k", 3
data -15, 00, -15,-40
data  15,-40, -15,-15
data  15, 00, -10,-18

data "l", 2
data -15, 00, -15,-40
data -15, 00,  10, 00

data "m", 4
data -17, 00, -17,-40
data  17, 00,  17,-40
data -17,-40,  00, 00
data  17,-40,  00, 00

data "n", 3
data -15, 00, -15,-40
data -15,-40,  15, 00
data  15, 00,  15,-40

data "o", 8
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00

data "p", 6
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20

data "q", 9
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00
data  15, 00,  05,-10

data "r", 7
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20
data  17, 00,  05,-15

data "s", 11
data -12, 00,  12, 00
data -12,-20,  12,-20
data -12,-40,  12,-40
data -17,-25, -17,-35
data  17,-05,  17,-15
data -17,-35, -12,-40
data -17,-05, -12, 00
data  17,-35,  12,-40
data  17,-05,  12, 00
data -17,-25, -12,-20
data  17,-15,  12,-20

data "t", 2
data  00, 00,  00,-40
data -15,-40,  15,-40

data "u", 5
data -15,-40, -15,-05
data -15,-05, -10, 00
data -10, 00,  10, 00
data  10, 00,  15,-05
data  15,-05,  15,-40

data "v", 2
data -17,-40,  00, 00
data  00, 00,  17,-40

data "w", 4
data -20,-40, -10, 00
data -10, 00,  00,-40
data  00,-40,  10, 00
data  10, 00,  20,-40

data "x", 2
data -15,-40,  15, 00
data -15, 00,  15,-40

data "y", 3
data -15,-40, 00,-15
data  15,-40, 00,-15
data  00,-15, 00, 00

data "z", 3
data -15,-40,  15,-40
data  15,-40, -15, 00
data -15, 00,  15, 00

[/font]

Challenge Trophies Won:

Offline combatking0

  • JavaScript lives!
  • Senior Member
  • DBF Aficionado
  • ********
  • Posts: 4117
  • Karma: 181
  • Retroman!
    • View Profile
    • Combat King's Barcode Battler Home
Re: TEXT SIZING
« Reply #2 on: June 05, 2011 »
This is similar to how I made the line font in Twisted.

PS2 Yabasic lacked a resizable font, so this is a good development. :D
You are our 9001st visitor.
Challenge Trophies Won:

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17294
  • Karma: 489
  • evil/good
    • View Profile
    • My Homepage
Re: TEXT SIZING
« Reply #3 on: June 05, 2011 »
I agree with Rain Storm and CK.

The font is really excellent, I think you should do something more interesting with it than just have it display text as some kind of user test - How about using it in a proper effect like a vector scroll or even a zooming text typer I have never seen one of those done in PS2 Yabasic and it would be a cool effect!

Shame you only posted this now as it could have been expanded into an entry for the Wireframe comp where I think it would have done quite well if used with the right effect.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #4 on: June 05, 2011 »
Thanks for the advice, rain/CK/shock.

I never did pursue it, back then, because I couldn't.
What could be done with the code was mind-blowing.
Even now.

but I did manage to scroll it.

Code: [Select]
a$="to the people at dbf interactive, thanks and more thanks for their tenacity"
s=1
open window 640,512
x=20*s
y=60*s+200
repeat
setdrawbuf vm
vm=1-vm
setdispbuf vm
clear window
c=peek("port1")
if c=16 s=s+.01
if c=64 s=s-.01
x=20*s
for a=1 to len(a$)
if  mid$(a$,a,1)="a" then
line m+x-(18*s),y to m+x,y-(40*s)
line m+x,y-(40*s) to m+x+(18*s),y
line m+x-(13*s),y-(11*s) to m+x+(13*s),y-(11*s)
endif
if mid$(a$,a,1)="b" then
line m+x-(17*s),y to m+x-(17*s),y-(40*s)
line m+x-(17*s),y to m+x+(7*s),y
line m+x-(17*s),y-(20*s) to m+x+(7*s),y-(20*s)
line m+x-(17*s),y-(40*s) to m+x+(7*s),y-(40*s)
line m+x+(12*s),y-(35*s) to m+x+(12*s),y-(25*s)
line m+x+(12*s),y-(15*s) to m+x+(12*s),y-(5*s)
line m+x+(7*s),y-(40*s) to m+x+(12*s),y-(35*s)
line m+x+(7*s),y-(20*s) to m+x+(12*s),y-(25*s)
line m+x+(7*s),y-(20*s) to m+x+(12*s),y-(15*s)
line m+x+(7*s),y to m+x+(12*s),y-(5*s)
endif
if mid$(a$,a,1)="c" then
line m+x-(15*s),y-(5*s) to m+x-(15*s),y-(35*s)
line m+x-(10*s),y to m+x+(10*s),y
line m+x-(10*s),y-(40*s) to m+x+(10*s),y-(40*s)
line m+x-(15*s),y-(35*s) to m+x-(10*s),y-(40*s)
line m+x-(15*s),y-(5*s) to m+x-(10*s),y
line m+x+(10*s),y-(40*s) to m+x+(15*s),y-(35*s)
line m+x+(10*s),y to m+x+(15*s),y-(5*s)
endif
if mid$(a$,a,1)="d" then
line m+x-(15*s),y-(40*s) to m+x-(15*s),y
line m+x-(15*s),y-(40*s) to m+x+(7*s),y-(40*s)
line m+x-(15*s),y to m+x+(7*s),y
line m+x+(12*s),y-(35*s) to m+x+(12*s),y-(5*s)
line m+x+(7*s),y-(40*s) to m+x+(12*s),y-(35*s)
line m+x+(7*s),y to m+x+(12*s),y-(5*s)
endif
if mid$(a$,a,1)="e" then
line m+x-(17*s),y to m+x-(17*s),y-(40*s)
line m+x-(17*s),y-(40*s) to m+x+(15*s),y-(40*s)
line m+x-(17*s),y to m+x+(15*s),y
line m+x-(17*s),y-(20*s) to m+x+(12*s),y-(20*s)
endif
if mid$(a$,a,1)="f" then
line m+x-(17*s),y to m+x-(17*s),y-(40*s)
line m+x-(17*s),y-(40*s) to m+x+(17*s),y-(40*s)
line m+x-(17*s),y-(20*s) to m+x+(10*s),y-(20*s)
endif
if mid$(a$,a,1)="g" then
line m+x-(17*s),y-(35*s) to m+x-(17*s),y-(5*s)
line m+x-(12*s),y-(40*s) to m+x+(12*s),y-(40*s)
line m+x-(12*s),y to m+x+(12*s),y
line m+x+(17*s),y-(5*s) to m+x+(17*s),y-(20*s)
line m+x+(17*s),y-(35*s) to m+x+(17*s),y-(30*s)
line m+x+(17*s),y-(20*s) to m+x+(7*s),y-(20*s)
line m+x-(17*s),y-(35*s) to m+x-(12*s),y-(40*s)
line m+x-(17*s),y-(5*s) to m+x-(12*s),y
line m+x+(12*s),y-(40*s) to m+x+(17*s),y-(35*s)
line m+x+(12*s),y to m+x+(17*s),y-(5*s)
endif
if mid$(a$,a,1)="h" then
line m+x-(15*s),y to m+x-(15*s),y-(40*s)
line m+x+(15*s),y to m+x+(15*s),y-(40*s)
line m+x-(15*s),y-(20*s) to m+x+(15*s),y-(20*s)
endif
if mid$(a$,a,1)="i" then
line m+x,y to m+x,y-(40*s)
line m+x-(10*s),y to m+x+(10*s),y
line m+x-(10*s),y-(40*s) to m+x+(10*s),y-(40*s)
endif
if mid$(a$,a,1)="j" then
line m+x,y-(40*s) to m+x,y-(5*s)
line m+x-(10*s),y-(40*s) to m+x+(10*s),y-(40*s)
line m+x-(17*s),y-(5*s) to m+x-(12*s),y
line m+x,y-(5*s) to m+x-(5*s),y
line m+x-(5*s),y to m+x-(12*s),y
endif
if mid$(a$,a,1)="k" then
line m+x-(15*s),y to m+x-(15*s),y-(40*s)
line m+x+(15*s),y-(40*s) to m+x-(15*s),y-(15*s)
line m+x+(15*s),y to m+x-(10*s),y-(18*s)
endif
if mid$(a$,a,1)="l" then
line m+x-(15*s),y to m+x-(15*s),y-(40*s)
line m+x-(15*s),y to m+x+(10*s),y
endif
if mid$(a$,a,1)="m" then
line m+x-(17*s),y to m+x-(17*s),y-(40*s)
line m+x+(17*s),y to m+x+(17*s),y-(40*s)
line m+x-(17*s),y-(40*s) to m+x,y
line m+x+(17*s),y-(40*s) to m+x,y
endif
if mid$(a$,a,1)="n" then
line m+x-(15*s),y to m+x-(15*s),y-(40*s)
line m+x-(15*s),y-(40*s) to m+x+(15*s),y
line m+x+(15*s),y to m+x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="o" then
line m+x-(15*s),y-(5*s) to m+x-(15*s),y-(35*s)
line m+x+(15*s),y-(5*s) to m+x+(15*s),y-(35*s)
line m+x-(10*s),y-(40*s) to m+x+(10*s),y-(40*s)
line m+x-(10*s),y to m+x+(10*s),y
line m+x-(15*s),y-(35*s) to m+x-(10*s),y-(40*s)
line m+x-(15*s),y-(5*s) to m+x-(10*s),y
line m+x+(15*s),y-(35*s) to m+x+(10*s),y-(40*s)
line m+x+(15*s),y-(5*s) to m+x+(10*s),y
endif
if mid$(a$,a,1)="p" then
line m+x-(17*s),y to m+x-(17*s),y-(40*s)
line m+x-(17*s),y-(40*s) to m+x+(10*s),y-(40*s)
line m+x-(17*s),y-(15*s) to m+x+(10*s),y-(15*s)
line m+x+(15*s),y-(35*s) to m+x+(15*s),y-(20*s)
line m+x+(10*s),y-(40*s) to m+x+(15*s),y-(35*s)
line m+x+(10*s),y-(15*s) to m+x+(15*s),y-(20*s)
endif
if mid$(a$,a,1)="q" then
line m+x-(15*s),y-(5*s) to m+x-(15*s),y-(35*s)
line m+x+(15*s),y-(5*s) to m+x+(15*s),y-(35*s)
line m+x-(10*s),y-(40*s) to m+x+(10*s),y-(40*s)
line m+x-(10*s),y to m+x+(10*s),y
line m+x-(15*s),y-(35*s) to m+x-(10*s),y-(40*s)
line m+x-(15*s),y-(5*s) to m+x-(10*s),y
line m+x+(15*s),y-(35*s) to m+x+(10*s),y-(40*s)
line m+x+(15*s),y-(5*s) to m+x+(10*s),y
line m+x+(15*s),y to m+x+(5*s),y-(10*s)
endif
if mid$(a$,a,1)="r" then
line m+x-(17*s),y to m+x-(17*s),y-(40*s)
line m+x-(17*s),y-(40*s) to m+x+(10*s),y-(40*s)
line m+x-(17*s),y-(15*s) to m+x+(10*s),y-(15*s)
line m+x+(15*s),y-(35*s) to m+x+(15*s),y-(20*s)
line m+x+(10*s),y-(40*s) to m+x+(15*s),y-(35*s)
line m+x+(10*s),y-(15*s) to m+x+(15*s),y-(20*s)
line m+x+(17*s),y to m+x+(5*s),y-(15*s)
endif
if mid$(a$,a,1)="s" then
line m+x-(12*s),y to m+x+(12*s),y
line m+x-(12*s),y-(20*s) to m+x+(12*s),y-(20*s)
line m+x-(12*s),y-(40*s) to m+x+(12*s),y-(40*s)
line m+x-(17*s),y-(25*s) to m+x-(17*s),y-(35*s)
line m+x+(17*s),y-(5*s) to m+x+(17*s),y-(15*s)
line m+x-(17*s),y-(35*s) to m+x-(12*s),y-(40*s)
line m+x-(17*s),y-(5*s) to m+x-(12*s),y
line m+x+(17*s),y-(35*s) to m+x+(12*s),y-(40*s)
line m+x+(17*s),y-(5*s) to m+x+(12*s),y
line m+x-(17*s),y-(25*s) to m+x-(12*s),y-(20*s)
line m+x+(17*s),y-(15*s) to m+x+(12*s),y-(20*s)
endif
if mid$(a$,a,1)="t" then
line m+x,y to m+x,y-(40*s)
line m+x-(15*s),y-(40*s) to m+x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="u" then
line m+x-(15*s),y-(40*s) to m+x-(15*s),y-(5*s)
line m+x-(15*s),y-(5*s) to m+x-(10*s),y
line m+x-(10*s),y to m+x+(10*s),y
line m+x+(10*s),y to m+x+(15*s),y-(5*s)
line m+x+(15*s),y-(5*s) to m+x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="v" then
line m+x-(17*s),y-(40*s) to m+x,y
line m+x,y to m+x+(17*s),y-(40*s)
endif
if mid$(a$,a,1)="w" then
line m+x-(20*s),y-(40*s) to m+x-(10*s),y
line m+x-(10*s),y to m+x,y-(40*s)
line m+x,y-(40*s) to m+x+(10*s),y
line m+x+(10*s),y to m+x+(20*s),y-(40*s)
endif
if mid$(a$,a,1)="m+x" then
line m+x-(15*s),y-(40*s) to m+x+(15*s),y
line m+x-(15*s),y to m+x+(15*s),y-(40*s)
endif
if mid$(a$,a,1)="y" then
line m+x-(15*s),y-(40*s) to m+x,y-(15*s)
line m+x+(15*s),y-(40*s) to m+x,y-(15*s)
line m+x,y-(15*s) to m+x,y
endif
if mid$(a$,a,1)="z" then
line m+x-(15*s),y-(40*s) to m+x+(15*s),y-(40*s)
line m+x+(15*s),y-(40*s) to m+x-(15*s),y
line m+x-(15*s),y to m+x+(15*s),y
endif
if mid$(a$,a,1)="." fill circle m+x-(10*s),y,(2*s)
if mid$(a$,a,1)="," fill triangle m+x-(10*s),y-(2*s) to m+x-(7*s),y-(2*s) to m+x-(11*s),y+(4*s)
x=x+(40*s)
next a
m=m-2
if m<-(len(a$)*40*s) m=640
until (1=0)

hanging in there.

Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17294
  • Karma: 489
  • evil/good
    • View Profile
    • My Homepage
Re: TEXT SIZING
« Reply #5 on: June 06, 2011 »
That looks cooler!

You're drawing the whole string every frame though, even the letters that are off screen there's also no reason not to adopt the data based approach that Rainstorm showed you, it's neater and much more flexible and would mean that you can use this cool font in other effects more easily (if you wanted to apply a rotation etc).

Anyway, looks good :)
Shockwave ^ Codigos
Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #6 on: June 06, 2011 »
Oh my god!

There was a lot more than what could be seen here in rain_storms data version.

I never tried to paste it.

I'd be years to understand how the data is retrieved.

It LOOKS a lot harder than the very simple stuff I've tried.

Thanks rain_storm. I'll see if I can add the scroll.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #7 on: June 06, 2011 »
Whew! I got the data version to scroll and realized the font sizing wasn't working.

I worked out where and how to fit the multiplier [*s] - I think I understand why the coding is correct.

before - line x+x1(i), y+y1(i) to x+x2(i), y+y2(i)

after - line m+x+x1(i)*s, y+y1(i)*s to m+x+x2(i)*s, y+y2(i)*s

rain_storm, you also shortened my letter scrambler. should have seen my first draft. Thanks again.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline rain_storm

  • Here comes the Rain
  • DBF Aficionado
  • ******
  • Posts: 3072
  • Karma: 182
  • Rain never hurt nobody
    • View Profile
    • org_100h
Re: TEXT SIZING
« Reply #8 on: June 06, 2011 »
oops sorry I missed the part where the scale is applied to the letters.

At first you had the data embedded inside the code, this is called hard coding and is considered bad practise. Now the data and code have been separated. The data is organised into structures and you can view each letter on its own without having to read through lines of code. You don't have all that code clouding things up. You can make changes directly to the data without touching any of the code that processes your data.

In fact the code that processes the data can now be considered a black box. You can just assume that the code will always process valid input correctly. You dont need to know how the gears within this black box operate. But your fix has introduced dependancy between the code issuing the call and the code within the black box, This is not good. What you want is a black box that operates in "Fire and Forget" mode. You should feed the black box everything that it needs to know, and no more. Also the code outside of the black box should not have access to intimate knowledge about how that black box works. Like "open window" its a black box that works. no one (except Jim) knows how it does its magic, but we're all greatful that it does it the same way, every time.

Code: [Select]
before - line x+x1(i), y+y1(i) to x+x2(i), y+y2(i)
after - line m+x+x1(i)*s, y+y1(i)*s to m+x+x2(i)*s, y+y2(i)*s

m and s are defined by your implentation. s is absolutely required. the function cannot draw the text properly if it doesn't know how big it should be so you need to make s an input to the subroutine...

Code: [Select]
sub PrintCharacter(char$, x, y, s)
    ch = asc(mid$(char$,1,1))
    for i=Start(ch) to Start(ch)+Count(ch)-1
        line x+x1(i)*s, y+y1(i)*s to x+x2(i)*s, y+y2(i)*s
    next i
end sub

Now you dont have to worry about moddifying s in you code. It wont break the function because the function now has its own copy of s.

m on the other hand is implementation specific, not all of the code that uses this function will need it to scroll, So m belongs in the code that calls the function:

Code: [Select]
PrintCharacter(mid$(a$,a,1), x+m, y, s)

The thing I'm trying to point out is that you should always make your code modular. Take the big problem apart by subdiving it into ever smaller pieces. If you solve all the small pieces, the big problem has also been solved. But for this too work you must keep each piece self contained. A small change should effect only the piece of the puzzle you are changing, it should have no effect on any of the other pieces.

The human mind (especially men) is not good at multi tasking. But when we see what needs to be done we can do anything. Dont have the information that you need to know spinkled throughout the code have it all together in one place, right next to where its being used if possible. Make it easier for yourself.

Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #9 on: June 09, 2011 »
Here's my full alphabet font, upper and lower case.
 
the height can be stretched separately. (h)

Code: [Select]
a$="abcdefghijklmnopqrstuvwxyz?A"
LoadFont()
s=1
h=2
m=640
open window 640,512
x=40*s
y=60*s+200
repeat
    setdrawbuf vm
    vm=1-vm
    setdispbuf vm
    clear window
    c=peek("port1")
    if c=16 s=s+.01
    if c=64 s=s-.01
    x=20*s
    for a=1 to len(a$)
    PrintCharacter(mid$(a$,a,1), x+m, y,s)
    x=x+(CharacterWidth*s)
'x=x+(40*s)
    next a
    m=m-2
if m<-(len(a$)*40*s) m=640
until (1=0)





// ==================
// Binary Data Format
// ==================
//
// data NumCharacters
// data CharacterWidth
// data CharacterHeight
// for (NumCharacters) {
//     data ascii, NumLines
//     for (NumLines) {
//          data x1, y1, x2, y2
//     }
// }
sub LoadFont()
    MAX_CHARACTERS = 256
    dim Start(MAX_CHARACTERS) // holds first line number to index
    dim Count(MAX_CHARACTERS) // holds the number of lines to draw
    dim x1(1), y1(1), x2(1), y2(1) // array of lines
    read NumCharacters
    read CharacterWidth
    read CharacterHeight
    TotalLines = 1
    for ch = 1 to NumCharacters
        read Ascii$   // the character to use
        read NumLines // the number of lines to draw
        Ascii = asc(Ascii$)
        Start(Ascii) = TotalLines
        Count(Ascii) = NumLines
        for l = 1 to NumLines
            redim x1(TotalLines), y1(TotalLines)
            redim x2(TotalLines), y2(TotalLines)
            read x1(TotalLines), y1(TotalLines)
            read x2(TotalLines), y2(TotalLines)
            TotalLines = TotalLines + 1
        next l
    next ch
end sub

sub PrintCharacter(char$, x, y, s)
    ch = asc(mid$(char$,1,1))
    for i=Start(ch) to Start(ch)+Count(ch)-1
        line x+x1(i)*s, y+y1(i)*s*h to x+x2(i)*s, y+y2(i)*s*h
    next i
end sub

// ==================
// Binary Data Format
// ==================
//
// data NumCharacters
// data CharacterWidth
// data CharacterHeight
// for (NumCharacters) {
//     data ascii, NumLines
//     for (NumLines) {
//          data x1, y1, x2, y2
//     }
// }

data 66// NumCharacters
data 40 // CharacterWidth
data 60 // CharacterHeight

data "A", 3
data -18, 00, 00,-40
data  00,-40, 18, 00
data -13,-11, 13,-11

data "B", 10
data -17, 00, -17,-40
data -17, 00,  07, 00
data -17,-20,  07,-20
data -17,-40,  07,-40
data  12,-35,  12,-25
data  12,-15,  12,-05
data  07,-40,  12,-35
data  07,-20,  12,-25
data  07,-20,  12,-15
data  07, 00,  12,-05

data "C", 7
data -15,-05, -15,-35
data -10, 00,  10, 00
data -10,-40,  10,-40
data -15,-35, -10,-40
data -15,-05, -10, 00
data  10,-40,  15,-35
data  10, 00,  15,-05

data "D", 6
data -15,-40, -15, 00
data -15,-40,  07,-40
data -15, 00,  07, 00
data  12,-35,  12,-05
data  07,-40,  12,-35
data  07, 00,  12,-05

data "E", 4
data -17, 00, -17,-40
data -17,-40,  15,-40
data -17, 00,  15, 00
data -17,-20,  12,-20

data "F", 3
data -17, 00, -17,-40
data -17,-40,  17,-40
data -17,-20,  10,-20

data "G", 10
data -17,-35, -17,-05
data -12,-40,  12,-40
data -12, 00,  12, 00
data  17,-05,  17,-20
data  17,-35,  17,-30
data  17,-20,  07,-20
data -17,-35, -12,-40
data -17,-05, -12, 00
data  12,-40,  17,-35
data  12, 00,  17,-05

data "H", 3
data -15, 00, -15,-40
data  15, 00,  15,-40
data -15,-20,  15,-20

data "I", 3
data  00, 00,  00,-40
data -10, 00,  10, 00
data -10,-40,  10,-40

data "J", 5
data  00,-40,  00,-05
data -10,-40,  10,-40
data -17,-05, -12, 00
data  00,-05, -05, 00
data -05, 00, -12, 00

data "K", 3
data -15, 00, -15,-40
data  15,-40, -15,-15
data  15, 00, -10,-18

data "L", 2
data -15, 00, -15,-40
data -15, 00,  10, 00

data "M", 4
data -17, 00, -17,-40
data  17, 00,  17,-40
data -17,-40,  00, 00
data  17,-40,  00, 00

data "N", 3
data -15, 00, -15,-40
data -15,-40,  15, 00
data  15, 00,  15,-40

data "O", 8
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00

data "P", 6
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20

data "Q", 9
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00
data  15, 00,  05,-10

data "R", 7
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20
data  17, 00,  05,-15

data "S", 11
data -12, 00,  12, 00
data -12,-20,  12,-20
data -12,-40,  12,-40
data -17,-25, -17,-35
data  17,-05,  17,-15
data -17,-35, -12,-40
data -17,-05, -12, 00
data  17,-35,  12,-40
data  17,-05,  12, 00
data -17,-25, -12,-20
data  17,-15,  12,-20

data "T", 2
data  00, 00,  00,-40
data -15,-40,  15,-40

data "U", 5
data -15,-40, -15,-05
data -15,-05, -10, 00
data -10, 00,  10, 00
data  10, 00,  15,-05
data  15,-05,  15,-40

data "V", 2
data -17,-40,  00, 00
data  00, 00,  17,-40

data "W", 4
data -20,-40, -10, 00
data -10, 00,  00,-40
data  00,-40,  10, 00
data  10, 00,  20,-40

data "X", 2
data -15,-40,  15, 00
data -15, 00,  15,-40

data "Y", 3
data -15,-40, 00,-15
data  15,-40, 00,-15
data  00,-15, 00, 00

data "Z", 3
data -15,-40,  15,-40
data  15,-40, -15, 00
data -15, 00,  15, 00

data "?", 12
data -07,-40, 07,-40
data -07,-40,-12,-35
data  07,-40, 12,-35
data  12,-35, 12,-25
data  12,-25, 07,-20
data  07,-20, 05,-20
data  05,-20, 00,-15
data  00,-15, 00,-07
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data ".", 4
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data "!", 5
data  00,-07, 00,-40
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data "-", 1
data -07,-20, 07,-20

data "'", 6
data -01,-40, 01,-38
data -01,-38, 01,-40
data  00,-38, 00,-38
data -01,-39, 01,-39
data -01,-38,-02,-35
data -02,-35, 01,-38

data ",", 6
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00, 00
data -01,-01, 01,-01
data -01, 00,-02, 03
data -02, 03, 01, 00

data "1", 3
data  00, 00, 00,-40
data  00,-40,-05,-35
data -05, 00, 05, 00

data "2", 9
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-22
data  15,-22, 10,-17
data  10,-17,-10,-17
data -10,-17,-15,-12
data -15,-12,-15, 00
data -15, 00, 15, 00

data  "3",11
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-25
data  15,-25, 10,-20
data  10,-20, 15,-15
data  15,-15, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data  00,-20, 10,-20

data  "4", 4
data  07, 00, 07,-40
data  07,-40,-15,-15
data -15,-15,-15,-10
data -15,-10, 17,-10

data "5", 8
data  15,-40,-15,-40
data -15,-40,-15,-22
data -15,-22, 10,-22
data  10,-22, 15,-17
data  15,-17, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "6",11
data  15,-35, 10,-40
data  10,-40,-10,-40
data -10,-40,-15,-35
data -15,-35,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-05, 15,-17
data  15,-17, 10,-22
data  10,-22,-10,-22
data -10,-22,-15,-15

data "7", 2
data -15,-40, 15,-40
data  15,-40,-02, 00

data "8",15
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-25
data  15,-25, 10,-20
data  10,-20, 15,-15
data  15,-15, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-15
data -15,-15,-10,-20
data -10,-20,-15,-25
data -15,-25,-15,-35
data -10,-20, 10,-20

data "9",11
data  15,-22,10,-17
data  10,-17,-10,-17
data -10,-17,-15,-22
data -15,-22,-15,-35
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "0", 9
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-35
data -10,-40, 10, 00

data "a",12
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 20, 00
data  15,-12, 10,-17
data  10,-17,-10,-17
data -10,-17,-15,-12
data -15,-12,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05


data "b", 10
data -10,-40,-15,-35
data -15,-35,-15,-05
data -15,-05,-20, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "c", 7
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05

data "d",10
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 20, 00

data "e", 9
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-20
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-12
data  15,-12,-15,-12

data "f", 5
data  15,-35, 10,-40
data  10,-40, 00,-40
data  00,-40,-05,-35
data -05,-35,-05, 00
data -15,-20, 05,-20

data "g",11
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-20, 15, 10
data  15, 10, 10, 15
data  10, 15,-10, 15
data -10, 15,-15, 10

data "h", 6
data -10,-40,-15,-35
data -15,-35,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "i", 5
data  00, 00, 00,-25
data -01,-32, 01,-30
data -01,-30, 01,-32
data  00,-30, 00,-32
data -01,-31, 01,-31

data "j", 9
data  00, 00, 00,-25
data  00,-25, 00, 10
data  00, 10,-05, 15
data -05, 15,-10, 15
data -10, 15,-15, 10
data -01,-32, 01,-30
data -01,-30, 01,-32
data  00,-30, 00,-32
data -01,-31, 01,-31

data "k", 4
data -10,-40,-15,-35
data -15,-35,-15, 00
data  10,-25,-15,-10
data  10, 00,-08,-14

data "l", 2
data  00,-40,-05,-35
data -05,-35,-05, 00

data "m", 9
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25,-05,-25
data -05,-25, 00,-20
data  00,-20, 00, 00
data  00,-20, 05,-25
data  05,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "n",5
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "o", 8
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-05, 15,-20

data "p", 8
data -15,-25,-15, 20
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "q", 8
data  15,-25, 15, 20
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05

data "r", 4
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20

data "s",11
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-18
data -15,-18,-10,-13
data -10,-13, 10,-13
data  10,-13, 15,-10
data  15,-10, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "t", 3
data -05,-40,-05,-05
data -05,-05, 00, 00
data -10,-25, 05,-25

data "u", 5
data -15,-25,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15, 00, 15,-25

data "v", 2
data -13,-25, 00, 00
data  00, 00, 13,-25

data "w", 4
data -15,-25,-08, 00
data -08, 00, 00,-25
data  00,-25, 08, 00
data  08, 00, 15,-25

data "x", 2
data -10,-25, 10, 00
data -10, 00, 10,-25

data "y", 8
data -15,-25,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-25, 15, 10
data  15, 10, 10, 15
data  10, 15,-10, 15
data -10, 15,-15, 10

data "z", 3
data -13,-25, 13,-25
data  13,-25,-13, 00
data -13, 00, 13, 00

The font will do for now. I'll do something with it later.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #10 on: June 10, 2011 »
With a couple more lines and a little alteration, I now have Italics.

Code: [Select]
a$="THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"
a$=a$+" the quick brown fox jumps over the lazy dog  "
LoadFont()
s=1
h=2
w=0.4
m=640
open window 640,512
x=40*s
y=60*s+200
repeat
    setdrawbuf vm
    vm=1-vm
    setdispbuf vm
    clear window
    c=peek("port1")
    if c=16 s=s+.01
    if c=64 s=s-.01
    if c=128 w=w-.01
    if c=32 w=w+.01
    if w<0 w=0
    x=20*s
    for a=1 to len(a$)
    PrintCharacter(mid$(a$,a,1), x+m, y,s)
    x=x+(CharacterWidth*s)
    next a
    m=m-2
if m<-(len(a$)*40*s) m=640
until (1=0)

    sub LoadFont()
    MAX_CHARACTERS = 256
    dim Start(MAX_CHARACTERS) // holds first line number to index
    dim Count(MAX_CHARACTERS) // holds the number of lines to draw
    dim x1(1), y1(1), x2(1), y2(1) // array of lines
    read NumCharacters
    read CharacterWidth
    read CharacterHeight
    TotalLines = 1
    for ch = 1 to NumCharacters
        read Ascii$   // the character to use
        read NumLines // the number of lines to draw
        Ascii = asc(Ascii$)
        Start(Ascii) = TotalLines
        Count(Ascii) = NumLines
        for l = 1 to NumLines
            redim x1(TotalLines), y1(TotalLines)
            redim x2(TotalLines), y2(TotalLines)
            read x1(TotalLines), y1(TotalLines)
            read x2(TotalLines), y2(TotalLines)
            TotalLines = TotalLines + 1
        next l
    next ch
end sub

sub PrintCharacter(char$, x, y, s)
    ch = asc(mid$(char$,1,1))
    for i=Start(ch) to Start(ch)+Count(ch)-1
        z=(y1(i)-y)*w
        z1=(y2(i)-y)*w
        line x+x1(i)*s-z, y+y1(i)*s*h to x+x2(i)*s-z1, y+y2(i)*s*h
'        line x+x1(i)*s, y+y1(i)*s*h to x+x2(i)*s, y+y2(i)*s*h
    next i
end sub

data 68// NumCharacters
data 40 // CharacterWidth
data 60 // CharacterHeight

data "A", 3
data -18, 00, 00,-40
data  00,-40, 18, 00
data -13,-11, 13,-11

data "B", 10
data -17, 00, -17,-40
data -17, 00,  07, 00
data -17,-20,  07,-20
data -17,-40,  07,-40
data  12,-35,  12,-25
data  12,-15,  12,-05
data  07,-40,  12,-35
data  07,-20,  12,-25
data  07,-20,  12,-15
data  07, 00,  12,-05

data "C", 7
data -15,-05, -15,-35
data -10, 00,  10, 00
data -10,-40,  10,-40
data -15,-35, -10,-40
data -15,-05, -10, 00
data  10,-40,  15,-35
data  10, 00,  15,-05

data "D", 6
data -15,-40, -15, 00
data -15,-40,  07,-40
data -15, 00,  07, 00
data  12,-35,  12,-05
data  07,-40,  12,-35
data  07, 00,  12,-05

data "E", 4
data -17, 00, -17,-40
data -17,-40,  15,-40
data -17, 00,  15, 00
data -17,-20,  12,-20

data "F", 3
data -17, 00, -17,-40
data -17,-40,  17,-40
data -17,-20,  10,-20

data "G", 10
data -17,-35, -17,-05
data -12,-40,  12,-40
data -12, 00,  12, 00
data  17,-05,  17,-20
data  17,-35,  17,-30
data  17,-20,  07,-20
data -17,-35, -12,-40
data -17,-05, -12, 00
data  12,-40,  17,-35
data  12, 00,  17,-05

data "H", 3
data -15, 00, -15,-40
data  15, 00,  15,-40
data -15,-20,  15,-20

data "I", 3
data  00, 00,  00,-40
data -10, 00,  10, 00
data -10,-40,  10,-40

data "J", 5
data  00,-40,  00,-05
data -10,-40,  10,-40
data -17,-05, -12, 00
data  00,-05, -05, 00
data -05, 00, -12, 00

data "K", 3
data -15, 00, -15,-40
data  15,-40, -15,-15
data  15, 00, -10,-18

data "L", 2
data -15, 00, -15,-40
data -15, 00,  10, 00

data "M", 4
data -17, 00, -17,-40
data  17, 00,  17,-40
data -17,-40,  00, 00
data  17,-40,  00, 00

data "N", 3
data -15, 00, -15,-40
data -15,-40,  15, 00
data  15, 00,  15,-40

data "O", 8
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00

data "P", 6
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20

data "Q", 9
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00
data  15, 00,  05,-10

data "R", 7
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20
data  17, 00,  05,-15

data "S", 11
data -12, 00,  12, 00
data -12,-20,  12,-20
data -12,-40,  12,-40
data -17,-25, -17,-35
data  17,-05,  17,-15
data -17,-35, -12,-40
data -17,-05, -12, 00
data  17,-35,  12,-40
data  17,-05,  12, 00
data -17,-25, -12,-20
data  17,-15,  12,-20

data "T", 2
data  00, 00,  00,-40
data -15,-40,  15,-40

data "U", 5
data -15,-40, -15,-05
data -15,-05, -10, 00
data -10, 00,  10, 00
data  10, 00,  15,-05
data  15,-05,  15,-40

data "V", 2
data -17,-40,  00, 00
data  00, 00,  17,-40

data "W", 4
data -20,-40, -10, 00
data -10, 00,  00,-40
data  00,-40,  10, 00
data  10, 00,  20,-40

data "X", 2
data -15,-40,  15, 00
data -15, 00,  15,-40

data "Y", 3
data -15,-40, 00,-15
data  15,-40, 00,-15
data  00,-15, 00, 00

data "Z", 3
data -15,-40,  15,-40
data  15,-40, -15, 00
data -15, 00,  15, 00

data "?", 12
data -07,-40, 07,-40
data -07,-40,-12,-35
data  07,-40, 12,-35
data  12,-35, 12,-25
data  12,-25, 07,-20
data  07,-20, 05,-20
data  05,-20, 00,-15
data  00,-15, 00,-07
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data ".", 4
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data "!", 5
data  00,-07, 00,-40
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data "-", 1
data -07,-20, 07,-20

data "'", 6
data -01,-40, 01,-38
data -01,-38, 01,-40
data  00,-38, 00,-38
data -01,-39, 01,-39
data -01,-38,-02,-35
data -02,-35, 01,-38

data ",", 6
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00, 00
data -01,-01, 01,-01
data -01, 00,-02, 03
data -02, 03, 01, 00

data "1", 3
data  00, 00, 00,-40
data  00,-40,-05,-35
data -05, 00, 05, 00

data "2", 9
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-22
data  15,-22, 10,-17
data  10,-17,-10,-17
data -10,-17,-15,-12
data -15,-12,-15, 00
data -15, 00, 15, 00

data  "3",11
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-25
data  15,-25, 10,-20
data  10,-20, 15,-15
data  15,-15, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data  00,-20, 10,-20

data  "4", 4
data  07, 00, 07,-40
data  07,-40,-15,-15
data -15,-15,-15,-10
data -15,-10, 17,-10

data "5", 8
data  15,-40,-15,-40
data -15,-40,-15,-22
data -15,-22, 10,-22
data  10,-22, 15,-17
data  15,-17, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "6",11
data  15,-35, 10,-40
data  10,-40,-10,-40
data -10,-40,-15,-35
data -15,-35,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-05, 15,-17
data  15,-17, 10,-22
data  10,-22,-10,-22
data -10,-22,-15,-15

data "7", 2
data -15,-40, 15,-40
data  15,-40,-02, 00

data "8",15
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-25
data  15,-25, 10,-20
data  10,-20, 15,-15
data  15,-15, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-15
data -15,-15,-10,-20
data -10,-20,-15,-25
data -15,-25,-15,-35
data -10,-20, 10,-20

data "9",11
data  15,-22,10,-17
data  10,-17,-10,-17
data -10,-17,-15,-22
data -15,-22,-15,-35
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "0", 9
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-35
data -10,-40, 10, 00

data "a",12
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 20, 00
data  15,-12, 10,-17
data  10,-17,-10,-17
data -10,-17,-15,-12
data -15,-12,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05


data "b", 10
data -10,-40,-15,-35
data -15,-35,-15,-05
data -15,-05,-20, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "c", 7
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05

data "d",10
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 20, 00

data "e", 9
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-20
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-12
data  15,-12,-15,-12

data "f", 5
data  15,-35, 10,-40
data  10,-40, 00,-40
data  00,-40,-05,-35
data -05,-35,-05, 00
data -15,-20, 05,-20

data "g",11
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-20, 15, 10
data  15, 10, 10, 15
data  10, 15,-10, 15
data -10, 15,-15, 10

data "h", 6
data -10,-40,-15,-35
data -15,-35,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "i", 5
data  00, 00, 00,-25
data -01,-32, 01,-30
data -01,-30, 01,-32
data  00,-30, 00,-32
data -01,-31, 01,-31

data "j", 9
data  00, 00, 00,-25
data  00,-25, 00, 10
data  00, 10,-05, 15
data -05, 15,-10, 15
data -10, 15,-15, 10
data -01,-32, 01,-30
data -01,-30, 01,-32
data  00,-30, 00,-32
data -01,-31, 01,-31

data "k", 4
data -10,-40,-15,-35
data -15,-35,-15, 00
data  10,-25,-15,-10
data  10, 00,-08,-14

data "l", 2
data  00,-40,-05,-35
data -05,-35,-05, 00

data "m", 9
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25,-05,-25
data -05,-25, 00,-20
data  00,-20, 00, 00
data  00,-20, 05,-25
data  05,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "n",5
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "o", 8
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-05, 15,-20

data "p", 8
data -15,-25,-15, 20
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "q", 8
data  15,-25, 15, 20
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05

data "r", 4
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20

data "s",11
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-18
data -15,-18,-10,-13
data -10,-13, 10,-13
data  10,-13, 15,-10
data  15,-10, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "t", 3
data -05,-40,-05,-05
data -05,-05, 00, 00
data -10,-25, 05,-25

data "u", 5
data -15,-25,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15, 00, 15,-25

data "v", 2
data -13,-25, 00, 00
data  00, 00, 13,-25

data "w", 4
data -15,-25,-08, 00
data -08, 00, 00,-25
data  00,-25, 08, 00
data  08, 00, 15,-25

data "x", 2
data -10,-25, 10, 00
data -10, 00, 10,-25

data "y", 8
data -15,-25,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-25, 15, 10
data  15, 10, 10, 15
data  10, 15,-10, 15
data -10, 15,-15, 10

data "z", 3
data -13,-25, 13,-25
data  13,-25,-13, 00
data -13, 00, 13, 00

Next , the sine wave thingy.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17294
  • Karma: 489
  • evil/good
    • View Profile
    • My Homepage
Re: TEXT SIZING
« Reply #11 on: June 10, 2011 »
Looks cool!

It will look good sined :)
Shockwave ^ Codigos
Challenge Trophies Won:

Offline rain_storm

  • Here comes the Rain
  • DBF Aficionado
  • ******
  • Posts: 3072
  • Karma: 182
  • Rain never hurt nobody
    • View Profile
    • org_100h
Re: TEXT SIZING
« Reply #12 on: June 10, 2011 »
Real nice, its great that you added in the lowercase characters.

Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #13 on: June 10, 2011 »
Thanks. That was fun.

I also did this.

Code: [Select]
data "^",28
data -04,-35, 04,-35
data  04,-35, 11,-31
data  11,-31, 15,-24
data  15,-24, 15,-16
data  15,-16, 11,-09
data  11,-09, 04,-05
data  04,-05,-04,-05
data -04,-05,-11,-09
data -11,-09,-15,-16
data -15,-16,-15,-24
data -15,-24,-11,-31
data -11,-31,-04,-35

data -06,-26,-04,-26
data -07,-25,-03,-25
data -08,-24,-02,-24
data -08,-23,-02,-23
data -07,-22,-03,-22
data -06,-21,-04,-21

data  04,-26, 06,-26
data  03,-25, 07,-25
data  02,-24, 08,-24
data  02,-23, 08,-23
data  03,-22, 07,-22
data  04,-21, 06,-21

data -09,-17,-06,-14
data -06,-14, 00,-12
data  00,-12, 06,-14
data  06,-14, 09,-17

It makes a smiley face.

I tried "smiley" instead of "^" and the 's' was replaced with the characters of 'smiley'.
Is it possible to have the characters disappear?
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline rain_storm

  • Here comes the Rain
  • DBF Aficionado
  • ******
  • Posts: 3072
  • Karma: 182
  • Rain never hurt nobody
    • View Profile
    • org_100h
Re: TEXT SIZING
« Reply #14 on: June 11, 2011 »
I tried "smiley" instead of "^" and the 's' was replaced with the characters of 'smiley'.
Is it possible to have the characters disappear?

I'm not sure whether you mean disappear from the screen or disappear from memory. If you mean from memory then the answer is yes and no. The drawing lines can become inaccessible. But they remain in memory.

Code: [Select]
dim x1(1), y1(1), x2(1), y2(1) // array of line drawing co-ordinates
^The four arrays that hold the drawing line co-ordinates. The co-ordinates for all drawing lines are kept together in a single array. These arrays are grown to accomodate new lines as we find them. There's a variable "TotalLines" that keeps a running count of all drawing lines defined so far. TotalLines is used to resize these arrays just before reading the values of the co-ordinates into the newly added array elements...
Code: [Select]
redim x1(TotalLines), y1(TotalLines)
redim x2(TotalLines), y2(TotalLines)
read x1(TotalLines), y1(TotalLines)
read x2(TotalLines), y2(TotalLines)
TotalLines = TotalLines + 1
We access these co-ordinates be taking note of the value of TotalLines before we grow the array. The value of TotalLines becomes the current index so we know exactly where our new lines will be stored:
Code: [Select]
read Ascii$ // the character to use
read NumLines // the number of lines to draw
Ascii = asc(mid$(Ascii$, 1, 1))
Start(Ascii) = TotalLines
Count(Ascii) = NumLines
Here we use the string character as an index to store the current value of TotalLines and the number of drawing lines used for the string character. If you reassign new values to a string character the co-ordinates that were previously assigned to that character will become inaccessible. The old co-ordinates remain in memory.

Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #15 on: June 11, 2011 »
Sorry. I guess I meant, I wanted to activate my smiley with the word 'smiley'
and have just the smiley face come up.
Instead of the smiley face and the letters 'miley' come up after it.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline rain_storm

  • Here comes the Rain
  • DBF Aficionado
  • ******
  • Posts: 3072
  • Karma: 182
  • Rain never hurt nobody
    • View Profile
    • org_100h
Re: TEXT SIZING
« Reply #16 on: June 11, 2011 »
The ascii character 1 is a clear smiley ascii character 2 is a filled smiley. Change the first line of the smiley character data to this
Code: [Select]
data 1, 28 // was "^" now its asc(smiley)

To use this character you need to embed the smiley character in the string
Code: [Select]
a$ = "The quick brown fox " + chr$(1) + " jumps over the lazy dog"

Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #17 on: June 15, 2011 »
And now, 'SINED'.

Code: [Select]
a$="^^THE^QUICK^BROWN^FOX^JUMPS^OVER^THE^LAZY^DOG"
a$=a$+"^^the^quick^brown^fox^jumps^over^the^lazy^dog^^"
LoadFont()
s=.45
h=2.5
w=0
m=640
ang=pi/180
open window 640,512
repeat
    setdrawbuf vm
    vm=1-vm
    setdispbuf vm
    clear window
    c=peek("port1")
    if c=16 s=s+.01
    if c=64 s=s-.01
    if c=128 w=w-.01
    if c=32 w=w+.01
    if w<0 w=0
    x=40*s
    for a=1 to len(a$)
    if x+m+(CharacterWidth*s)>50 and x+m+(CharacterWidth*s)<640 then
    PrintCharacter(mid$(a$,a,1), x+m, y,s)
    endif
    if m<-(len(a$)*40*s) m=640
    x=x+(CharacterWidth*s)
    next a
    m=m-1
until (1=0)

    sub LoadFont()
    MAX_CHARACTERS = 256
    dim Start(MAX_CHARACTERS) // holds first line number to index
    dim Count(MAX_CHARACTERS) // holds the number of lines to draw
    dim x1(1), y1(1), x2(1), y2(1) // array of lines
    read NumCharacters
    read CharacterWidth
    read CharacterHeight
    TotalLines = 1
    for ch = 1 to NumCharacters
        read Ascii$   // the character to use
        read NumLines // the number of lines to draw
        Ascii = asc(Ascii$)
        Start(Ascii) = TotalLines
        Count(Ascii) = NumLines
        for l = 1 to NumLines
            redim x1(TotalLines), y1(TotalLines)
            redim x2(TotalLines), y2(TotalLines)
            read x1(TotalLines), y1(TotalLines)
            read x2(TotalLines), y2(TotalLines)
            TotalLines = TotalLines + 1
        next l
    next ch
end sub

sub PrintCharacter(char$, x, y, s)
    ch = asc(mid$(char$,1,1))
    for i=Start(ch) to Start(ch)+Count(ch)-1
        z=(y1(i)-y)*w
        z1=(y2(i)-y)*w
        y=sin((x+m)*ang)*200*s+300
        line x+x1(i)*s-z, y+y1(i)*s*h to x+x2(i)*s-z1, y+y2(i)*s*h
    next i
end sub

data 69// NumCharacters
data 40 // CharacterWidth
data 60 // CharacterHeight

data "A", 3
data -18, 00, 00,-40
data  00,-40, 18, 00
data -13,-11, 13,-11

data "B", 10
data -17, 00, -17,-40
data -17, 00,  07, 00
data -17,-20,  07,-20
data -17,-40,  07,-40
data  12,-35,  12,-25
data  12,-15,  12,-05
data  07,-40,  12,-35
data  07,-20,  12,-25
data  07,-20,  12,-15
data  07, 00,  12,-05

data "C", 7
data -15,-05, -15,-35
data -10, 00,  10, 00
data -10,-40,  10,-40
data -15,-35, -10,-40
data -15,-05, -10, 00
data  10,-40,  15,-35
data  10, 00,  15,-05

data "D", 6
data -15,-40, -15, 00
data -15,-40,  07,-40
data -15, 00,  07, 00
data  12,-35,  12,-05
data  07,-40,  12,-35
data  07, 00,  12,-05

data "E", 4
data -17, 00, -17,-40
data -17,-40,  15,-40
data -17, 00,  15, 00
data -17,-20,  12,-20

data "F", 3
data -17, 00, -17,-40
data -17,-40,  17,-40
data -17,-20,  10,-20

data "G", 10
data -17,-35, -17,-05
data -12,-40,  12,-40
data -12, 00,  12, 00
data  17,-05,  17,-20
data  17,-35,  17,-30
data  17,-20,  07,-20
data -17,-35, -12,-40
data -17,-05, -12, 00
data  12,-40,  17,-35
data  12, 00,  17,-05

data "H", 3
data -15, 00, -15,-40
data  15, 00,  15,-40
data -15,-20,  15,-20

data "I", 3
data  00, 00,  00,-40
data -10, 00,  10, 00
data -10,-40,  10,-40

data "J", 5
data  00,-40,  00,-05
data -10,-40,  10,-40
data -17,-05, -12, 00
data  00,-05, -05, 00
data -05, 00, -12, 00

data "K", 3
data -15, 00, -15,-40
data  15,-40, -15,-15
data  15, 00, -10,-18

data "L", 2
data -15, 00, -15,-40
data -15, 00,  10, 00

data "M", 4
data -17, 00, -17,-40
data  17, 00,  17,-40
data -17,-40,  00, 00
data  17,-40,  00, 00

data "N", 3
data -15, 00, -15,-40
data -15,-40,  15, 00
data  15, 00,  15,-40

data "O", 8
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00

data "P", 6
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20

data "Q", 9
data -15,-05, -15,-35
data  15,-05,  15,-35
data -10,-40,  10,-40
data -10, 00,  10, 00
data -15,-35, -10,-40
data -15,-05, -10, 00
data  15,-35,  10,-40
data  15,-05,  10, 00
data  15, 00,  05,-10

data "R", 7
data -17, 00, -17,-40
data -17,-40,  10,-40
data -17,-15,  10,-15
data  15,-35,  15,-20
data  10,-40,  15,-35
data  10,-15,  15,-20
data  17, 00,  05,-15

data "S", 11
data -12, 00,  12, 00
data -12,-20,  12,-20
data -12,-40,  12,-40
data -17,-25, -17,-35
data  17,-05,  17,-15
data -17,-35, -12,-40
data -17,-05, -12, 00
data  17,-35,  12,-40
data  17,-05,  12, 00
data -17,-25, -12,-20
data  17,-15,  12,-20

data "T", 2
data  00, 00,  00,-40
data -15,-40,  15,-40

data "U", 5
data -15,-05, -15,-40
data -15,-05, -10, 00
data -10, 00,  10, 00
data  10, 00,  15,-05
data  15,-05,  15,-40

data "V", 2
data -17,-40,  00, 00
data  00, 00,  17,-40

data "W", 4
data -20,-40, -10, 00
data -10, 00,  00,-40
data  00,-40,  10, 00
data  10, 00,  20,-40

data "X", 2
data -15,-40,  15, 00
data -15, 00,  15,-40

data "Y", 3
data -15,-40, 00,-15
data  15,-40, 00,-15
data  00,-15, 00, 00

data "Z", 3
data -15,-40,  15,-40
data  15,-40, -15, 00
data -15, 00,  15, 00

data "?", 12
data -07,-40, 07,-40
data -07,-40,-12,-35
data  07,-40, 12,-35
data  12,-35, 12,-25
data  12,-25, 07,-20
data  07,-20, 05,-20
data  05,-20, 00,-15
data  00,-15, 00,-07
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data ".", 4
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data "!", 5
data  00,-07, 00,-40
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00,-02
data -01,-01, 01,-01

data "-", 1
data -07,-20, 07,-20

data "'", 6
data -01,-40, 01,-38
data -01,-38, 01,-40
data  00,-38, 00,-38
data -01,-39, 01,-39
data -01,-38,-02,-35
data -02,-35, 01,-38

data ",", 6
data -01,-02, 01, 00
data -01, 00, 01,-02
data  00, 00, 00, 00
data -01,-01, 01,-01
data -01, 00,-02, 03
data -02, 03, 01, 00

data "1", 3
data  00, 00, 00,-40
data  00,-40,-05,-35
data -05, 00, 05, 00

data "2", 9
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-22
data  15,-22, 10,-17
data  10,-17,-10,-17
data -10,-17,-15,-12
data -15,-12,-15, 00
data -15, 00, 15, 00

data  "3",11
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-25
data  15,-25, 10,-20
data  10,-20, 15,-15
data  15,-15, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data  00,-20, 10,-20

data  "4", 4
data  07, 00, 07,-40
data  07,-40,-15,-15
data -15,-15,-15,-10
data -15,-10, 17,-10

data "5", 8
data  15,-40,-15,-40
data -15,-40,-15,-22
data -15,-22, 10,-22
data  10,-22, 15,-17
data  15,-17, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "6",11
data  15,-35, 10,-40
data  10,-40,-10,-40
data -10,-40,-15,-35
data -15,-35,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-05, 15,-17
data  15,-17, 10,-22
data  10,-22,-10,-22
data -10,-22,-15,-15

data "7", 2
data -15,-40, 15,-40
data  15,-40,-02, 00

data "8",15
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-25
data  15,-25, 10,-20
data  10,-20, 15,-15
data  15,-15, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-15
data -15,-15,-10,-20
data -10,-20,-15,-25
data -15,-25,-15,-35
data -10,-20, 10,-20

data "9",11
data  15,-22,10,-17
data  10,-17,-10,-17
data -10,-17,-15,-22
data -15,-22,-15,-35
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "0", 9
data -15,-35,-10,-40
data -10,-40, 10,-40
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-35
data -10,-40, 10, 00

data "a",12
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 20, 00
data  15,-12, 10,-17
data  10,-17,-10,-17
data -10,-17,-15,-12
data -15,-12,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05


data "b", 10
data -10,-40,-15,-35
data -15,-35,-15,-05
data -15,-05,-20, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "c", 7
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05

data "d",10
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  10,-40, 15,-35
data  15,-35, 15,-05
data  15,-05, 20, 00

data "e", 9
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05
data -15,-05,-15,-20
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-12
data  15,-12,-15,-12

data "f", 5
data  15,-35, 10,-40
data  10,-40, 00,-40
data  00,-40,-05,-35
data -05,-35,-05, 00
data -15,-20, 05,-20

data "g",11
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-20, 15, 10
data  15, 10, 10, 15
data  10, 15,-10, 15
data -10, 15,-15, 10

data "h", 6
data -10,-40,-15,-35
data -15,-35,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "i", 5
data  00, 00, 00,-25
data -01,-32, 01,-30
data -01,-30, 01,-32
data  00,-30, 00,-32
data -01,-31, 01,-31

data "j", 9
data  00, 00, 00,-25
data  00,-25, 00, 10
data  00, 10,-05, 15
data -05, 15,-10, 15
data -10, 15,-15, 10
data -01,-32, 01,-30
data -01,-30, 01,-32
data  00,-30, 00,-32
data -01,-31, 01,-31

data "k", 4
data -10,-40,-15,-35
data -15,-35,-15, 00
data  10,-25,-15,-10
data  10, 00,-08,-14

data "l", 2
data  00,-40,-05,-35
data -05,-35,-05, 00

data "m", 9
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25,-05,-25
data -05,-25, 00,-20
data  00,-20, 00, 00
data  00,-20, 05,-25
data  05,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "n",5
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15, 00

data "o", 8
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-05, 15,-20

data "p", 8
data -15,-25,-15, 20
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20
data  15,-20, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "q", 8
data  15,-25, 15, 20
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05

data "r", 4
data -15,-25,-15, 00
data -15,-20,-10,-25
data -10,-25, 10,-25
data  10,-25, 15,-20

data "s",11
data  15,-20, 10,-25
data  10,-25,-10,-25
data -10,-25,-15,-20
data -15,-20,-15,-18
data -15,-18,-10,-13
data -10,-13, 10,-13
data  10,-13, 15,-10
data  15,-10, 15,-05
data  15,-05, 10, 00
data  10, 00,-10, 00
data -10, 00,-15,-05

data "t", 3
data -05,-40,-05,-05
data -05,-05, 00, 00
data -10,-25, 05,-25

data "u", 5
data -15,-25,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15, 00, 15,-25

data "v", 2
data -13,-25, 00, 00
data  00, 00, 13,-25

data "w", 4
data -15,-25,-08, 00
data -08, 00, 00,-25
data  00,-25, 08, 00
data  08, 00, 15,-25

data "x", 2
data -10,-25, 10, 00
data -10, 00, 10,-25

data "y", 8
data -15,-25,-15,-05
data -15,-05,-10, 00
data -10, 00, 10, 00
data  10, 00, 15,-05
data  15,-25, 15, 10
data  15, 10, 10, 15
data  10, 15,-10, 15
data -10, 15,-15, 10

data "z", 3
data -13,-25, 13,-25
data  13,-25,-13, 00
data -13, 00, 13, 00

data "^",28
data -04,-35, 04,-35
data  04,-35, 11,-31
data  11,-31, 15,-24
data  15,-24, 15,-16
data  15,-16, 11,-09
data  11,-09, 04,-05
data  04,-05,-04,-05
data -04,-05,-11,-09
data -11,-09,-15,-16
data -15,-16,-15,-24
data -15,-24,-11,-31
data -11,-31,-04,-35

data -06,-26,-04,-26
data -07,-25,-03,-25
data -08,-24,-02,-24
data -08,-23,-02,-23
data -07,-22,-03,-22
data -06,-21,-04,-21

data  04,-26, 06,-26
data  03,-25, 07,-25
data  02,-24, 08,-24
data  02,-23, 08,-23
data  03,-22, 07,-22
data  04,-21, 06,-21

data -09,-17,-06,-14
data -06,-14, 00,-12
data  00,-12, 06,-14
data  06,-14, 09,-17

« Last Edit: June 15, 2011 by bikemadness »
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17294
  • Karma: 489
  • evil/good
    • View Profile
    • My Homepage
Re: TEXT SIZING
« Reply #18 on: June 15, 2011 »
How cool is that! :)

Well done.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline bikemadness

  • Atari ST
  • ***
  • Posts: 230
  • Karma: 24
  • Hard players don't go home.
    • View Profile
Re: TEXT SIZING
« Reply #19 on: June 15, 2011 »
Thanks, everyone. That's other Yabasic combination ticked off.
Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.