Hi,
Danke für die Tipps
Zitat: |
Wenn man ein bestimmtes Grafikformat unterstützen will, genügt es im allgemeinen eine Unit einzubinden, die den passenden Nachkommen von TGraphic registriert.
TTGAImageClass ist nicht von TGraphic abgeleitet, damit wird es schwer diese in Projekte einzubinden. |
Hier bin ich nicht sicher was du meinst. Wenn du die Unit UTGAImageClass zu deinem Projekt hinzufügst kannst du doch dann TGAImageClass verwenden, oder nicht?
Gib mir mal ein Beispiel wie der Vorteil ein Nachfahre von TGraphic zu sein aussieht?
Zitat: |
Im Constructor kann man ABitDepth angeben, tatsächlich wird aber nur 32Bit unterstützt.
Alle Speicheranforderungen und Methoden rechnen mit 32Bit. |
Als "Unterstützung für 24 bit" ist vorgesehen intern mit 32bit zu rechnen, und den Alphakanal intern mit einer dummy null zu ergänzen.
Ein bischen bin ich aber noch unschlüssig wie ich das handhaben soll.
Zitat: |
Beim LoadFromFile wird der eigene Header-Record in jedem Fall aus der Datei überschrieben.
Wird das Dateiformat nicht unterstützt wird abgebrochen, die vorherige Grafik ist damit aber zerstört. |
In der Tat. Den Header erstmal antesten ist sicher sinvoll. Wird auch direkt umgesetzt
Zitat: |
Damit währe die Eigenschaft Valid überflüssig, diese wird sowieso intern nirgends ausgewertet. |
Dies soll lediglich Rückmeldung nach aussen geben, ob z.b. ein Laden erfolgreich war. Ich weiss, LoadFromFile gibt ads schon direkt als Rückgabewert, aber ich dachte es kann nichts schden das uch später nochmal abfragen zu können. Beispielsweise wenn ich selbstherrlich entscheiden sollte nur quadratische Grafiken mit einer Kantenlänge von 2^n zuzulassen. Was wohl bei OpenGL Texturen der Fall sein wird.
(Obwohl man das auch im übergeordneten Texturobjekt unterbringen könnte...)
Zitat: |
Es wird kein Share-Mode beim Öffnen der Datei angegeben (z.B. fmShareDenyWrite). |
Du meinst das mehrere Leute/Threads gleichzeitig auf die Datei zugreifen? Das hatte ich eigentlich so nicht vorgesehen. Ich gebe zu das ist dann vielleicht etwas maßgenscheidert auf meien Bedürfnisse, aber TGA Dateien werden nur von der Anwednung erzeugt und geschrieben.
Der Anwender läd zum Beispiel ein par TGAs und wählt nun für das "Zielbild" Rotkanal von TGAx Grünkanal von TGAy, etc.
(So wie man das beim Materialeditor vom UDK machen kann).
Zitat: |
Für neue Daten wird an vielen Stellen GetMem aufgerufen, aber vor jedem GetMem müsste eigentlich ein FreeMem stehen, um den vorherigen Inhalt von FData freizugeben. So entstehen vermutlich Speicherlecks. |
Neuen Speicher alloziere ich eigentlich nur andrei Stellen:
1. Der Constructor. Klar, neues Bild braucht Platz. (Wird auch im Destructor wieder freigegeben)
2. Die LoadFromFile Methode. Auch ein geladenes Bild braucht Platz
3. Die Assign Methode. Hah! Und hier mache ich tatsächlich einen Fehler. Hier leckt die alte Grafik aus dem Speicher.
Das hatte ich tatsählich übersehen
Zitat: |
Die Formatierung (insbesondere Einrückung) des Quelltextes sollte einheitlich sein. |
NAch welcher Einheit denn? Vielleicht machst du es anders, aber zumindest ist mein Einrückungsstil konsequent durch den ganzen Quelltext. Ich fange nur nicht mit einer Einrückung an wie es Viele tun (Ausnahme ein "inherited")
Allzu konfus sollte es aber nicht sein ?!
Sobald ich das Ein oder Andere habe einfliessen lassen, gibts die neue Version
Cheers,
Catweasel
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.