- 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
- 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
// 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 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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;
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;
fFreeDataOnDestroy: Boolean;
fFreeDataAfterGenTexture: Boolean;
fData: PByte;
- fIsResident: Boolean;
+ fIsResident: GLboolean;
fBorderColor: array[0..3] of Single;
fDimension: TglBitmapPixelPosition;
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;
uses
Math, syncobjs, typinfo
- {$IFDEF GLB_DELPHI}, Types{$ENDIF};
+ {$IFDEF GLB_DELPHI}, Types{$ENDIF}
+ {$IF DEFINED(GLB_SUPPORT_JPEG_READ) AND DEFINED(GLB_LAZ_JPEG)}, FPReadJPEG{$IFEND};
type
{$IFNDEF fpc}
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;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//TglBitmapFormatDescriptor///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TFormatDescriptor///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function TFormatDescriptor.GetRedMask: QWord;
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);
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;
MAGIC_LEN = 2;
JPEG_MAGIC: String[MAGIC_LEN] = #$FF#$D8;
var
- jpeg: TJPEGImage;
intf: TLazIntfImage;
+ reader: TFPReaderJPEG;
StreamPos: Int64;
magic: String[MAGIC_LEN];
begin
exit;
end;
- jpeg := TJPEGImage.Create;
+ reader := TFPReaderJPEG.Create;
+ intf := TLazIntfImage.Create(0, 0);
try try
- jpeg.LoadFromStream(aStream);
- intf := TLazIntfImage.Create(0, 0);
- try try
- intf.LoadFromBitmap(jpeg.BitmapHandle, jpeg.MaskHandle);
- AssignFromLazIntfImage(intf);
- except
- result := false;
- aStream.Position := StreamPos;
- exit;
- end;
- finally
- intf.Free;
- end;
+ intf.DataDescription := GetDescriptionFromDevice(0, 0, 0);
+ reader.ImageRead(aStream, intf);
+ AssignFromLazIntfImage(intf);
except
result := false;
aStream.Position := StreamPos;
exit;
end;
finally
- jpeg.Free;
+ reader.Free;
+ intf.Free;
end;
end;
var
Temp: PByte;
TempWidth, TempHeight: Integer;
- TempIntFormat: Cardinal;
+ TempIntFormat: GLint;
IntFormat, f: TglBitmapFormat;
FormatDesc: TFormatDescriptor;
begin