Page 1 of 1

String Gadgets Hiding Themselves

Posted: Sat Mar 09, 2024 10:45 pm
by matalog
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.

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  
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?

Re: String Gadgets Hiding Themselves

Posted: Sat Mar 09, 2024 11:01 pm
by normeus
Change the width of the text gadgets, they are overlapping the other gadgets:

Code: Select all

a1gad=TextGadget  (#PB_Any, 10, 913*s, 15, 24, "A1") ; new width 15
norm

Re: String Gadgets Hiding Themselves

Posted: Sat Mar 09, 2024 11:07 pm
by matalog
Thanks norm! Good to get that sorted out.