1. -- 
  2. -- Copyright (c) 2013 Kevin Wellwood 
  3. -- All rights reserved. 
  4. -- 
  5. -- This source code is distributed under the Modified BSD License. For terms and 
  6. -- conditions, see license.txt. 
  7. -- 
  8.  
  9. with System;                            use System; 
  10.  
  11. package Allegro.Bitmaps.Locking is 
  12.  
  13.     type Allegro_Lock_Mode is private; 
  14.     ALLEGRO_LOCK_READWRITE : constant Allegro_Lock_Mode; 
  15.     ALLEGRO_LOCK_READONLY  : constant Allegro_Lock_Mode; 
  16.     ALLEGRO_LOCK_WRITEONLY : constant Allegro_Lock_Mode; 
  17.  
  18.     type Allegro_Locked_Region is 
  19.         record 
  20.             data       : Address; 
  21.             format     : Allegro_Pixel_Format; 
  22.             pitch      : Integer; 
  23.             pixel_size : Integer; 
  24.         end record; 
  25.     pragma Convention( C, Allegro_Locked_Region ); 
  26.     type A_Allegro_Locked_Region is access all Allegro_Locked_Region; 
  27.  
  28.     function Al_Lock_Bitmap( bitmap : A_Allegro_Bitmap; 
  29.                              format : Allegro_Pixel_Format; 
  30.                              flags  : Allegro_Lock_Mode ) return A_Allegro_Locked_Region; 
  31.     pragma Import( C, Al_Lock_Bitmap, "al_lock_bitmap" ); 
  32.  
  33.     -- Wrapper for Al_Lock_Bitmap function that doesn't return the lock. 
  34.     procedure Al_Lock_Bitmap( bitmap : A_Allegro_Bitmap; 
  35.                               format : Allegro_Pixel_Format; 
  36.                               flags  : Allegro_Lock_Mode ); 
  37.  
  38.     function Al_Lock_Bitmap_Region( bitmap        : A_Allegro_Bitmap; 
  39.                                     x, y          : Integer; 
  40.                                     width, height : Integer; 
  41.                                     format        : Allegro_Pixel_Format; 
  42.                                     flags         : Allegro_Lock_Mode ) return A_Allegro_Locked_Region; 
  43.     pragma Import( C, Al_Lock_Bitmap_Region, "al_lock_bitmap_region" ); 
  44.  
  45.     -- Wrapper for Al_Lock_Bitmap_Region function that doesn't return the lock. 
  46.     procedure Al_Lock_Bitmap_Region( bitmap        : A_Allegro_Bitmap; 
  47.                                      x, y          : Integer; 
  48.                                      width, height : Integer; 
  49.                                      format        : Allegro_Pixel_Format; 
  50.                                      flags         : Allegro_Lock_Mode ); 
  51.  
  52.     procedure Al_Unlock_Bitmap( bitmap : A_Allegro_Bitmap ); 
  53.     pragma Import( C, Al_Unlock_Bitmap, "al_unlock_bitmap" ); 
  54.  
  55.     function Al_Is_Bitmap_Locked( bitmap : A_Allegro_Bitmap ) return Boolean; 
  56.  
  57. private 
  58.  
  59.     type Allegro_Lock_Mode is new Integer; 
  60.     ALLEGRO_LOCK_READWRITE : constant Allegro_Lock_Mode := 0; 
  61.     ALLEGRO_LOCK_READONLY  : constant Allegro_Lock_Mode := 1; 
  62.     ALLEGRO_LOCK_WRITEONLY : constant Allegro_Lock_Mode := 2; 
  63.  
  64. end Allegro.Bitmaps.Locking;