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

24.06.2011, 12:08 Uhr

[ - Direktlink - ]
Thema: Probleme mit YAM 2.6p1
Brett: Amiga, AmigaOS 4

Zitat:
Original von tboeckel:
Wie ist denn die Vorauswahl bei dir eingestellt (Konfig -> Neue Post -> Vorauswahl)? Steht das eventuell auf "immer, nur Grössen"?

Eingestellt ist "Immer". Aber es kommen nur die Größen und der Status. Wenn ich alle Mails markiere und auf runterladen klicke, passiert auch kein Transfer, nur das Briefumschlag-Icon neben dem Disketten-Icon jeder Mail verschwindet (habs auch nochmal mit der AOS3.9-Installation getestet, dort ist es nun auch genau so).

Zitat:
Original von tboeckel:
Ganz generell: YAM hat eine Homepage, ein Forum und einen Bugtracker. Fragen in einem öffentlichem Forum wie diesem können und werden wir niemandem verbieten, aber es ist sehr wahrscheinlich, daß wir (die Entwickler) solche Fragen leicht übersehen. Der direkte Weg ist da etwas erfolgsversprechender und direkter.

Danke! Werds dort als Nächstes versuchen!


Zitat:
Original von Holger:
Ich kann nichts zu der von Dir verwendeten Version sagen, kenne das Verhalten aber auch schon von der Version 2.4. Es tritt nur auf, wenn die Verbindung sehr langsam ist und/oder der Posteingang sehr voll ist. Letzteres scheint ja bei Dir offensichtlich der Fall zu sein.

Dabei werden die Absender und Betreffs sehr wohl angezeigt, nur mit einer seeeehr großen Verzögerung. Wenn es sich bei Dir um dasselbe Phänomen handelt, muss Du also nur lange genug warten, bis die Informationen erscheinen. Hat allerdings den Nachteil, dass dann u.U. schon ein timeout kommt, wenn Du dann noch eine Download-Vorauswahl treffen willst.

Ja, das Verhalten kannte ich von früher auch schon, wenn es mal viele Mails waren. Warte aber nun schon seit ca. 2h auf Aktualisierung bei DSL16000 Flatrate (Downstream ca. 15,xyMBit/s - keine laufenden Downloads etc.).
 
Reth   Nutzer

21.06.2011, 19:28 Uhr

[ - Direktlink - ]
Thema: Probleme mit YAM 2.6p1
Brett: Amiga, AmigaOS 4

Hallo zusammen,

gestern wollte ich seit einigen Jahren mal wieder YAM (2.6p1 AOS4 Version) nutzen, um E-Mails von GMX herunter zu laden. Dazu habe ich mir alle Einstellungen meiner 3.x-YAM-Installation nach AOS4 kopiert und entsprechend angepasst. Die Postfächer und Ordner stimmten alle noch, ebenso die GMX-Daten.

Leider ist mein GMX-Postfach schon so voll, dass seitens GMX die Mails in 2 Ordner aufgeteilt wurden. Dazu meine Frage: Kann ich in YAM irgendwo angeben, von wo die Mails bei GMX abgerufen werden (normal holt sich YAM den Ordner Posteingang - das kann ich aber nirgends einstellen! Bräuchte die Mails aus Posteingang-01!)? Habe keine Einstellmöglichkeit dafür gefunden.

Die zweite Frage bezieht sich auf das Verhalten von YAM beim Postaustausch. Beim Abruf der Mails werden nur noch die Größen angezeigt. Datum und Betreff aber nicht. Dies war meines Wissens früher (68k 2.5 Dev-Version 68060) anders! Kann man das irgendwie beeinflussen? Möchte nämlich zunächst nur die ältesten Mails abrufen.

Weiss hierzu jmd. Rat?

Dank euch schon mal!

Ciao
 
Reth   Nutzer

08.05.2011, 23:00 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:

Finde ich auch gut so. Hatte gerade viele Antwortzeilen geschrieben aber nicht abgeschickt, da dies nicht mehr Thema dieses Threads ist.
Würde gern einen neuen aufmachen, fürchte aber, das eine ggf. entstehende Diskussion u.U. weniger konstruktiv ausfallen könnte!
 
Reth   Nutzer

08.05.2011, 18:09 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Holger:
Mit Hollywood gibt es ja sogar eine.
Allerdings ist diese halt kommerziell.

Habe mich damit noch nicht beschäftigt, auch noch nicht mit den SDKs für AOS4 und MOS bzw. den Möglichkeiten, die AROS hier bietet.

Sind denn die "Executables" von Hollywood auch performant und leistungsfähig genug z.B. für echte 68060er oder gar 68040er?
 
Reth   Nutzer

06.05.2011, 17:30 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Holger:
Moment mal.
Wie oft soll ich eigentlich noch sagen, dass alles, was Du tust, zwischen BeginRefresh und EndRefresh passieren soll?

Insofern möchte ich nie wieder etwas von nach EndRefresh hören.

Ja, Herr Lehrer! Mein Fehler! Hast ja recht und soll auch nicht passieren!

Zitat:
Original von Holger:
Aber trotzdem möchte ich noch mal für die Akten festhalten, dass das Installieren einer Clipping-Region weder die Damage-Liste verändert, noch das Damage-Flag setzt.

Danke! Das wollte ich wissen und es hilft weiter!

