Windows GDI und WinAPI

Antworten
Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

@theo
das mit den jpgs liegt einfach nur daran das lazarus bzw fpc die nativ lesen kann und keine lib benutzt.
ist halt im lazarus nicht ganz so einfach wie im delphi und kylix wo die platformen fest vorgegeben sind.
kannst ja n fpimage reader schreiben der progressive encodings unterstützt oder ne lib dazu nehmen ...
Ja. Der ganze Wahnsinn den ich mit dem "malen" hier betreibe, beschränkt sich in Kylix auf eine Zeile (für 32bit):
Move(OpBmp.ScanLine[0]^, Bmp.Scanline[0]^, OpBmp.Width * OpBmp.Height * 4);
Dann ist das Ding auf dem Screen. Ohne wenn und aber.
warum muss es denn unbedingt ein raw zugriff sein ? im kylix wird doch die scanline auch nur emuliert ob nun von der qt oder von kylix selber ka. aber pixmap bitmap ... also kanns doch auch nicht soo schnell sein nimm halt einfach pixels zum setzen. oder schreib nen filereader wenns um dateiformate geht so wie ich das bei dir verstanden habe dann ists eh noch mal ne ganze ecke schneller.

@schnuller
Ähnliches gilt für dynamisch ladbare Object-Libs. Die Dinger sind bei leibe nichts neues. Die hatten wir Mitte der 80er schon bei Phillips im Einsatz um für die Tests von Controlern und Prozessoren die ROM-Codes zu laden. Das passierte i.a.R. mit UNIX-Workstations die an den Testrechnern hingen.
was sind denn ladbare object libs ?
meinst du dynamische bibliotheken mit objekten drin ?
soweit ich weiss wird das nur von .net unterstützt aber von keiner nicht jit sprache ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

=schnell, soll ja schließlich eine Produktions-Umgebung sein und keine Lern- oder Bastel-Umgebung. RAD (rapid application development), was ganz klar aussagt:

Die Komplexität der OS-Abhängigen Lib's muß vor dem Programmierer verborgen sein. Er muß sich für spezielle Aufgaben schnell eigene Objekte ableiten können ohne sich z.B. um das Desktop-Interface zu kümmern.

Der Anspruch ist bei FPC/Lazarus nur z.T. erfüllt, man stößt noch zu oft auf Dinge für die man sehr tief in die Lib's steigen muß. Das geht am Ziel eindeutig vorbei.

Was die Grafikformate angeht haben wir ja schon an anderer Stelle hier im Thread diskutiert. Deswegen auch meine Idee zumindest die gängigen Formate z.V. zu stellen. Schon alleine einen Webbrowser zu entwickeln ist ohne die Möglichkeit GIF's anzuzeigen garnicht möglich. Die sind nunmal weit verbreitet und müssen schon deshalb zwingend unterstützt werden. Für die Zukunft dürfte auch MNG (animated PNG) zwingend nötig sein. Sonderformen wie SVG lassen sich immerhin per Flashplayer realisieren, nicht aber die beiden vorgenannten. Die Qt unterstützt sie ob das für GTK stimmt werd ich mal mit dem Gimp für Windoofs probieren. Wenn der das kann sollte das für FPC auch machbar sein.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Benutzeravatar
theo
Beiträge: 10861
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:@theo
das mit den jpgs liegt einfach nur daran das lazarus bzw fpc die nativ lesen kann und keine lib benutzt.
ist halt im lazarus nicht ganz so einfach wie im delphi und kylix wo die platformen fest vorgegeben sind.
Ne ne, ich hab doch schon eine native JPEG Routine, die ich mit Opbitmap zum Einsatz bringen kann. Die hat keine Probleme mit den JPEGS die Lazarus nicht lesen kann.
Bmp übrigens auch. Kann alle hier lesen: http://entropymine.com/jason/bmpsuite/r ... rence.html" onclick="window.open(this.href);return false;
Die sind dann auch intern in OpBitmap so repräsentiert. Also ich mache nicht aus allem einfach ein 32bit Bitmap, sondern z.B. 8bit mit Palette.
Das braucht dann auch nur den Speicher von 8bit.
Wart's nur ab! Darum mache ich den ganzen Aufwand ja!

Interface für JPEG sieht im Moment so aus. (funzt alles):

Code: Alles auswählen

TJPEGImage = class(TCanvasOPBitmap)
 
private
 fDecoder:TJpegDecoder;
 fEncoder:TJpegEncoder;
    fGrayscale: Boolean;
    fProgressive: Boolean;
    fComment: String;
    fQuality: integer;
protected
 
public
  constructor Create; override;
  destructor Destroy; override;
  procedure LoadFromStream(Stream: TJpegInputStream);
  procedure LoadFromFile(const FileName:String); overload;
  procedure SaveToStream(Stream: TJpegOutPutStream);
  procedure SaveToFile(const FileName:String); overload;
  property Grayscale:Boolean read fGrayscale write fGrayscale;
  property Progressive:Boolean read fProgressive write fProgressive;
  property Comment: String read fComment write fComment;
  property Quality: integer read fQuality write fQuality;
