cheat-engine/Cheat Engine/LuaPicture.pas
2014-07-06 17:22:34 +00:00

164 lines
4.4 KiB
ObjectPascal

unit LuaPicture;
{$mode delphi}
interface
uses
Classes, SysUtils, Graphics,lua, lualib, lauxlib, LuaHandler;
procedure initializeLuaPicture;
implementation
uses luaclass, LuaObject;
function createPicture(L: PLua_State): integer; cdecl;
begin
luaclass_newClass(L, TPicture.Create);
result:=1;
end;
function picture_loadFromFile(L: PLua_State): integer; cdecl;
var
picture: Tpicture;
begin
result:=0;
picture:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
picture.LoadFromFile(Lua_ToString(L, -1));
end;
function picture_saveToFile(L: PLua_State): integer; cdecl;
var
picture: Tpicture;
begin
result:=0;
picture:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
picture.SaveToFile(Lua_ToString(L, 1));
end;
function picture_loadFromStream(L: PLua_State): integer; cdecl;
var
paramstart, paramcount: integer;
picture: Tpicture;
stream: TStream;
ext: string;
begin
result:=0;
picture:=luaclass_getClassObject(L, @paramstart, @paramcount);
if paramcount>=1 then
begin
stream:=lua_ToCEUserData(L, paramstart);
if paramstart=2 then //6.2 compat, there i set the position to 0. In 6.3+ I will have the user set it to the position they want first
stream.Position:=0;
if paramcount=2 then
begin
ext:=Lua_ToString(L, paramstart+1);
picture.LoadFromStreamWithFileExt(stream,ext);
end;
if paramcount=1 then
picture.LoadFromStream(stream);
end;
end;
function picture_assign(L: PLua_State): integer; cdecl;
var
picture, picture2: Tpicture;
begin
result:=0;
picture:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
begin
picture2:=lua_ToCEUserData(L, -1);
picture.Assign(picture2);
end;
end;
function picture_getGraphic(L: PLua_State): integer; cdecl;
var
picture: Tpicture;
begin
picture:=luaclass_getClassObject(L);
luaclass_newClass(L, picture.Graphic);
result:=1;
end;
function picture_getPNG(L: PLua_State): integer; cdecl;
var
picture: Tpicture;
begin
picture:=luaclass_getClassObject(L);
luaclass_newClass(L, picture.PNG);
result:=1;
end;
function picture_getBitmap(L: PLua_State): integer; cdecl;
var
picture: Tpicture;
begin
picture:=luaclass_getClassObject(L);
luaclass_newClass(L, picture.Bitmap);
result:=1;
end;
function picture_getJpeg(L: PLua_State): integer; cdecl;
var
picture: Tpicture;
begin
picture:=luaclass_getClassObject(L);
luaclass_newClass(L, picture.Jpeg);
result:=1;
end;
procedure picture_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
object_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'loadFromFile',picture_loadFromFile);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'saveToFile',picture_saveToFile);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'loadFromStream',picture_loadFromStream);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'assign',picture_assign);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getGraphic',picture_getGraphic);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getPNG',picture_getPNG);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getBitmap',picture_getBitmap);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getJpeg',picture_getJpeg);
Luaclass_addPropertyToTable(L, metatable, userdata, 'Graphic', picture_getGraphic, nil);
Luaclass_addPropertyToTable(L, metatable, userdata, 'PNG', picture_getPNG, nil);
Luaclass_addPropertyToTable(L, metatable, userdata, 'Bitmap', picture_getBitmap, nil);
Luaclass_addPropertyToTable(L, metatable, userdata, 'Jpeg', picture_getJpeg, nil);
end;
procedure initializeLuaPicture;
var x: TPicture;
begin
lua_register(LuaVM, 'createPicture', createPicture);
lua_register(LuaVM, 'picture_loadFromFile',picture_loadFromFile);
lua_register(LuaVM, 'picture_loadFromStream',picture_loadFromStream);
lua_register(LuaVM, 'picture_assign',picture_assign);
lua_register(LuaVM, 'picture_getGraphic',picture_getGraphic);
lua_register(LuaVM, 'picture_getPNG',picture_getPNG);
lua_register(LuaVM, 'picture_getBitmap',picture_getBitmap);
lua_register(LuaVM, 'picture_getJpeg',picture_getJpeg);
end;
initialization
luaclass_register(TPicture, picture_addMetaData);
end.