Aber mal OT für alle:
So interessant und hilfreich die ganze Diskussion ist (und ich bin Dir überaus dankbar für Deine/eure Hilfe), zeigt sie doch auch ein großes Manko bei der Programmierung von AOS: Man muss das System ja fast auswendig kennen, um vernünftig dafür programmieren zu können. Das ist in der heutigen Zeit ein sehr großer Nachteil in meinen Augen, da Entwickler für alle neueren Systeme doch einfach nur ihre Ideen umsetzen wollen, ohne das ganze System dafür in- und auswendig kennen zu müssen (wiederhole hier mal nen Teil, den jmd. schon in nem anderen Thread gepostet hat)!

Dem AOS fehlt eine vernünftige, einfach zu nutzende High-Level-API (die einzig Vergleichbare, die ich hier kenne ist die von Java, speziell 1.4 - einfach, intuitiv, leicht erlernbar und leicht bedienbar; man kann sich auf das Problem konzentrieren und muss sich nicht mit der "Infrastruktur" herumplagen! So lange das nicht behoben ist, wird es mit neuer Software eher schlechter werden als besser!)
Meine Meinung dazu!
 
Reth   Nutzer

05.05.2011, 23:53 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Holger:
Zitat:
Original von Reth:
Die Frage war nur, ob ich zu meiner eigenen ClippingRegion die Bereiche der Original-ClippingRegion hinzufügen muss oder nicht, bevor ich meine Objekte aktualisiere?

Ja, Du willst ja sowohl die Bereiche, die sich aus der Anwendungslogik her verändert haben, als auch die Bereiche, die "beschädigt" wurden, aktualisieren. Das heißt, Du nimmst eine Oder-Verknüpfung vor.
Aber wenn ich in diesem Fall die OriginalRegion nach EndRefresh wieder herstelle, wird dann nicht auch wieder das Damage-Flag gesetzt und die in dieser alten Region enthaltenen Bereiche ebenfalls wieder als beschädigt angesehen? Damit wäre doch einiges umsonst gewesen und die Katze beißt sich ein bisschen in den eigenen Schwanz, oder?
 
Reth   Nutzer

04.05.2011, 23:15 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:

Danke!
Zitat:
Original von Holger:
Zitat:
Für das Herstellen des Originalzustandes: Ich hatte verstanden meine Bereiche mit der alten ClipRegion zu verknüpfen, muss diese Originalregion aber am Schluss wieder herstellen.
Ist dies denn überhaupt sinnvoll, oder merke ich mir nur die alte ClipRegion nach BeginRefresh, aktualisiere dann meine Bereiche mit einer eigenen, neuen ClipRegion und stelle die Original-ClipRegion vor EndRefresh wieder her?

Letzteres.
Vor BeginRefresh besitzt der Layer ja noch gar keine ClippingRegion. Erst der Aufruf von BeginRefresh macht ja aus der bisherigen Damage-Liste die zugehörige Clipping-Region. Dann kannst Du diese manipulieren, musst natürlich vor EndRefresh den alten Zustand wiederherstellen.

Aber mit der unter "Letzteres" genannten Lösung manipuliere ich ja die ClippingRegion nicht, sondern installiere meine eigene, die ich aus allen zu aktualisierenden Bereichen ermittle. Dann werden alle Objekte neu gezeichnet und abschließend wird die bei BeginRefresh erzeugte originale ClippingRegion wieder installiert. Oder hab ich das falsch verstanden?
Die Frage war nur, ob ich zu meiner eigenen ClippingRegion die Bereiche der Original-ClippingRegion hinzufügen muss oder nicht, bevor ich meine Objekte aktualisiere?
 
Reth   Nutzer

04.05.2011, 21:24 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:

Wenn wir gerade beim Thema sind, und weil ich auch gerade die Refreshmethoden in meine Windowklasse einbaue:

Was ist denn mit den folgenden Funktionen:
C code:
RefreshGadgets() und GT_RefreshWindow()

?

Nach meinem Verständnis brauch ich die 2. nach dem initialen Hinzufügen von Gadgets zu einem Fenster, um die Gadgets anzuzeigen. Die erste Funktion benötige ich immer dann, wenn ich denke, dass die Gadgets refreshed werden müssen, oder wenn ich Gadgets verändert habe und deswegen aktualisieren will.
Passt das soweit?

Nach diesem Verständnis würde ich dann RefreshGadgets auch immer zwischen BeginRefresh und EndRefresh rufen, sobald ich eine Refresh-Message bekommen habe. Korrekt?

Und noch eine Frage dazu:
Zitat:
Original von Holger:
Egal, in welcher Reihenfolge die Verarbeitung im Code steht, wirst Du die Events in der Reihenfolge verarbeiten, wie Du sie empfängst.

Das ist aber überhaupt kein Problem. Jeder Layer hat ein Flag, das besagt, ob Damage vorhanden ist und das bei EndRefresh(...,TRUE) zurückgesetzt wird. Wenn Du eine Refresh-Message bekommst, das Flag aber nicht gesetzt ist, dann weißt Du, dass Du zwischen der Ursache und dem Empfang schon einen Maus oder Timer getriggerten Refresh durchgeführt hast und die Message ignorieren kannst.

Wenn ich nach getaner Arbeit den Originalzustand der ClippingRegion wieder herstelle, verursache ich damit nicht "neuen Damage" und komme so in einen "Teufelskreis"?

Für das Herstellen des Originalzustandes: Ich hatte verstanden meine Bereiche mit der alten ClipRegion zu verknüpfen, muss diese Originalregion aber am Schluss wieder herstellen.
Ist dies denn überhaupt sinnvoll, oder merke ich mir nur die alte ClipRegion nach BeginRefresh, aktualisiere dann meine Bereiche mit einer eigenen, neuen ClipRegion und stelle die Original-ClipRegion vor EndRefresh wieder her?
 
