So far it has multiple generators spread across tabs.
Walls, techno walls, windows, character faces, character names, roads, doors, leds, etc.
Now in new version im using vectorial graphics because are better and with AA native.
Feel free to add new ones.
Hope share when finish all the job. over 3000 lines of code...

I want to share the LED poster generator. (is not optimized and dirty because is a draft version)
I hope you like it.
They need to translate into your language as it is in Spanish.
Best regards!
Code: Select all
UsePNGImageDecoder()
UsePNGImageEncoder()
Global.i font= LoadFont(#PB_Any,"Arial",10,#PB_Font_Bold)
Procedure Gadget(x,y,w,h, tipo.i=#PB_GadgetType_String, valor.s="", titulo.s="",flags=0, tooltip.s="")
Protected.i tituw, valorw, gad,nh,dum
If titulo
titulo= " "+titulo+" "
dum=CreateImage(#PB_Any,200,200)
StartDrawing(ImageOutput(dum))
DrawingFont(FontID(font))
tituw= TextWidth(titulo)
StopDrawing()
FreeImage(dum)
; tituw= Len(titulo)*11
nh=h:If nh>25:nh=25:EndIf
SetGadgetColor( TextGadget(#PB_Any,x,y,tituw,nh, titulo,#PB_Text_Border|#SS_CENTERIMAGE), #PB_Gadget_BackColor, $aaaaaa)
EndIf
Select tipo
Case #PB_GadgetType_ComboBox
gad= ComboBoxGadget(#PB_Any,x+tituw,y,w-tituw,h, flags)
If valor
For n=1 To CountString(valor,"|")
AddGadgetItem(gad,-1, StringField(valor,n,"|"))
Next n
SetGadgetState(gad,0);CountGadgetItems(gad)-1)
EndIf
Case #PB_GadgetType_CheckBox
gad= CheckBoxGadget(#PB_Any,x+tituw,y,w-tituw,h,valor, flags)
Case #PB_GadgetType_TrackBar
gad= TrackBarGadget(#PB_Any,x+tituw,y,w-tituw,h,0,100, flags)
SetGadgetState(gad,Val(valor))
Case #PB_GadgetType_Editor
gad= EditorGadget(#PB_Any,x+tituw,y,w-tituw,h, flags)
SetGadgetColor(gad,#PB_Gadget_BackColor,$bbffbb)
Case #PB_GadgetType_String
gad= StringGadget(#PB_Any,x+tituw,y,w-tituw,h,valor, flags)
SetGadgetColor(gad,#PB_Gadget_BackColor,$bbffbb)
Case #PB_GadgetType_Button
gad= ButtonGadget(#PB_Any,x+tituw,y,w-tituw,h,valor, flags)
EndSelect
; SetGadgetFont(gad,FontID(font))
If tooltip
GadgetToolTip(gad,tooltip)
EndIf
ProcedureReturn gad
EndProcedure
Procedure dibujaCanvas(canvas,img)
Protected i= CreateImage(#PB_Any, ImageWidth(img),ImageHeight(img),32,#PB_Image_Transparent)
StartDrawing(ImageOutput(i))
; DrawingMode(#PB_2DDrawing_Default)
; Box(0,0,OutputWidth(),OutputHeight(),$000000)
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,OutputWidth(),OutputHeight(),RGBA(0,0,0,0))
DrawingMode(#PB_2DDrawing_AlphaBlend)
If ImageDepth(img)=32
DrawAlphaImage(ImageID(img),0,0)
Else
DrawImage(ImageID(img),0,0)
EndIf
StopDrawing()
StartDrawing(CanvasOutput(canvas))
; DrawingMode(#PB_2DDrawing_Default)
Box(0,0,OutputWidth(),OutputHeight(),$ffffff)
; DrawingMode(#PB_2DDrawing_AlphaChannel)
; Box(0,0,OutputWidth(),OutputHeight(),$ffffffff)
DrawingMode(#PB_2DDrawing_AlphaBlend)
If ImageDepth(i)=32
DrawAlphaImage(ImageID(i),0,0)
Else
DrawImage(ImageID(i),0,0)
EndIf
StopDrawing()
FreeImage(i)
EndProcedure
Procedure genImageLetter(img, bigpx.b=4, color.l=$00ffff, umbra.b=127, brillo.b=#False)
Protected x,y,hh, w=ImageWidth(img), h=ImageHeight(img)
Protected.l p, Dim px(ImageWidth(img),ImageHeight(img))
StartDrawing(ImageOutput(img))
For y= 0 To OutputHeight()-1
For x= 0 To OutputWidth()-1
If (Red(Point(x,y))+Green(Point(x,y))+Blue(Point(x,y)) ) /3 > umbral
px(x,y)= 1
hh= y*bigpx
Else
px(x,y)= 0
EndIf
Next x
Next y
StopDrawing()
Protected.l c1,c2,c3,c4
Protected.f s=0.9
c4= RGB( Red(color)*s, Green(color)*s, Blue(color)*s )
s=0.8
c3= RGB( Red(color)*s, Green(color)*s, Blue(color)*s )
s=0.7
c2= RGB( Red(color)*s, Green(color)*s, Blue(color)*s )
s=0.6
c1= RGB( Red(color)*s, Green(color)*s, Blue(color)*s )
Protected px_br= CreateImage(#PB_Any,32,32,32,#PB_Image_Transparent)
StartDrawing(ImageOutput(px_br))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,OutputWidth(),OutputHeight(),0)
DrawingMode(#PB_2DDrawing_AlphaBlend)
For p= 0 To 14
Circle(16,16,p, RGBA(Red(color),Green(color),Blue(color), (14-p)*0.75 ) )
Next p
StopDrawing()
Protected px_on= CreateImage(#PB_Any,32,32,24,0)
StartDrawing(ImageOutput(px_on))
Circle(16,16,14,c1)
Circle(16,16,13,c2)
Circle(21,11,9,c3)
Circle(13,19,7,c4)
Circle(16,16,6,c4)
StopDrawing()
Protected ibr,ion,ioff
hh+(bigpx*4)
img= CreateImage(#PB_Any,w*bigpx,h*bigpx)
; ResizeImage(img,w*bigpx,h*bigpx)
ibr= CopyImage(px_br, #PB_Any)
ResizeImage(ibr, bigpx*10,bigpx*10)
ion= CopyImage(px_on, #PB_Any)
ResizeImage(ion, bigpx,bigpx)
ioff= CopyImage(ion, #PB_Any)
umbral= 85
Protected r,g,b
StartDrawing(ImageOutput(ioff))
For y=0 To OutputHeight()-1
For x=0 To OutputWidth()-1
p= Point(x,y)
r= Red(p)
g= Green(p)
b= Blue(p)
r- umbral: If r<0:r=0:EndIf
g- umbral: If g<0:g=0:EndIf
b- umbral: If b<0:b=0:EndIf
Plot(x,y,RGB(r,g,b))
Next x
Next y
StopDrawing()
StartDrawing(ImageOutput(img))
; Box(0,0,OutputWidth(),OutputHeight(),$ffffff)
Box(0,0,OutputWidth(),OutputHeight(),0)
StopDrawing()
;imagen
StartDrawing(ImageOutput(img))
For y= 0 To H-1
For x= 0 To W-1
If px(x,y)=1
DrawImage(ImageID(ion),x*bigpx,y*bigpx)
Else
DrawImage(ImageID(ioff),x*bigpx,y*bigpx)
EndIf
Next x
Next y
StopDrawing()
;brillo
If brillo
StartDrawing(ImageOutput(img))
For y= 0 To H-1
For x= 0 To W-1
If px(x,y)=1
DrawAlphaImage(ImageID(ibr), ((x*bigpx)+(bigpx/2))-(ImageWidth(ibr)/2), ((y*bigpx)+(bigpx/2))-(ImageWidth(ibr)/2))
EndIf
Next x
Next y
StopDrawing()
EndIf
FreeImage(ioff)
FreeImage(ibr)
ProcedureReturn img
EndProcedure
Macro luminoso()
If IsImage(ilum):FreeImage(ilum):EndIf
ilum= genImageLetter(imglum,8,colorLumi,127,lumi_radiacion)
StartDrawing(CanvasOutput(lumi_canvas))
DrawImage(ImageID(ilum),0,0)
StopDrawing()
EndMacro
win= OpenWindow(#PB_Any,0,0,800,550,"gen Assets v1.01 (Minimy 2024)",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
panel= PanelGadget(#PB_Any,0,0,800,548)
;{ LUMINOSO
AddGadgetItem(panel,-1,"Luminoso")
lumi_pegaImg= ButtonGadget(#PB_Any,520, 0,270,30,"Pegar del portapapeles")
lumi_color= ButtonGadget(#PB_Any,520, 30,270,30,"Seleccion de color")
lumi_glow= ButtonGadget(#PB_Any,520, 60,270,30,"Radiación (Glow)",#PB_Button_Toggle)
lumi_borra= ButtonGadget(#PB_Any,520,120,270,30,"Borrador",#PB_Button_Toggle)
lumi_tool= Gadget(520,150,270,30,#PB_GadgetType_ComboBox,"Linea|Cuadrado|Circulo|Elipse|Cuadrado relleno|Circulo relleno|Elipse rellena|","Herramientas")
lumi_undo= ButtonGadget(#PB_Any,520,210,270,30,"Deshacer (Undo)")
lumi_canvas= CanvasGadget(#PB_Any,0,0,512,512);WindowWidth(win),WindowHeight(win) )
imglum= CreateImage(#PB_Any,64,64)
StartDrawing(ImageOutput(imglum))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText((OutputWidth()-TextWidth("HOLA"))/2,0,"HOLA")
DrawText((OutputWidth()-TextWidth("Mundo"))/2,10,"Mundo")
StopDrawing()
ilum= genImageLetter(imglum,8)
StartDrawing(CanvasOutput(lumi_canvas))
Box(0,0,OutputWidth(),OutputHeight())
DrawImage(ImageID(ilum),0,0)
StopDrawing()
colorLumi= $00ffff
b_lumiClipboard= ButtonGadget(#PB_Any,520,450,270,30,"Copia la imagen al portapapeles")
b_lumiSave= ButtonGadget(#PB_Any,520,480,270,30,"Graba la imagen")
;}
CloseGadgetList()
lumiTinta= $ffffff
AddWindowTimer(win,0,1000)
Repeat
event= WindowEvent()
Select event
Case #PB_Event_Timer
; If EventTimer()=0
; EndIf
Case #PB_Event_Gadget
EventGadget= EventGadget()
EventType= EventType()
Select EventGadget
;{ GRABA
Case b_lumiClipboard
If IsImage(ilum)
SetClipboardImage(ilum)
EndIf
Case b_lumiSave
file.s= SaveFileRequester("Graba imagen","","PNG|*.png",0)
If file
If LCase(GetExtensionPart(file))<>"png":file+".png":EndIf
; img0= getImage(lumi_canvas)
If IsImage(ilum)
SaveImage(ilum,file,#PB_ImagePlugin_PNG)
EndIf
EndIf
;{ LUMINOSO
Case lumi_undo
StartDrawing(ImageOutput(imglum))
DrawImage(ImageID(lumiUndo),0,0)
StopDrawing()
If IsImage(dummy):FreeImage(dummy):EndIf
dummy= CopyImage(imglum,#PB_Any)
luminoso()
Case lumi_borra
If GetGadgetState(lumi_borra)
lumiTinta= $0
Else
lumiTinta= $ffffff
EndIf
Case lumi_glow
If IsImage(dummy):FreeImage(dummy):EndIf
dummy= CopyImage(imglum,#PB_Any)
lumi_radiacion= GetGadgetState(lumi_glow)
luminoso()
Case lumi_canvas
If EventType= #PB_EventType_MouseMove
If push
x2= GetGadgetAttribute(lumi_canvas,#PB_Canvas_MouseX) * 0.125
y2= GetGadgetAttribute(lumi_canvas,#PB_Canvas_MouseY) * 0.125
Select GetGadgetText(lumi_tool)
Case "Linea"
StartDrawing(ImageOutput(imglum))
DrawImage(ImageID(dummy),0,0)
LineXY(x1,y1,x2,y2,lumiTinta)
StopDrawing()
luminoso()
Case "Cuadrado relleno"
StartDrawing(ImageOutput(imglum))
DrawImage(ImageID(dummy),0,0)
Box(x1,y1,x2-x1,y2-y1,lumiTinta)
StopDrawing()
luminoso()
Case "Circulo relleno"
StartDrawing(ImageOutput(imglum))
DrawImage(ImageID(dummy),0,0)
Circle(x1,y1,Abs(x2-x1),lumiTinta)
StopDrawing()
luminoso()
Case "Elipse rellena"
StartDrawing(ImageOutput(imglum))
DrawImage(ImageID(dummy),0,0)
Ellipse(x1,y1,Abs(x2-x1),Abs(y2-y1),lumiTinta)
StopDrawing()
luminoso()
Case "Cuadrado"
StartDrawing(ImageOutput(imglum))
DrawingMode(#PB_2DDrawing_Outlined)
DrawImage(ImageID(dummy),0,0)
Box(x1,y1,x2-x1,y2-y1,lumiTinta)
StopDrawing()
luminoso()
Case "Circulo"
StartDrawing(ImageOutput(imglum))
DrawingMode(#PB_2DDrawing_Outlined)
DrawImage(ImageID(dummy),0,0)
Circle(x1,y1,Abs(x2-x1),lumiTinta)
StopDrawing()
luminoso()
Case "Elipse"
StartDrawing(ImageOutput(imglum))
DrawingMode(#PB_2DDrawing_Outlined)
DrawImage(ImageID(dummy),0,0)
Ellipse(x1,y1,Abs(x2-x1),Abs(y2-y1),lumiTinta)
StopDrawing()
luminoso()
EndSelect
EndIf
EndIf
If EventType= #PB_EventType_LeftButtonDown
x1= GetGadgetAttribute(lumi_canvas,#PB_Canvas_MouseX) * 0.125
y1= GetGadgetAttribute(lumi_canvas,#PB_Canvas_MouseY) * 0.125
If IsImage(dummy):FreeImage(dummy):EndIf
If IsImage(lumiUndo):FreeImage(lumiUndo):EndIf
lumiUndo= CopyImage(imglum,#PB_Any)
dummy= CopyImage(imglum,#PB_Any)
lumi_radiacion= GetGadgetState(lumi_glow)
push= 1
EndIf
If EventType= #PB_EventType_LeftButtonUp
push= 0
; FreeImage(lienzo)
EndIf
; file.s= SaveFileRequester("Graba imagen","","PNG|*.png",0)
; If file
; If LCase(GetExtensionPart(file))<>"png":file+".png":EndIf
; ; img0= getImage(lumi_canvas)
; If IsImage(ilum)
; SaveImage(ilum,file,#PB_ImagePlugin_PNG)
; EndIf
; EndIf
; EndIf
Case lumi_tool
Case lumi_color
color= ColorRequester(colorLumi)
If color>-1
colorLumi= color
If IsImage(dummy):FreeImage(dummy):EndIf
dummy= CopyImage(imglum,#PB_Any)
; lumi_radiacion= GetGadgetState(lumi_glow)
luminoso()
EndIf
Case lumi_pegaImg
If IsImage(img): FreeImage(img):EndIf
img= GetClipboardImage(#PB_Any)
If IsImage(img)
ResizeImage(img,64,64);,#PB_Image_Raw)
ilum= genImageLetter(img,8,colorLumi)
StartDrawing(CanvasOutput(lumi_canvas))
Box(0,0,OutputWidth(),OutputHeight())
DrawImage(ImageID(ilum),0,0)
StopDrawing()
Else
Debug "Error"
EndIf
;}
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
Delay(1)
ForEver