SetErrorMode(2)
SetWindowTitle( "Custom BitmapFont" )
SetWindowSize( 480, 320, 0 )
SetWindowAllowResize( 1 )
SetVirtualResolution( 480, 320 )
SetOrientationAllowed( 0, 0, 1, 1 )
SetSyncRate( 30, 0 )
SetScissor( 0,0,0,0 )
UseNewDefaultFonts( 1 )
myText as text
myText = _CreateText("AppGameKit")
_SetTextFont(myText, "font.png")
_SetTextSize(myText,20)
_SetTextColor(myText, 158, 67, 228, 255)
_SetTextSpacing(myText, 2)
_SetTextX(myText, 200)
_SetTextY(myText, 50)
_SetTextAlignment(myText,1)
_SetTextString(myText, "Hello, Everard!")
Spr = CreateSprite(0)
SetSpriteSize(Spr, 200, 200)
_SetTextDepth(myText, GetSpriteDepth(Spr)-1)
do
Sync()
loop
//==========================================================
type font_type
id as integer
filename as string
endtype
global font as font_type[]
type text
text as integer[]
glyph as integer[]
source as string
count as integer
width as float
height as float
spacing as float
aligment as integer
visible as integer
size as float
x as float
y as float
r as integer
g as integer
b as integer
a as integer
font as integer
depth as integer
endtype
//==========================================================
function _LoadFont( _file as string)
result = -1
if font.length <> -1
for i=0 to font.length
if font[i].filename = _file
result = font[i].id
endif
next i
endif
if result = -1
font.length = font.length+1
font[font.length].id = LoadImage(_file)
font[font.length].filename = _file
result = font[font.length].id
endif
endfunction result
//==========================================================
function _CreateText( _label as string )
obj as text
obj.source = _label
obj.count = Len(_label)
//default
obj.spacing = 3
obj.aligment = 0
obj.size = 30
obj.x = 0
obj.y = 0
obj.visible = 1
obj.depth=10
endfunction obj
//==========================================================
function _SetTextFont( _id ref as text, _font as string)
_id.font = _LoadFont(_font)
for i=1 to _id.count
_char$ = str(Asc(Mid(_id.source,i,1)))
_id.glyph.insert(LoadSubImage(_id.font,_char$))
_id.text.insert(CreateSprite(_id.glyph[_id.glyph.length]))
if i>1
SetSpriteX(_id.text[_id.text.length], GetSpriteX(_id.text[_id.text.length-1])+GetSpriteWidth(_id.text[_id.text.length-1]))
endif
next i
//---------------------------------------------
//setup
_SetTextSpacing(_id, _id.spacing)
_SetTextAlignment(_id, _id.aligment)
_SetTextSize(_id, _id.size )
_SetTextX(_id, _id.x )
_SetTextY(_id, _id.y )
_SetTextVisible(_id, _id.visible )
//---------------------------------------------
endfunction
//==========================================================
function _SetTextColor(_id ref as text, _r as integer, _g as integer, _b as integer, _a as integer )
for i=0 to _id.text.length
SetSpriteColor(_id.text[i], _r, _g, _b, _a)
next i
_id.r=_r : _id.g=_g : _id.b=_b : _id.a=_a
endfunction
//==========================================================
function _SetTextSpacing(_id ref as text, _value as float)
_id.spacing=_value
for i=1 to _id.text.length
SetSpriteX(_id.text[i], GetSpriteX(_id.text[i-1])+GetSpriteWidth(_id.text[i-1])+_value)
next
_id.width = GetSpriteX(_id.text[_id.text.length])+GetSpriteWidth(_id.text[_id.text.length]) - GetSpriteX(_id.text[0])
_id.height = GetSpriteHeight(_id.text[0])
endfunction
//==========================================================
function _SetTextSize(_id ref as text, _value as float)
for i=0 to _id.text.length
new_width = (_value*GetSpriteWidth(_id.text[i])/GetSpriteHeight(_id.text[i]))
new_height = _value
SetSpriteSize(_id.text[i], new_width, new_height)
next
_id.size = _value
_SetTextSpacing(_id, _id.spacing)
endfunction
//==========================================================
function _SetTextX(_id ref as text, _value as integer )
select _id.aligment
case 0: //left
SetSpriteX(_id.text[0], _value)
for i=1 to _id.text.length
SetSpriteX(_id.text[i], GetSpriteX(_id.text[i-1])+GetSpriteWidth(_id.text[i-1])+_id.spacing)
next i
endcase
case 1: //center
SetSpriteX(_id.text[0], _value-_id.width/2)
for i=1 to _id.text.length
SetSpriteX(_id.text[i], GetSpriteX(_id.text[i-1])+GetSpriteWidth(_id.text[i-1])+_id.spacing)
next i
endcase
case 2: //right
SetSpriteX(_id.text[0], _value-_id.width)
for i=1 to _id.text.length
SetSpriteX(_id.text[i], GetSpriteX(_id.text[i-1])+GetSpriteWidth(_id.text[i-1])+_id.spacing)
next i
endcase
endselect
_id.x =_value
endfunction
//----------------------------------------------------------
function _SetTextY(_id ref as text, _value as integer)
for i=0 to _id.text.length
SetSpriteY(_id.text[i], _value)
next i
_id.y =_value
endfunction
//==========================================================
function _SetTextAlignment(_id ref as text, _value as integer )
_id.aligment = _value
_SetTextX(_id, _id.x)
_SetTextY(_id, _id.y)
endfunction
//==========================================================
function _SetTextVisible(_id ref as text, _value as integer)
for i=0 to _id.text.length
SetSpriteVisible(_id.text[i], _value)
next i
_id.visible =_value
endfunction
//==========================================================
function _GetTextX(_id ref as text)
endfunction _id.x
function _GetTextY(_id ref as text)
endfunction _id.y
//==========================================================
function _SetTextString(_id ref as text, _value as string)
if _id.source <> _value
for i=0 to _id.text.length
DeleteImage(_id.glyph[i])
DeleteSprite(_id.text[i])
next i
endif
_id.glyph.length = -1
_id.text.length = -1
_id.count = Len(_value)
_id.source=_value
//---------------------------------------------
for i=1 to _id.count
_char$ = str(Asc(Mid(_id.source,i,1)))
_id.glyph.insert(LoadSubImage(_id.font,_char$))
_id.text.insert(CreateSprite(_id.glyph[_id.glyph.length]))
if i>1
SetSpriteX(_id.text[_id.text.length], GetSpriteX(_id.text[_id.text.length-1])+GetSpriteWidth(_id.text[_id.text.length-1]))
endif
next i
//---------------------------------------------
//setup
_SetTextSpacing(_id, _id.spacing)
_SetTextAlignment(_id, _id.aligment)
_SetTextSize(_id, _id.size )
_SetTextX(_id, _id.x )
_SetTextY(_id, _id.y )
_SetTextVisible(_id, _id.visible )
_SetTextColor(_id, _id.r, _id.g, _id.b, _id.a)
//---------------------------------------------
endfunction
//==========================================================
function _SetTextDepth(_id ref as text, _value as integer)
for i=0 to _id.text.length
SetSpriteDepth(_id.text[i], _value)
next i
_id.depth = _value
endfunction
//----------------------------------------------------------
function _GetTextDepth(_id ref as text)
endfunction _id.depth
//==========================================================
https://www.instagram.com/qugurun/