Reth   Nutzer

29.04.2011, 23:35 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:
Bin gerade über
C code:
GT_BeginRefresh(), GT_EndRefresh() und GT_RefreshWindow()

gestolpert.

Letzteres nutze ich schon, da ich Gadtools Gadgets verwende. So wie ich die Beschreibung verstehe, dient diese Funktion aber nur dem Aktualisieren der Gadgets.

Sollte ich in meinem Fall dann besser GT_BeginRefresh() und GT_EndRefresh() verwenden, auch wenn ich meine Gadgets gar nicht mehr aktualisieren muss? Oder spielt das hier keine Rolle und ich kann BeginRefresh() bzw. EndRefresh() verwenden?

Habe auch gerade gesehen, dass ich WFLG_NOCAREREFRESH mit Gadtools gar nicht verwenden darf/soll. Hatte damit bisher aber keine Probleme!
 
Reth   Nutzer

24.04.2011, 20:47 Uhr

[ - Direktlink - ]
Thema: Amiforce.de noch am Leben?
Brett: Amiga, AmigaOS 4

Zitat:
Original von Maverik:
Geht doch ?( ?(


Was geht (und wie)? Beim Absenden des Kontaktformulars kam besagte Fehlerseite, beim Mailen an die Webmaster-Adresse habe ich ne Fehlermeldung vom Mailer-Demon bekommen (kann ich auch gern posten).
 
Reth   Nutzer

24.04.2011, 01:07 Uhr

[ - Direktlink - ]
Thema: Amiforce.de noch am Leben?
Brett: Amiga, AmigaOS 4

Hallo zusammen,

hab ich was verpasst, oder ist die Seite noch offiziell in Betrieb?

Erreichbar ist sie, und ich konnte auch überall innerhalb der Seite hinsurfen. Allerdings funktionieren weder das Kontaktformular noch die Webmaster-Mailadresse!

Weiss denn jemand, wie da der Stand ist?

Danke schon mal!

Ciao
 
Reth   Nutzer

17.04.2011, 13:02 Uhr

[ - Direktlink - ]
Thema: Jabberaccount mit Jabberwocky einrichten
Brett: Amiga, AmigaOS 4

@Tomcat:

Ja, hatte die Antwort damals gar nicht mehr geschrieben! Über den jabber.earth.li server gibt es transports für Vieles! Darunter MSN, hab meinen Account entsprechend der Syntax eingetragen und scheint zu gehen (habe die letzten Monate/Jahre nicht mehr gechattet).
 
Reth   Nutzer

16.04.2011, 21:53 Uhr

[ - Direktlink - ]
Thema: Jabberaccount mit Jabberwocky einrichten
Brett: Amiga, AmigaOS 4

Zitat:
Original von Tomcat:
Ich habe bei jabber.earth.li mein Konto, da gebe ich beim ICQ-Transport meine UIN und das Passwort ein, das sind 2 Felder. Was du da beschreibst, ist der IRC-Transport, nicht ICQ.


Nun wärm ich das mal aus gegebenem Anlass wieder auf:

Weiss denn jmd., was ich bei JabberWocky wo eintragen muss, um an einem IRC teilnehmen zu können? In der Anleitung und im Web bin ich noch nicht fündig geworden!
Als Agent wird bei mir der IRC Transport gelistet, in der Spalte registriert steht ein Ja.

Wie kann ich denn nun am IRC teilnehmen, bzw. wo kann ich Server, Channel, Port etc. angeben?

Danke schon mal!

Ciao
 
Reth   Nutzer

15.04.2011, 22:56 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:
Danke fürs Antworten!

Zitat:
Original von Holger:
Da für reine Layer, die nicht zu einem Fenster gehören, keine solchen Alternativen zur Verfügung stehen, können diese eben nicht systemkonform mit Fenstern vermischt werden.

Wann und warum kann ich denn dann überhaupt reine Layer ohne Fenster benutzen (sprich was wäre denn ein gutes Beispiel)?
Zitat:
Original von Holger:
Etwas anderes sind Operationen, die ausschließlich den Layer Deines Fensters betreffen. Wenn Du also Scroll-Operationen innerhalb Deines Fensters durchführst, erhältst Du u.U. Damage in Deinem Layer, aber Du weißt ja, dass Du diese Operation durchgeführt hast, kannst also im direkten Anschluss das Damage Bit überprüfen und, wenn nötig, einen Refresh durchführen.

Kann ich denn Scrolloperationen im eigenen Fenster durchführen, ohne Schaden anzurichten (nur mit Clipping, oder)?
Zitat:
Original von Holger:
Der Refresh-Modus eines Fensters ist immer simple, smart oder super-bitmap.

Und welcher ist es, wenn ich nichts angebe?
Zitat:
Original von Holger:
Die Größe Deiner Zeichenfläche ist die Größe des Fensters abzüglich des Rahmens. Wenn Du GZZ-Fenster benutzt, ist die Zeichenfläche identisch mit der Größe Deines Layers

Dann kann ich die Dimension der "bezeichenbaren Fläche" eines RastPorts nie ermitteln, ich muss immer die Dimension des Fensters und die Angabe GZZ ja/nein kennen, wenn ich die Dimension der "bezeichenbare Fläche" wissen will?
 
Reth   Nutzer

10.04.2011, 23:21 Uhr

[ - Direktlink - ]
Thema: Gigabit Ethernet unter AOS4.1 auf PegII?
Brett: Amiga, AmigaOS 4

Hallo zusammen,

nun muss ich mal danach fragen (ist vielleicht an mir vorbei gegangen): Geht das denn? Kann ich den Gigabit-Ethernet-Adapter mit voller Bandbreite nutzen? Muss ich dazu was Besonderes konfigurieren?

Vielen Dank schon mal!

Ciao
 
Reth   Nutzer

10.04.2011, 14:29 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:

Jetzt noch ne Frage:

Woher bekomme ich denn bei einer nicht von mir verursachten Refresh-Message mit, welche Bereiche denn betroffen sind, so dass ich sie zur Clipping Region hinzufügen kann?

Nach meinem Verständnis von
C code:
InstallClipRegion()

wären diese Bereiche in der ClipRegion, die von dieser Funktion zurückgegeben wird, oder?

D.h., ich würde:
  • BeginRefresh rufen
  • InstallClipRegion rufen
  • mir die zurückgegebene Region merken
  • meine zu aktualisierenden Bereiche zu dieser alten Region hinzu-ODERn
  • wieder InstallClipRegion mit dieser neu ermittelten Region rufen
  • alles blitten
  • die alte gemerkte Region wieder installieren
  • EndRefresh rufen
Kommt das ungefähr so hin? Oder läuft das Ganze anders? Die bisher hier im Thread beschriebenen Abläufe habe ich nur auf die Situationen bezogen, bei denen ich selbst einen Refresh ausführen möchte, z.B. nach Änderungen, die sich auch auf die Grafik auswirken, so dass Teile neu geblittet werden müssen, dann brauch ich ja auch "nur" meine Bereiche beim Erstellen der Clipping-Region berücksichtigen. Wobei der allgemeine Ablauf (also so, als ob auch schon Bereich betroffen sind, bei denen ich nicht Refresh-Verursacher bin) wohl für eine einheitliche Bearbeitung am sinnvollsten wäre.

Zu dem Thema hier:
Zitat:
Original von Holger:
Mit ScrollRasterBF kannst Du denselben Effekt innerhalb Deines primären Layers (Fensters) erreichen und sofort im Anschluss den nötigen Refresh ohne Zeitverzögerung durchführen.

ist mir immer nocht nicht ganz klar, wann ich denn nun direkt mit Layern hantiere (bzw. hantieren darf) und wann nicht? Verstanden habe ich bisher, wenn ich ein Fenster habe, Hände weg von Layern. Aber wieso? Und wann kann/sollte ich denn Layer benutzen?

Zum Thema Refresh: Wenn das Fenster kein "NOCAREREFRESH" angegeben hat, ist es dann automatisch im SIMPLEREFRESH oder SMARTREFRESH Modus, wenn nichts angegeben wird?

Und noch eine Frage: Kann ich bei einem RastPort eines Fensters immer davon ausgehen, dass er eine gültige BitMap enthält? Gibt mir diese die Dimension der Zeichenfläche im RastPort an (z.b. für Koordinaten + Abmessungen für EraseRect, so dass ich nicht an Stellen des RastPorts komme, die ggf. außerhalb der Zeichenfläche liegen)?

[ Dieser Beitrag wurde von Reth am 14.04.2011 um 22:49 Uhr geändert. ]
 
Reth   Nutzer

06.04.2011, 22:54 Uhr

[ - Direktlink - ]
Thema: Dokumentation von Systemzusammenhängen
Brett: Programmierung

Zitat:
Original von Holger:
Ja klar, aber Du hattest die Frage angesprochen, ob die RastPort-Klasse Methoden anbietet, die an die BitMap delegieren.
...
Und da es momentan eher so aussieht, als ob Du die Blit-Funktionen auf BitMap überhaupt nicht brauchst, lass sie doch einfach weg.

Das werde ich auch erst einmal. Allerdings möchte ich gern einen möglichst guten strukturellen Ansatz finden.

Eine weitere Überlegung von mir dazu ist z.B. eine BitMap-Klasse mit zwei Blit-Methoden auszustatten. Eine fürs Blitten des jew. BitMap-Objektes in einen RastPort und eine fürs Blitten in eine andere BitMap.

Aktuell habe ich die struct BitMap in einer Frame-Klasse gekapselt, die etwas profan Breite und Höhe, sowie Daten für das Bild und eine Maske im Konstruktor mitbekommt (zusätzlich kann eine FriendBitMap übergeben werden, für das Alignment usw.).
Über Getter sind die Breite, Höhe, Maske, Daten und die BitMap zugänglich. Die RastPort-Klasse kann Frames an eine X-/Y-Position blitten und nutzt dafür die Getter für Breite, Höhe, BitMap und Maske der BitMap, indem intern dann BltBitMapRastPort bzw. BltMaskBitMapRastPort aufgerufen wird (eine Übergabe von Mintermen hab ich derzeit nicht).
 
Reth   Nutzer

06.04.2011, 19:22 Uhr

[ - Direktlink - ]
Thema: Dokumentation von Systemzusammenhängen
Brett: Programmierung

Zitat:
Original von Holger:
Ja, man könnte natürlich eine Abstraktion der Art "Blit-Ziel" machen, um dann bestimmte Funktionen von der Frage, ob sie in einen RastPort oder direkt in eine BitMap blitten, zu entkoppeln.
Die Frage, die Du Dir dabei stellen solltest, ist: brauchst Du diese Möglichkeit?

Derzeit nicht, da ich nur im RastPort blitte. Die BitMaps, die meine Grafiken enthalten werden nicht "beblittet".

Zitat:
Original von Holger:
Und wenn man versucht, Eindeutigkeit beispielsweise über den Namen zu erzielen, sind die Funktionen auch nicht mehr komfortabler, als beispielsweise, rastport->bitMap->blit statt rastport->bitMapDirectBlit zu schreiben.

Der zweite Fall wäre ja auch nicht so sinnvoll, da diese Methode eine der BitMap-Klasse sein würde (zumindest nach meiner Ansicht).
BltBitMapRastPort (auch mit Maske) für die RastPort-Klasse, BltBitMap (auch mit Maske) für die BitMap-Klasse (so mal die Idee).
 
Reth   Nutzer

05.04.2011, 19:01 Uhr

[ - Direktlink - ]
Thema: Dokumentation von Systemzusammenhängen
Brett: Programmierung

Zitat:
Original von Holger:
Natürlich. RastPort hat eine BitMap, aber RastPort ist keine BitMap.

Das ist klar. Es gibt ja aber noch andere Konzepte, wie z.B. Interfaces oder Templates, die hier ne Rolle spielen könnten und bei denen ich nicht sicher bin, ob sie genutzt werden könnten.

Zitat:
Original von Holger:
Dafür sind die Operationen sinnvoll, aber von brauchen würde ich nicht reden. Schließlich kann man auch für Offscreen-BitMaps RastPorts anlegen.

Deine Tendenz wäre dann eher, die BitMap-Blitoperationen wegzulassen, oder höchtens der Vollständigkeit halber anzubieten?

Für die Zuordnung der Operationen hab ich bei den RastPort-Blitoperationen meine RastPort-Klasse genommen und ihr (bisher nur eine) BlitMethode verpasst.

Die BitMap-Blitfunktionen kämen dann bei mir an eine BitMap-Klasse. Bisher hatte ich mich gefragt, ob ich eine BitMap-BlitMethode für die BitMap eines RastPort-Objektes aufrufen muss, wenn die BlitMethode des RastPort-Objektes gerufen wurde (also delegieren). Nachdem, was Du (Holger) aber oben angeführt hast sind das wirklich zwei Paar getrennte Schuhe!
 
Reth   Nutzer

04.04.2011, 23:19 Uhr

[ - Direktlink - ]
Thema: Dokumentation von Systemzusammenhängen
Brett: Programmierung

@Thomas:
Danke!

Zitat:
Original von Holger:
Der RastPort ist im Grunde genau das, was die Graphics-Klasse in Java/AWT ist

So ungefähr hatte ich das auch aufgefasst!

Zitat:
Original von Holger:
Für Raster-Grafiken ist das Prinzip ebenfalls ähnlich: man kann sie auch auf einer niedrigeren Ebene verarbeiten, da die meisten Kontext-Attribute keine Auswirkungen haben.

...

Ein wichtiges Feature, das einen RastPort benötigt, ist das Clipping. Die BitMap-Struktur hat keine Referenz auf den Layer, d.h. alle Blit-Operationen, die auf BitMaps arbeiten, ignorieren die Layer-Constraints, während alle RastPort-Operationen den Layer respektieren, wenn der zugehörige Eintrag im rp nicht null ist.

Diesbezüglich hatte ich auch gedacht, in welcher Beziehung die beiden wohl stehen, damit man die Operationen fürs Blitten irgendwie mit OO- (z.B. Vererbung) und/oder C++-Konzepten (z.B. Templates) an RastPort und BitMap bringen kann. Da ist mir noch nichts eingefallen.
Vielleicht sollten beide eigene, unabhängige Blitoperationen bekommen, und als Klassen unabhängig voneinander bleiben.

Zitat:
Original von Holger:
Deshalb müssen systemkonforme Blits bei der Verwendung von Fenstern immer im RastPort erfolgen, es sei denn, man lockt die Layer und a) clipt selber oder b) hat vorher überprüft, dass es keine Überlappungen gibt. Das ist aber nur dann sinnvoll, wenn man sehr viele Blit-Operationen durchführen will.

