Forráskód Böngészése

Graph: GetPixel implemented

Arthur Yefimov 1 éve
szülő
commit
fef119423c
3 módosított fájl, 36 hozzáadás és 1 törlés
  1. 13 1
      src/Allegro5.Mod
  2. 6 0
      src/Allegro5.h0
  3. 17 0
      src/Graph.Mod

+ 13 - 1
src/Allegro5.Mod

@@ -38,6 +38,14 @@ CONST
   videoBitmap*          = 10;
   convertBitmap*        = 12;
 
+  (** Allegro pixel format **)
+  formatAny* = 0;
+
+  (** Flags in al_lock_bitmap **)
+  lockReadWrite* = 0;
+  lockReadOnly*  = 1;
+  lockWriteOnly* = 2;
+
   (** Values of parameter option in al_set_new_display_option **)
   redSize*               = 0;
   greenSize*             = 1;
@@ -72,7 +80,7 @@ CONST
   supportSeparateAlpha*  = 30;
   autoConvertBitmaps*    = 31;
   supportedOrientations* = 32;
-    openglMajorVersion*    = 33;
+  openglMajorVersion*    = 33;
   openglMinorVersion*    = 34;
   displayOptionsCount*   = 35;
 
@@ -455,6 +463,8 @@ TYPE
     x1*, y1*, x2*, y2*: INTEGER
   END;
 
+PROCEDURE -AAIncludeAllegro5h0* '#include "Allegro5.h0"';
+
 PROCEDURE get_allegro_version* ["al_get_allegro_version"] (): INTEGER;
 PROCEDURE install_system* ["al_install_system"] (version, atexit: ADRINT): BOOLEAN;
 PROCEDURE uninstall_system* ["al_uninstall_system"] ();
@@ -619,4 +629,6 @@ PROCEDURE reset_clipping_rectangle* ["al_reset_clipping_rectangle"];
 PROCEDURE free_with_context* ["al_free_with_context"] (ptr: ADRINT; line: INTEGER; file, func: ARRAY OF SHORTCHAR);
 PROCEDURE get_time* ["al_get_time"] (): LONGREAL;
 
+PROCEDURE- get_pixel* (bmp: Bitmap; x, y: INTEGER; VAR color: Color) "*color = al_get_pixel(bmp, x, y)";
+
 END Allegro5.

+ 6 - 0
src/Allegro5.h0

@@ -0,0 +1,6 @@
+#ifndef Allegro5__h0
+#define Allegro5__h0
+
+extern Allegro5_Color al_get_pixel(Allegro5_Bitmap bmp, int x, int y);
+
+#endif

+ 17 - 0
src/Graph.Mod

@@ -768,6 +768,23 @@ PROCEDURE PutPixel*(x, y: INTEGER; c: Color);
 BEGIN Al.draw_pixel(FLT(x) + 0.5, FLT(y) + 0.5, SYSTEM.VAL(Al.Color, c))
 END PutPixel;
 
+PROCEDURE LockBitmapReadOnly*(bmp: Bitmap);
+BEGIN IF Al.lock_bitmap(bmp.bmp, Al.formatAny, Al.lockReadOnly) = NIL THEN END
+END LockBitmapReadOnly;
+
+PROCEDURE LockBitmap*(bmp: Bitmap);
+BEGIN IF Al.lock_bitmap(bmp.bmp, Al.formatAny, Al.lockReadWrite) = NIL THEN END
+END LockBitmap;
+
+PROCEDURE UnlockBitmap*(bmp: Bitmap);
+BEGIN Al.unlock_bitmap(bmp.bmp)
+END UnlockBitmap;
+
+PROCEDURE GetPixel*(bmp: Bitmap; x, y: INTEGER; VAR color: Color);
+BEGIN 
+  Al.get_pixel(bmp.bmp, x, y, SYSTEM.VAL(Al.Color, color))
+END GetPixel;
+
 PROCEDURE ThickLineF*(x1, y1, x2, y2: REAL; color: Color; thickness: REAL);
 BEGIN Al.draw_line(x1, y1, x2, y2, SYSTEM.VAL(Al.Color, color), thickness)
 END ThickLineF;