mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-10-29 15:26:04 +03:00
106 lines
3.6 KiB
C++
106 lines
3.6 KiB
C++
#include "ui/CSimpleScrollFrameScript.hpp"
|
|
#include "gx/Coordinate.hpp"
|
|
#include "ui/CSimpleScrollFrame.hpp"
|
|
#include "util/Lua.hpp"
|
|
#include "util/Unimplemented.hpp"
|
|
#include <cstdint>
|
|
|
|
int32_t CSimpleScrollFrame_SetScrollChild(lua_State* L) {
|
|
WHOA_UNIMPLEMENTED(0);
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_GetScrollChild(lua_State* L) {
|
|
WHOA_UNIMPLEMENTED(0);
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_SetHorizontalScroll(lua_State* L) {
|
|
WHOA_UNIMPLEMENTED(0);
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_SetVerticalScroll(lua_State* L) {
|
|
auto type = CSimpleScrollFrame::GetObjectType();
|
|
auto scrollFrame = static_cast<CSimpleScrollFrame*>(FrameScript_GetObjectThis(L, type));
|
|
|
|
if (!scrollFrame->ProtectedFunctionsAllowed()) {
|
|
// TODO handle check
|
|
|
|
return 0;
|
|
}
|
|
|
|
if (!lua_isnumber(L, 2)) {
|
|
luaL_error(L, "Usage: %s:SetVerticalScroll(offset)", scrollFrame->GetDisplayName());
|
|
}
|
|
|
|
float offset = lua_tonumber(L, 2);
|
|
float ndcOffset = offset / (CoordinateGetAspectCompensation() * 1024.0f);
|
|
float ddcOffset = NDCToDDCWidth(ndcOffset);
|
|
|
|
scrollFrame->SetVerticalScroll(ddcOffset);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_GetHorizontalScroll(lua_State* L) {
|
|
auto type = CSimpleScrollFrame::GetObjectType();
|
|
auto scrollFrame = static_cast<CSimpleScrollFrame*>(FrameScript_GetObjectThis(L, type));
|
|
|
|
float ddcOffset = CoordinateGetAspectCompensation() * 1024.0f * scrollFrame->m_scrollOffset.x;
|
|
float ndcOffset = DDCToNDCWidth(ddcOffset);
|
|
|
|
lua_pushnumber(L, ndcOffset);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_GetVerticalScroll(lua_State* L) {
|
|
auto type = CSimpleScrollFrame::GetObjectType();
|
|
auto scrollFrame = static_cast<CSimpleScrollFrame*>(FrameScript_GetObjectThis(L, type));
|
|
|
|
float ddcOffset = CoordinateGetAspectCompensation() * 1024.0f * scrollFrame->m_scrollOffset.y;
|
|
float ndcOffset = DDCToNDCWidth(ddcOffset);
|
|
|
|
lua_pushnumber(L, ndcOffset);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_GetHorizontalScrollRange(lua_State* L) {
|
|
auto type = CSimpleScrollFrame::GetObjectType();
|
|
auto scrollFrame = static_cast<CSimpleScrollFrame*>(FrameScript_GetObjectThis(L, type));
|
|
|
|
float ddcRange = CoordinateGetAspectCompensation() * 1024.0f * scrollFrame->m_scrollRange.x;
|
|
float ndcRange = DDCToNDCWidth(ddcRange);
|
|
|
|
lua_pushnumber(L, ndcRange);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_GetVerticalScrollRange(lua_State* L) {
|
|
auto type = CSimpleScrollFrame::GetObjectType();
|
|
auto scrollFrame = static_cast<CSimpleScrollFrame*>(FrameScript_GetObjectThis(L, type));
|
|
|
|
float ddcRange = CoordinateGetAspectCompensation() * 1024.0f * scrollFrame->m_scrollRange.y;
|
|
float ndcRange = DDCToNDCWidth(ddcRange);
|
|
|
|
lua_pushnumber(L, ndcRange);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int32_t CSimpleScrollFrame_UpdateScrollChildRect(lua_State* L) {
|
|
WHOA_UNIMPLEMENTED(0);
|
|
}
|
|
|
|
FrameScript_Method SimpleScrollFrameMethods[NUM_SIMPLE_SCROLL_FRAME_SCRIPT_METHODS] = {
|
|
{ "SetScrollChild", &CSimpleScrollFrame_SetScrollChild },
|
|
{ "GetScrollChild", &CSimpleScrollFrame_GetScrollChild },
|
|
{ "SetHorizontalScroll", &CSimpleScrollFrame_SetHorizontalScroll },
|
|
{ "SetVerticalScroll", &CSimpleScrollFrame_SetVerticalScroll },
|
|
{ "GetHorizontalScroll", &CSimpleScrollFrame_GetHorizontalScroll },
|
|
{ "GetVerticalScroll", &CSimpleScrollFrame_GetVerticalScroll },
|
|
{ "GetHorizontalScrollRange", &CSimpleScrollFrame_GetHorizontalScrollRange },
|
|
{ "GetVerticalScrollRange", &CSimpleScrollFrame_GetVerticalScrollRange },
|
|
{ "UpdateScrollChildRect", &CSimpleScrollFrame_UpdateScrollChildRect }
|
|
};
|