Allerdings kann man das BitMap-Blitting ja offscreen verwenden, wenn man z.B. seine Grafiken manipulieren will. Dann bräuchte man auch die Blitoperationen auf den BitMaps direkt.
 
Reth   Nutzer

03.04.2011, 20:59 Uhr

[ - Direktlink - ]
Thema: Dokumentation von Systemzusammenhängen
Brett: Programmierung

Hallo zusammen,

leider fällt mir kein besserer Titel ein.

Derzeit arbeite ich immer noch an meinem Spiel mit AmigaOS-Funktionen, nutze allerdings C++. Da ich kein Framework o.ä. nutzen möchte, für mich aber die AOS-Funktionen "möglichst gut" in Klassen stecken möchte, bin ich gerade auf der Suche nach Hintergrund-Infos, darüber, wie die einzelnen Elemente des AmigaOS so zusammen arbeiten.

Konkret möchte ich gerade am Liebsten alle grafischen Funktionen in einer Klasse kapseln (ähnlich der Graphics-Klasse in Java). Allerdings verstehe ich den Zusammenhang zw. den wenigen Funktionen, die ich fürs Blitten nutze noch nicht: BltBitMap und BltBitMapRastPort (mit und ohne Maske) und auch das Zusammenspiel zw. RastPort und BitMap (nach meinem Verständnis hat jeder RastPort ne BitMap, in die dargestellt wird). Wird bei BltBitMapRastPort intern auch wieder in die BitMap des RastPorts geblittet?

