Seite 1 von 2

GradientControl 2.3 (Source)

Verfasst: 24.11.2012 18:46
von Lambda
Bild


2.2 Deaktiviert - Weichzeichnung & Grauskalierung

Marker mit Fokus


Ein Rewrite des GradientGadget´s. Jetzt effizienter und Ereignisse müssen nicht extra abgefragt werden/Gadget neu gezeichnet.

- RGBA
- Marker hinzufügen durch Klick
- Marker entfernen durch herausziehen+loslassen
- Farbe kann angepasst werden
- Einsetzen/herauskopieren der Marker-Liste
- Direkt aus einem GradientControl lesen
- CallBack zur Farbauswahl (bei Doppelklick auf Marker)
- Deaktiviert - Weichzeichnung & Grauskalierung
- Volle Tastatur-Unterstützung*
*
Ctrl+Left/Right - switch between Markers
Left/Right - move active Marker
Down - remove active Marker
Enter - call Marker-CallBack
Space - dublicate active Maker
Beispiel (in Archiv enthalten)

Code: Alles auswählen

UsePNGImageDecoder()
OpenWindow(0, 0, 0, 400, 70, "GradientControl", #PB_Window_SystemMenu|#PB_Window_SizeGadget)



GradientControl(0, 0, 0, 300, 20, #GC_MARKER_ADD)
GC_Add(0, 0, RGBA(100, 200, 20, 255))
GC_Add(0, 0.5, RGBA(10, 30, 200, 100))
GC_Add(0, 0.8, RGBA(200, 0, 200, 155))
GC_Add(0, 1, RGBA(20, 30, 100, 255))


Repeat
Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
    End
    
  Case #PB_Event_SizeWindow
    ResizeGadget(0, 10, 20, WindowWidth(0)-20, 30)
    
EndSelect
ForEver
lG

Re: GradientControl 2.0

Verfasst: 24.11.2012 18:57
von RSBasic
@cOoki3druqs
Bitte mach dein GradientGadget als OpenSource (Include-Datei, die man in seinem Quellcode einbinden und jederzeit anpassen kann) und nicht als Userlib. Wenn irgendwas an der PB-Syntax geändert wird, dann funktioniert möglicherweise deine UserLib nicht mehr und wenn du mal nicht mehr im Forum aktiv bist, dann wird deine UserLib auch nicht mehr an der neueren PB-Version angepasst. UserLibs sind nicht wartungsfreundlich und an der PB-Version abhängig.

Außerdem ist in deinem Archiv dein Beispielcode nicht vorhanden, sondern stattdessen ein anderer Code und zwar von Tomcat. Fehler beim Einfügen bzw. falsch gespeichert?

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:00
von ts-soft
Naja, irgendwie fehlen hier noch ein paar Infos.

UserLib für windows, x86 nehme ich mal an?

Das Beispiel im RAR-Archiv enthält CreateBezier() aus dem CodeArchiv,
aber nicht das hier gepostete?

Ansonsten schließe ich mich RSBasic an.

Gruß
Thomas

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:08
von Lambda
Sowas, das war wohl der falsche Tab. Einfachheitshalber Source jetzt enthalten. <)

Wäre dann wohl besser in Tipps&Tricks aufgehoben. :D

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:12
von ts-soft
Naja, bei einer Userlib kann man IMHO erwarten:

- Welches Betriebssystem wird unterstützt
- Welche Prozessorarchitektur wird unterstützt
- Welche Compilerdirektiven werden unterstützt
- zumindest eine Kurzbeschreibung in Textform
- eine Lizenz
- Aussage, ob Source enthalten ist

Egal, kommt für mich sowieso nicht in Frage, zuviele Einschränkungen :wink:

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:27
von Lambda
Hat sich ja erledigt. Source jetzt enthalten. Wobei mir noch aufgefallen ist, dass Marker am Anfang/Ende gezogen etwas flacker. Wird noch behoben.

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:45
von ts-soft
:allright:

So, 2 Probleme.

1. verträgt sich nicht mit ProGUI, SetGradient ist dort bereits als Befehl enthalten,
das ist natürlich nicht Deine Schuld, das kommt einfach wenn man Namen ohne
Präfix nutzt. Nach Möglichkeit sollte jede Include und UserLib Präfixe nutzen, auch
wenn das manchmal als unnötig empfunden wird. PB verfügt leider nicht über Namens-
räume oder ähnlichem, um solche Probleme zu umgehen.

2. der Code läuft bei mir nicht, IMA im EventLoop: Das angegebene #Gadget ist nicht initialisiert.
(ohne Debugger geht es, das reicht aber nicht, es sollte schon mit Debugger auch funktionieren!)

Gruß
Thomas

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:52
von Lambda
Zu 1. Geb ich dir völlig recht, bei einer eigenen Sprache erzwinge ich den Präfix. ^^
Zu 2. Wurde bereits darauf hingewiesen. (Zeile 45 im Beispiel unkommentieren)

Re: GradientControl 2.0

Verfasst: 24.11.2012 19:56
von STARGÅTE
Ein Sache die mir aufgefallen ist:
Wenn ich beim Parameter Marker.b #False übergebe, werden trotzdem Marker gezeigt. Liegt vermutlich daran, das der Parameter nirgends in der Prozedur verwendet wird, dann ist er aber irgendwie überflüssig.

Re: GradientControl 2.0

Verfasst: 24.11.2012 20:16
von Lambda
So, dürfte jetzt alles gelöst sein.

- Präfix
- Marker Fix (rausziehen am Ende/Anfang)
- Marker.b jetzt Attributes.l (#GC_MARKER_ADD ermöglicht das Hinzufügen durch Klick)