amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Suche [ - Suche - Neue Beiträge - Registrieren - Login - ]

Erste << 9 10 11 12 13 -14- 15 16 17 18 19 >> Letzte Ergebnisse der Suche: 1662 Treffer (30 pro Seite)
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:
Zitat:
Zumindest nicht, wenn man sich nicht auf eine Programmiersprache, für die man z.b. Headerdateien erzeugt, festlegen will.
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.
Was jetzt? IDs von Objekten oder von Attributen und Methoden?

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:

  • xml parser mit kommentaren, &...; specialchars syntax- und wohlgeformtheitsprüfung, alles case sensitiv
  • Gui als xml datei
  • Regeln-Dateien im xml format, eine pro klasse und eine globale, dazu überprüfung der einhaltung der regeln
  • tagnamen-prefixe
  • oxmaster interne und auch externe klassen
  • beliebige echtklassen-objekte als childs an beliebige objekte, sofern kombination vom gui-toolkit unterstützt
  • klassenprivate sub-elemente wie zB Item im Menu, dazu namespaces weil das item im menu etwas anderes ist als das item in einer liste zB
  • beliebige objekte als attribut an echtklassen-objekte, zB menu-klasse als oxWinA_winmenu importieren
  • sprechende labels
  • alle strings durchnummeriert ans ende
  • generierung include-zeilen für externe klassen
  • generierung vom funktionslabels (mit rts) für hooks
  • rekursive kapselung, zB item im menu und item im item
  • im moment aber KEINE möglichkeit ein klassenprivates subelement an anderer stelle als unter sich selbst (rekursiv) nochmal zu erzeugen, als workaround muss das unterelement da nochmal definiert sein wo es nochmal vorkommen können soll (außer bei unter sich selbst)


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:
msr = 0x00001030
[keybdevLIBInit] LibInit of keyboard device
Scanning bus 'dvi'
0000: 00 FF FF FF FF FF FF 00 38 A3 4F 67 01 01 01 01 ........8.Og....
0010: 03 15 01 03 80 34 20 78 EA 9E F5 A6 56 4B 9A 25 .....4.x....VK.%
0020: 12 50 54 BF EF 80 81 C0 81 80 90 40 8B C0 95 00 .PT........@....
0030: A9 40 B3 00 D1 00 28 3C 80 A0 70 B0 23 40 30 20 .@....(<..p.#@0.
0040: 36 00 06 44 21 00 00 1A 00 00 00 FD 00 32 4C 1A 6..D!........2L.
0050: 52 11 00 0A 20 20 20 20 20 20 00 00 00 FC 00 45 R..............E
0060: 41 32 34 31 57 4D 0A 20 20 20 20 20 00 00 00 FF A241WM..........
0070: 00 31 31 31 33 33 31 30 31 4E 41 0A 20 20 01 A4 .11133101NA.....
EDID V1.3
ManufacturerID NEC ProductID 674F
SerialNo 16843009 Manufactured week 3 of 2011
Input type digital
Display gamma 2.20
Maximum Image Size 52x32cm
PowerManagement Standby yes Suspend yes ActiveOff yes
Monitor Name EA241WM
Serial Number 11133101NA

Established timings:
800x600@60
800x600@56
640x480@75
640x480@72
640x480@67
640x480@60
720x400@70
1280x1024@75
1024x768@75
1024x768@70
1024x768@60
832x624@75
800x600@75
800x600@72

Standard Timing Identification:
1280x720@60hz (16:9)
1280x1024@60hz (5:4)
1400x1050@60hz (4:3)
Not Found: 1400x1050@60hz (4:3) - calling CVT(RB=0)
1360x765@60hz (16:9)
Not Found: 1360x765@60hz (16:9) - calling CVT(RB=1)
1440x900@60hz (16:10)
Not Found: 1440x900@60hz (16:10) - calling CVT(RB=1)
1600x1200@60hz (4:3)
1680x1050@60hz (16:10)
Not Found: 1680x1050@60hz (16:10) - calling CVT(RB=1)
1920x1200@60hz (16:10)
Not Found: 1920x1200@60hz (16:10) - calling CVT(RB=1)

Mode 1920x1200@60hz 74khz
DotClock 154000000hz
HTimings 1920 1968 2000 2080
VTimings 1200 1203 1209 1235
Image Size 518x324mm
Flags progressive +hsync -vsync

Monitor Range Limits:
Horizontal frequency 26 - 82khz
Vertical frequency 50 - 76hz
Pixelclock 170Mhz
it8212ide.device 53.3 (05.02.2009)
lsi53c8xx.device 53.3 (05.02.2009)
sii0680ide.device 53.3 (05.02.2009)
sii3112ide.device 53.3 (05.02.2009)
sii3114ide.device 53.3 (05.02.2009)
sii3512ide.device 53.3 (05.02.2009)
No cards found! :-(
No SOLO_ONE found! :-(
No SB128 found! :-(
No FM801 found! :-(
No Envy24HT found! :-(
No Envy24 found! :-(
No CMI8738 found! :-

--
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
 
 
Erste << 9 10 11 12 13 -14- 15 16 17 18 19 >> Letzte Ergebnisse der Suche: 1662 Treffer (30 pro Seite)

Suchbegriffe
Schlüsselwörter      Benutzername
Suchoptionen
Nur in diesen Foren suchen
   nur ganze Wörter
Nur Titel anzeigen
alle Treffer anzeigen

.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.