String Gadgets Hiding Themselves
Posted: Sat Mar 09, 2024 10:45 pm
Can anyone see why the string gadgets in this program, which has had its internals pulled out to share, hide themselves? The make a grey rectangle over themsleves, albeit, a few pixels away in each direction.
To see the problem, just minimise the window, and then bring it up again. It happens when inactive too, but this is the quick way to make it happen.
Any ideas how to avoid the grey rectangles appearing?
Code: Select all
UseJPEGImageEncoder()
#width = 1350
#height = 1000
Enumeration
#Menu_Escape
#Menu_Space
#Menu_W
#Menu_C
#Menu_E
#Menu_P
#Menu_O
#Menu_A
EndEnumeration
; open a window and make an image to draw on
Global s=1,a.d=0
Global drawleave=0
;Global th=0
OpenWindow(0,0,0,1350,1000,"Program",#PB_Window_MinimizeGadget)
CreateImage(0,1350,900)
AddWindowTimer(0,0,50)
imgad=ImageGadget(#PB_Any, 0, 0, 1350, 900, ImageID(0))
AddKeyboardShortcut(0, #PB_Shortcut_Escape, #Menu_Escape)
AddKeyboardShortcut(0, #PB_Shortcut_Space, #Menu_Space)
AddKeyboardShortcut(0, #PB_Shortcut_W, #Menu_W)
AddKeyboardShortcut(0, #PB_Shortcut_C, #Menu_C)
AddKeyboardShortcut(0, #PB_Shortcut_E, #Menu_E)
AddKeyboardShortcut(0, #PB_Shortcut_P, #Menu_P)
AddKeyboardShortcut(0, #PB_Shortcut_O, #Menu_O)
AddKeyboardShortcut(0, #PB_Shortcut_A, #Menu_A)
sstring=StringGadget(#PB_Any,560*s,910*s,60,20,"1",#PB_String_LowerCase )
sgad=TextGadget (#PB_Any, 540, 913*s, 45, 24, "S")
a1string=StringGadget(#PB_Any,30*s,910*s,50,20,"200",#PB_String_LowerCase )
a1gad=TextGadget (#PB_Any, 10, 913*s, 45, 24, "A1")
a2string=StringGadget(#PB_Any,110*s,910*s,50,20,"200",#PB_String_LowerCase )
a2gad=TextGadget (#PB_Any, 90, 913*s, 45, 24, "A2")
a3string=StringGadget(#PB_Any,190*s,910*s,50,20,"200",#PB_String_LowerCase )
a3gad=TextGadget (#PB_Any, 170, 913*s, 45, 24, "A3")
a4string=StringGadget(#PB_Any,270*s,910*s,50,20,"200",#PB_String_LowerCase )
a4gad=TextGadget (#PB_Any, 250, 913*s, 45, 24, "A4")
f1string=StringGadget(#PB_Any,30*s,940*s,50,20,"411",#PB_String_LowerCase )
f1gad=TextGadget (#PB_Any, 10, 943*s, 45, 24, "F1")
f2string=StringGadget(#PB_Any,110*s,940*s,50,20,"411",#PB_String_LowerCase )
f2gad=TextGadget (#PB_Any, 90, 943*s, 45, 24, "F2")
f3string=StringGadget(#PB_Any,190*s,940*s,50,20,"444",#PB_String_LowerCase )
f3gad=TextGadget (#PB_Any, 170, 943*s, 45, 24, "F3")
f4string=StringGadget(#PB_Any,270*s,940*s,50,20,"444",#PB_String_LowerCase )
f4gad=TextGadget (#PB_Any, 250, 943*s, 45, 24, "F4")
spinxstring=StringGadget(#PB_Any,350*s,910*s,50,20,"200",#PB_String_LowerCase )
spinxgad=TextGadget (#PB_Any, 330, 913*s, 45, 24, "SX")
spinystring=StringGadget(#PB_Any,350*s,940*s,50,20,"200",#PB_String_LowerCase )
spinygad=TextGadget (#PB_Any, 330, 943*s, 45, 24, "SY")
;sstring=StringGadget(#PB_Any,0,0*s,50,20,"2",#PB_String_LowerCase )
;TextGadget (18, 0, 0*s, 45, 24, "S")
gstring=StringGadget(#PB_Any,440*s,910*s,60,20,"0.000005",#PB_String_LowerCase )
gsgad=TextGadget (#PB_Any, 420, 913*s, 45, 24, "T")
p1string=StringGadget(#PB_Any,520*s,940*s,50,20,"0",#PB_String_LowerCase )
p1gad=TextGadget (#PB_Any, 500, 943*s, 45, 24, "P1")
p2string=StringGadget(#PB_Any,600*s,940*s,50,20,"0",#PB_String_LowerCase )
p2gad=TextGadget (#PB_Any, 580, 943*s, 45, 24, "P2")
opvstring=StringGadget(#PB_Any,620*s,970*s,50,20,"0",#PB_String_LowerCase )
opvgad=TextGadget (#PB_Any, 590, 973*s, 45, 24, "OPV")
p3string=StringGadget(#PB_Any,680*s,940*s,50,20,"0",#PB_String_LowerCase )
p3gad=TextGadget (#PB_Any, 660, 943*s, 45, 24, "P3")
p4string=StringGadget(#PB_Any,760*s,940*s,50,20,"0",#PB_String_LowerCase )
p4gad=TextGadget (#PB_Any, 740, 943*s, 45, 24, "P4")
opacity=StringGadget(#PB_Any,760*s,970*s,50,20,"80",#PB_String_LowerCase )
opgad=TextGadget (#PB_Any, 740, 973*s, 45, 24, "OP")
d1string=StringGadget(#PB_Any,30*s,970*s,50,20,"0",#PB_String_LowerCase )
d1gad=TextGadget (#PB_Any, 10, 973*s, 45, 24, "d1")
d2string=StringGadget(#PB_Any,110*s,970*s,50,20,"0",#PB_String_LowerCase )
d2gad=TextGadget (#PB_Any, 90, 973*s, 45, 24, "d2")
d3string=StringGadget(#PB_Any,190*s,970*s,50,20,"0",#PB_String_LowerCase )
d3gad=TextGadget (#PB_Any, 170, 973*s, 45, 24, "d3")
d4string=StringGadget(#PB_Any,270*s,970*s,50,20,"0",#PB_String_LowerCase )
d4gad=TextGadget (#PB_Any, 250, 973*s, 45, 24, "d4")
astring=StringGadget(#PB_Any,350*s,970*s,50,20,"0",#PB_String_LowerCase )
astrgad=TextGadget (#PB_Any, 330, 973*s, 45, 24, "A")
aonstring=StringGadget(#PB_Any,440*s,970*s,50,20,"1",#PB_String_LowerCase )
aongad=TextGadget (#PB_Any, 410, 973*s, 45, 24, "Aon")
bstring=StringGadget(#PB_Any,520*s,970*s,50,20,"0",#PB_String_LowerCase )
bstrgad=TextGadget (#PB_Any, 500, 973*s, 45, 24, "B")
save_button=ButtonGadget(#PB_Any,850*S,910*s,60,30,"SAVE")
stop_button=ButtonGadget(#PB_Any,850*S,970*s,60,30,"CANCEL")
opvrgad=TextGadget (#PB_Any, 920*s, 970*s, 45, 24, "-")
idstgad=StringGadget(#PB_Any,1000*s,970,80,25,"IDLE",#PB_Text_Center)
valgad=StringGadget(#PB_Any,1000*s,940,80,25,"0",#PB_Text_Center)
f1.d=ValD(GetGadgetText(F1string)):f2.d=ValD(GetGadgetText(F2string)):f3.d=ValD(GetGadgetText(F3string)):f4.d=ValD(GetGadgetText(F4string))
; now the procedure we are going to call to draw on the image with each call
Procedure Save(null)
Shared image, a1string,a2string,a3string,a4string,f1string,f2string,f3string,f4string,spinxstring,spinystring,gstring,P1STRING,P2STRING,P3STRING,P4STRING,sstring,d1string,d2string,d3string,d4string,aonstring,bstring
a1.d=ValD(GetGadgetText(a1string)):a2.d=ValD(GetGadgetText(a2string));a2.d=200*s:
a3.d=ValD(GetGadgetText(a3string)):a4.d=ValD(GetGadgetText(a4string))
d1.d=ValD(GetGadgetText(d1string)):d2.d=ValD(GetGadgetText(d2string)):d3.d=ValD(GetGadgetText(d3string)):d4.d=ValD(GetGadgetText(d4string))
f1.d=ValD(GetGadgetText(F1string)):f2.d=ValD(GetGadgetText(F2string)):f3.d=ValD(GetGadgetText(F3string)):f4.d=ValD(GetGadgetText(F4string))
p1.d=ValD(GetGadgetText(P1string)):p2.d=ValD(GetGadgetText(P2string)):p3.d=ValD(GetGadgetText(P3string)):p4.d=ValD(GetGadgetText(P4string))
spinx.d=ValD(GetGadgetText(spinxstring)) :spiny.d=ValD(GetGadgetText(spinystring))
fname$="Program2024"+"-"+FormatDate("%yyyy%mm%dd_%hh%ii%ss", Date())+"-"+"a1="+StrD(a1)+"a2="+StrD(a2)+"a3="+StrD(a3)+"a4="+StrD(a4)+"d1="+StrD(d1)+"d2="+StrD(d2)+"d3="+StrD(d3)+"d4="+StrD(d4)+"p1="+StrD(p1)+"p2="+StrD(p2)+"p3="+StrD(p3)+"p4="+StrD(p4)+"f1="+StrD(f1)+"f2="+StrD(f2)+"f3="+StrD(f3)+"f4="+StrD(f4)+".jpg"
If SaveImage(4,fname$, #PB_ImagePlugin_JPEG,10)
EndIf
EndProcedure
Procedure.l HSV(Hue.d, Saturation.d, Value.d)
Protected H.i = Int(Hue/60)
Protected f.d = 1-Pow(Cos((Hue/60-H)*#PI/2), 2)
Protected Sat.d = Saturation/100
If Sat > 1.0 : Sat = 1.0 : ElseIf Sat < 0.0 : Sat = 0.0 : EndIf
Protected V.d = Value * 2.55
If V > 255 : V = 255 : ElseIf V < 0 : V = 0 : EndIf
Protected p.i = V * (1-Sat)
Protected q.i = V * (1-Sat*f)
Protected t.i = V * (1-Sat*(1-f))
Select H
Case 1 : ProcedureReturn RGB(q,V,p)
Case 2 : ProcedureReturn RGB(p,V,t)
Case 3 : ProcedureReturn RGB(p,q,V)
Case 4 : ProcedureReturn RGB(t,p,V)
Case 5 : ProcedureReturn RGB(V,p,q)
Default : ProcedureReturn RGB(V,t,p)
EndSelect
EndProcedure
Procedure Draw(null)
drawleave=0
Shared image, a1string,a2string,a3string,a4string,f1string,f2string,f3string,f4string,spinxstring,spinystring,gstring,P1STRING,P2STRING,P3STRING,P4STRING,sstring,d1string,d2string,d3string,d4string,aonstring,bstring,s,opacity,imgad,opvstring,opvrgad,idstgad
Static color=255
s=ValD(GetGadgetText(sstring))
Debug s
CreateImage(4, 1350*s, 900*s)
If StartDrawing(ImageOutput(4))
DrawingMode(#PB_2DDrawing_AlphaBlend)
g1.d=ValD(GetGadgetText(gstring))
rot.d=2*#PI/4
Box(0,0,1350*s,900*s,0)
h.d=2:u.d=1:d.d=0
a1.d=ValD(GetGadgetText(a1string))*s:a2.d=ValD(GetGadgetText(a2string))*s;a2.d=200*s:
a3.d=ValD(GetGadgetText(a3string))*s:a4.d=ValD(GetGadgetText(a4string))*s
d1.d=ValD(GetGadgetText(d1string)):d2.d=ValD(GetGadgetText(d2string)):d3.d=ValD(GetGadgetText(d3string)):d4.d=ValD(GetGadgetText(d4string))
f1.d=ValD(GetGadgetText(F1string)):f2.d=ValD(GetGadgetText(F2string)):f3.d=ValD(GetGadgetText(F3string)):f4.d=ValD(GetGadgetText(F4string))
p1.d=ValD(GetGadgetText(P1string)):p2.d=ValD(GetGadgetText(P2string)):p3.d=ValD(GetGadgetText(P3string)):p4.d=ValD(GetGadgetText(P4string))
spinx.d=ValD(GetGadgetText(spinxstring)) :spiny.d=ValD(GetGadgetText(spinystring))
op.d=ValD(GetGadgetText(opacity))
Debug ValD(GetGadgetText(opvstring))
If ValD(GetGadgetText(opvstring))>0
opv.d=op*(1-(a/(8*#PI)))
Debug op
Debug opv
SetGadgetText(opvrgad,StrD(opv))
Else
opv=op
EndIf
t.d=0
a.d=0
aon.d=ValD(GetGadgetText(aonstring))
b.d=ValD(GetGadgetText(bstring))
Repeat
If ValD(GetGadgetText(opvstring))>0
opv.d=op*(1-(a/(8*#PI)))
opv=op
EndIf
a=a+g1
If drawleave=1
a=8*#PI+1
EndIf
Until a>8*#PI
StopDrawing()
EndIf
CopyImage(4, copy)
ResizeImage(copy, 1350, 900)
If StartDrawing(ImageOutput(0))
DrawImage(ImageID(copy), 0, 0)
StopDrawing()
SetGadgetState(imgad, ImageID(0))
EndIf
SetGadgetText(idstgad,"IDLE")
;color+1: If color>255 : color =1 :EndIf
EndProcedure
Repeat
event=WaitWindowEvent()
If Event = #PB_Event_Timer
SetGadgetText(valgad,StrD(a/(8*#PI)*100))
; Debug StrD(a/(8*#PI)*100)
EndIf
gadget=EventGadget()
Select event
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_C
Case #menu_E
; Debug IsThread(th)
If IsThread(th)=0
SetGadgetText(idstgad,"BUSY")
th=CreateThread(@Draw(),0)
EndIf
Case #Menu_O
Case #Menu_P
Case #Menu_Escape
quit = #True
Case #Menu_Space
Delay(800)
Case #Menu_W
SaveImage(4,"Program2024 - "+FormatDate("%yyyy%mm%dd_%hh%ii%ss", Date())+Str(Random(9999,1))+".jpg", #PB_ImagePlugin_JPEG,99)
save=save+1
EndSelect
EndSelect
; is escape pressed?
; handle gadgets like the save button
If event=#PB_Event_Gadget
Select gadget
Case save_button
CreateThread(@Save(),0)
Case stop_button
drawleave=1
EndSelect
EndIf
Until quit=#True
End Any ideas how to avoid the grey rectangles appearing?