Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

sGUI - eine kleine GUI Simulation
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 29.03.2016, 11:25    Titel: Antworten mit Zitat

Bei mir Funktioniert jetzt alles, der Fehler in der RadioButton.bas-Function RadioButtonActions), denn hatte ich noch gar nicht gemeldet, ist auch weg.
Danke für die Korrektur!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 94

BeitragVerfasst am: 16.10.2018, 21:08    Titel: Antworten mit Zitat

Hi Muttonhead,
ich haette da mal ne frage bezueglich dem managment von sGUI.

Da ich gerade an einem MapGenerator bastel und mir sGUI immernoch sehr gefaellt (wegen der einfachen benutzung und dem schnellen aufbau) hab ich
mal nachgeschaut im source aber nix gefunden.

In meinem Project habe ich zB solche Konstrukte...
Code:

'NoiseSettins.bi
Type NoiseSettings
   Declare Constructor()
   Enum FilterType_e
   Normal,
   Rigid
   End Enum
   Enum NoiseType_e
   Classic,
   Simplex,
   OpenSimplex
   End Enum
   
   NoiseType As NoiseType_e
   FilterType As FilterType_e
   
   active As boolean
   hide As boolean
   NoiseMask As Integer


   Dim CenterX As Double = 0.0
   Dim CenterY As Double = 0.0
   Dim CenterZ As Double = 0.0
   Dim CenterW As Double = 0.0

   Dim minValue As Double = -0.0
   Dim octaves As Integer = 1
   Dim persistence As Double =0.5
   Dim baseRoughness As Double = 1.01
   Dim roughness As Double = 2.5
   Dim strength As Double = 1.0
   Dim addvalue As Double =0.0
   
   n_min As Double
   n_max As Double
End Type
Constructor NoiseSettings()

End Constructor


'-------------------------------------------------------------------------------------
'NoiseFilter.bi
#Include "noise.bi"
#Include "NoiseFactory.bi"
'define a standart interface for the Noise Filters
Type INoiseFilter extends object
   Declare virtual Function eval(x As Double,y As Double) As double
   Declare virtual Function eval(x As Double,y As Double,z As double) As double
   Declare virtual Function eval(x As Double,y As Double,z As Double,w As Double) As double
   value As Double
End Type
Function INoiseFilter.eval(x As Double,y As Double) As double
   Return value
End Function
Function INoiseFilter.eval(x As Double,y As Double,z As Double) As double
   Return value
End Function
Function INoiseFilter.eval(x As Double,y As Double,z As Double,w As Double) As double
   Return value
End Function



'The Classic Perlin
Type ClassicNoiseFilter extends INoiseFilter
   Declare Constructor(NS As NoiseSettings)
   Declare Destructor()
   Declare Function eval(x As Double,y As Double) As Double
   Declare Function eval(x As Double,y As Double,z As double) As Double
   Settings As NoiseSettings
   noise As INoise Ptr

End Type
Constructor ClassicNoiseFilter(NS As NoiseSettings)
Settings = NS
noise = NoiseFactory.CreateNoise(NS)
End Constructor
Destructor ClassicNoiseFilter()
Delete noise
End Destructor

Function ClassicNoiseFilter.eval(x As Double,y As Double,z As Double) As double
   value=noise->noise(x,y,z)
   Return value
End Function
Function ClassicNoiseFilter.eval(x As Double,y As Double) As double
   value=noise->noise(x,y,0)
   Return value
End Function


'The Simplex Noise
Type SimplexNoiseFilter extends INoiseFilter
   Declare Constructor(NS As NoiseSettings)
   Declare Destructor()
   Declare function eval(x As Double,y As double) As double
   Declare function eval(x As Double,y As Double,z As double) As double

   Settings As NoiseSettings
   noise As INoise Ptr

End Type
Constructor SimplexNoiseFilter(NS As NoiseSettings)
Settings = NS
noise = NoiseFactory.CreateNoise(NS)
End Constructor
Destructor SimplexNoiseFilter()
Delete noise
End Destructor
Function SimplexNoiseFilter.eval(x As Double,y As Double) As double
   value=noise->noise(x,y)
   Return value
End Function
Function SimplexNoiseFilter.eval(x As Double,y As Double,z As Double) As double
   value=noise->noise(x,y,z)
   Return value
End Function

'A Rigid Filter
Type RigidNoiseFilter extends INoiseFilter
   Declare Constructor(NS As NoiseSettings)
   Declare Destructor()
   Declare function eval(x As Double,y As double) As double
   Declare function eval(x As Double,y As Double,z As double) As double

   Settings As NoiseSettings
   noise As INoise ptr

