128 lines
3.3 KiB
ObjectPascal
128 lines
3.3 KiB
ObjectPascal
unit LuaFont;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Graphics,lua, lualib, lauxlib, LuaHandler;
|
|
|
|
procedure initializeLuaFont;
|
|
|
|
implementation
|
|
|
|
uses mainunit, LuaClass, LuaObject;
|
|
|
|
function createFont(L: Plua_State): integer; cdecl;
|
|
var f: TFont;
|
|
begin
|
|
result:=0;
|
|
lua_pop(L, lua_gettop(L));
|
|
f:=TFont.Create;
|
|
f.assign(mainform.font); //initialize it with the best font there is...
|
|
luaclass_newClass(L, f);
|
|
result:=1;
|
|
end;
|
|
|
|
function Font_getColor(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, Font.Color);
|
|
result:=1;
|
|
end;
|
|
|
|
function Font_setColor(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
Font.color:=lua_tointeger(L, -1);
|
|
result:=0;
|
|
end;
|
|
|
|
function Font_getSize(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, Font.Size);
|
|
result:=1;
|
|
end;
|
|
|
|
function Font_setSize(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
Font.Size:=lua_tointeger(L, -1);
|
|
result:=0;
|
|
end;
|
|
|
|
function Font_getName(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
lua_pushstring(L, Font.Name);
|
|
result:=1;
|
|
end;
|
|
|
|
function Font_setName(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
Font.Name:=Lua_ToString(L, -1);
|
|
result:=0;
|
|
end;
|
|
|
|
function Font_assign(L: PLua_State): integer; cdecl;
|
|
var
|
|
Font: TFont;
|
|
begin
|
|
Font:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
Font.Assign(lua_ToCEUserData(L, 1));
|
|
|
|
result:=0;
|
|
end;
|
|
|
|
procedure font_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
object_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getSize', font_getSize);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setSize', font_setSize);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getName', font_getName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setName', font_setName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getColor', font_getColor);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setColor', font_setColor);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'assign', font_assign);
|
|
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'Size', font_getSize, font_setSize);
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'Name', font_getName, font_setName);
|
|
Luaclass_addPropertyToTable(L, metatable, userdata, 'Color', font_getColor, font_setColor);
|
|
end;
|
|
|
|
procedure initializeLuaFont;
|
|
begin
|
|
|
|
lua_register(LuaVM, 'createFont', createFont);
|
|
lua_register(LuaVM, 'font_getSize', font_getSize);
|
|
lua_register(LuaVM, 'font_setSize', font_setSize);
|
|
lua_register(LuaVM, 'font_getName', font_getName);
|
|
lua_register(LuaVM, 'font_setName', font_setName);
|
|
lua_register(LuaVM, 'font_getColor', font_getColor);
|
|
lua_register(LuaVM, 'font_setColor', font_setColor);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TFont, font_addMetaData);
|
|
|
|
end.
|
|
|