Das Amiga Intern und das Profi KnowHow habe ich, ebenso die Developer CD 1.2. Bei den Büchern bin ich bisher leider noch nicht auf die Erläuterung der Zusammenhänge gestoßen, die ich so suche (also wie arbeiten die einzelnen Systembestandteile [Window, Layer, Intuition, Graphics und v.a. RastPort und BitMap) zusammen und was wird wofür genutzt). Einige Sachen auf höherer Ebene haben sich mir schon erschlossen, aber der Rest noch nicht, v.a. das Zusammenspiel bei RastPort und BitMap und den dazugehörenden Funktionen).

Einen guten Anhaltspunkt für eine Kapselung hat mir z.B. schon AFrame gegeben (wie gesagt, will kein Framework nehmen und keins selbst bauen, nutze aber gern Anregungen). Bin aber für weitere Hinweise auf Material, Bücher usw. dankbar!

So, mords Text für ein einfaches Anliegen! Hoffe, ich konnte es rüberbringen. Die erste Detailfrage ist wie gesagt der Zusammenhang zw. RastPort und BitMap und den damit verbundenen Blitfunktionen. Werde den Thread wohl aber auch für weitere Fragen zu dem Thema nutzen.

Danke schon mal vorab!

Ciao
 
Reth   Nutzer