End Type
Constructor RigidNoiseFilter(NS As NoiseSettings)
Settings = NS
noise = NoiseFactory.CreateNoise(NS)
End Constructor
Destructor RigidNoiseFilter()
Delete noise
End Destructor
Function RigidNoiseFilter.eval(x As Double,y As Double) As Double
   Dim amplitude As Double = 1
   Dim weight As Double = 1
   Dim v As Double
   dim frequency As Double=Settings.baseRoughness
   Dim min As Double = DBL_MAX
   Dim max As Double = DBL_MIN
   value=0
   For i As UInteger=0 To Settings.octaves
      v=1.0-(Abs(noise->noise(x*frequency+Settings.CenterX,y*frequency+Settings.CenterY,0)))'+1.0
      v*=v
      v*=weight
      weight=v
      value+=v*amplitude
      frequency*=Settings.roughness
      amplitude*=Settings.persistence
      If value<min Then min=value
      If value>max Then max=value
   Next
   value = IIf(0>value-Settings.minValue,0,value-Settings.minValue)
   Return value'/(max-min)
End Function
Function RigidNoiseFilter.eval(x As Double,y As Double,z As Double) As double
   Dim amplitude As Double = 1
   Dim weight As Double = 1
   Dim v As Double
   dim frequency As Double=Settings.baseRoughness
   Dim min As Double = DBL_MAX
   Dim max As Double = DBL_MIN
   value=0
   For i As UInteger=0 To Settings.octaves
      v=1.0-(Abs(noise->noise(x*frequency+Settings.CenterX,y*frequency+Settings.CenterY,z*frequency+Settings.CenterZ)))
      v*=v
      v*=weight
      weight=v
      value+=v*amplitude
      frequency*=Settings.roughness
      amplitude*=Settings.persistence
      If value<min Then min=value
      If value>max Then max=value
   Next
   value = IIf((value-Settings.minValue)>0,(value-Settings.minValue),0)
   Return value'/(max-min)
End Function

'--------------------------------------------------------------------------------------
'NoiseFilterFactory.bi
#Include "NoiseSettings.bi"
#Include "NoiseFilter.bi"

#ifndef NULL
  #define NULL cptr(any ptr, 0)
#EndIf


Type NoiseFilterFactory
   Declare Static Function CreateNoiseFilter(NS As NoiseSettings) As INoiseFilter Ptr
   dummy As byte
End Type
Function NoiseFilterFactory.CreateNoiseFilter(NS As NoiseSettings) As INoiseFilter Ptr
   Dim res As INoiseFilter Ptr = NULL
   Select Case NS.FilterType
      Case NS.FilterType_e.Normal
         res = New ClassicNoiseFilter(NS)
      Case NS.FilterType_e.Rigid
         res = New RigidNoiseFilter(NS)
   End Select
   Return res
End Function

nun hab ich mich gefragt ob sGUI auch so aufgebaut ist.
wenn ja wo vertseckten sich die "Interfaces", wenn nein koennte
man das in zusammenarbeit oder alleine (mit deiner erlaubniss)
so umstrukturieren das man ein IGdaget interface hat und evtl noch mehr?
(Gadgets haben ja alle eine xy position soweit ich das sehe).

Meine Intension ist ein WindowManager zu basteln mit sGUI den man
"intuitiv" programieren kann.

evtl kannst du mir ja dabei helfen bzw tipps geben falls das ueberhaupt
moeglich ist. zb wo muss ich ansetzen (wo ist der anfang von sGUI) um zB die Gadgets in "Interface"Gadgeds umzuwandeln.


Mir schweben im da gerade so Konstrukte wie
Code:

Type IWindow extends object
   x As Integer
   y As Integer
   w As Integer
   h As Integer
   z As Integer 'for rendering order
   
   title As String 'window title (if "" then not drawn)
   
   active As boolean 'is window visible
   minimized As boolean 'is it minimized
   
   Declare Sub Render(e As sGUI.EventHandle ptr)
   Declare Sub AddGadget(g As sGUI.Gadget ptr)
   Declare Sub DeleteGadget(g As sGUI.Gadget ptr)
   
   Gadgets As arrayList
   UserData As arrayList
End Type


Type WindowManager
   Declare Sub Render()
   Declare Sub UpdateZ()
   Declare Sub Sort()' sorts the arrayList by Z
   Declare Sub AddWindow(w As IWindow)
   Declare Sub DeleteWindow(w As IWindow)
   
   event As sGUI.EventHandle Ptr ' th global event handle
End Type

im kopf rum.
salute

PS.: ich nutze auserdem die aeusserst nuetzliche erweiterung von Paul Doe
namens "arrayList.bi" aus diesem Fred https://www.freebasic.net/forum/viewtopic.php?f=8&t=26667
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Seite 10 von 10

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz