Colourf.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #include "Colourf.h"
  2. namespace Rml {
  3. namespace Lua {
  4. template <>
  5. void ExtraInit<Colourf>(lua_State* L, int metatable_index)
  6. {
  7. lua_pushcfunction(L, Colourfnew);
  8. lua_setfield(L, metatable_index - 1, "new");
  9. lua_pushcfunction(L, Colourf__eq);
  10. lua_setfield(L, metatable_index, "__eq");
  11. return;
  12. }
  13. // metamethods
  14. int Colourfnew(lua_State* L)
  15. {
  16. float red = (float)luaL_checknumber(L, 1);
  17. float green = (float)luaL_checknumber(L, 2);
  18. float blue = (float)luaL_checknumber(L, 3);
  19. float alpha = (float)luaL_checknumber(L, 4);
  20. Colourf* col = new Colourf(red, green, blue, alpha);
  21. LuaType<Colourf>::push(L, col, true);
  22. return 1;
  23. }
  24. int Colourf__eq(lua_State* L)
  25. {
  26. Colourf* lhs = LuaType<Colourf>::check(L, 1);
  27. RMLUI_CHECK_OBJ(lhs);
  28. Colourf* rhs = LuaType<Colourf>::check(L, 2);
  29. RMLUI_CHECK_OBJ(rhs);
  30. lua_pushboolean(L, (*lhs) == (*rhs) ? 1 : 0);
  31. return 1;
  32. }
  33. // getters
  34. int ColourfGetAttrred(lua_State* L)
  35. {
  36. Colourf* obj = LuaType<Colourf>::check(L, 1);
  37. RMLUI_CHECK_OBJ(obj);
  38. lua_pushnumber(L, obj->red);
  39. return 1;
  40. }
  41. int ColourfGetAttrgreen(lua_State* L)
  42. {
  43. Colourf* obj = LuaType<Colourf>::check(L, 1);
  44. RMLUI_CHECK_OBJ(obj);
  45. lua_pushnumber(L, obj->green);
  46. return 1;
  47. }
  48. int ColourfGetAttrblue(lua_State* L)
  49. {
  50. Colourf* obj = LuaType<Colourf>::check(L, 1);
  51. RMLUI_CHECK_OBJ(obj);
  52. lua_pushnumber(L, obj->blue);
  53. return 1;
  54. }
  55. int ColourfGetAttralpha(lua_State* L)
  56. {
  57. Colourf* obj = LuaType<Colourf>::check(L, 1);
  58. RMLUI_CHECK_OBJ(obj);
  59. lua_pushnumber(L, obj->alpha);
  60. return 1;
  61. }
  62. int ColourfGetAttrrgba(lua_State* L)
  63. {
  64. Colourf* obj = LuaType<Colourf>::check(L, 1);
  65. RMLUI_CHECK_OBJ(obj);
  66. lua_pushnumber(L, obj->red);
  67. lua_pushnumber(L, obj->green);
  68. lua_pushnumber(L, obj->blue);
  69. lua_pushnumber(L, obj->alpha);
  70. return 4;
  71. }
  72. // setters
  73. int ColourfSetAttrred(lua_State* L)
  74. {
  75. Colourf* obj = LuaType<Colourf>::check(L, 1);
  76. RMLUI_CHECK_OBJ(obj);
  77. float red = (float)luaL_checknumber(L, 2);
  78. obj->red = red;
  79. return 0;
  80. }
  81. int ColourfSetAttrgreen(lua_State* L)
  82. {
  83. Colourf* obj = LuaType<Colourf>::check(L, 1);
  84. RMLUI_CHECK_OBJ(obj);
  85. float green = (float)luaL_checknumber(L, 2);
  86. obj->green = green;
  87. return 0;
  88. }
  89. int ColourfSetAttrblue(lua_State* L)
  90. {
  91. Colourf* obj = LuaType<Colourf>::check(L, 1);
  92. RMLUI_CHECK_OBJ(obj);
  93. float blue = (float)luaL_checknumber(L, 2);
  94. obj->blue = blue;
  95. return 0;
  96. }
  97. int ColourfSetAttralpha(lua_State* L)
  98. {
  99. Colourf* obj = LuaType<Colourf>::check(L, 1);
  100. RMLUI_CHECK_OBJ(obj);
  101. float alpha = (float)luaL_checknumber(L, 2);
  102. obj->alpha = alpha;
  103. return 0;
  104. }
  105. int ColourfSetAttrrgba(lua_State* L)
  106. {
  107. Colourf* obj = nullptr;
  108. int top = lua_gettop(L);
  109. // each of the items are optional.
  110. if (top > 0)
  111. {
  112. obj = LuaType<Colourf>::check(L, 1);
  113. RMLUI_CHECK_OBJ(obj);
  114. if (top > 1)
  115. {
  116. if (top > 2)
  117. {
  118. if (top > 3)
  119. obj->alpha = (float)luaL_checknumber(L, 4);
  120. obj->blue = (float)luaL_checknumber(L, 3);
  121. }
  122. obj->green = (float)luaL_checknumber(L, 2);
  123. }
  124. obj->red = (float)luaL_checknumber(L, 1);
  125. }
  126. return 0;
  127. }
  128. RegType<Colourf> ColourfMethods[] = {
  129. {nullptr, nullptr},
  130. };
  131. luaL_Reg ColourfGetters[] = {
  132. RMLUI_LUAGETTER(Colourf, red),
  133. RMLUI_LUAGETTER(Colourf, green),
  134. RMLUI_LUAGETTER(Colourf, blue),
  135. RMLUI_LUAGETTER(Colourf, alpha),
  136. RMLUI_LUAGETTER(Colourf, rgba),
  137. {nullptr, nullptr},
  138. };
  139. luaL_Reg ColourfSetters[] = {
  140. RMLUI_LUASETTER(Colourf, red),
  141. RMLUI_LUASETTER(Colourf, green),
  142. RMLUI_LUASETTER(Colourf, blue),
  143. RMLUI_LUASETTER(Colourf, alpha),
  144. RMLUI_LUASETTER(Colourf, rgba),
  145. {nullptr, nullptr},
  146. };
  147. RMLUI_LUATYPE_DEFINE(Colourf)
  148. } // namespace Lua
  149. } // namespace Rml