Skip to content

Instantly share code, notes, and snippets.

View XProger's full-sized avatar

Timur Gagiev XProger

View GitHub Profile
@XProger
XProger / calc.pas
Last active August 29, 2015 14:01
Delphi simple calculator
function Calc(const CalcStr: string): string;
var
v : Variant;
begin
v := CreateOleObject('MSScriptControl.ScriptControl');
v.Language := 'JScript';
Result := v.Eval(CalcStr);
v := Unassigned;
end;
@XProger
XProger / sha1.pas
Last active August 29, 2015 14:05
Calculate SHA1 digest of data
type
TSHA1Digest = array [0..4] of LongWord;
TSHA1Block = array [0..63] of Byte;
TSHA1Context = record
State : TSHA1Digest;
Block : TSHA1Block;
Len : Int64;
Pos : LongInt;
end;
@XProger
XProger / md5.pas
Created August 26, 2014 06:08
Calculate MD5 digest of data
type
TMD5Digest = array [0..3] of LongWord;
TMD5Block = array [0..63] of Byte;
TMD5Context = record
State : TMD5Digest;
Block : TMD5Block;
Len : Int64;
Pos : LongInt;
end;
@XProger
XProger / unzip.pas
Last active August 29, 2015 14:05
Inflate zlib & gzip compressed data
unit unzip;
// based on C++ core "tiny inflate" by Joergen Ibsen / Jibz
// http://www.ibsensoftware.com/
interface
type
TByteArray = array [Word] of Byte;
TWordArray = array [Word] of Word;
PByteArray = ^TByteArray;
PWordArray = ^TWordArray;
@XProger
XProger / xml.pas
Created August 26, 2014 06:19
XML parser (one pass, nondestructive, UTF-16)
unit xml;
interface
type
TXMLParam = record
Name : WideString;
Value : WideString;
end;
@XProger
XProger / resample.pas
Created August 26, 2014 06:22
Resample image
procedure Resample(const Data: PByteArray; const Width, Height: LongInt; out OutData: PByteArray; const OutWidth, OutHeight: LongInt);
var
i, j : LongInt;
f : array [0..1] of LongWord;
Row : array [0..1] of PByteArray;
Pix : array [0..3] of PByteArray;
p : array [0..1] of PLongArray;
Step : LongInt;
Buf : PByteArray;
begin
@XProger
XProger / gif.pas
Created August 26, 2014 06:25
Load static GIF image
function LoadGIF(const Stream: TStream; out Data: PByteArray; out Width, Height: LongInt): Boolean;
procedure DecompressLZW(InitCodeSize: Byte; Source, Dest: Pointer; PackedSize, UnpackedSize: LongInt);
const
NoLZWCode = 4096;
var
I: LongInt;
Data, Bits, Code : LongWord;
SourcePtr : ^Byte;
InCode : LongWord;
@XProger
XProger / png.pas
Created August 26, 2014 06:35
Load static PNG image (gray, 8- 16- 24- 32-bit, no animation, no interlace)
function LoadPNG(const Stream: TStream; out Data: PByteArray; out Width, Height: LongInt): Boolean;
const
IHDR = $52444849;
IDAT = $54414449;
IEND = $444E4549;
PLTE = $45544C50;
tRNS = $534E5274;
var
i, j : LongInt;
Bits : Byte;
@XProger
XProger / jpeg.pas
Created August 26, 2014 06:44
Load baseline JPEG image (gray & rgb)
function LoadJPG(const Stream: TStream; out Data: PByteArray; out Width, Height: LongInt): Boolean;
type
THuffmanTable = record
Bits : array [0..15] of Byte;
HVal : array [Byte] of Byte;
Size : array [Byte] of Byte;
Code : array [Byte] of Word;
end;
TQTable = array [0..63] of Single;
@XProger
XProger / dds.pas
Last active August 29, 2015 14:05
DDS texture loader (2d, cubemap, OpenGL)
constructor TTexture.Create(const FileName: string);
type
TLoadFormat = (lfNULL, lfDXT1c, lfDXT1a, lfDXT3, lfDXT5, lfA8, lfL8, lfAL8,
lfBGRA8, lfBGR8, lfBGR5A1, lfBGR565, lfBGRA4, lfR16F, lfR32F,
lfGR16F, lfGR32F, lfBGRA16F, lfBGRA32F);
TDDS = record
dwMagic : LongWord;
dwSize : LongInt;
dwFlags : LongWord;
dwHeight : LongWord;