* Format: implemented HasRed, HasGreen and HasBlue
[glBitmap.git] / glBitmap.pas
index fdeaae1..b181705 100644 (file)
@@ -24,7 +24,7 @@ History
 - GetPixel isn't set if you are loading textures inside the constructor (Thanks Wilson)
 10-08-2008
 - AddAlphaFromglBitmap used the custom pointer instead the imagedatapointer (Thanks Wilson)
-- Additional Datapointer for functioninterface now has the name CustomData  
+- Additional Datapointer for functioninterface now has the name CustomData
 24-07-2008
 - AssigneAlphaToBitmap overwrites his own palette (Thanks Wilson)
 - If you load an texture from an file the property Filename will be set to the name of the file
@@ -53,7 +53,7 @@ History
 - Property DataPtr now has the name Data
 - Functions are more flexible between RGB(A) and BGR(A). RGB can be saved as Bitmap and will be saved as BGR
 - Unused Depth removed
-- Function FreeData to freeing image data added 
+- Function FreeData to freeing image data added
 24-10-2007
 - ImageID flag of TGAs was ignored. (Thanks Zwoetzen)
 15-11-2006
@@ -221,7 +221,7 @@ unit glBitmap;
 
 // Please uncomment the defines below to configure the glBitmap to your preferences.
 // If you have configured the unit you can uncomment the warning above.
-{$MESSAGE warn 'Hey. I''m the glBitmap.pas and i need to be configured. My master tell me your preferences! ;)'}
+{.$MESSAGE warn 'Hey. I''m the glBitmap.pas and i need to be configured. My master tell me your preferences! ;)'}
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Preferences ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -889,6 +889,9 @@ type
   TglBitmapFormatDescriptor = class(TObject)
   protected
     function GetIsCompressed: Boolean; virtual; abstract;
+    function GetHasRed:       Boolean; virtual; abstract;
+    function GetHasGreen:     Boolean; virtual; abstract;
+    function GetHasBlue:      Boolean; virtual; abstract;
     function GetHasAlpha:     Boolean; virtual; abstract;
 
     function GetglDataFormat:     GLenum;  virtual; abstract;
@@ -896,6 +899,9 @@ type
     function GetglInternalFormat: GLenum;  virtual; abstract;
   public
     property IsCompressed: Boolean read GetIsCompressed;
+    property HasRed:       Boolean read GetHasRed;
+    property HasGreen:     Boolean read GetHasGreen;
+    property HasBlue:      Boolean read GetHasBlue;
     property HasAlpha:     Boolean read GetHasAlpha;
 
     property glFormat:         GLenum  read GetglFormat;
@@ -927,7 +933,7 @@ type
     fFreeDataOnDestroy: Boolean;
     fFreeDataAfterGenTexture: Boolean;
     fData: PByte;
-    fIsResident: Boolean;
+    fIsResident: GLboolean;
     fBorderColor: array[0..3] of Single;
 
     fDimension: TglBitmapPixelPosition;
@@ -1011,7 +1017,7 @@ type
 
     property Dimension:  TglBitmapPixelPosition  read fDimension;
     property Data:       PByte                   read fData;
-    property IsResident: Boolean                 read fIsResident;
+    property IsResident: GLboolean               read fIsResident;
 
     procedure AfterConstruction; override;
     procedure BeforeDestruction; override;
@@ -1272,6 +1278,9 @@ type
     fglDataFormat:     GLenum;
 
     function GetIsCompressed: Boolean; override;
+    function GetHasRed: Boolean; override;
+    function GetHasGreen: Boolean; override;
+    function GetHasBlue: Boolean; override;
     function GetHasAlpha: Boolean; override;
 
     function GetglFormat: GLenum; override;
@@ -2308,7 +2317,7 @@ begin
 end;
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//TglBitmapFormatDescriptor///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TFormatDescriptor///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function TFormatDescriptor.GetRedMask: QWord;
 begin
@@ -2340,6 +2349,24 @@ begin
 end;
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+function TFormatDescriptor.GetHasRed: Boolean;
+begin
+  result := (fRange.r > 0);
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+function TFormatDescriptor.GetHasGreen: Boolean;
+begin
+  result := (fRange.g > 0);
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+function TFormatDescriptor.GetHasBlue: Boolean;
+begin
+  result := (fRange.b > 0);
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function TFormatDescriptor.GetHasAlpha: Boolean;
 begin
   result := (fRange.a > 0);
@@ -5650,7 +5677,7 @@ begin
 
   if (ID > 0) then begin
     Bind(false);
-    glTexParameteriv(Target, GL_TEXTURE_SWIZZLE_RGBA, @fSwizzle[0]);
+    glTexParameteriv(Target, GL_TEXTURE_SWIZZLE_RGBA, PGLint(@fSwizzle[0]));
   end;
 end;
 
@@ -6347,7 +6374,6 @@ const
   MAGIC_LEN = 2;
   JPEG_MAGIC: String[MAGIC_LEN] = #$FF#$D8;
 var
-  jpeg: TJPEGImage;
   intf: TLazIntfImage;
   reader: TFPReaderJPEG;
   StreamPos: Int64;
@@ -8028,7 +8054,7 @@ procedure TglBitmap2D.GetDataFromTexture;
 var
   Temp: PByte;
   TempWidth, TempHeight: Integer;
-  TempIntFormat: Cardinal;
+  TempIntFormat: GLint;
   IntFormat, f: TglBitmapFormat;
   FormatDesc: TFormatDescriptor;
 begin