25.03.2011, 14:41 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:

Danke nochmal für Deine Hilfe. Jetzt steht mir "nur" noch mein Design im Weg (s. a. meine anderen Threads dazu). Derzeit hab ich das Message-Handling komplett in meiner Window-Klasse und die "Abnehmer" (also die, welche über aufgetretene Ereignisse informiert werden möchten) werden alle über eine parameterlose Methode angetriggert. Für den Refresh muss ich aber das Fenster (oder zumindest dessen Rastport) an die Klasse übergeben, die den Refresh durchführt (bisher hab ich nen Zeiger auf den RastPort in jedem darzustellenden Objekt liegen, da gehört er aber nicht hin)! Muss ich mal knobeln, wie ich das nun am besten designe bei meiner bestehenden Klassenkonstellation - hab zwar schon ein paar Ansätze, aber noch nichts konkretes!

Da ich das Ganze auch in C++ mache, um in die Sprache reinzukommen, hab ich damit gerade z.T. doppelt Probleme.

Z.B. versuche ich soviel Konstantes wie möglich zu machen (hatte ich als Empfehlung zu C++ so verstanden). Aber an den Schnittstellen zwischen den Systemfunktionen und -komponenten und meinen Klassen hab ich so meine Probleme, wie bei der Übergabe von BitMaps, die Grafiken enthalten. Diese sind in Frame-Klassen gekapselt. Wenn ich allerdings ein Frameobjekt blitten möchte, muss ich dessen BitMap nach außen geben, um sie z.B. in BltBitMapRastPort. Da die Funktion aber eine nicht-konstante BitMap erwartet kann ich diese in der Frame-Klasse nicht als const bzw. als const-pointer auf const zurückgeben.

Zudem bin ich mir immer noch unschlüssig, wie ich die animierten Grafikklassen designe. Derzeit bekommt jedes Objekt den RastPort im Konstruktor mit, auf dem es sich darstellen/entfernen können soll (wobei dann die Blitoperation meiner RastPort-Klasse dafür gerufen und dabei der aktuelle Frame übergeben wird). Allerdings finde ich das nicht mehr so sinnvoll, da sich die Objekte theoretisch ja in unterschiedlichen RastPorts gleichzeitig anzeigen lassen könnten (auch wenn es evtl. an praktischen Hintergründen fehlt)!

Insgesamt bin ich mir auch nicht ganz klar darüber, wo ich z.B. die Blit-Funktionen kapsele. Da ich derzeit nur eine benötige (BltBitMapRastPort), ist sie in meiner "RastPort-Klasse" enthalten. Dann gibt es ja aber noch die Blit-Operationen mit/auf BitMaps und die ganzen Draw-Funktionen. Hätte die alle gern zusammen in einer Klasse, aber die Basis des Ganzen ist doch sehr heterogen!
Oder ist BltBitMapRastPort "nur ne Convenience-Funktion", da dann BltBitMap auf der BitMap im RastPort ausführt?

Eine ca. 1:1-Abbildung von AOS-Libs oder ähnlichem hab ich mir nicht vorgenommen!

Aber das sind alles schon wieder Themen für einige neue Threads!

[ Dieser Beitrag wurde von Reth am 01.04.2011 um 10:10 Uhr geändert. ]
 
Reth   Nutzer

21.03.2011, 23:55 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

@Holger:

Für das Straight-Forward-Verhalten hätt ich dann noch ne Frage:

Welches Vorgehen ist denn besser:

1. Begin Refresh - Ermitteln aller geänderter Spielobjekte inkl. der alten Cursorposition - OrRectRegion für diese Objekte in neuer, eigener ClipRegion - InstallClipRegion mit der Ergebnisregion - EraseRect fürs Spielfeld - Blitten der Objekte - Reinstall OriginalClipRegion - EndRefresh

oder wie hier im Bsp. dargestellt:

2. Begin Refresh - Ermitteln der alten Cursorposition - InstallClipRegion für dieses Objekt - EraseRect fürs Spielfeld - Reinstall OriginalClipRegion - Ermitteln 1. geändertes Spielobjekt - InstallClipRegion für dieses Objekt - EraseRect fürs Spielfeld - Blitten des Objektes - Reinstall OriginalClipRegion - Ermitteln 2. geändertes Spielobjekt - InstallClipRegion für dieses Objekt - EraseRect fürs Spielfeld - Blitten des Objektes - Reinstall OriginalClipRegion - ... - Ermitteln letztes geändertes Spielobjekt - InstallClipRegion für dieses Objekt - EraseRect fürs Spielfeld - Blitten des Objektes - Reinstall OriginalClipRegion - EndRefresh

