ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
AGSzabo
Nutzer
13.07.2011, 21:23 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Vom Prinzip her verstanden ja, es hapert aber an meiner Umsetzung. Meine SuperRefresh Routine funktioniert nicht richtig, weil ich mit der paramterübergabe der rekursion nicht klar komme. ich schaffe es nicht, den parent clip so zu merken, dass er wieder eingebaut werden kann nachdem die childs gezeichnet worden sind. Initfunktionen habe ich drei: 1. SETDEF: füllt das objekt mit initialen default attributwerten. 2. dann kommen die SetAttrs aus der erzeugungstagliste rein. 3. CREATE: weist die Klasse an auf der Basis der jetzigen Attributwerte betimmte subelemente zu erzeugen, zB in einem Imagebutton den Text und das Image, wobei in schritt 2 zB der name des images empfangen wurde. 4. system sendet globale parameter an alle, zB zeiger auf den rastport, damit der text seine größe richtig berechnen kann 5. INIT: jetzt ist es ok alles im zusammenhang nochmal zu initialisieren. ps: layout passiert bei mir indem jedes widget eine infostruktur an seine kinder weiterreicht und diese dann ihre maße da rein schreibe. letztlich kommen die gesamtmindestmaße wieder zum fenster zurück. dann gibts noch setlayout, das änlich funktioniert. EDIT: ich habe die rekursion jetzt im grunde hinbekommen! es war auch ein registerrettungsfehler drin. braucht den source von mir nimmer zu debuggen, danke. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 13.07.2011 um 21:26 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 13.07.2011 um 22:56 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
13.07.2011, 19:29 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Gute Idee mit dem Foreground. So lassen sich zB Effekte wie "Ghosted" realisieren wenn der Ghost ein Muster sein soll, dass dem Gadget überlagert wird... bisher hatte ich das so gemacht, daß das gadget im Ghosted Fall seinen Inhalt auch wenn er aus Objekten besteht selbe rzu zeichnen in Auftrag gibt und dann gosted und durch den rückgabewert dem system refresh dann mitteilt dass der nicht selber weiter machen soll. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
13.07.2011, 16:26 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung hier nochmal mein aktualisierter SuperRefresh. Er funktioniert, bis darauf, daß alle schwesterwidgets nach einem clippenden widget garnimmer gezeichnet werden. ich müsste irgednwie den clip des parents der schwestern reinstallieren. hat jemand vorschläge oder findet den 'bug' (ich weiss, es ist ein denkfehler drin). asm code:_oxSuperRefresh ; walk down the full tree and draw everything that was changed anew, ; while doing this, do a graphical clipping as the classes prefer ; a0 pointer to calling object, or windowobject STRUCTURE sr,0 UWORD sr_left UWORD sr_top UWORD sr_right UWORD sr_bottom UBYTE sr_flags UBYTE sr_ LABEL sr_SIZEOF BITDEF sr,DRAWING,0 BITDEF sr,DRAWCHILDS,1 BITDEF sr,CLIPPING,2 BITDEF sr,STOP,3 pushm d2-d7/a2/a4/a5/a6 move.l oxO_drawinfo(a0),a4 btst #oxDIB_WINDOWOPEN,oxDI_flags(a4) beq .pop move.l oxDI_window(a4),a1 move.l oxDI_windowobject(a4),a0 ; store window object pointer for install_clip move.l a0,a2 ; init and clear inital drawing and clipping info structure lea -sr_SIZEOF(a7),a7 move.l a7,a5 clr.l sr_left(a5) move.l wd_GZZWidth(a1),sr_right(a5) clr.b sr_flags(a5) movem.w sr_left(a5),d4-d7 bsr .first_member lea sr_SIZEOF(a7),a7 ; remove any clips from layer bclr #oxDIB_CLIPPING,oxDI_flags(a4) bsr remove_clip .pop popm d2-d7/a2/a4/a5/a6 rts .first_member pushm a0/a5 lea -sr_SIZEOF(a7),a7 ; make all childs redrawn move.b sr_flags(a5),sr_flags(a7) bclr #srB_DRAWCHILDS,sr_flags(a5) beq .copy_rect bset #srB_DRAWING,sr_flags(a7) .copy_rect ; movem.w d4-d7,sr_left(a7) move.l sr_left(a5),sr_left(a7) move.l sr_right(a5),sr_right(a7) move.l a7,a5 lea oxO_list(a0),a0 .next_member move.l (a0),a0 tst.l (a0) beq.b .return bclr #srB_DRAWCHILDS,sr_flags(a5) btst #srB_DRAWING,sr_flags(a5) bne .draw btst #oxOB_REFRESH,oxO_flags(a0) beq .clip bset #srB_DRAWCHILDS,sr_flags(a5) .draw bclr #oxOB_REFRESH,oxO_flags(a0) moveq #OXM_DRAW,d1 moveq #0,d2 bsr _oxDoMethod tst.l d0 beq .clip bset #srB_STOP,sr_flags(a5) .clip ; apply clip for childs here ? move.l oxO_class(a0),a1 btst #oxCB_CLIPPING,oxC_flags(a1) beq .check_stop lea -ra_SIZEOF(a7),a7 move.l a7,a1 moveq #OXM_GETCLIP,d1 ; cannot fail bsr _oxDoMethod movem.w (a1),d0-d3 movem.w sr_left(a5),d4-d7 bsr shrink_clip ; for the childs make this as new cliprect movem.w d4-d7,sr_left(a5) movem.w d4-d7,oxDI_cliprect(a4) bset #srB_CLIPPING,sr_flags(a5) bset #oxDIB_CLIPPING,oxDI_flags(a4) pushm a0/a6 bsr install_clip popm a0/a6 lea ra_SIZEOF(a7),a7 .check_stop bclr #srB_STOP,sr_flags(a5) bne .parent_clip bsr .members .parent_clip ; reinstall clip after doing childs in subclip ;movem.w sr_left(a5),d4-d7 ;pushm a0/a6 ;bsr install_clip ;popm a0/a6 bra .next_member .return lea sr_SIZEOF(a7),a7 popm a0/a5 rts .members bsr .first_member moveq #OXM_GETCONTINUE,d1 bsr _oxDoMethod tst.l d0 beq .rts push a0 move.l d0,a0 bsr .first_member pop a0 .rts rts shrink_clip ; shrink box borders to smallest .left cmp.w d4,d0 ble .right move.w d0,d4 .right cmp.w d6,d2 bge .top move.w d2,d6 .top cmp.w d5,d1 ble .bottom move.w d1,d5 .bottom cmp.w d7,d3 bge .rts move.w d3,d7 .rts rts -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
13.07.2011, 10:30 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: > Ich glaube wir reden etwas aneinander vorbei. Daher fragte ich, ob du es mir genau erklären könntest. Also nur wenn du lust hast. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
13.07.2011, 08:03 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Holger: > Darum geht es dabei ja gar nicht. In dem Fall geht es um den Overhead, den kompletten Baum zu traversieren und alle Elemente gegen das ClipRect zu testen. Das tuts garnicht, es werden nur diejenigen elemente nach einem cliprect gefragt, die in der Klasse das CLIPPING-bit gesetzt haben. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
13.07.2011, 07:32 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Was jetzt? IDs von Objekten oder von Attributen und Methoden?Zitat:Vor allem nicht, wenn man sich nicht auf Dauer von einer zentralen Autorität abhängig machen will, die den Range gültiger IDs und deren Bedeutung festlegen soll. Btw, was ist denn Notify oder bessergefragt, wie funktiniert das? Ich habe eine simple "connect" klasse gemacht, die an die broadcastliste eines ojbekts angehängt wird. Und wenn sie ein SetAttr() vom Objekt empfängt kann sie die AttributID in eine andere wandeln und den Attributwert damit an ein Targetobjekt weitersenden. Ich weiss nicht ob das schon Notifiy ist, ich glaube nicht... -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 13.07.2011 um 07:37 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
12.07.2011, 21:16 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Ist für und geht nur mit Assembler. Höchstens C, aber da müsste jemand die header files und so machen. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
12.07.2011, 20:56 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: > die Schnittmenge das geht mit AND -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
12.07.2011, 20:55 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Holger: > Dann muss man keine String-Vergleiche anstellen, sondern lediglich die Adressen der Strings vergleichen, da dann ja gleiche Strings immer auf dieselbe kanonische Instanz zeigen. Mein OXML compiler macht das so ... erzeugt aber eben hardcode. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
12.07.2011, 20:01 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Das ist mein erster implementationsversuch des "SuperRefresh" von oben. Leider werden jetzt auch alle nachfolgenden benachbarten gadgets neu gezeichnet. Ich weis auch warum, sehe aber noch nicht die Lösung. Ich habe ein problem mit der rekursion. Kann jemand helfen? Die Routine soll das geänderte Objekt und nach ihm automatisch alle darunter liegenden objekte neu zeichnen. asm code:--_oxSuperRefresh ; walk down the full tree and draw everything that was changed anew, ; while doing this, do a graphical clipping as the classes prefer ; a0 pointer to calling object, or windowobject STRUCTURE sr,0 UWORD sr_left UWORD sr_top UWORD sr_right UWORD sr_bottom UBYTE sr_flags UBYTE sr_ LABEL sr_SIZEOF BITDEF sr,DRAWING,0 pushm d7/a4/a5 move.l oxO_drawinfo(a0),a0 btst #oxDIB_WINDOWOPEN,oxDI_flags(a0) beq .pop move.l oxDI_window(a0),a1 move.l oxDI_windowobject(a0),a0 ; store window object pointer move.l a0,a4 ; init and clear inital drawing and clipping info structure lea -sr_SIZEOF(a7),a7 move.l a7,a5 clr.l sr_left(a5) move.l wd_GZZWidth(a1),sr_right(a5) clr.b sr_flags(a5) bsr .first_member lea sr_SIZEOF(a7),a7 .pop popm d7/a4/a5 rts .first_member pushm a0/a5 lea -sr_SIZEOF(a7),a7 move.b sr_flags(a5),sr_flags(a7) move.l sr_left(a5),sr_left(a7) move.l sr_right(a5),sr_right(a7) move.l a7,a5 lea oxO_list(a0),a0 .next_member move.l (a0),a0 tst.l (a0) beq.b .return btst #srB_DRAWING,sr_flags(a5) bne .draw btst #oxOB_REFRESH,oxO_flags(a0) beq .members bset #srB_DRAWING,sr_flags(a5) .draw bclr #oxOB_REFRESH,oxO_flags(a0) moveq #OXM_DRAW,d1 moveq #0,d2 bsr _oxDoMethod tst.l d0 bne .next_member ; apply clip for childs here ? .members bsr .first_member moveq #OXM_GETCONTINUE,d1 bsr _oxDoMethod tst.l d0 beq .next_member push a0 move.l d0,a0 bsr .first_member pop a0 bra .next_member .return lea sr_SIZEOF(a7),a7 popm a0/a5 rts Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 20:09 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 20:11 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 20:39 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 20:41 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
12.07.2011, 17:37 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: > Bei "InstallClipRegion()" bekommst du ja die alte Clipregion als Rückgabe Wert. Bevor eine Funktion zurückkehrt, sollte sie natürlich die alte wieder herstellen. Der clip des tabellentitels muß aber die anderen clips zb von views mit berücksichtigen! > Evtl. liegt dein Problem in dem Verständnis der Rekursion? Ich weis nicht ... müsste man das rectangle auf jeder ebene merken, um nebenan trotzdem zeichnen zu können? > Ich versuche das mal zu veranschaulichen, später. Danke, das wäre großartig. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
12.07.2011, 12:07 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Nee, ich meine die "1" wird vom compiler in eine wertvariable umgewandelt und die wird einem attribut zugewiesen. Mein Clipping funktioniert nicht. Könntest du bitte mal schauen ob du mir das noch besser erklären kannst, wie es zB geht? Wenn ich von oben anfange, dann nutzt es mir nix den bereich nur zu verengen, denn wenn dann ein benachbartes view gezeichnet werden soll und der clip schon verengt ist, fällt das benachbarte gadget raus. Und wie macht man es, wenn man zusätzlich zu den system clips temporär einen kleinen userclip installieren will, der zb in einer liste den titel abschneidet, wenn er nicht in die spalte passt? Müsste man da nicht hinterher wieder oben anfangen mit dem verengen der clips? -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 12:08 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 12:25 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
12.07.2011, 09:39 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: > Die ID so eines logischen Events ist in NTUI ein String, den ich Notify nenne. Es ist deshalb ein String, weil ich die GUI komplett in XML definierbar machen möchte. id="1" geht doch auch? Mein schönes clipping funktioniert leider nicht mehr, sobald zwei oder mehr clips verschachtelt sind ... hurz ... -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 12.07.2011 um 09:39 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
11.07.2011, 23:23 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Hmmm, bei mir ist die waitschleife im application objekt, wenn ein envent kommt, sendet es mit Broadcast() eine message den ganzen baum runter (das ist ein DoMethod() auf jedes objekt, der hirarchie nach). die widgets haben dann hooks in denen die funktionen der applikation ausgeführt werden. diese funktionen können mit SetAttr() an den gadgets rumschrauben. wenn dann das broadcast() zur applikation klasse zurück kommt, könnte es statt DRAW ein REFRESH runter senden, da würde dann geschaut werden welche objekte verändert wurden ... auf diese und ihre childs würde dann DRAW gebroadcastet, wobei dann das refresh ab einem veränderten objekt nimmer weiter ab steigen würde, denn das draw hat dann selbst schon alle unterobjekte erreicht. ... so etwa? problem: ein hook, der zum beispiel einen virusscan-task startet, der task soll den progressbar auffrischen. da brauchts dann doch ein direktes refresh ... wie könnte das gehen? dem setattr vom scantask aus ein refresh hinterhersenden? -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
11.07.2011, 22:21 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Was ist das mit dem "Focus", was bedeutet "zur engine zurück kehrt"? -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
11.07.2011, 21:41 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Man könnte einfach auch in den userevent methoden die clips einbauen (systemseitig), dann kann darin ein gadget ein paar linien zeichnen und es wird trotzdem richtig geclippt. Von mir aus auch in SET, dann können attribute gleich richtig refresht werden... > Die meisten Bugs und Programmier-Sünden werden im Namen der Optimierung begangen. das ist allerdings wahr. :-) -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 11.07.2011 um 21:43 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
11.07.2011, 18:46 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Wie 'geht' eigentlich das klippen im system? Ich meine immer, dass es zu lange dauern würde, alle koordinatenm auch von schrägen linien oder kreisen auf die maße der clips zu beschneiden. gibt es eine andere methode? Ich mache ja double-buffering und jede zeichenvorgänge, die nicht in der standard DRAW methode einer klasse erledigt werden, sondern zB in der methode die auf einen click reagiert, jede solche müssen in BeginRefresh() und EndRefresh gekapselt werden (nicht zu verwechseln mit solchen systemfuntkionen). BeginRefresh() schaltet den rastport um und endrefresh kopiert den block des gadgets ins fenster. system sind heute aber so schnell, man könnte immer das ganze fenster kopieren ... ... nun, da ich diese kapselung habe, könnte ich evtl das einschaltet der clips in BeginRefresh() packen ... -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 11.07.2011 um 18:52 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
11.07.2011, 18:28 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Der_Wanderer: Bei mir heisst das einfach nur view, weil das element mit den scrollern dazu diese view benutz. es sind zwei getrennte klassen, von denen die eine die andere benutzt. die scroller selbts sind auch extra klassen, die vom "scrollview" benutzt werden. Ich habe nicht ganz verstanden, bei dir können views in views sein usw? Es wird immer der ganze baum abgewandert beim zeichnen? Wenn ein objekt nur einen teil von sich neu zeichen möchte, zb nur den rahmen eines buttons im geklickten also inversen zustand? was macht ntui dann? Button hier ist nur ein beispiel, es könnten ja komplexere objekte sein, bei denen es sich evtl rentiert nicht alles neu zu zeichnen. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 11.07.2011 um 18:36 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
11.07.2011, 13:47 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @Holger: Richtig, es wandert auch bei mir von oben (vom fenster aus) den baum ab, wenn _alles_ gezeichnet wird. Das Problem besteht darin, wenn ich nur ein einzelnes gadget refreshen will, das in einem von oben geclippten bereicht sich befindet, dann weis dieses gadget erstmal nichts vom clip, müste also evtl nach oben aufsteigend durchfragen ob jemand einen clip hat. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
09.07.2011, 17:44 Uhr [ - Direktlink - ] |
Thema: GUI Markup Language
Brett: Programmierung @Thore: Das Konvertieren von XML zu ASM ist genau das, was mein OXML Compiler jetzt macht. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
09.07.2011, 15:37 Uhr [ - Direktlink - ] |
Thema: GUI Markup Language
Brett: Programmierung @Holger: Ich glaube nicht, daß jemand mein System benutzt blos weil es Schema oder so dtd benutzt. außerdem finde ich meine methode sehr viel überschaubarer und einfacher zum lernen. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
09.07.2011, 15:01 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Hallo, ich möchte evtl eine 'virtual' Klasse schreiben, die den IFrames in HTML entspricht, also geclippte boxen in geclippten boxen und so weiter. Als konzept habe ich mir überlegt, dass jedes objekt im objektebaum einen parent-zeiger hat und wenn sich ein objekt zeichnet, sucht es nach oben das kleinste cliprect. Das kann natürlich das guisystem selbst übernehmen, so dass sich nicht jede klasse eigens darum kümmern muss. aber evtl ist es ein overhead wenn bei jedem zeichnen der ganze höhere baum durchsucht wird? hat jemand eine bessere idee? Andreas -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
18.06.2011, 13:23 Uhr [ - Direktlink - ] |
Thema: GUI Markup Language
Brett: Programmierung Ich habe das Rad neu erfunden und meine bedürfnisse in einem eigenen Programm abgebildet. Unterstützt wird:
hier die gegenwärtige gui testdatei: xml code:<application flags="TEST" relptr="g_app" putptr="g_app_abs" hotkey="f" quitwindow="false" name="oxfilter"> <window title="Memory Monitor" undermouse="TRUE" layout="TRUE" RELPTR="g_pic_window"> <windowmenu popup="false"> <item text="select"></item> </windowmenu> <vertgroup> <title text="bitplane" /> <frame framestyle="BEVEL" hprop="TRUE" vprop="TRUE"> <planeview RELPTR="g_picview" /> </frame> <horizgroup spaceprop="FALSE"> <check senschar="z" RELPTR="g_zoom_check" hook="zoom_checkmark_hook"/> <label text="zoom" linechar="1" /> <button text="Test-Button" /> </horizgroup> <tabs> <tab title="My Tab 1"> <button text="Button on Tab 1" /> </tab> <tab title="My Tab 2"> <button text="Button on Tab 2" /> </tab> </tabs> <menu popup="false" hook="menu_select_hook"> <item text="select option 1" ID="1"> <separator /> <atem taxt="tast"> <saparator /> </atem> <item text ="this is recursive"> <separator /> <atem taxt="tast"> <saparator /> </atem> </item> </item> <separator /> <item text="select option 2" ID="2"> <separator /> </item> </menu> </vertgroup> </window> </application> hier als beispiel die regeldatei für die menu klasse: xml code:<element name="menu" prefix="M"> <attribute name="hook" type="func" /> <element name="separator" short="true"></element> <element name="item" prefix="MI" recursive="true"> <attribute name="text" type="string" /> <attribute name="ID" type="numvar" /> <element name="separator" short="true"></element> <element name="atem"> <attribute name="taxt" type="string" /> <element name="saparator" short="true"></element> </element> </element> <attribute name="popup" type="bool" /> </element> und hier das assembler ergebnis: 68000 assembler code:; OXML Compiler v0.8-15 by Andreas G. Szabo ; silva@psi5.com www.psi5.com/~silva/afilter/ OXCLASSNAME planeview OXCLASSNAME menu .application dc.l oxAA_flags,TEST dc.l OX_RELPTR,g_app dc.l OX_PUTPTR,g_app_abs dc.l oxAA_hotkey,"f" dc.l oxAA_quitwindow,FALSE dc.l oxAA_name,.str dc.l OX_WINDOW,.window dc.l TAG_END .window dc.l oxWA_title,.str1 dc.l oxWA_undermouse,TRUE dc.l oxWA_layout,TRUE dc.l OX_RELPTR,g_pic_window dc.l oxWA_windowmenu,.menu dc.l OX_VERTGROUP,.vertgroup dc.l TAG_END .menu dc.l oxMA_popup,FALSE dc.l oxMA_item,.menu_item dc.l TAG_END .menu_item dc.l oxMIA_text,.str2 dc.l TAG_END .vertgroup dc.l OX_TITLE,.title dc.l OX_FRAME,.frame dc.l OX_HORIZGROUP,.horizgroup dc.l OX_TABS,.tabs dc.l menu,.menu1 dc.l TAG_END .title dc.l oxTA_text,.str3 dc.l TAG_END .frame dc.l oxFrA_framestyle,BEVEL dc.l oxFrA_hprop,TRUE dc.l oxFrA_vprop,TRUE dc.l planeview,.planeview dc.l TAG_END .planeview dc.l OX_RELPTR,g_picview dc.l TAG_END .horizgroup dc.l oxGA_spaceprop,FALSE dc.l OX_CHECK,.check dc.l OX_LABEL,.label dc.l OX_BUTTON,.button dc.l TAG_END .check dc.l oxChkA_senschar,"z" dc.l OX_RELPTR,g_zoom_check dc.l oxChkA_hook,zoom_checkmark_hook dc.l TAG_END .label dc.l oxLabA_text,.str4 dc.l oxLabA_linechar,1 dc.l TAG_END .button dc.l oxBA_text,.str5 dc.l TAG_END .tabs dc.l oxTbA_tab,.tabs_tab dc.l oxTbA_tab,.tabs_tab1 dc.l TAG_END .tabs_tab dc.l oxTbTA_title,.str6 dc.l OX_BUTTON,.button1 dc.l TAG_END .button1 dc.l oxBA_text,.str7 dc.l TAG_END .tabs_tab1 dc.l oxTbTA_title,.str8 dc.l OX_BUTTON,.button2 dc.l TAG_END .button2 dc.l oxBA_text,.str9 dc.l TAG_END .menu1 dc.l oxMA_popup,FALSE dc.l oxMA_hook,menu_select_hook dc.l oxMA_item,.menu_item1 dc.l oxMA_separator,0 dc.l oxMA_item,.menu_item2 dc.l TAG_END .menu_item1 dc.l oxMIA_text,.str10 dc.l oxMIA_ID,1 dc.l oxMIA_separator,0 dc.l oxMIA_atem,.menu_atem dc.l oxMIA_item,.menu_item3 dc.l TAG_END .menu_atem dc.l oxMIA_taxt,.str11 dc.l oxMIA_saparator,0 dc.l TAG_END .menu_item3 dc.l oxMIA_text,.str12 dc.l oxMIA_separator,0 dc.l oxMIA_atem,.menu_atem1 dc.l TAG_END .menu_atem1 dc.l oxMIA_taxt,.str13 dc.l oxMIA_saparator,0 dc.l TAG_END .menu_item2 dc.l oxMIA_text,.str14 dc.l oxMIA_ID,2 dc.l oxMIA_separator,0 dc.l TAG_END .str dc.b "oxfilter",0 .str1 dc.b "Memory Monitor",0 .str2 dc.b "select",0 .str3 dc.b "bitplane",0 .str4 dc.b "zoom",0 .str5 dc.b "Test-Button",0 .str6 dc.b "My Tab 1",0 .str7 dc.b "Button on Tab 1",0 .str8 dc.b "My Tab 2",0 .str9 dc.b "Button on Tab 2",0 .str10 dc.b "select option 1",0 .str11 dc.b "tast",0 .str12 dc.b "this is recursive",0 .str13 dc.b "tast",0 .str14 dc.b "select option 2",0 even zoom_checkmark_hook ; rts menu_select_hook ; rts Ich wage zu bezweifeln dass all dies mit schema oder dtd auch so möglich ist, lasse mich aber gerne eines besseren belehren! ags -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 18.06.2011 um 13:26 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 18.06.2011 um 13:29 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 18.06.2011 um 13:35 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
10.06.2011, 20:09 Uhr [ - Direktlink - ] |
Thema: SAM440 Auflösung?
Brett: Amiga, AmigaOS 4 @ZeroG: OK, habs geändert. Geht nicht. ScreenMode Prefs zeigt für den obigen Modus trotz der Änderung 61 herz an. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
09.06.2011, 18:06 Uhr [ - Direktlink - ] |
Thema: SAM440 Auflösung?
Brett: Amiga, AmigaOS 4 @ZeroG: kommt noch, ich muss erst neu installieren weil nach einer änderung aufs gerate wohl nun garkein bild mehr angezeigt wird. oder gibt es sowas wie einen abgesicherten modus? edit: Oha, ich habe bei der Installation ausgewählt, dass ich 1920x1200@60hz will, ist aber blos nen viel kleineres bild gekommen. jetzt habe ich wieder was größeres einstellen können, aber nicht das gewollte ganz große das zum monitor passt. die angaben die du willst folgen noch. Zitat:-- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 09.06.2011 um 18:56 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
07.06.2011, 17:39 Uhr [ - Direktlink - ] |
Thema: SAM440 Auflösung?
Brett: Amiga, AmigaOS 4 @ZeroG: Da ist ein KVM switch dazwischen, der aber laut hersteller problemlos 1920x1200 kann (das sieht man auch bei der linuxkiste am anderen port) und der laut hersteller das signal das der monitor über sich selbst sendet an beide ports spiegelt, so daß beide computer beim hochfahren den monitor richtig erkennen können. das ist aber nicht das problem, mit der schaltung des switch auf sam das sam zu booten bringt auch keinen besseren screen. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
06.06.2011, 23:16 Uhr [ - Direktlink - ] |
Thema: SAM440 Auflösung?
Brett: Amiga, AmigaOS 4
-- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux [ Dieser Beitrag wurde von AGSzabo am 06.06.2011 um 23:17 Uhr geändert. ] |
|||||
AGSzabo
Nutzer
05.06.2011, 22:06 Uhr [ - Direktlink - ] |
Thema: SAM440 Auflösung?
Brett: Amiga, AmigaOS 4 Mehr als 1680 x 1050 bekomme ich nicht hin. Man sieht sonst nichts mehr. Und 1600 x 1200 gibts nicht. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
03.06.2011, 23:16 Uhr [ - Direktlink - ] |
Thema: GUI Markup Language
Brett: Programmierung @Holger: Ok. Fragen kostet nix. Was genau muß ich lernen und in welcher Reihenfolge? Und steht es mir frei kleine Abwandlungen vor zu nehmen, wenn mit dem gegebenen etwas nicht so möglich ist wie ich es brauche? -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
AGSzabo
Nutzer
03.06.2011, 17:55 Uhr [ - Direktlink - ] |
Thema: GUI Markup Language
Brett: Programmierung @Holger: Du hast vollkommen recht. Aber schau mal: wenn meine Mutter ein Kreutzworträtsel macht, schaut sie dann gleich in der Lösung nach? Und wenn es schon zwei Bibliotheken zum parsen von xml gibt, warum nicht auch noch eine dritte? Klar kann ich den standard nicht erreichen denn mir fehlen Teile (das Wissen). In 68k Assembler zu programmieren und noch tools dafür zu entwickeln ist sowieso eine brotlose kunst. Wen kümmert es da noch, was man macht. So eine konformität zum autocomplete wäre aber nett. Ich weiss leider nicht bescheid. -- Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |