mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
230 lines
6 KiB
ObjectPascal
Executable file
230 lines
6 KiB
ObjectPascal
Executable file
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
|
|
begin
|
|
try
|
|
picture.LoadFromFile(Lua_ToString(L, -1));
|
|
lua_pushboolean(L,true);
|
|
result:=1;
|
|
except
|
|
on e: exception do
|
|
begin
|
|
lua_pushboolean(L, false);
|
|
lua_pushstring(L, e.Message);
|
|
result:=2;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
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;
|
|
|
|
try
|
|
if paramcount=2 then
|
|
begin
|
|
ext:=Lua_ToString(L, paramstart+1);
|
|
picture.LoadFromStreamWithFileExt(stream,ext);
|
|
end
|
|
else
|
|
if paramcount=1 then
|
|
picture.LoadFromStream(stream);
|
|
|
|
lua_pushboolean(L,true);
|
|
result:=1;
|
|
except
|
|
on e:exception do
|
|
begin
|
|
lua_pushboolean(L, false);
|
|
lua_pushstring(L,e.message);
|
|
result:=2;
|
|
end;
|
|
end;
|
|
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_getIcon(L: PLua_State): integer; cdecl;
|
|
begin
|
|
luaclass_newClass(L, TPicture(luaclass_getClassObject(L)).Icon);
|
|
result:=1;
|
|
end;
|
|
|
|
function picture_setIcon(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TPicture(luaclass_getClassObject(L)).Icon:=lua_ToCEUserData(L, 1);
|
|
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_setGraphic(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TPicture(luaclass_getClassObject(L)).Graphic:=lua_ToCEUserData(L, 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_setPNG(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TPicture(luaclass_getClassObject(L)).PNG:=lua_ToCEUserData(L, 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_setBitmap(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TPicture(luaclass_getClassObject(L)).Bitmap:=lua_ToCEUserData(L, 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;
|
|
|
|
function picture_setJpeg(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TPicture(luaclass_getClassObject(L)).Jpeg:=lua_ToCEUserData(L, 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, picture_setGraphic);
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'PNG', picture_getPNG, picture_setPNG);
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'Bitmap', picture_getBitmap, picture_setBitmap);
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'Jpeg', picture_getJpeg, picture_setJpeg);
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'Icon', picture_getIcon, picture_setIcon);
|
|
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.
|
|
|