Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   BITBLT cross platform variante für FMX / LINUX (https://www.delphipraxis.net/198362-bitblt-cross-platform-variante-fuer-fmx-linux.html)

EWeiss 2. Nov 2018 10:30

AW: BITBLT cross platform variante für FMX / LINUX
 
Zitat:

Zitat von TiGü (Beitrag 1417305)
So wird das nichts.
Du musst eine High Level Lösung finden, die dir solche Details wie Aufrufparameter wegkapselt, wenn du nur ein Bitmap auf einen Canvas/anderes Bitmap malen willst.

Dito!
So wie ich das verstehe will er folgendes verwirklichen.

Delphi-Quellcode:
function BitBltWrapper(DC: HDC; x, y, cx, cy: Integer; srcDC: HDC; x1, x2: Integer; rop: DWORD): BOOL;
var
  IsWindows, IsUnix: BOOL // muss außen definiert werden nur ein Beispiel
begin

  Result := false;

  if IsWindows then
    Result := BitBlt(DC, x, y, cx, cy, srcDC, x1, x2, rop)
  else
  if IsUnix then
    Result := MyUnixBitBlt(DC, x, y, cx, cy, srcDC, x1, x2, rop);
end;
Das Problem ist nun für UNIX den vergleich zu finden.
Wie er sich das DC und die anderen Parameter im weiteren verlauf holt mag mal dahingestellt sein.

Zitat:

Warum nicht gleich überall die Version nehmen, die überall funktioniert?
Will er ja nur er möchte das Format (den Aufruf von BitBlt) erhalten!
Da sehe ich nichts falsches dran.

gruss

hoika 2. Nov 2018 10:48

AW: BITBLT cross platform variante für FMX / LINUX
 
Hallo,
wozu den Wrapper?

Ich würde eine eigene Unit mit einer Linux-BitBlt-Funktion (IFDEF LINUX) schreiben, die die gleichen Parameter wie die Windows-Funktion benutzt
und diese Unit ebenfalls statt der unit Windows per IFDEF LINUX einbinden.

Was die Funktion dann intern macht -> da bin ich raus ;)

EWeiss 2. Nov 2018 10:49

AW: BITBLT cross platform variante für FMX / LINUX
 
Zitat:

Zitat von hoika (Beitrag 1417312)
Hallo,
wozu den Wrapper?

Ich würde eine eigene Unit mit einer Linux-BitBlt-Funktion (IFDEF LINUX) schreiben, die die gleichen Parameter wie die Windows-Funktion benutzt
und diese Unit ebenfalls statt der unit Windows per IFDEF LINUX einbinden.

Was die Funktion dann intern macht -> da bin ich raus ;)

Ist doch nur ein Beispiel dessen was er erreichen will.
Auf welchem Wege er das macht ist doch egal solange die Parameterliste stimmt.

gruss

TiGü 2. Nov 2018 12:31

AW: BITBLT cross platform variante für FMX / LINUX
 
Nein, das ist alles Käse.
Er hat einen FMX Canvas und Bitmaps. Diese bitten die passenden Methoden an. Er muss ein paar Ebenen höher ansetzen und dort den Code mit der Windows VCL Version auf einen Nenner bringen.
Die BitBlt Funktion gehört zum Windows GDI.
Woher bitteschön sollen Quell- und Ziel- HDC herkommen?

EWeiss 2. Nov 2018 13:15

AW: BITBLT cross platform variante für FMX / LINUX
 
Zitat:

Woher bitteschön sollen Quell- und Ziel- HDC herkommen?
Keine Ahnung habe kein FMX und werde es auch nicht verwenden.
Zitat:

Nein, das ist alles Käse.
Kann sein.. es widerspricht aber seinen wünschen darauf wurde von mir geantwortet, was er am ende tut kann mir egal sein.
Er wird sich schon was dabei gedacht haben und was Käse ist entscheidet er letztendlich für sich allein.

Ich kann nicht weiterhelfen daher bin ich jetzt raus.

gruss

bernhard_LA 2. Nov 2018 14:37

AW: BITBLT cross platform variante für FMX / LINUX
 
welcher code/funtion geht überall ?


möglich wäre

Delphi-Quellcode:
function bitblt_crossplattform ( bmp1 , bmp2 : TBitmap) ;
begin
   {$ifdef windows}  //  hier VCL + Windows GDI
       bitblt (bmp1.canvas.handle, .......);
   {$endif}
   {$ifdef Linux} // oder Firemonkey
       welche_Funktion_auch_immer (bmp1, .......);
   {$endif} 
end;

KodeZwerg 2. Nov 2018 14:49

AW: BITBLT cross platform variante für FMX / LINUX
 
Mein Ursprünglicher Gedanke war es, der CopyFrom() nochn overload zu verpassen.
So bräuchtest Du nur im Code per Aufruf Windows <> Linux entscheiden womit du es fütterst.
Also zweiten overload mit BitBlt() definitionen und intern dann bitblt() aufrufen.

Wäre das doof? (hab weil ich mir selbst nicht im klaren war vorhin beitrag entfernt)

mkinzler 2. Nov 2018 14:59

AW: BITBLT cross platform variante für FMX / LINUX
 
Er muss sich ja nicht entscheiden, immer die CopyFrom-Variante verwenden. Diese funktioniert ja auch unter Windows.

KodeZwerg 2. Nov 2018 15:17

AW: BITBLT cross platform variante für FMX / LINUX
 
Zitat:

Zitat von mkinzler (Beitrag 1417352)
Er muss sich ja nicht entscheiden, immer die CopyFrom-Variante verwenden. Diese funktioniert ja auch unter Windows.

:thumb::thumb::thumb:

:wall: ich lach immer noch über mich selber :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz