BGRABitmap.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. using System;
  2. using System.Drawing;
  3. using System.Runtime.InteropServices;
  4. namespace BGRABitmapLibrary
  5. {
  6. public static class BGRABitmap
  7. {
  8. /* Types */
  9. public enum MedianOption : byte { None, LowSmooth, MediumSmooth, HighSmooth };
  10. public enum ResampleFilter : byte { Box, Linear, HalfCosine, Cosine, Bicubic, Mitchell, Spline, Lanczos2, Lanczos3, Lanczos4, BestQuality };
  11. public enum RadialBlurType : byte { Normal, Disk, Corona, Precise, Fast, Box };
  12. /* Constructors */
  13. [DllImport("bgrabitmap", EntryPoint = "create")]
  14. public static extern void Create(int id);
  15. [DllImport("bgrabitmap", EntryPoint = "createwithsize")]
  16. public static extern void CreateWithSize(int id, int AWidth, int AHeight);
  17. [DllImport("bgrabitmap", EntryPoint = "destroy")]
  18. public static extern void Destroy(int id);
  19. [DllImport("bgrabitmap", EntryPoint = "destroyall")]
  20. public static extern void DestroyAll();
  21. [DllImport("bgrabitmap", EntryPoint = "gethighestid")]
  22. public static extern int GetHighestID();
  23. /* Files */
  24. [DllImport("bgrabitmap", EntryPoint = "createfromfile")]
  25. public static extern void CreateFromFile(int id, [MarshalAs(UnmanagedType.LPWStr)]string AFileName);
  26. [DllImport("bgrabitmap", EntryPoint = "savetofile")]
  27. public static extern void SaveToFile(int id, [MarshalAs(UnmanagedType.LPWStr)]string AFileName);
  28. /* Color */
  29. [DllImport("bgrabitmap", EntryPoint = "rgb")]
  30. public static extern uint rgb(byte red, byte green, byte blue);
  31. [DllImport("bgrabitmap", EntryPoint = "rgba")]
  32. public static extern uint rgba(byte red, byte green, byte blue, byte alpha);
  33. [DllImport("bgrabitmap", EntryPoint = "getblue")]
  34. public static extern byte getBlue(uint AColor);
  35. [DllImport("bgrabitmap", EntryPoint = "getgreen")]
  36. public static extern byte getGreen(uint AColor);
  37. [DllImport("bgrabitmap", EntryPoint = "getred")]
  38. public static extern byte getRed(uint AColor);
  39. [DllImport("bgrabitmap", EntryPoint = "getalpha")]
  40. public static extern byte getAlpha(uint AColor);
  41. [DllImport("bgrabitmap", EntryPoint = "setblue")]
  42. public static extern uint setBlue(uint AColor, byte AValue);
  43. [DllImport("bgrabitmap", EntryPoint = "setgreen")]
  44. public static extern uint setGreen(uint AColor, byte AValue);
  45. [DllImport("bgrabitmap", EntryPoint = "setred")]
  46. public static extern uint setRed(uint AColor, byte AValue);
  47. [DllImport("bgrabitmap", EntryPoint = "setalpha")]
  48. public static extern uint setAlpha(uint AColor, byte AValue);
  49. /* Pixels */
  50. [DllImport("bgrabitmap", EntryPoint = "fill")]
  51. public static extern void Fill(int id, uint AColor);
  52. [DllImport("bgrabitmap", EntryPoint = "setpixel")]
  53. public static extern void SetPixel(int id, int x, int y, uint AColor);
  54. [DllImport("bgrabitmap", EntryPoint = "getpixel")]
  55. public static extern uint GetPixel(int id, int x, int y);
  56. /* Filters */
  57. [DllImport("bgrabitmap", EntryPoint = "filtersmartzoom3")]
  58. public static extern void FilterSmartZoom3(int id, MedianOption Option);
  59. [DllImport("bgrabitmap", EntryPoint = "filtermedian")]
  60. public static extern void FilterMedian(int id, MedianOption Option);
  61. [DllImport("bgrabitmap", EntryPoint = "filtersmooth")]
  62. public static extern void FilterSmooth(int id);
  63. [DllImport("bgrabitmap", EntryPoint = "filtersharpen")]
  64. public static extern void FilterSharpen(int id, Single Amount);
  65. [DllImport("bgrabitmap", EntryPoint = "filtersharpenrect")]
  66. public static extern void FilterSharpen(int id, Rectangle ABounds, Single Amount);
  67. [DllImport("bgrabitmap", EntryPoint = "filtercontour")]
  68. public static extern void FilterContour(int id);
  69. [DllImport("bgrabitmap", EntryPoint = "filterpixelate")]
  70. public static extern void FilterPixelate(int id, int pixelSize, bool useResample, ResampleFilter filter);
  71. [DllImport("bgrabitmap", EntryPoint = "filterblurradial")]
  72. public static extern void FilterBlurRadial(int id, int radius, RadialBlurType blurType);
  73. [DllImport("bgrabitmap", EntryPoint = "filterblurradialrect")]
  74. public static extern void FilterBlurRadial(int id, Rectangle ABounds, int radius, RadialBlurType blurType);
  75. [DllImport("bgrabitmap", EntryPoint = "filterblurmotion")]
  76. public static extern void FilterBlurMotion(int id, int distance, Single angle, bool oriented);
  77. [DllImport("bgrabitmap", EntryPoint = "filterblurmotionrect")]
  78. public static extern void FilterBlurMotion(int id, Rectangle ABounds, int distance, Single angle, bool oriented);
  79. [DllImport("bgrabitmap", EntryPoint = "filtercustomblur")]
  80. public static extern void FilterCustomBlur(int id, int mask);
  81. [DllImport("bgrabitmap", EntryPoint = "filtercustomblur")]
  82. public static extern void FilterCustomBlur(int id, Rectangle ABounds, int mask);
  83. [DllImport("bgrabitmap", EntryPoint = "filteremboss")]
  84. public static extern void FilterEmboss(int id, Single angle);
  85. [DllImport("bgrabitmap", EntryPoint = "filterembossrect")]
  86. public static extern void FilterEmboss(int id, Single angle, Rectangle ABounds);
  87. [DllImport("bgrabitmap", EntryPoint = "filterembosshighlight")]
  88. public static extern void FilterEmboss(int id, bool FillSelection);
  89. [DllImport("bgrabitmap", EntryPoint = "filterembosshighlightborder")]
  90. public static extern void FilterEmboss(int id, bool FillSelection, uint BorderColor);
  91. [DllImport("bgrabitmap", EntryPoint = "filterembosshighlightborderandoffset")]
  92. public static extern void FilterEmboss(int id, bool FillSelection, uint BorderColor, Point Offset);
  93. [DllImport("bgrabitmap", EntryPoint = "filtergrayscale")]
  94. public static extern void FilterGrayscale(int id);
  95. [DllImport("bgrabitmap", EntryPoint = "filtergrayscalerect")]
  96. public static extern void FilterGrayscale(int id, Rectangle ABounds);
  97. [DllImport("bgrabitmap", EntryPoint = "filternormalize")]
  98. public static extern void FilterNormalize(int id, bool eachChannel);
  99. [DllImport("bgrabitmap", EntryPoint = "filternormalizerect")]
  100. public static extern void FilterNormalize(int id, Rectangle ABounds, bool eachChannel);
  101. [DllImport("bgrabitmap", EntryPoint = "filterrotate")]
  102. public static extern void FilterRotate(int id, PointF origin, Single angle, bool correctBlur);
  103. [DllImport("bgrabitmap", EntryPoint = "filtersphere")]
  104. public static extern void FilterSphere(int id);
  105. [DllImport("bgrabitmap", EntryPoint = "filtertwirl")]
  106. public static extern void FilterTwirl(int id, Point ACenter, Single ARadius, Single ATurn, Single AExponent);
  107. [DllImport("bgrabitmap", EntryPoint = "filtertwirlrect")]
  108. public static extern void FilterTwirl(int id, Rectangle ABounds, Point ACenter, Single ARadius, Single ATurn, Single AExponent);
  109. [DllImport("bgrabitmap", EntryPoint = "filtercylinder")]
  110. public static extern void FilterCylinder(int id);
  111. [DllImport("bgrabitmap", EntryPoint = "filterplane")]
  112. public static extern void FilterPlane(int id);
  113. }
  114. }