String Gadgets Hiding Themselves

Just starting out? Need help? Post your questions and find answers here.
User avatar
matalog
Enthusiast
Enthusiast
Posts: 305
Joined: Tue Sep 05, 2017 10:07 am

String Gadgets Hiding Themselves

Post 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?
normeus
Enthusiast
Enthusiast
Posts: 475
Joined: Fri Apr 20, 2012 8:09 pm
Contact:

Re: String Gadgets Hiding Themselves

Post 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
google Translate;Makes my jokes fall flat- Fait mes blagues tombent à plat- Machte meine Witze verpuffen- Eh cumpari ci vo sunari
User avatar
matalog
Enthusiast
Enthusiast
Posts: 305
Joined: Tue Sep 05, 2017 10:07 am

Re: String Gadgets Hiding Themselves

Post by matalog »

Thanks norm! Good to get that sorted out.
Post Reply