In beiden Fällen sollte mir Intuition für die alte Cursorposition außerhalb des Spielfelds den grauen Hintergrund wiederherstellen (wenn man mal den Statusbereich rechts auslässt)! Ist dem so, oder muss ich hier noch was machen?

Im 2. Fall reicht EraseRect auch für das aktuell bearbeitete Objekt.

Rein intuitiv würde ich eher zu Methode 1 neigen.
 
Reth   Nutzer

21.03.2011, 21:10 Uhr

[ - Direktlink - ]
Thema: AmigaOS: Zeitmessung in Millisekunden auch ohne timer.device möglich?
Brett: Programmierung

Danke für eure Antworten.

Brauche bisher keine anderen Devices. Wollte eigentlich ganz ohne auskommen!

Eine generelle Frage noch: Sollte ich das Device immer für jeden Aufruf öffnen und schließen, oder ist es bei Dauerbenutzung (z.B. für Logging, Zeitdifferenzbestimmungen usw.) besser das Device zu Beginn zu öffnen und erst am Ende wieder zu schließen?
 
Reth   Nutzer

15.03.2011, 23:54 Uhr

[ - Direktlink - ]
Thema: AmigaOS: Zeitmessung in Millisekunden auch ohne timer.device möglich?
Brett: Programmierung

Zitat:
Original von Holger:
Gleiche Regel wie für Library-Calls: selbstverständlich musst Du vorher öffnen.

Schade, hatte auf ein einfaches Include wie für time() gehofft.

Bei Devices bin ich mir etwas unsicher, v.a., was die Kompatibilität für verschiedene Systeme anbelangt (AOS3.9, 4.x, MOS, AROS). Von den Emulatoren mal abgesehen. Bei Libraries denke ich eher, dass sie auf allen Plattformen und unter allen Systemen ähnlich/gleich funktionieren. Aber ob alle Plattformen/Systeme auch identische Devices anbieten und weiter anbieten werden, stelle ich mir im Vgl. zu Libraries schwieriger vor (nicht gerade beim timer.device, aber generell). Oder hab ich hier ein Verständnisproblem?
 
Reth   Nutzer

15.03.2011, 21:45 Uhr

[ - Direktlink - ]
Thema: AmigaOS: Zeitmessung in Millisekunden auch ohne timer.device möglich?
Brett: Programmierung

@Holger:

Die von Thomas genannten Funktionen sind genau die Gesuchten. Hatte bisher nur time() und difftime() gefunden.

Muss man für die von Thomas genannten Funktionen das timer.device öffnen, oder reicht ein include?
 
Reth   Nutzer

15.03.2011, 15:04 Uhr

[ - Direktlink - ]
Thema: AmigaOS: Zeitmessung in Millisekunden auch ohne timer.device möglich?
Brett: Programmierung

Hallo zusammen,

das Thema sagt eigentlich schon alles. Da die Auflösung der time()-Funktion leider nur im Sekundenbereich liegt, bin ich derzeit auf der Suche nach Alternativen mit höherer Auflösung (Millisekunden).

Eine davon wären zwar die INTUITICKS, die scheiden für mich aber aus.

Gibt es noch weitere Alternativen, ohne die Nutzung des Timerdevices, um verstrichene Zeiten in Millisekunden zu messen?

Danke schon mal!

Ciao
 
Reth   Nutzer

27.02.2011, 20:28 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Einigen wir uns doch darauf, dass die graphics.library höchstwahrscheinlich nur dann Rechtecke zusammenfasst, wenn die Verwaltung der Fläche als einzelne kleine Rechtecke in keinem sinnvollen Verhältnis zum Gewinn durch nicht enthalten Teilflächen mehr steht.
Falls so etwas überhaupt passiert.
Jedenfalls würde das System niemals disjunkte Rechtecke zu einem großen zusammenfassen.

Für Dich gilt doch erst mal, dass Du den einfachen Zeichenalgorithmus implementieren solltest, bevor Du Dir darüber Gedanken machst, ob die resultierende Performance das Ersetzen der Systemalgorithmen durch eigene (kannst Du es denn überhaupt besser?) erforderlich macht.

Ja, einigen wir uns darauf und Nein, ich kann es wahrscheinlich nicht besser.
Idee hinter diesem Vorgehen ist, die benötigten Systemaufrufe zu minimieren. Sprich: Warum eine Blitoperation für ein Objekt rufen, das sich nicht geändert hat, auch wenn das System dann feststellt, dass die ClippingRegion nicht betroffen ist.

Zitat:
Mit ScrollRasterBF kannst Du denselben Effekt innerhalb Deines primären Layers (Fensters) erreichen und sofort im Anschluss den nötigen Refresh ohne Zeitverzögerung durchführen.
Aah, danke! Werd ich mir mal ansehen.
 
Reth   Nutzer

19.02.2011, 09:26 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Holger:
DamageList ist ein Eintrag in der Layer-Struktur, genauso wie ClipRegion, der einzige Unterschied ist der, dass Du natürlich den Layer locken musst, bevor Du etwas veränderst.

Ah, ok. Danke. Sowas in der Art hatte ich mir schon gedacht, es aber in den Beschreibungen noch nicht gefunden!

Zitat:
Original von Holger:
Allerdings erscheint es mir für Deinen Fall doch einfacher, die Bereiche der normalen Clip-Liste während des Refreshs hinzuzufügen, Du musst nur daran denken, den exakten Originalzustand vor EndRefresh wiederherzustellen.

