Grande avancée dans le projet espagnol
Yep !
Il fallait remplacer son CopyMemory dédié Delphi/Windows par Move, mais ce ne fut pas simple.
D'abord un exemple d'utilisation correcte sous Windows, dans la proc UnZipImage, pour tester :
Code:
1 2 3 4 5 6
| CopyMemory (@b[0], GifLZW, blocksize); // original ok
// remplacé par
System.Move(GifLZW^, b[0], blocksize); // rendu ok
//avec
GifLZW: PByte
b: array [0..255] of BYTE. |
Là où ce fut laborieux :
Code:
1 2 3 4 5 6 7 8
| CopyMemory (FBmpStream.ScanLine(Nexline), linebuffer, width) // original ok
System.Move(linebuffer, FBmpStream.ScanLine(Nexline)^, width) // rendu en vrac
//avec
FBmpStream: TBitmapStream;
TBitmapStream = class (TMemoryStream)
function ScanLine(Line: DWORD): Pointer;
Nexline: WORD;
linebuffer: array of BYTE; // Place to store the current line |
Il m'aura fallu rajouter :
et dans le
Code:
1 2 3 4 5 6
| begin
...
// avant la boucle
lb := linebuffer; // jpt
// et dans la boucle
System.Move(lb^, FBmpStream.ScanLine(Nexline)^, width) |
Les tests sous Linux sont concluants, plus qu'à faire avancer le reste, le problème du background et je n'ai pas encore trouvé où son code se cache
J.P, merci pour la piste jvcl que je garde précieusement dans un coin pour étude et voir ensuite comment l'utiliser.