end;
Christian hat geschrieben: warum muss es denn unbedingt ein raw zugriff sein ? im kylix wird doch die scanline auch nur emuliert ob nun von der qt oder von kylix selber ka. aber pixmap bitmap ... also kanns doch auch nicht soo schnell sein nimm halt einfach pixels zum setzen. oder schreib nen filereader wenns um dateiformate geht so wie ich das bei dir verstanden habe dann ists eh noch mal ne ganze ecke schneller.
Pixelchen setzen via Widgetset ist mir zu lahm. Klappt doch schon mit den Raw's und ist schnell, ich muss nur an der Transparenz noch ein bisschen rumfeilen.
Bei Kylix ist das direkt zu Qt ge-interfaced: QImage_scanLine(FImage, Row).
Was Qt damit macht, ist eine andere Frage.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

@theo
hört sich sehr gut an, warum machst du keinen TPicture ersatz draus ?
Dann hätte die ganze Lazarus community was davon.

@schnuller
Die Qt unterstützt sie ob das für GTK stimmt werd ich mal mit dem Gimp für Windoofs probieren. Wenn der das kann sollte das für FPC auch machbar sein.
ist das dein ernst ? gimp kann doch nicht nur formate lesen die von gtk nativ unterstützt werden ...
ist sowiso keine tolle idee grafikformate ans widgetset zu koppeln ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10861
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:@theo
hört sich sehr gut an, warum machst du keinen TPicture ersatz draus ?
Dann hätte die ganze Lazarus community was davon.
Ich weiss jetzt nicht genau, auf welchem "Level" du das meinst.
Aber ich möchte es nicht in die LCL/VCL/CLX integrieren.
Zunächst mal, weil es überall laufen soll (L/K/D) und zweitens, weil es keine Abhängigkeiten von Widgetsets bekommen sollte.
Die "Kommunikation" mit der LCL macht es ja nur im letzten Schritt. z.B.:
AssignOpBitmapToBitmap(Op, Image1.Picture.Bitmap);
Somit kann man es nämlich auf Servern ohne X einsetzen, z.B. zum Bilder konvertieren, resamplen etc.

Die community hat auch so was davon. Warum denn nicht?
Ausserdem sind die Schreib-/Lese Routinen ja nicht von mir. Es sind zwar freie Codes (allerdings mit Copyright) und ich habe die Autoren der wichtigsten auch persönlich angefragt.
Aber es wäre schon möglich, dass sich die LCL Entwickler lieber nicht darauf verlassen möchten.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich sag ja nicht das sie so nichts davon haben die Lazarus TPicture klasse ist auch Widgetsetunabhängig das einzige was widgetsetabhängig ist, ist TBitmap.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10861
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Ich sag ja nicht das sie so nichts davon haben die Lazarus TPicture klasse ist auch Widgetsetunabhängig das einzige was widgetsetabhängig ist, ist TBitmap.
OKE. Aber irgendwie ist mir das im Moment noch nicht zuoberst auf der Liste.
Erst mal das Ei legen. ;-)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das is doch klar, ersma muss man Egoist sein und das nich zu knapp das hat mich die OpenSource welt gelehrt (nich nur die) :)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@theo

Da hammers, MNG geht garnicht, GIF's gehen aber nicht animiert.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Christian hat geschrieben:Das is doch klar, ersma muss man Egoist sein und das nich zu knapp
:shock:

Kommt drauf an, wie diejenigen Menschen handeln, mit denen man zutun hat ;)

Benutzeravatar
theo
Beiträge: 10861
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

schnullerbacke hat geschrieben:@theo
Da hammers, MNG geht garnicht, GIF's gehen aber nicht animiert.
Wie? Was? Wo?

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@theo

Beim Gimp für Windoofs, scheint also doch über GTK zu gehen oder die habens auch nicht integriert. Da müssen wir wohl doch selbst ran.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Benutzeravatar
theo
Beiträge: 10861
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

schnullerbacke hat geschrieben:@theo
Beim Gimp für Windoofs, scheint also doch über GTK zu gehen oder die habens auch nicht integriert. Da müssen wir wohl doch selbst ran.
Gimp 2.2. auf Linux kann das alles. Auch Animationen erstellen.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich will nicht behaupten schnullerbacke zu verstehen aber ich glaube er meinte da der Gimp dies nicht mit gtk funktionen macht könenn wir diese auch nicht benutzen ?! Wobei ich aber nicht weiss wie er das rausbekommt und warum gimp dateiformate über gtk lesen sollte
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10861
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:warum gimp dateiformate über gtk lesen sollte
Naja. Eigentlich hast du recht, andererseits heisst GTK ja immerhin "GIMP-Toolkit" und da ist es nicht soo abwegig anzunehmen, das Toolkit würde diese Funktionen zur Verfügung stellen.
Zuletzt geändert von theo am Mi 31. Jan 2007, 12:52, insgesamt 1-mal geändert.

Antworten