amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > XorRectRegion erzeugt falsche RegionStruct [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2018-01-26, 23:41 h

Reth
Posts: 1858
User
Hallo zusammen,

hab mir ziemlich verschachtelte Klassen usw. in C++ gebastelt, um einige AOS-API-Funktionen zu kapseln und ne Art "Grafikengine" zu bauen.

Im wesentlichen soll bei einem Spielfeld ein Clipbereich bestimmt werden, der alle umgebenden Rechtecke enthält von den darzustellenden Objekten, die geändert dargestellt werden wollen.
Bei animierten/sich bewegenden Objekten wird dabei der alte Bereich und der neue Bereich dazu genommen.

Um die festen Statusbereiche zu schützen, füge ich die Rechtecke derselben mit OrRectRegion hinzu und nehme sie mit XorRectRegion wieder weg. Das sollte eigentlich dafür sorgen, dass diese Bereiche nicht Teil der zu ändernden Fläche sind.

Das Ganze funktioniert laut LogAusgaben und dem was ich sehe auch, aber wenn ich mir die Ausgaben genau anschaue, läuft das Bilden der Region bei den zu schützenden Statusbereichen an einer Stelle immer aus dem Ruder. Hier mal ein Log-Auszug - es erfolgt ein XorRectRegion-Aufruf, mit einer RectangleStruct und der bestehenden Region:
C++ code:
xorNewRectangle mit rectangleStruct top: 15 left: 808 right: 1023 bottom: 230 gerufen
XorRectRegion region vorher mit top: 15 left: 808 right: 1023 bottom: 651
XorRectRegion region nachher mit top: 605 left: 855 right: 1070 bottom: 1241


Ich habe eine feste Auflösung von 1024x768. Wie geht denn sowas? Ein paar Aufrufe später gehen die Koordinaten dann sogar über 15000!!!

Keine Ahnung, wie das sein kann! Denke nicht, dass hier ein Fehler im API ist (arbeite unter AOS4.1 FE), sondern dass ich noch irgendwo was falsch mache/verstehe!

Was könnte das sein?

Abgesehen vom komplexen Clipping, wäre hier ein Ansatz mit Layern oder so besser, um die geschützten Bereich zu implementieren?

Dank euch schon mal!

Ciao

[ Dieser Beitrag wurde von Reth am 28.01.2018 um 17:36 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2018-01-29, 22:36 h

Reth
Posts: 1858
User
Das Seltsame ist auch, dass diese Code-Stelle mehrfach durchlaufen wird und "nur" beim 2. Durchlauf kommen diese irrsinnigen Koordinaten zustande - bei allen anderen Durchläufen davor und danach sind alle Werte korrekt!

Die Adressen der verwendeten Objekte und Strukturen bleiben dieselben, ebenso die verwendeten Werte für die Rechtecke!

[ - Answer - Quote - Direct link - ]

2018-01-29, 23:53 h

Reth
Posts: 1858
User
Ok, konnte meine Vermutung bestätigen: Ich hatte beim Re-Installieren der alten Region den dabei zurück gegebenen Wert eben dieser alten Region zugewiesen im Dickicht meiner Methoden.
Das erklärt das seltsame Auftreten beim 2. Mal, weil ab dann die Region immer dieselbe ist (soweit meine Erklärung dafür).

Ein Problem weniger!

[ - Answer - Quote - Direct link - ]

2018-01-31, 18:57 h

Holger
Posts: 8116
User
Ja, aber warum nicht einfach ClearRectRegion statt OrRectRegion gefolgt von XorRectRegion benutzen?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2018-01-31, 20:09 h

Reth
Posts: 1858
User
@Holger:

Joaaa ... guter Punkt ... :D

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > XorRectRegion erzeugt falsche RegionStruct [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.