Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.04.2011, 23:10

Image Loader (bmp, jpg, png)

Moin ;)

Meine Image-Loader für bmp, jpg und png sind jetzt endlich fertig.
Es ist möglich die Datein aus einer Datei zu laden oder auch direkt vom RAM aus.
Naja mehr gibt es auch nicht zu sagen ^^
Sind halt Image-Loader.

Mal zusammengefasst:

Formate: bmp, jpg, png
Entwicklungzeit: ca. 1 Monat (wenn jmd. interessiert :D )
Librarys: libjpeg, libpng/libzip

Ich habe mal ein Testprogramm geschrieben, dass alle 3 Formate lädt und darstellt (hoffe ich xD).
Den Sourcecode und das Programm gibts hier.
Kritik ist sogar erwünscht :)

Zuguterletzt will ich david_pb, dot und idontknow danken, dass sie mir beim Bitmapladen geholfen haben.

Danke :)

2

03.04.2011, 00:04

Hm, ist das ein Lernprojetk oder ernsthafte Konkurrenz für DevIL?

Hab mir mal den Source angeschaut, find ich soweit ganz schön. Aber ich hätte echt die LoadFromMemory Funktion kleiner gemacht, also 2-10 Hilfsfunktionen geschrieben. Bei 2 verschachtelten switchs verliert man echt den Überblick, würde jeder case Zweig nur die passende Funktion aufrufen, wäre alles viel übersichtlicher.
Man könnte auch eine gemeinsame Oberklasse haben, denn soweit ich das sehe, speichern alle 3 Klassen die größe und ein Pixel Vector. In der Oberklasse könnte dann auch gleich die LoadFromFile Funktion stehen, die ja eh jedesmal nur die LoadFromMemory Funktion aufruft, die dann ja jeweils passend überladen sein könnte.
Viele Kommentare sind zwar löblich, aber du hast zu viele:

C-/C++-Quelltext

1
2
// Only skip if 'count' is not zero
if (count > 0)

Das Kommentar bietet keinerlei Zusatzinformationen, und macht den Code daher eher unübersichtlich als leserlicher. Das Kommentar lügt ja sogar, da nicht auf Ungleichheit getestet wird (denn so wie ich das sehe, ist count ein signed long, könnte also auch negativ sein).
Lieber dumm fragen, als dumm bleiben!

3

03.04.2011, 11:19

Hm, ist das ein Lernprojetk oder ernsthafte Konkurrenz für DevIL?

Das ist ein Lernprojekt, wobei ich es dann auch in meinem Framework verwenden werde.
Gegen DevIL kommt man ja als normaler Programmierer eh nicht an ^^

Aber ich hätte echt die LoadFromMemory Funktion kleiner gemacht, also 2-10 Hilfsfunktionen geschrieben. Bei 2 verschachtelten switchs verliert man echt den Überblick, würde jeder case Zweig nur die passende Funktion aufrufen, wäre alles viel übersichtlicher.

Ja da hast du recht. Bei den Bitmaps ist das etwas größer geworden als ich erwartet habe.
Werde das auch ändern.

Man könnte auch eine gemeinsame Oberklasse haben, denn soweit ich das sehe, speichern alle 3 Klassen die größe und ein Pixel Vector. In der Oberklasse könnte dann auch gleich die LoadFromFile Funktion stehen, die ja eh jedesmal nur die LoadFromMemory Funktion aufruft, die dann ja jeweils passend überladen sein könnte.

Stimmt, daran habe ich garnicht gedacht.
Wird auch gemacht :)

Viele Kommentare sind zwar löblich, aber du hast zu viele

Gut da hab ich wohl etwas übertrieben sogar jedes 'if' zu kommentieren ^^
Ich versuch mal etwas größere Blöck mit Kommentaren zu versehen.

Danke fürs Anschauen und die hilfreiche Kritik :)

4

09.04.2011, 15:13

Tag,

Hab jetzt endlich mal Zeit gehabt die Dinge etwas zu verbessern.
Das Design wurde jetzt komplett umgekrempelt.

Es gibt jetzt nur noch eine Klasse für die Bilddaten ('Image') anstelle von jeweils einer Klasse für jedes Format.
Das heißt, dass man nur noch 'Image::LoadFromFile' oder 'Image::LoadFromMemory' aufrufen muss und die Methoden
erkennen selbst um welches Format es sich handelt.
Das Laden übernehmen jetzt 3 Klassen ('ImageLoaderBmp/Jpg/Png'), die von der Klasse 'ImageLoader' abgeleitet wurden.
Allerdings kann nur 'Image' die ctor der ImageLoader aufrufen.

Kommentare hab ich jetzt ein paar entfernt, sollte jetzt ok sein.
Die Lade-Methoden wurden jetzt auch in mehere kleine Methoden aufgeteilt.

Weiterhin ist Kritik erwünscht :)

Einen Punkt finde ich jetzt schon nicht so schön am Code:
In den Lade-Methoden von 'Image' habe ich jeweils eine statische Instanz der ImageLoader,
was ich jetzt nicht so optimal finde. Hättet ihr da einen besseren Vorschlag?

Hier ist der Link.

Thx für die Antworten. :)


P.S.: Sry für Doppelpost :(

EDIT: Hab da doch glatt vergessen zu beschreiben was ich verbessert habe, sry. Steht da jetzt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ».:!Batzer!:.« (09.04.2011, 19:40)


Werbeanzeige