var
Bitmap: TBitmap;
Buffer: Pointer;
Width, Height, I: Integer;
BeginFilter;
Bitmap := TBitmap.Create;
try
// création d'un bitmap en 24 bits de la taille de la sélection
Width := GetSelWidth;
Height := GetSelHeight;
Bitmap.PixelFormat := pf24bit;
Bitmap.Width := Width;
Bitmap.Height := Height;
// copie la sélection dans le bitmap
GetSelBitmap(Image.piBitmap);
// parcourt chaque ligne
for I := 0 to Height - 1 do
begin
Buffer := Bitmap.Scanline[I];
// action sur buffer
end;
// met à jour la sélection PhotoFiltre
SetSelBitmap(Bitmap);
finally
Bitmap.Free;
EndFilter;
end;
B) Principe en C ou autre (à la syntaxe près bien sûr)
Merci à PF (il se reconnaîtra ) pour l'idée de la structure TPlgImage !
var
Image: TPlgImage;
I: Integer;
BeginFilter;
try
// création d'un bitmap en 24 bits de la taille de la sélection
Image.piWidth := GetSelWidth;
Image.piHeight := GetSelHeight;
CreateDBmp(@Image); // c'est PhotoFiltre qui s'en charge
// copie la sélection dans le bitmap
GetSelBitmap(Image.piBitmap);
// parcourt chaque ligne
for I := 0 to Height - 1 do
begin
GetScanLineDBmp(@Image, I);
// action sur Image.piBuffer
end;
// met à jour la sélection PhotoFiltre
SetSelBitmap(Image.piBitmap);
finally
FreeDBmp(@Image);
EndFilter;
end;
Image$: TPlgImage
I: Integer
; création d'un bitmap en 24 bits de la taille de la sélection
Image$.piWidth = GetSelWidth$
Image$.piHeight = GetSelHeight$
CreateDBmp(@Image$); c'est PhotoFiltre qui s'en charge
; copie la sélection dans le bitmap
GetSelBitmap(Image$.piBitmap)
; parcourt chaque ligne
For I = 0 To Height - 1 do
GetScanLineDBmp(@Image$, I)
; action sur Image$.piBuffer
Next
; met à jour la sélection PhotoFiltre
SetSelBitmap(Image$.piBitmap)
FreeDBmp(@Image$)
Bon ya des truc qui m'ennuient ! Les points entre deux variables... C'est pour les assembler ? Ou j'ai raté un truc ? De plus les variables non image$ sont elles des chiffres ? Ou des lettres ? Je corrigerais en conséquent
Le blème c'est que pour l'instant je tente de comprendre comment faire la conversion entre C/C++/Delphi vers le pureBasic comme ca je pourrais aussi faire des plugins Tu ne serais plus seul !
Salut a tous,
Je viens de charger PureBasic pour voir, je connaissais pas....
Avec la version de Démo il me parrais impossible de faire un plugin:
"No DLL Creation" et "No Win32 API Support" (Benjamin a déja soulevé le problème).
Par contre avec une version complete($!?!$) et dans la mesure ou il peut:
manipuler les pointeurs (*piBitmap.l) et gerer les handles d'objets, c'est certainement possible.
En VB c'est impossible (DLL ActivX uniquement)
Sinon, Il est possible de se procurer Gratuitement et légalement le compilateur C/C++ v5.5 de Borland et l'assembleur MASM32 32bits (ML) de Microsoft.
On peut aussi trouver une foule d'editeurs au meme prix!.
Par contre, avec C++Builder, (ou VC++) il est tout a fait possible de recuperer les headers (voir meme le source) de l'exemple et de construire un plugin (avantage du C par rapport au C++), en modifiant quelques declarations.
L'avantage de C++Builder c'est qu'il génére automatiquement un .hpp qui est une traduction de l'interface de l'unité Delphi en C++ avec un peu de modification je pense que ce header pourrait être utilisé en VC++ voir Borland C++ 5.5 (celui qui est gratuit)
Ok pour la proposition hpp dePlgInt.pas et une adaptation de l'unité Plugins.pas en C++ en remplaçant les fonctions qui prennent en paramètre TBitmap par un TPlgImage. Comme ça on poura faire des remarques constructives. Le but étant de normaliser...donc tout le monde participe
Sinon je me demande si ca serait pas plus simple de faire une interface COM/OLE car ca reste quand même une meilleure solution pour faire une ouverture multilangage car même PureBasic supporte de telles interface...