Das wäre ja dann ca. das Gleiche, wie das, was ich bisher mache mit dem Unterschied, dass ich ein SMARTREFRESH-Window anlege, keine Überdeckungsermittlung mehr mache, sondern nur die sich ändernden Teile ermittle, damit die ClippingRegion setzr und alles zw. BeginRefresh und EndRefresh aktualisiere. Dabei binde ich auch das umgebende Rechteck des animierten Cursors an der alten Position vor seiner Bewegung mit ein (oder mache 2 Refreshs, einen vorher, einen nachher ist aber unperformanter).

Allerdings hab ich dazu noch folgende Fragen:
Wie ist es denn, wenn sich an vielen, weit auseinander liegenden Bereichen des Spielfeldes Dinge ändern? Dann ermittle ich doch mit OrRectRegion im Endeffekt eine riesengroße ClippingRegion, in der auch Dinge geblittet werden, die sich gar nicht geändert haben, oder?
Wenn ich Ist denn dann OrRectRegion überhaupt das Richtige, oder brauche ich eine andere Rect-/Region-Funktion?
Nach meinem Verständnis müsste OrRectRegion aber eigentlich das Richtige machen und wenn ich
C code:
struct RegionRectangle

richtig verstanden habe, dann liegen darin alle Rechtecke für die ClippingRegion. Aber wer sagt mir, dass Intuition daraus nicht ein umgebendes, großes Rechteck macht?
Und muss ich für die ermittelte ClippingRegion erst ein EraseRect machen?

Zitat:
Original von Holger:
Und da hakt's dann auch mit dem INTUITICKS-basiertem Refresh, der an sich mit dem NoCareRefresh harmoniert. Aber wenn ein neues Fenster geöffnet und aktiviert wird, bekommt Dein Fenster als inaktives keine Ticks mehr und da es auch keine Refresh-Meldungen erhält, wird Dein Spielfeld nicht aktualisiert, wenn das darüberliegende Fenster bewegt wird.
Zitat:
Original von Reth:
Kann ich denn die Aktualisierung mit BeginRefresh/EndRefresh auch bei Events wie MOUSEMOVE anwenden?

Klar, dann kann es allerdings passieren, dass Du später eine RefreshMessage bekommst, obwohl inzwischen alles wiederhergestellt wurde.
Du meinst, weil ich bei MouseMove schon aktualisiert habe, Intuition das nicht merkt und mir ne Refresh-Message schickt?
Hatte eigentlich geplant, alles zu kombinieren: INTUITICKS, MOUSEMOVE und Refresh-Messages. Dabei könnte ich dann die Refresh-Messages ja als erstes verarbeiten und mir merken, ob der Refresh schon gelaufen ist!?

Zitat:
Original von Holger:
Zitat:
Reth:
Aber den eigenen Layer kann ich doch nutzen, damit ich schon mal das Scrolling usw. habe, oder?

Wofür brauchst Du beim Scrolling einen eigenen Layer?
Na der bietet das doch schon. Dachte da in der Art von den Statusleisten bei anderen RTSs, die sich von der Seite her einblenden (z.B. über HotKey o.ä.). Und der Layer würde dann das "Rein- und Rausscrollen" übernehmen können.
 
Reth   Nutzer

16.02.2011, 23:22 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Holger:
Um Himmels Willen, nein. Alle Bereiche müssen vor dem Aufruf von BeginRefresh in die DamageListe eingetragen werden. Der Aufruf von BeginRefresh macht aus die aktuellen DamageListe einen aktuellen Clipping-Bereich.
...
Nicht der ClippingRegion, sondern der DamageListe. Das System ermittelt betroffene Bereiche, die durch Layer-Operationen oder durch Scrolling-Operationen beschädigt wurden.

Hm. Ich dachte, ich füge die Bereiche, die ich neu blitten möchte der umgewandelten DamageListe hinzu (also dem Clipping-Bereich). Wie komme ich denn an die DamageListe vor BeginRefresh? Und wie füge ich meine Bereiche dann hinzu? Habe beim Stöbern in den Funktionen nichts Entsprechendes gefunden!
Ist dann mein bisheriges Vorgehen mit Installation/Deinstallation von ClippingRegions im Layer des Window-Rastports ohne Begin-/EndRefresh überhaupt systemkonform?

Zitat:
Original von Holger:
Wenn die Layer-Operationen durch Fenster-Operationen verursacht wurden, dann schickt Intuition den zu den Layern gehörenden Fenstern eine Refresh-Message.

Kann ich denn die Aktualisierung mit BeginRefresh/EndRefresh auch bei Events wie MOUSEMOVE anwenden?

Zitat:
Original von Holger:
Zitat:
Original von Reth:
Das ist doch aber ziemlich inperformant, wenn ich alle Hex-Tiles und auch alle "darüber liegenden" Objekte neu blitte.

Nein, alles, was außerhalb der Clip-Bereiche liegt, hat keinen Effekt.
Dann kann ich mir ja die ganze Überdeckungsprüfung sparen!

Zitat:
Original von Holger:
Zitat:
Original von Reth:
Wäre das aber nicht was für nen scrollbaren Statusbereich o.ä.?

Braucht genausowenig ein eigenes Fenster.
Aber den eigenen Layer kann ich doch nutzen, damit ich schon mal das Scrolling usw. habe, oder?
 
 
Erste << 10 11 12 13 14 -15- 16 17 18 19 20 >> Letzte Ergebnisse der Suche: 1858 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.
.