Browse Source

Finish adding filters in c# and pascal headers.
DestroyAll now reset the array size.

lainz 10 years ago
parent
commit
49e517c4c1

+ 27 - 14
bgra_pascalscript_library/c#/BGRABitmap.cs

@@ -1,4 +1,5 @@
 using System;
 using System;
+using System.Drawing;
 using System.Runtime.InteropServices;
 using System.Runtime.InteropServices;
 
 
 namespace BGRABitmapLibrary
 namespace BGRABitmapLibrary
@@ -6,8 +7,6 @@ namespace BGRABitmapLibrary
     public class BGRABitmap
     public class BGRABitmap
     {
     {
         /* Types */
         /* Types */
-
-        // ToDo: Rect, Point, PointF
         
         
 		public enum MedianOption : byte { None, LowSmooth, MediumSmooth, HighSmooth };
 		public enum MedianOption : byte { None, LowSmooth, MediumSmooth, HighSmooth };
 		
 		
@@ -26,6 +25,9 @@ namespace BGRABitmapLibrary
         [DllImport("bgrabitmap", EntryPoint = "destroy")]
         [DllImport("bgrabitmap", EntryPoint = "destroy")]
         public static extern void Destroy(int id);
         public static extern void Destroy(int id);
 
 
+        [DllImport("bgrabitmap", EntryPoint = "destroyall")]
+        public static extern void DestroyAll();
+
         [DllImport("bgrabitmap", EntryPoint = "gethighestid")]
         [DllImport("bgrabitmap", EntryPoint = "gethighestid")]
         public static extern int GetHighestID();
         public static extern int GetHighestID();
 
 
@@ -94,7 +96,8 @@ namespace BGRABitmapLibrary
 		[DllImport("bgrabitmap", EntryPoint = "filtersharpen")]
 		[DllImport("bgrabitmap", EntryPoint = "filtersharpen")]
         public static extern void FilterSharpen(int id, Single Amount);
         public static extern void FilterSharpen(int id, Single Amount);
 		
 		
-		// filtersharpenrect
+        [DllImport("bgrabitmap", EntryPoint = "filtersharpenrect")]
+        public static extern void FilterSharpen(int id, Rectangle ABounds, Single Amount);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filtercontour")]
 		[DllImport("bgrabitmap", EntryPoint = "filtercontour")]
         public static extern void FilterContour(int id);
         public static extern void FilterContour(int id);
@@ -105,22 +108,26 @@ namespace BGRABitmapLibrary
 		[DllImport("bgrabitmap", EntryPoint = "filterblurradial")]
 		[DllImport("bgrabitmap", EntryPoint = "filterblurradial")]
         public static extern void FilterBlurRadial(int id, int radius, RadialBlurType blurType);
         public static extern void FilterBlurRadial(int id, int radius, RadialBlurType blurType);
 		
 		
-		// filterblurradialrect
+        [DllImport("bgrabitmap", EntryPoint = "filterblurradialrect")]
+        public static extern void FilterBlurRadial(int id, Rectangle ABounds, int radius, RadialBlurType blurType);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filterblurmotion")]
 		[DllImport("bgrabitmap", EntryPoint = "filterblurmotion")]
         public static extern void FilterBlurMotion(int id, int distance, Single angle, bool oriented);
         public static extern void FilterBlurMotion(int id, int distance, Single angle, bool oriented);
 		
 		
-		// filterblurmotionrect
+        [DllImport("bgrabitmap", EntryPoint = "filterblurmotionrect")]
+        public static extern void FilterBlurMotion(int id, Rectangle ABounds, int distance, Single angle, bool oriented);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filtercustomblur")]
 		[DllImport("bgrabitmap", EntryPoint = "filtercustomblur")]
         public static extern void FilterCustomBlur(int id, int mask);
         public static extern void FilterCustomBlur(int id, int mask);
 		
 		
-		// filtercustomblurrect
+        [DllImport("bgrabitmap", EntryPoint = "filtercustomblur")]
+        public static extern void FilterCustomBlur(int id, Rectangle ABounds, int mask);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filteremboss")]
 		[DllImport("bgrabitmap", EntryPoint = "filteremboss")]
         public static extern void FilterEmboss(int id, Single angle);
         public static extern void FilterEmboss(int id, Single angle);
 		
 		
-		// filterembossrect
+        [DllImport("bgrabitmap", EntryPoint = "filterembossrect")]
+        public static extern void FilterEmboss(int id, Single angle, Rectangle ABounds);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filterembosshighlight")]
 		[DllImport("bgrabitmap", EntryPoint = "filterembosshighlight")]
         public static extern void FilterEmboss(int id, bool FillSelection);
         public static extern void FilterEmboss(int id, bool FillSelection);
@@ -128,26 +135,32 @@ namespace BGRABitmapLibrary
 		[DllImport("bgrabitmap", EntryPoint = "filterembosshighlightborder")]
 		[DllImport("bgrabitmap", EntryPoint = "filterembosshighlightborder")]
         public static extern void FilterEmboss(int id, bool FillSelection, uint BorderColor);
         public static extern void FilterEmboss(int id, bool FillSelection, uint BorderColor);
 		
 		
-		// filterembosshighlightborderandoffset
+        [DllImport("bgrabitmap", EntryPoint = "filterembosshighlightborderandoffset")]
+        public static extern void FilterEmboss(int id, bool FillSelection, uint BorderColor, Point Offset);
         
         
         [DllImport("bgrabitmap", EntryPoint = "filtergrayscale")]
         [DllImport("bgrabitmap", EntryPoint = "filtergrayscale")]
         public static extern void FilterGrayscale(int id);
         public static extern void FilterGrayscale(int id);
 		
 		
-		// filtergrayscalerect
+        [DllImport("bgrabitmap", EntryPoint = "filtergrayscalerect")]
+        public static extern void FilterGrayscale(int id, Rectangle ABounds);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filternormalize")]
 		[DllImport("bgrabitmap", EntryPoint = "filternormalize")]
         public static extern void FilterNormalize(int id, bool eachChannel);
         public static extern void FilterNormalize(int id, bool eachChannel);
+
+        [DllImport("bgrabitmap", EntryPoint = "filternormalizerect")]
+        public static extern void FilterNormalize(int id, Rectangle ABounds, bool eachChannel);
 		
 		
-		// filternormalizerect
-		
-		// filterrotate
+        [DllImport("bgrabitmap", EntryPoint = "filterrotate")]
+        public static extern void FilterRotate(int id, PointF origin, Single angle, bool correctBlur);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filtersphere")]
 		[DllImport("bgrabitmap", EntryPoint = "filtersphere")]
         public static extern void FilterSphere(int id);
         public static extern void FilterSphere(int id);
 		
 		
-		// filtertwirl
+        [DllImport("bgrabitmap", EntryPoint = "filtertwirl")]
+        public static extern void FilterTwirl(int id, Point ACenter, Single ARadius, Single ATurn, Single AExponent);
 		
 		
-		// filtertwirlrect
+        [DllImport("bgrabitmap", EntryPoint = "filtertwirlrect")]
+        public static extern void FilterTwirl(int id, Rectangle ABounds, Point ACenter, Single ARadius, Single ATurn, Single AExponent);
 		
 		
 		[DllImport("bgrabitmap", EntryPoint = "filtercylinder")]
 		[DllImport("bgrabitmap", EntryPoint = "filtercylinder")]
         public static extern void FilterCylinder(int id);
         public static extern void FilterCylinder(int id);

+ 43 - 0
bgra_pascalscript_library/pascal/bgrabitmaplibrary.pas

@@ -14,6 +14,9 @@ uses
 type
 type
   TBGRAColor = longword;
   TBGRAColor = longword;
   TMedianOption = (moNone, moLowSmooth, moMediumSmooth, moHighSmooth);
   TMedianOption = (moNone, moLowSmooth, moMediumSmooth, moHighSmooth);
+  TResampleFilter = (rfBox, rfLinear, rfHalfCosine, rfCosine, rfBicubic, rfMitchell, rfSpline, rfLanczos2, rfLanczos3, rfLanczos4, rfBestQuality);
+  TRadialBlurType = (rbNormal, rbDisk, rbCorona, rbPrecise, rbFast, rbBox);
+  TPointF = packed record x, y: single;end;
 
 
 function GetHighestID(): integer; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'gethighestid';
 function GetHighestID(): integer; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'gethighestid';
 function rgb(red, green, blue: byte): TBGRAColor; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'rgb';
 function rgb(red, green, blue: byte): TBGRAColor; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'rgb';
@@ -33,9 +36,49 @@ procedure SetPixel(id: integer; x, y: integer; AColor: TBGRAColor); {$IFDEF stdc
 function GetPixel(id: integer; x, y: integer): TBGRAColor; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'getpixel';
 function GetPixel(id: integer; x, y: integer): TBGRAColor; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'getpixel';
 procedure CreateFromFile(id: integer; AFilename: PWideChar); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'createfromfile';
 procedure CreateFromFile(id: integer; AFilename: PWideChar); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'createfromfile';
 procedure Destroy(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'destroy';
 procedure Destroy(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'destroy';
+procedure DestroyAll; {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'destroyall';
 procedure SaveToFile(id: integer; filename: PWideChar); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'savetofile';
 procedure SaveToFile(id: integer; filename: PWideChar); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'savetofile';
+{ Filters }
 procedure FilterSmartZoom3(id: integer; Option: TMedianOption); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtersmartzoom3';
 procedure FilterSmartZoom3(id: integer; Option: TMedianOption); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtersmartzoom3';
+procedure FilterMedian(id: integer; Option: TMedianOption); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtermedian';
+procedure FilterSmooth(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtersmooth';
+procedure FilterSharpen(id: integer; Amount: single); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtersharpen';
+procedure FilterSharpenRect(id: integer; ABounds: TRect; Amount: single); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtersharpenrect';
+procedure FilterContour(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtercontour';
+procedure FilterPixelate(id: integer; pixelSize: integer;
+useResample: boolean; filter: TResampleFilter); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterpixelate';
+procedure FilterBlurRadial(id: integer; radius: integer; blurType: TRadialBlurType); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterblurradial';
+procedure FilterBlurRadialRect(id: integer; ABounds: TRect;
+radius: integer; blurType: TRadialBlurType); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterblurradialrect';
+procedure FilterBlurMotion(id: integer; distance: integer;
+angle: single; oriented: boolean); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterblurmotion';
+procedure FilterBlurMotionRect(id: integer; ABounds: TRect;
+distance: integer; angle: single; oriented: boolean); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterblurmotionrect';
+procedure FilterCustomBlur(id: integer; mask: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtercustomblur';
+procedure FilterCustomBlurRect(id: integer; ABounds: TRect; mask: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtercustomblurrect';
+procedure FilterEmboss(id: integer; angle: single); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filteremboss';
+procedure FilterEmbossRect(id: integer; angle: single; ABounds: TRect); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterembossrect';
+procedure FilterEmbossHighlight(id: integer; FillSelection: boolean); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterembosshighlight';
+procedure FilterEmbossHighlightBorder(id: integer; FillSelection: boolean;
+BorderColor: TBGRAColor); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterembosshighlightborder';
+procedure FilterEmbossHighlightBorderAndOffset(id: integer;
+FillSelection: boolean; BorderColor: TBGRAColor; Offset: TPoint); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterembosshighlightborderandoffset';
 procedure FilterGrayscale(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtergrayscale';
 procedure FilterGrayscale(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtergrayscale';
+procedure FilterGrayscaleRect(id: integer; ABounds: TRect); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtergrayscalerect';
+procedure FilterNormalize(id: integer; eachChannel: boolean); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filternormalize';
+procedure FilterNormalizeRect(id: integer; ABounds: TRect; eachChannel: boolean); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filternormalizerect';
+procedure FilterRotate(id: integer; origin: TPointF; angle: single;
+correctBlur: boolean); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterrotate';
+procedure FilterSphere(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtersphere';
+procedure FilterTwirl(id: integer; ACenter: TPoint; ARadius: single;
+ATurn: single; AExponent: single); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtertwirl';
+procedure FilterTwirlRect(id: integer; ABounds: TRect; ACenter: TPoint;
+ARadius: single; ATurn: single; AExponent: single); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtertwirlrect';
+procedure FilterCylinder(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filtercylinder';
+procedure FilterPlane(id: integer); {$IFDEF stdcall}stdcall;{$ELSE}cdecl;{$ENDIF} external 'bgrabitmap' Name 'filterplane';
+
+
+
 
 
 implementation
 implementation
 
 

+ 1 - 7
bgra_pascalscript_library/pascal/test_library.lpi

@@ -9,7 +9,6 @@
       <Title Value="test_library"/>
       <Title Value="test_library"/>
       <ResourceType Value="res"/>
       <ResourceType Value="res"/>
       <UseXPManifest Value="True"/>
       <UseXPManifest Value="True"/>
-      <Icon Value="0"/>
     </General>
     </General>
     <i18n>
     <i18n>
       <EnableI18N LFM="False"/>
       <EnableI18N LFM="False"/>
@@ -33,7 +32,7 @@
         <PackageName Value="LCL"/>
         <PackageName Value="LCL"/>
       </Item1>
       </Item1>
     </RequiredPackages>
     </RequiredPackages>
-    <Units Count="3">
+    <Units Count="2">
       <Unit0>
       <Unit0>
         <Filename Value="test_library.lpr"/>
         <Filename Value="test_library.lpr"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
@@ -46,11 +45,6 @@
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="utest"/>
         <UnitName Value="utest"/>
       </Unit1>
       </Unit1>
-      <Unit2>
-        <Filename Value="bgrabitmaplibrary.pas"/>
-        <IsPartOfProject Value="True"/>
-        <UnitName Value="BGRABitmapLibrary"/>
-      </Unit2>
     </Units>
     </Units>
   </ProjectOptions>
   </ProjectOptions>
   <CompilerOptions>
   <CompilerOptions>

+ 1 - 2
bgra_pascalscript_library/pascal/test_library.lpr

@@ -7,8 +7,7 @@ uses
   cthreads,
   cthreads,
   {$ENDIF}{$ENDIF}
   {$ENDIF}{$ENDIF}
   Interfaces, // this includes the LCL widgetset
   Interfaces, // this includes the LCL widgetset
-  Forms, utest, bgrabitmaplibrary
-  { you can add units after this };
+  Forms, utest;
 
 
 {$R *.res}
 {$R *.res}
 
 

+ 1 - 0
bgrapascalscript.pas

@@ -202,6 +202,7 @@ var
 begin
 begin
   for id := 0 to bgra_GetHighestID do
   for id := 0 to bgra_GetHighestID do
     bgra_Destroy(id);
     bgra_Destroy(id);
+  SetLength(BitmapArray, 0);
 end;
 end;
 
 
 procedure bgra_Fill(id: integer; AColor: TBGRAColor);
 procedure bgra_Fill(id: integer; AColor: TBGRAColor);