obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
------------------------------------------------------------
-Version 3.0.0 unstable
+Version 3.0.1
------------------------------------------------------------
History
20-11-2013
- 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 error 'Hey. I''m the glBitmap.pas and i need to be configured. My master tell me your preferences! ;)'}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Preferences ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// activate to enable the support for SDL_surfaces
{.$DEFINE GLB_SDL}
-// activate to enable the support for TBitmap from Delphi (not lazarus)
+// activate to enable the support for Delphi (including support for Delphi's (not Lazarus') TBitmap)
{.$DEFINE GLB_DELPHI}
// activate to enable the support for TLazIntfImage from Lazarus
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};
+ {$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);
bfFormat: TbmpBitfieldFormat;
pSourceLine, pDestLine: PByte;
pSourceMD, pDestMD: Pointer;
- x, y: Integer;
+ x, y: Cardinal;
pixel: TglBitmapPixelData;
begin
bfFormat := TbmpBitfieldFormat.Create;
TempPtr: PByte;
Size: Integer;
begin
- result := nil;
Temp := (ClassType.Create as TglBitmap);
try
// copy texture data if assigned
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;
procedure TglBitmap2D.GetDataFromTexture;
var
Temp: PByte;
- TempWidth, TempHeight: Integer;
- TempIntFormat: Cardinal;
+ TempWidth, TempHeight: GLint;
+ TempIntFormat: GLenum;
IntFormat, f: TglBitmapFormat;
FormatDesc: TFormatDescriptor;
begin
// Request Data
glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_WIDTH, @TempWidth);
glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_HEIGHT, @TempHeight);
- glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_INTERNAL_FORMAT, @TempIntFormat);
+ glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_INTERNAL_FORMAT, PGLint(@TempIntFormat));
IntFormat := tfEmpty;
for f := Low(TglBitmapFormat) to High(TglBitmapFormat) do begin