| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "Wrappers/GUI/BsScriptGUIScrollBar.h"
- #include "BsScriptMeta.h"
- #include "BsMonoClass.h"
- #include "BsMonoMethod.h"
- #include "BsMonoUtil.h"
- #include "Wrappers/GUI/BsScriptGUIElement.h"
- #include "GUI/BsGUIScrollBar.h"
- #include "GUI/BsGUIScrollBarHorz.h"
- #include "GUI/BsGUIScrollBarVert.h"
- using namespace std::placeholders;
- namespace bs
- {
- ScriptGUIScrollBar::ScriptGUIScrollBar(MonoObject* instance)
- :TScriptGUIElement(instance, nullptr)
- {
- }
- void ScriptGUIScrollBar::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_SetTint", (void*)&ScriptGUIScrollBar::internal_SetTint);
- metaData.scriptClass->addInternalCall("Internal_GetPosition", (void*)&ScriptGUIScrollBar::internal_GetPosition);
- metaData.scriptClass->addInternalCall("Internal_SetPosition", (void*)&ScriptGUIScrollBar::internal_SetPosition);
- metaData.scriptClass->addInternalCall("Internal_GetHandleSize", (void*)&ScriptGUIScrollBar::internal_GetHandleSize);
- metaData.scriptClass->addInternalCall("Internal_SetHandleSize", (void*)&ScriptGUIScrollBar::internal_SetHandleSize);
- }
- float ScriptGUIScrollBar::internal_GetPosition(ScriptGUIElementBaseTBase* nativeInstance)
- {
- GUIScrollBar* scrollBar = (GUIScrollBar*)nativeInstance->getGUIElement();
- return scrollBar->getScrollPos();
- }
- void ScriptGUIScrollBar::internal_SetPosition(ScriptGUIElementBaseTBase* nativeInstance, float percent)
- {
- GUIScrollBar* scrollBar = (GUIScrollBar*)nativeInstance->getGUIElement();
- scrollBar->_setScrollPos(percent);
- }
- float ScriptGUIScrollBar::internal_GetHandleSize(ScriptGUIElementBaseTBase* nativeInstance)
- {
- GUIScrollBar* scrollBar = (GUIScrollBar*)nativeInstance->getGUIElement();
- return scrollBar->getHandleSize();
- }
- void ScriptGUIScrollBar::internal_SetHandleSize(ScriptGUIElementBaseTBase* nativeInstance, float percent)
- {
- GUIScrollBar* scrollBar = (GUIScrollBar*)nativeInstance->getGUIElement();
- scrollBar->setHandleSize(percent);
- }
- void ScriptGUIScrollBar::internal_SetTint(ScriptGUIElementBaseTBase* nativeInstance, Color* color)
- {
- GUIScrollBar* scrollBar = (GUIScrollBar*)nativeInstance->getGUIElement();
- scrollBar->setTint(*color);
- }
- ScriptGUIScrollBarH::OnScrolledThunkDef ScriptGUIScrollBarH::onScrolledThunk;
- ScriptGUIScrollBarH::ScriptGUIScrollBarH(MonoObject* instance, GUIScrollBarHorz* scrollBar)
- :TScriptGUIElement(instance, scrollBar)
- {
- }
- void ScriptGUIScrollBarH::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_CreateInstance", (void*)&ScriptGUIScrollBarH::internal_CreateInstance);
- onScrolledThunk = (OnScrolledThunkDef)metaData.scriptClass->getMethod("Internal_DoOnScroll", 1)->getThunk();
- }
- void ScriptGUIScrollBarH::internal_CreateInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions)
- {
- GUIOptions options;
- ScriptArray scriptArray(guiOptions);
- UINT32 arrayLen = scriptArray.size();
- for (UINT32 i = 0; i < arrayLen; i++)
- options.addOption(scriptArray.get<GUIOption>(i));
- GUIScrollBarHorz* guiScrollBar = GUIScrollBarHorz::create(options, MonoUtil::monoToString(style));
- ScriptGUIScrollBarH* scriptScrollBar = new (bs_alloc<ScriptGUIScrollBarH>()) ScriptGUIScrollBarH(instance, guiScrollBar);
- guiScrollBar->onScrollOrResize.connect(std::bind(&ScriptGUIScrollBarH::onScroll, scriptScrollBar, _1, _2));
- }
- void ScriptGUIScrollBarH::onScroll(float position, float size)
- {
- MonoUtil::invokeThunk(onScrolledThunk, getManagedInstance(), position);
- }
- ScriptGUIScrollBarV::OnScrolledThunkDef ScriptGUIScrollBarV::onScrolledThunk;
- ScriptGUIScrollBarV::ScriptGUIScrollBarV(MonoObject* instance, GUIScrollBarVert* scrollBar)
- :TScriptGUIElement(instance, scrollBar)
- {
- }
- void ScriptGUIScrollBarV::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_CreateInstance", (void*)&ScriptGUIScrollBarV::internal_CreateInstance);
- onScrolledThunk = (OnScrolledThunkDef)metaData.scriptClass->getMethod("Internal_DoOnScroll", 1)->getThunk();
- }
- void ScriptGUIScrollBarV::internal_CreateInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions)
- {
- GUIOptions options;
- ScriptArray scriptArray(guiOptions);
- UINT32 arrayLen = scriptArray.size();
- for (UINT32 i = 0; i < arrayLen; i++)
- options.addOption(scriptArray.get<GUIOption>(i));
- GUIScrollBarVert* guiScrollBar = GUIScrollBarVert::create(options, MonoUtil::monoToString(style));
- ScriptGUIScrollBarV* scriptScrollBar = new (bs_alloc<ScriptGUIScrollBarV>()) ScriptGUIScrollBarV(instance, guiScrollBar);
- guiScrollBar->onScrollOrResize.connect(std::bind(&ScriptGUIScrollBarV::onScroll, scriptScrollBar, _1, _2));
- }
- void ScriptGUIScrollBarV::onScroll(float position, float size)
- {
- MonoUtil::invokeThunk(onScrolledThunk, getManagedInstance(), position);
- }
- ScriptGUIResizeableScrollBarH::OnScrollOrResizeThunkDef ScriptGUIResizeableScrollBarH::onScrollOrResizeThunk;
- ScriptGUIResizeableScrollBarH::ScriptGUIResizeableScrollBarH(MonoObject* instance, GUIScrollBarHorz* scrollBar)
- :TScriptGUIElement(instance, scrollBar)
- {
- }
- void ScriptGUIResizeableScrollBarH::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_CreateInstance", (void*)&ScriptGUIResizeableScrollBarH::internal_CreateInstance);
- onScrollOrResizeThunk = (OnScrollOrResizeThunkDef)metaData.scriptClass->getMethod("Internal_DoOnScrollOrResize", 2)->getThunk();
- }
- void ScriptGUIResizeableScrollBarH::internal_CreateInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions)
- {
- GUIOptions options;
- ScriptArray scriptArray(guiOptions);
- UINT32 arrayLen = scriptArray.size();
- for (UINT32 i = 0; i < arrayLen; i++)
- options.addOption(scriptArray.get<GUIOption>(i));
- GUIScrollBarHorz* guiScrollBar = GUIScrollBarHorz::create(true, options, MonoUtil::monoToString(style));
- ScriptGUIResizeableScrollBarH* scriptScrollBar = new (bs_alloc<ScriptGUIResizeableScrollBarH>()) ScriptGUIResizeableScrollBarH(instance, guiScrollBar);
- guiScrollBar->onScrollOrResize.connect(std::bind(&ScriptGUIResizeableScrollBarH::onScroll, scriptScrollBar, _1, _2));
- }
- void ScriptGUIResizeableScrollBarH::onScroll(float position, float size)
- {
- MonoUtil::invokeThunk(onScrollOrResizeThunk, getManagedInstance(), position, size);
- }
- ScriptGUIResizeableScrollBarV::OnScrollOrResizeThunkDef ScriptGUIResizeableScrollBarV::onScrollOrResizeThunk;
- ScriptGUIResizeableScrollBarV::ScriptGUIResizeableScrollBarV(MonoObject* instance, GUIScrollBarVert* scrollBar)
- :TScriptGUIElement(instance, scrollBar)
- {
- }
- void ScriptGUIResizeableScrollBarV::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_CreateInstance", (void*)&ScriptGUIResizeableScrollBarV::internal_CreateInstance);
- onScrollOrResizeThunk = (OnScrollOrResizeThunkDef)metaData.scriptClass->getMethod("Internal_DoOnScrollOrResize", 2)->getThunk();
- }
- void ScriptGUIResizeableScrollBarV::internal_CreateInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions)
- {
- GUIOptions options;
- ScriptArray scriptArray(guiOptions);
- UINT32 arrayLen = scriptArray.size();
- for (UINT32 i = 0; i < arrayLen; i++)
- options.addOption(scriptArray.get<GUIOption>(i));
- GUIScrollBarVert* guiScrollBar = GUIScrollBarVert::create(true, options, MonoUtil::monoToString(style));
- ScriptGUIResizeableScrollBarV* scriptScrollBar = new (bs_alloc<ScriptGUIResizeableScrollBarV>()) ScriptGUIResizeableScrollBarV(instance, guiScrollBar);
- guiScrollBar->onScrollOrResize.connect(std::bind(&ScriptGUIResizeableScrollBarV::onScroll, scriptScrollBar, _1, _2));
- }
- void ScriptGUIResizeableScrollBarV::onScroll(float position, float size)
- {
- MonoUtil::invokeThunk(onScrollOrResizeThunk, getManagedInstance(), position, size);
- }
- }
|