ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
Holger
Nutzer
15.07.2011, 14:06 Uhr [ - Direktlink - ] |
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren Zitat:Es mag ja für Leute wie Dich, die nur sporadisch in dieses Forum kommen, um dann rummotzen und zu erzählen, wie toll doch andere Foren sind, egal sein, wenn AN Abmahnung wegen öffentlichem Aufruf zu Straftaten bekommt, anderen ist das nicht egal. Keiner weiß, was für Hilfsangebote kommen würden, wenn die User via PM gefragt werden würden, aber auf gewisse Dinge muss die betreffende Person dann schon selbst kommen. Es wäre ja auch kein Problem gewesen, eine fertige HD-Installation des ohnehin freigegeben Spiels zu verschicken, die komplett ohne rechtlich bedenkliche Dateien auskommt, aber der Thread-Eröffner wollte ja unbedingt eine WHDLoad-Installation und es hat Tage gebraucht, herauszufinden, dass er selber gar nicht weiß, warum er die haben wollte, und dass eine simple Installation es auch getan hätte. Zitat:Ich finde es auch nicht unbedingt toll, dass es da Leute gibt, mit solch altem Zeug noch den schnellen Euro machen wollen, aber die ROMs werden noch gehandelt. Also spar Dir Deine Scheinheiligkeit einer nicht wirklich vorhandenen Fallunterscheidung. Zitat:Abgesehen vom hypothetischen Schaden, der ja offensichtlich höher liegt, da die ROMs sehr wohl noch gehandelt werden, geht es beim Strafmaß keineswegs ausschließlich um den entstandenen Schaden. Aber da sich kaum ein Staatsanwalt für so eine Bagatelle interessieren dürfte, musst Du nur noch im Auftrag von Amiga Inc, Cloanto, CUSA oder Hyperion agierende Abmahnanwälte fürchten. Die würden Dir aber mindeste 200 EUR aufdrücken. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
15.07.2011, 13:52 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Ich schätze, das ist historisch bedingt. Die gadtools-Library scheint eine Parallelentwicklung zum restlichen AmigaOS zu sein. Sie benutzt in der ersten Fassung kein BOOPSI und es gibt auch eine Version, die unter AmigaOS 1.x läuft. Sie ist also eher so etwas wie eine guiutil.library, die man als Aufsatz implementiert und später ins OS integriert hat. Nur der Namen gadtools ist insofern unpassend gewählt. Hätte man die Library konsequent als AOS2.0 Feature unter Verwendung des ebenfalls mit AOS2.0 eingeführten BOOPSI entwickelt, wäre die Geschichte mit dem CreateContext und den speziellen Refresh und Notification Funktionen komplett überflüssig gewesen. Dann hätte man die übrig gebliebenen acht Funktionen (vielleicht hätte man es auf noch weniger reduzieren können) auch direkt in intuition eingebaut. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
15.07.2011, 13:43 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung @AGSzabo: Schreib doch neue Sachen in neue Beiträge, statt einen alten mehrfach zu editieren. Zitat:Aha, Du hast also auch Objekte, die nicht sichtbar sind und Platz wegnehmen. Zitat:Wieso ist ein Popup-Menü nicht on-screen? Natürlich ist es on-screen, während es angezeigt wird. Zitat:Ich kann Deine Logik nicht nachvollziehen. Ein Balance-Widget bekommt seinen Kontext von oben, wie alle anderen Widgets auch, und sendet ihn an seine Kinder, egal, ob das nun zwei oder zweihundert sind. Wie alle anderen Widgets auch. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
15.07.2011, 13:37 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Die gleiche Frage kannst Du auch umgekehrt, bei Deiner Vorgehensweise stellen: Wenn man neue Features in das System einbaut muss die Tab-Klasse auch um die Weiterleitung dieses Features an die echte, statt der falschen Kind-Liste erweitert werden? Zitat:Ich würde so etwas auf keinen Fall im Objekt speichern, das ist nicht nur Speicherverschwendung, sondern führt zu einer falschen Semantik. Klar brauchst Du solche Informationen auch für andere Operationen als das Zeichnen. Trotzdem sind das alle Operationen, die somit diese Informationen als Parameter übergeben bekommen können. Eine immer präsente Information verführt dazu, sie auch dann zu benutzen, wenn ihre Gültigkeit gar nicht sicher ist. Also außerhalb der Operationen, für die sie eigentlich gedacht ist. Zitat:Du hast diese Information trotzdem überall kopiert. Wenn man einen Teilbaum in einen anderen Baum verschiebt, muss man trotzdem diverse Klimmzüge für etwas machen, was anderswo mit der Änderung von einem, maximal zwei Pointern abgehakt wäre. Zitat:Damit sich nicht das gesamte Layout verändert, wenn es später eingeblendet wird. Tabs sind doch das einfachste Beispiel dafür. Wenn ein nicht sichtbarer Tab mehr Platz benötigt als der sichtbare, soll dann beim Umschalten des Tabs das gesamte Fenster inkl. aller Komponenten neu layoutet werden, oder reservierst Du von Anfang an so viel Platz für die Tabs, dass auch nicht sichtbare Tabs Platz hätten? Zitat:Hat dieses Flag denn etwas mit dem Layout zu tun? An sich ist doch ein Objekt on-screen, wenn es (und alle seine Parents) visible und der Root ein Fenster ist, dass tatsächlich geöffnet ist. Diese Eigenschaft ändert sich doch nicht durch layouten. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
14.07.2011, 18:48 Uhr [ - Direktlink - ] |
Thema: RFID Um mich funkt es nur noch :)
Brett: Get a Life Zitat:Spätestens dann, wenn ein Unternehmensberater der Bank verklickert, wieviel Geld man doch an der Infrastruktur sparen könne, wenn man die Bankautomaten „in der Cloud“ arbeiten lässt. Aber vorher wird alles auf SAP umgestellt. Zitat:Kommt auf die Bank an. Einige zeigen schwebende, noch nicht wirksame Buchungen online an. Gebucht wird eh alles am Ende des Tages (bzw. des Wochenendes). Zitat:Streiche „zentral“, aber der Punkt von Maja ist, irgendwie sind die Dinger letztendlich doch miteinander vebunden, der Bankautomat, irgendein Rechenzentrum und der Rechner, mit dem man kommuniziert, wenn man Online-Banking macht.Zitat:Woher weißt Du das. Vermutung ? Es gibt wohl nicht wenige Firmen die -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
14.07.2011, 18:02 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Natürlich. Wenn der Parent an die Kinder delegiert und eben jener Parent Tabs enthält und natürlich das aktive kennt, muss er nichts weiter machen, als an das aktive Tab zu delegieren, statt an alle. Natürlich kann man genausogut ein visible-Flag für jede Komponente unterstützen und im Fall von Tabs alle außer einem invisible setzen. Die allgemeine Liste der Kinder zu manipulieren, ist nicht empfehlenswert, da dies nur für bestimmte Operationen sinnvoll ist und alle anderen, die sich auf die ursprüngliche Semantik verlassen, torpediert, bzw. spezielle Workaround benötigt. Wenn man z.B. ein Objekt löscht, löscht es üblicherweise alle Kindobjekte. Was ist dann mit den nicht sichtbaren Tabs? -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 19:39 Uhr [ - Direktlink - ] |
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren Zitat:keine Sorge, das ist (inzwischen) jedem bekannt. Hier geht es aber um einen ganz bestimmten User, bei dem so manches nicht funktioniert, was bei jedem anderen keine Probleme bereitet. Zitat:Womit WHDLoad seit Version 16.5 keine Probleme mehr hat. Wobei es scheinbar nur im Zusammenhang mit der kick40068.A1200, die seit der Amiga Forever 2008 mitgeliefert wird, trotzdem Probleme gibt, zumindest, wenn man die Problemmeldungen in diversen Foren zusammenführt. Zitat:Und natürlich auch seit Jahren eine lauffähige Installation von UFO, sowohl in der A1200/A4000-, als auch in der CD³²-Version. Womit sollte man denn auf dem Amiga sonst eine HD füllen, wenn nicht mit allen Kickstart-Versionen, derer man habhaft werden konnte, sowie allen Spielen, die man gekauft hat oder die freigegeben wurden? -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 19:17 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Sowohl als auch. Alles, was Bestandteil der öffentlichen Schnittstelle ist. Zitat:Wahrscheinlich doch. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 10:54 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Warum sollte gadtools irgendetwas mit Fenstergadgets machen? -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 10:53 Uhr [ - Direktlink - ] |
Thema: RFID Um mich funkt es nur noch :)
Brett: Get a Life Zitat:Wenn Daten im großen Stil abgegriffen werden, werden sie ja meist direkt bei der Bank gestohlen und nicht beim Kunden. Du wirst also damit rechnen müssen, dass inkompetente Banken Deine Daten selbst dann verlieren, wenn Du selbst kein Internet-Banking benutzt. Ich benutze nur das mTan-Verfahren, was ich für einen brauchbaren Kompromiss halte. Dass ein Angreifer Daten im Internet ausspäht und sich gleichzeitig meines Telefons bemächtigt, ist nicht sehr wahrscheinlich, bzw. spräche für einen gezielten Angriff auf meine Person, dem man sowieso auch mit konventioneller Kontoführung kaum etwas entgegensetzen könnte. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 10:43 Uhr [ - Direktlink - ] |
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren Zitat:Erstens: Nein, das hat Fred_AROS nicht gesagt. Er sagt ganz allgemein, er kann u.U. besser sein. Zweitens: Du hast den WHDInstaller jetzt mehrfach erfolglos ausprobiert. Wieso glaubst Du immer noch, dass das besser ist, als einfach mal dem Installer, den Du bisher nicht ausprobiert hat, eine Chance zu geben? -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 10:40 Uhr [ - Direktlink - ] |
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren Zitat:Na zum Glück bist Du ja jetzt gekommen, um uns zu erleuchten. Zitat:Ja, vielleicht solltest Du den Thread mal Lesen, bevor Du Deinen Senf dazu gibst. Dann würde Dir vielleicht auffallen, dass er alle diese Schritte laut eigener Aussage bereits durchgeführt und das richtige Kickstart-File ausprobiert hat, allerdings ohne Erfolg. Also, wenn Du meinst, schicke ihm ruhig noch mal das Kickstart-File und wundere Dich darüber, dass auch dieses bei ihm nicht funktionieren wird. Zitat:Wie gesagt, vielleicht solltest Du den Thread mal Lesen, bevor Du Deinen Senf dazu gibst. Hier wird der entsprechende Inhalt verlinkt und zitiert, aber bitte, meinetwegen kannst Du den gesamten Stuss noch mal wiederholen. Zitat:Wer sagt das? Hier geht es nur darum, dass der Threaderöffner selbigen gar nicht ausprobiert hat und auch selbst gar nicht den Grund kennt, warum er ihn nicht benutzen sollte. Dass Du vielleicht einen kennst, spielt da überhaupt keine Rolle. Zitat:Ja, das ist ein unglaublicher Vorteil, beim versehentlichen Druck auf eine Taste, ein Spiel abschießen zu können, das ein „Beenden“ Menüpunkt besitzt… Zitat:Das ist im Falle von UFO vollkommen unnötig. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 10:28 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Er will keinen Refresh erzwingen, sondern den automatischen Refresh bei Bedarf verzögern. Zitat:Ja, genau davon sprach ich. Wenn Deine Änderungen innerhalb eines Callbacks geschehen, es also einen Zeitpunkt gibt, zu dem der Code zum Toolkit „zurückkehrt“, dann kannst Du das problemlos machen. Dann ist es auch die beste mir bekannte Vorgehensweise. Beim klassischen AmigaOS-API sind Callbacks aber eher die Ausnahme. Deshalb funktioniert es dort nicht so. Zitat:Wenn es um simple Clip-Operationen geht, ja. Die Optimierung, die ich beschrieben habe, betreffen aber einen Zeichenvorgang. Dabei ist natürlich mindestens jeder Parent teilweise innerhalb des ClipRect und muss seine Zeichenroutinen durchlaufen, auch wenn diese durch das Clipping der einzelnen Operationen effektiv auf eine No-Op hinauslaufen. Aber das System muss hier davon ausgehen, dass jedes einzelne Element an dieser Stelle User-Code mit unbekannten Overhead aufrufen könnte. Wenn es also einen einfachen Algorithmus gibt, der das umgehen kann, spricht nichts dagegen, diesen zu verwenden. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 01:03 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Jein. Das Toolkit, bzw. die Komponenten wissen am besten, wann sie einen Refresh nötig haben, aber wann die Anwendung alle Änderungen getätigt hat, die instantan sichtbar werden sollen, weiß nur die Anwendung. Ein Automatismus funktioniert dann am besten, wenn alle Aktionen, die einen Refresh nötig machen würden, in Call-Backs wie Event-Handlern ausgeführt werden. Dann kann das Toolkit nach Beendigung der Call-Back Ausführung entscheiden, ob es einen Refresh durchführt oder nicht. Mit dem klassischen AmigaOS geht das nicht so einfach. Zitat:Das kann man auch über ein Flag im Event machen. 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. Zitat:Zwei Gründe sprechen dafür, es doch zu tun: 1. Man kann es auch für diverse nicht-graphische Operationen verwenden. 2. Einige Programmierer tun sich damit schwer, Strings zu verwenden. Es erhöht somit die Akzeptanz, wenn man auf die Effizienz hinweisen kann, selbst wenn es nur gefühlte Performance ist. Zitat: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. Klar, ist meist nichts gegen einen Blit, aber das hängt von den jeweiligen Fähigkeit zur Grafikbeschleunigung ab. Beim Beispiel von Swing ging es ja noch um etwas anderes. Neben nicht-rechteckigen Formen, gibt es auch sich möglicherweise überlappende Elemente und halbtransparente Overlays. Und es ist mitunter sinnvoller, die Gruppen nicht als transparent anzusehen. Dann muss man nämlich nicht bis zum Root hochgehen, sondern kann u.U. den direkten Parent als Ausgangsbasis einer Zeichenoperation nehmen. Bei Abwandern des kompletten Baums überspringt man dagegen das Füllen mit der Hintergrundfarbe, wenn diese identisch mit der des Parents ist. Zitat:Grundsätzlich schon. Zitat:Das ist ein Zeichen dafür, dass der später angestrebte Anwendungsfall nicht beim ersten Design berücksichtigt wurde. Eine sorgfältige Planung kann auch Performancefragen von vornherein berücksichtigen, andernfalls muss man mitunter hinterher doch alles neu designen. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
13.07.2011, 00:37 Uhr [ - Direktlink - ] |
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren Zitat:Ein Grund, warum ich weniger Probleme mit verschiedenster Software habe als Du, ist der, dass ich zuerst versuchen würde, UFO auf die Festplatte zu installieren und nur wenn das nicht funktioniert, nach einer Lösung wie WHDLoad Ausschau halten würde. Warum Du es umgekehrt machst...keine Ahnung. Jedenfalls gilt, je weniger Software ich für den angestrebten Zweck installiere, desto weniger Fehlerquellen gibt es. Das erleichtert auch die Suche nach Hilfe. Keiner hat hier gesagt, „Installier es doch ohne WHDLoad“, weil natürlich jeder angenommen hat, a) dass Du es schon versucht hast, bzw. es nicht geht oder b) dass es Dir um genau die wenigen Vorteile geht, die WHDLoad in diesem Fall bringt, wie die entfernte Handbuchabfrage. Hättest Du „Ich will UFO auf die Festplatte installieren“ statt „Problem mit WHDLoad und UFO“ geschrieben, hättest Du schon viel früher am Ziel sein können. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
12.07.2011, 21:25 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Ja, aber [GT_]BeginRefresh zeichnet das Fenster und nicht die Menüs neu. Die Menüs sind während des Refresh-Vorgangs nicht zu sehen. Es geht dabei ausschließlich um Gadgets. Und Menüs sind keine Gadgets. Nicht beim AmigaOS. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
12.07.2011, 21:22 Uhr [ - Direktlink - ] |
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren Zitat:Das hat nichts mit UFO zu tun, sondern mit dem entsprechenden WHDLoad-Client. Davon gibt es einige, die ein ROM-Image verwenden, um es vor dem Start des Spiels zu patchen. Und das geht dann nur mit bestimmten Versionen. UFO selbst läuft auf verschiedenen ROM-Versionen, auch von Festplatte. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
12.07.2011, 20:48 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Events und Clipping haben nichts miteinander zu tun. Zitat:Ja, so macht es Intuition. Ruft man SetAttrs[A] oder SetGadgetAttrs[A] auf, teilt der Rückgabewert mit, ob die Änderung ein visuelles Update erforderlich macht oder nicht. Es bleibt trotzdem dem Aufrufer vorbehalten, die Refresh-Funktion aufzurufen, d.h. er kann auch erst einmal ein Dutzend Änderungen durchführen, bevor er einen visuellen Refresh durchführt. Sagte ich nicht schon einmal, dass es sich lohnt, die existierenden Lösungen zu studieren, bevor man seine eigene zu machen versucht? Zitat:Es gibt ja auch keine bessere. Wenn es um Effizienz geht, lässt man das Toolkit eine eigene Hashmap aufbauen, die für jeden String einen kanonischen Eintrag besitzt, durch den jeder String bei der Initialisierung eines Clients (oder dem Laden einer XML-Datei) ersetzt wird. 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. Ist also exakt genauso effizient wie Integer-Werte. Zitat:Nein, es muss beim ersten nicht-transparenten Parent gestarten werden. Der Root wäre nur der worst-case. Ich hatte ja dazu schon oben etwas geschrieben, wie Swing es macht. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
12.07.2011, 20:20 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Nein, Menüs sind keine Gadgets. Gadgets sind die Dinger, bei denen Du, wenn Du gadtools benutzt, als allererstes CreateContext() aufrufen musst, das ein Pseudo-Gadget erzeugt, das immer als allererstes in der Liste vor allen anderen gadtools-Gadgets steht, die Du via CreateGadget[A]() erzeugt. Wenn Du selbiges nicht machst, hast Du auch keine solchen Gadgets. Wenn Du welche hättest, müsstest Du übrigens nicht nur GT_... Funktionen für den Refresh, sondern auch die GT_... Funktionen für die Verarbeitung von intuition-Messages verwenden. Aber VisualInfo und Menüs betrifft das nicht. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 19:24 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Ich versuch's noch mal anders: Benutzt Du gadtools-Gadgets? In diesem Fall musst Du die GT_… Funktionen benutzen, ansonsten auf keinen Fall. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 19:15 Uhr [ - Direktlink - ] |
Thema: SSD mit oder ohne NCQ ?
Brett: Andere Systeme Ich denke auch, grundsätzlich ist NCQ für SSDs bei Schreibzugriffen sinnvoll. Allerdings bedeutet, dass eine SSD NCQ beherrscht, erst mal nur, dass sie die Protokolle unterstützt. Es besteht für diese keine Verpflichtung, auch wirklich Zugriffe vorteilhaft umzusortieren. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 19:06 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Es gibt natürlich immer verschiedene Methoden. Im AmigaOS (Classic) basiert alles auf Rechtecken. Um eine Linie, ob schräg oder nicht, auf ein Rechteck zu beschneiden, muss man nicht viel tun. Und im Falle eines ClipRects, das genau ein Gadget von vielen umfasst, wird ja eh alles noch viel einfacher, weil die meisten Objekte komplett außerhalb des Bereichs, einige komplett innerhalb und (fast) gar keine teilweise innerhalb des Bereichs liegen. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 18:43 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Zitat:Selbst bei so primitiven Gadgets wie bei Gadtools ändert sich beim Anklicken standardmäßig die Hintergrundfarbe und erzwingt somit ein komplettes Neuzeichnen der Buttons. Ansonsten kann man natürlich durch die Wahl der Clipping-Bereiche auch nur Teile eines Gadgets aktualisieren. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 18:35 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Bei Java/Swing ist es so, dass wenn eine einzelne Komponente direkt gezeichnet werden soll, was i.A. nur beim Ziehen mit der Maus oder ähnlichem angewendet wird, diese Komponente nach oben wandert und überprüft, ob eine andere Komponente sie überlappt. Der Zeichenvorgang startet dann bei der ersten nicht überlappten Komponente, sinnigerweise natürlich auch mit gesetztem Clipping auf dem Graphics Kontext. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 13:13 Uhr [ - Direktlink - ] |
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung Ich weiß ja nicht, wie Du das bisher gemacht hast, aber normalerweise werden GUI-Systeme doch immer so implementiert, dass der Zeichenvorgang bei der Wurzel beginnt und den Baum abwandert, d.h. die Parents rufen die Zeichenmethode ihrer Kinder selbst auf und haben somit die Möglichkeit, ein weiteres Clipping zu dem Grafikcontext, den sie ihrerseits von ihrem Parent übergeben bekommen haben, hinzuzufügen (und nach Beendigung wieder zu entfernen). Genau so wird es doch auch mit dem Koordinatensystem gemacht, das immer relativ zum direkten Parent verwendet wird. Bzw. mit jeder anderen visuellen Eigenschaft (Font, Vorder- und Hintergrundfarbe). -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 12:58 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:NoCareRefresh und die Frage, ob Du Begin/EndRefresh benutzt, haben nichts miteinander zu tun. Das erste beeinflusst nur, ob Du Messages bekommst, das andere dient dem optimierten Zeichnen. Du solltest diese Dinge also auch unabhängig voneinander auf ihre Auswirkungen überprüfen. Du solltest außerdem beachten, dass das Logging in eine Textkonsole problematisch werden kann, da diese unter Umständen die Meldung auf den Bildschirm bringen will und das mit den durch Deinen BeginRefresh gelockten Layern interferiert. Da die Ausgabe meist gepuffert ist, treten solche Problem möglicherweise nicht schon bei der ersten Meldung auf. Nur eine Möglichkeit... Zitat:Die Gadtools-Refresh-Aufrufe dienen einzig und allein den über Gadtools angelegten Gadgets. Mit "ganz normal mit struct Gadget" hat das nichts zu tun. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
11.07.2011, 12:44 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Du musst aber auch lesen, was da steht. Das Beispiel dient ausschließlich für den Fall, dass man EndRefresh mit dem Parameter FALSE aufruft, was, wie im darüberstehenden Text erklärt, äußerst problematisch ist. Da das Beispiel aber in keinster Weise erklärt, warum man das überhaupt tun sollte, außerdem, wie von Dir ebenfalls bemerkt, gar nicht gesagt wird, wo die Clip-Regionen denn herkommen, somit das Beispiel für die Lösung des Problems gar nicht ausreicht, gibt es nur eine mögliche Schlussfolgerung: Rufe niemals EndRefresh mit FALSE auf und vergiss das Beispiel. Zitat:Nur noch mal als Gedächtnisstütze: BeginRefresh dient einem primären Zweck: die Damage-Liste in eine aktive Clip-Region umzuwandeln. Wenn Du also Deine Clip-Region vor dem Aufruf setzt, gibt es nur zwei Möglichkeiten: a) die Regionen werden effektiv verknüpft oder b) Deine vorher gesetzt Region wird übergebügelt. Was davon nun wirklich passiert, sollte man wissen, bevor man sich entscheidet, es so zu tun. Zitat:Das ist eine mögliche Vorgehensweise, entspricht aber nicht der Art, wie die angesprochenen Spiele es umsetzen, bzw. wie Thore es beschrieben hat (v.a. mit Screen-Switching) Zitat:Das hast Du falsch verstanden. Ein Offscreen-Buffer ist nicht gleich Double-Buffering. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
08.07.2011, 23:56 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Das im Hinterkopf zu behalten bringt aber gar nichts, denn mit DoubleBuffer kannst Du alles das, was Du jetzt gerade versuchst, vergessen. Wenn Du mit Swap-Buffern arbeitest, muss natürlich jedes Update beim nächsten Zeichenvorgang in den anderen Buffer wiederholt werden (falls man nicht eh immer alles neu zeichnet), da man andernfalls beim Umschalten veraltete Inhalte wiederherstellen würde. Mit dem systemeigenen Refresh-Mechanismus funktioniert das nicht, da der bei einem erfolgreichen Ende alle Damage-Bereiche verwirft und prinzipiell nicht dazu gebracht werden kann, diese für zwei Updates zu behalten, da nicht zwischen altem und neuem Damage unterschieden werden kann. Was aber nicht so schlimm ist, da sich anwendungsfremde Fenster, deren Besitzer nichts von der Notwendigkeit, in zwei Buffer zu zeichnen, weiß, ja ohnehin verbieten. Damit braucht man auch von diesen verursachten Damage nicht zu berücksichtigen. Zitat:Ob Du ein Framework benutzt oder nicht, ändert kaum etwas daran, dass Log-Aufrufe, egal wie sie umgesetzt sind, die ihrerseits neue Log-Aufrufe triggern, ziemlich gefährlich sind. Zitat:Ähm, Du musst Dich nicht bei mir entschuldigen, mir ist es doch egal, ob Du es so oder so machst. Du solltest Dich nur fragen Funktionieren eigentlich diese Beispiele unter AOS4? Ist „es stand so in einem Beispiel“ als Erklärung ausreichend, was Dein Code macht? Was macht es denn nun? Wird die Clip-Region überhaupt verwendet, wird sie mit der Damage-Region verknüpft, wenn ja, via AND oder OR, und wieso erklärt das Beispiel (bzw. dessen Autor) nicht, warum das so gemacht wurde und was passieren soll? Zitat:Na ja, Du benutzt, was auch immer das Grafiksystem Dir gibt, wenn Du eine dazu kompatible BitMap anforderst. Auf den Typ des Speichers hast Du gar keinen direkten Einfluss, Zitat:Ähem, wenn Du eine komplette BitMap via CPU in eine sichtbare BitMap kopierst, wozu dann überhaupt noch das Double-Buffering? Zitat:Es gibt Methoden, um DoubleBuffering mit einem Screen durchzuführen. Das interferiert dann auch nicht mit dem manuellen Screen-Switching des Anwenders. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
08.07.2011, 20:35 Uhr [ - Direktlink - ] |
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung Zitat:Und ein aus derselben Version gebautes 68k-Binary läuft unter AOS4 fehlerfrei? -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
Holger
Nutzer
06.07.2011, 12:21 Uhr [ - Direktlink - ] |
Thema: Proggen auf Win
Brett: Programmierung Zitat:Sie müssen auch da sein. Vielleicht sind sie nur zu alt. -- Good coders do not comment. What was hard to write should be hard to read too. |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |