sgx - include für screen gagdets

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

also das anzeigen auf dem screen geschieht nur über sprites. die werden umgeschalten je nach zustand (normal/hover/pushed..). bei einem refresh des gadgets werden diese sprites neu erstellt, das heißt aus den grafik-elementen eines designs wird das gadget zusammengesetzt. die design-elemente werden als images gehalten, um sie leicht auf die gadgetsprites zeichnen zu können.
ich kenn deine lib, auch eine gutes stück arbeit :allright:
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

#NULL hat geschrieben:also das anzeigen auf dem screen geschieht nur über sprites. die werden umgeschalten je nach zustand (normal/hover/pushed..). bei einem refresh des gadgets werden diese sprites neu erstellt, das heißt aus den grafik-elementen eines designs wird das gadget zusammengesetzt. die design-elemente werden als images gehalten, um sie leicht auf die gadgetsprites zeichnen zu können.
grundsätzlich gutes konzept.
die basis ein sprite aus image-elementen zusammenzusetzen, ist ne klasse idee.
evtl. wäre es eine verbesserung, alle zustände vorab zu erzeugen und nur umzuschalten,
anstatt die sprites jedesmal neu zu erstellen.
aber das ist ne grundsätzliche frage, ob man performance oder speicherplatzersparnis bevorzugt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

so wie ich das jetzt verstanden habe zeigst du alle Gadget als Sprite an ?

Ich habe es noch n stufe weiter gemacht:

Diese Gadget werden alle auf ein Window-Sprite geschrieben sodass ich nur noch diese Window-Sprites anzeigen lassen muss ohne alle Gadgets einzeln anzuzeigen.

Wenn dann ein Event statt findet dann wird dies einfach auf dem Screen direkt gezeichnet (Button down) aber alle für längere Zeit festen Situatioenn werden direkt auf ein Window-Sprite gezeichnet.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

...für ne GUI, die auch ein MouseOver visualisiert,
bietet sich eher die einzelsprite-lösung an,
würde ich jetz mal so spontan in den raum werfen... :|
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

die einzelnen zustände werden auf einmal 'gerendert', nicht erst bei den events. beim anzeigen wird dann nur das sprite ausgewählt. in etwa so:

Code: Alles auswählen

                If sgx(id)\hover
                  DisplayTransparentSprite( sgx(id)\spr[#sgx_GadgetSprHover], sgx(id)\x, sgx(id)\y    )
                Else
                  DisplayTransparentSprite( sgx(id)\spr[#sgx_GadgetSprNormal], sgx(id)\x, sgx(id)\y    )
                EndIf
allerdings eben jedes gadget einzeln und übereinander, auch wenn sie verdeckt sind.
alles auf container/fenster zeichnen, und dann nur das containter-sprite darstellen ist auch eine möglichkeit. nur muss dann bei einer veränderung des gadgets auch das fenster refreshed werden, ..kann auch nachteile haben.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

#NULL hat geschrieben:ich meinte eigentlich nur den source der verwendeten sgx komponente, wenn sowas möglich ist.
Ach so ... ich glaub in die richtung geht doch die LGPL ... naja egal ...
wenn du da drinn stehen hast, dass du das so möchtest, sollte es
eigentlich auch reichen. Rechtlich weis ich aber nicht, in wie weit das
gültig ist ... naja egal, ist in diesem Fall wohl eh mit Kanonen auf Spatzen
<) ... also lass ichs mal gut sein.

Öhm ... ich hät da noch ne 3. Möglichkeit. In meiner CWL ist das so
umgesetzt, dass es ein allgemeines Sprite gibt für den Client-Bereich
eines Fensters, ähnlich wie bei Stargate wird damit ein Sprite für (fast)
alles verwendet. Änderungen von Gadget-Zuständen werden allerdings
direkt auf dieses Client-Sprite angezeigt ... somit wird immer nur ein
größeres Sprite angezeigt, bei Änderungen gibs dann eine einmalige
DisplayTransparentSprite()-Operation mehr.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Kaeru Gaman hat geschrieben:...für ne GUI, die auch ein MouseOver visualisiert,
bietet sich eher die einzelsprite-lösung an,
würde ich jetz mal so spontan in den raum werfen... :|
sicherlich stimmt das, aber bei einzelsprites hast du immer das Problem das Sprites übereinander liegen und dann bereich verdeckt werden, und damit die darunterliegenden Sprites "um sonst" Displayt werden.

Ich habe festgestellt das ein "kleines" Echtzeitclipping des MouseOverbereichs schneller ist. (da ja eh immer nur ein Objekt von der Maus "geovert" wird)

Aufpassen muss man bei ListGadgets denn wenn dort eine Änderung stattfindet (scrollen) müssen meist viele Dinge gemacht werden, dort eignet sich dann wieder ein einzelSprite für die Liste, welches dann geclipt wird je nach Anzeigebereich.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ähnlich ist es aber auch schon bei togglebutton und checkboxes. jedesmal das fenster neuzeichnen bietet sich nicht an. die checkbox könnte man auch einfach neu drüberzeichnen, ohne den rest des fensters zu verwerfen. beim gedrückten togglebutton ist es bei mir momentan so, das ein mouseover durch schlichtes versetzten von y-1 bemerkbar ist (so ein wackeleffekt), das sollte auch nicht jedes mal ein fenster-refresh erzeugen. die designs stattdessen erweitern um ein viertes rahmenmodell würde aber die erstellung von designs noch komplizierter machen. :|
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

update..
sgxScrollbar() hat jetzt 2 parameter mehr um auch breite und höhe des scrollbutton definieren zu können, außerdem noch ein style parameter.
und es gibt jetzt sgxTrackbar(), ist eigentlich das gleiche wie scrollbar, nur der style default ist auf grid gestellt.
beispiel 'sgxScrollbar.pb' ist jetzt 'sgxScrollbarTrackbar.pb' und ich hab noch ein einfacheres table-beispiel hinzugefügt.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag von Dostej »

@Null
Sieht cool aus. Respekt...
Ist die prinzipiell auch auf Linux zu verwenden?
Antworten