diff --git a/SDK/include/NDK/LuaAPI.inl b/SDK/include/NDK/LuaAPI.inl index f4d780386..d80652780 100644 --- a/SDK/include/NDK/LuaAPI.inl +++ b/SDK/include/NDK/LuaAPI.inl @@ -64,6 +64,33 @@ namespace Nz return ret; } + inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, FontRef* fontRef, TypeTag) + { + *fontRef = *(*static_cast(instance.CheckUserdata(index, "Font"))); + + return 1; + } + + inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, FontParams* params, TypeTag) + { + instance.CheckType(index, Nz::LuaType_Table); + + return 1; + } + + inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, MeshParams* params, TypeTag) + { + instance.CheckType(index, Nz::LuaType_Table); + + params->animated = instance.CheckField("Animated", params->animated); + params->center = instance.CheckField("Center", params->center); + params->flipUVs = instance.CheckField("FlipUVs", params->flipUVs); + params->optimizeIndexBuffers = instance.CheckField("OptimizeIndexBuffers", params->optimizeIndexBuffers); + params->scale = instance.CheckField("Scale", params->scale); + + return 1; + } + inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, Quaterniond* quat, TypeTag) { switch (instance.GetType(index)) @@ -209,19 +236,6 @@ namespace Nz return 1; } - inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, MeshParams* params, TypeTag) - { - instance.CheckType(index, Nz::LuaType_Table); - - params->animated = instance.CheckField("Animated", params->animated); - params->center = instance.CheckField("Center", params->center); - params->flipUVs = instance.CheckField("FlipUVs", params->flipUVs); - params->optimizeIndexBuffers = instance.CheckField("OptimizeIndexBuffers", params->optimizeIndexBuffers); - params->scale = instance.CheckField("Scale", params->scale); - - return 1; - } - inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, ModelParameters* params, TypeTag) { instance.CheckType(index, Nz::LuaType_Table); @@ -267,6 +281,23 @@ namespace Nz return 1; } + inline int LuaImplReplyVal(const LuaInstance& instance, FontRef val, TypeTag) + { + instance.PushInstance("Font", val); + return 1; + } + + inline int LuaImplReplyVal(const LuaInstance& instance, Font::SizeInfo val, TypeTag) + { + instance.PushTable(); + instance.PushField("LineHeight", val.lineHeight); + instance.PushField("SpaceAdvance", val.spaceAdvance); + instance.PushField("UnderlinePosition", val.underlinePosition); + instance.PushField("UnderlineThickness", val.underlineThickness); + + return 1; + } + inline int LuaImplReplyVal(const LuaInstance& instance, Quaterniond val, TypeTag) { instance.PushInstance("Quaternion", val); diff --git a/SDK/include/NDK/LuaBinding.hpp b/SDK/include/NDK/LuaBinding.hpp index a0e3e7719..66bb88978 100644 --- a/SDK/include/NDK/LuaBinding.hpp +++ b/SDK/include/NDK/LuaBinding.hpp @@ -78,6 +78,7 @@ namespace Ndk // Utility Nz::LuaClass abstractImage; + Nz::LuaClass fontClass; Nz::LuaClass nodeClass; // SDK diff --git a/SDK/src/NDK/LuaBinding.cpp b/SDK/src/NDK/LuaBinding.cpp index ab99eb101..a23311075 100644 --- a/SDK/src/NDK/LuaBinding.cpp +++ b/SDK/src/NDK/LuaBinding.cpp @@ -23,6 +23,7 @@ namespace Ndk // Utility abstractImage("AbstractImage"), + fontClass("Font"), nodeClass("Node"), // SDK diff --git a/SDK/src/NDK/LuaBinding_SDK.cpp b/SDK/src/NDK/LuaBinding_SDK.cpp index 7f020934d..e4a51e9a9 100644 --- a/SDK/src/NDK/LuaBinding_SDK.cpp +++ b/SDK/src/NDK/LuaBinding_SDK.cpp @@ -38,7 +38,7 @@ namespace Ndk consoleClass.BindMethod("GetInput", &Console::GetInput); consoleClass.BindMethod("GetInputBackground", &Console::GetInputBackground); consoleClass.BindMethod("GetSize", &Console::GetSize); - //consoleClass.SetMethod("GetTextFont", &Console::GetTextFont); + consoleClass.BindMethod("GetTextFont", &Console::GetTextFont); consoleClass.BindMethod("IsVisible", &Console::IsVisible); @@ -47,7 +47,7 @@ namespace Ndk consoleClass.BindMethod("SetCharacterSize", &Console::SetCharacterSize); consoleClass.BindMethod("SetSize", &Console::SetSize); - //consoleClass.SetMethod("SetTextFont", &Console::SetTextFont); + consoleClass.BindMethod("SetTextFont", &Console::SetTextFont); consoleClass.BindMethod("Show", &Console::Show, true); #endif diff --git a/SDK/src/NDK/LuaBinding_Utility.cpp b/SDK/src/NDK/LuaBinding_Utility.cpp index 86f4a6f9a..a8893e1a4 100644 --- a/SDK/src/NDK/LuaBinding_Utility.cpp +++ b/SDK/src/NDK/LuaBinding_Utility.cpp @@ -88,6 +88,65 @@ namespace Ndk return 0; }); + /*********************************** Nz::Font **********************************/ + fontClass.SetConstructor([] (Nz::LuaInstance& lua) -> Nz::FontRef* + { + return new Nz::FontRef(new Nz::Font); + }); + + fontClass.BindMethod("ClearGlyphCache", &Nz::Font::ClearGlyphCache); + fontClass.BindMethod("ClearKerningCache", &Nz::Font::ClearKerningCache); + fontClass.BindMethod("ClearSizeInfoCache", &Nz::Font::ClearSizeInfoCache); + + fontClass.BindMethod("Destroy", &Nz::Font::Destroy); + + fontClass.BindMethod("GetCachedGlyphCount", [] (Nz::LuaInstance& lua, Nz::FontRef& instance) -> int + { + unsigned int argCount = std::min(lua.GetStackTop(), 2U); + + int argIndex = 1; + switch (argCount) + { + case 0: + lua.Push(instance->GetCachedGlyphCount()); + return 1; + + case 2: + { + unsigned int characterSize = lua.Check(&argIndex); + Nz::UInt32 style = lua.Check(&argIndex); + + lua.Push(instance->GetCachedGlyphCount(characterSize, style)); + return 1; + } + } + + lua.Error("No matching overload for method GetCachedGlyphCount"); + return 0; + }); + + fontClass.BindMethod("GetFamilyName", &Nz::Font::GetFamilyName); + fontClass.BindMethod("GetKerning", &Nz::Font::GetKerning); + fontClass.BindMethod("GetGlyphBorder", &Nz::Font::GetGlyphBorder); + fontClass.BindMethod("GetMinimumStepSize", &Nz::Font::GetMinimumStepSize); + fontClass.BindMethod("GetSizeInfo", &Nz::Font::GetSizeInfo); + fontClass.BindMethod("GetStyleName", &Nz::Font::GetStyleName); + + fontClass.BindMethod("IsValid", &Nz::Font::IsValid); + + fontClass.BindMethod("Precache", (bool(Nz::Font::*)(unsigned int, Nz::UInt32, const Nz::String&) const) &Nz::Font::Precache); + + fontClass.BindMethod("OpenFromFile", &Nz::Font::OpenFromFile, Nz::FontParams()); + + fontClass.BindMethod("SetGlyphBorder", &Nz::Font::SetGlyphBorder); + fontClass.BindMethod("SetMinimumStepSize", &Nz::Font::SetMinimumStepSize); + + fontClass.BindStaticMethod("GetDefaultGlyphBorder", &Nz::Font::GetDefaultGlyphBorder); + fontClass.BindStaticMethod("GetDefaultMinimumStepSize", &Nz::Font::GetDefaultMinimumStepSize); + + fontClass.BindStaticMethod("SetDefaultGlyphBorder", &Nz::Font::SetDefaultGlyphBorder); + fontClass.BindStaticMethod("SetDefaultMinimumStepSize", &Nz::Font::SetDefaultMinimumStepSize); + /*********************************** Nz::Node **********************************/ nodeClass.BindMethod("GetBackward", &Nz::Node::GetBackward); //nodeClass.SetMethod("GetChilds", &Nz::Node::GetChilds); @@ -250,6 +309,7 @@ namespace Ndk void LuaBinding::RegisterUtility(Nz::LuaInstance& instance) { abstractImage.Register(instance); + fontClass.Register(instance); nodeClass.Register(instance); } } \ No newline at end of file