X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScripting%2FNasalCanvas.cxx;h=32aa4f84dba6dade91338c2f1c303bfff366777a;hb=7f43a09fc57f542a33480bc995f2c78c7c971a6a;hp=1cdf9b57f5675500ce227e04c15c537cc69dd55f;hpb=df7e56b049c09eca9adfc41cd7963b2cc8070462;p=flightgear.git diff --git a/src/Scripting/NasalCanvas.cxx b/src/Scripting/NasalCanvas.cxx index 1cdf9b57f..32aa4f84d 100644 --- a/src/Scripting/NasalCanvas.cxx +++ b/src/Scripting/NasalCanvas.cxx @@ -61,6 +61,17 @@ typedef nasal::Ghost NasalGroup; typedef nasal::Ghost NasalText; typedef nasal::Ghost NasalWindow; +naRef to_nasal_helper(naContext c, const osg::BoundingBox& bb) +{ + std::vector bb_vec(4); + bb_vec[0] = bb._min.x(); + bb_vec[1] = bb._min.y(); + bb_vec[2] = bb._max.x(); + bb_vec[3] = bb._max.y(); + + return nasal::to_nasal(c, bb_vec); +} + SGPropertyNode* from_nasal_helper(naContext c, naRef ref, SGPropertyNode**) { SGPropertyNode* props = ghostToPropNode(ref); @@ -156,19 +167,6 @@ naRef f_getDesktop(naContext c, naRef me, int argc, naRef* args) return NasalGroup::create(c, requireGUIMgr(c).getDesktop()); } -naRef f_elementGetTransformedBounds(sc::Element& el, const nasal::CallContext& ctx) -{ - osg::BoundingBox bb = el.getTransformedBounds( osg::Matrix::identity() ); - - std::vector bb_vec(4); - bb_vec[0] = bb._min.x(); - bb_vec[1] = bb._min.y(); - bb_vec[2] = bb._max.x(); - bb_vec[3] = bb._max.y(); - - return nasal::to_nasal(ctx.c, bb_vec); -} - naRef f_groupCreateChild(sc::Group& group, const nasal::CallContext& ctx) { return NasalElement::create @@ -197,13 +195,20 @@ naRef f_groupGetElementById(sc::Group& group, const nasal::CallContext& ctx) ); } +template +naRef f_eventGetModifier(naContext, sc::MouseEvent& event) +{ + return naNum((event.getModifiers() & Mask) != 0); +} + naRef to_nasal_helper(naContext c, const sc::ElementWeakPtr& el) { return NasalElement::create(c, el.lock()); } -naRef initNasalCanvas(naRef globals, naContext c, naRef gcSave) +naRef initNasalCanvas(naRef globals, naContext c) { + using osgGA::GUIEventAdapter; NasalEvent::init("canvas.Event") .member("type", &sc::Event::getTypeString) .member("target", &sc::Event::getTarget) @@ -219,6 +224,13 @@ naRef initNasalCanvas(naRef globals, naContext c, naRef gcSave) .member("localY", &sc::MouseEvent::getLocalY) .member("deltaX", &sc::MouseEvent::getDeltaX) .member("deltaY", &sc::MouseEvent::getDeltaY) + .member("button", &sc::MouseEvent::getButton) + .member("buttons", &sc::MouseEvent::getButtonMask) + .member("modifiers", &sc::MouseEvent::getModifiers) + .member("ctrlKey", &f_eventGetModifier) + .member("shiftKey", &f_eventGetModifier) + .member("altKey", &f_eventGetModifier) + .member("metaKey", &f_eventGetModifier) .member("click_count", &sc::MouseEvent::getCurrentClickCount); NasalCanvas::init("Canvas") .member("_node_ghost", &elementGetNode) @@ -226,11 +238,13 @@ naRef initNasalCanvas(naRef globals, naContext c, naRef gcSave) .member("size_y", &sc::Canvas::getSizeY) .method("_createGroup", &f_canvasCreateGroup) .method("_getGroup", &sc::Canvas::getGroup) - .method("addEventListener", &sc::Canvas::addNasalEventListener); + .method("addEventListener", &sc::Canvas::addEventListener); NasalElement::init("canvas.Element") .member("_node_ghost", &elementGetNode) - .method("addEventListener", &sc::Element::addNasalEventListener) - .method("getTransformedBounds", &f_elementGetTransformedBounds); + .method("_getParent", &sc::Element::getParent) + .method("addEventListener", &sc::Element::addEventListener) + .method("getBoundingBox", &sc::Element::getBoundingBox) + .method("getTightBoundingBox", &sc::Element::getTightBoundingBox); NasalGroup::init("canvas.Group") .bases() .method("_createChild", &f_groupCreateChild) @@ -244,7 +258,7 @@ naRef initNasalCanvas(naRef globals, naContext c, naRef gcSave) .bases() .member("_node_ghost", &elementGetNode) .method("_getCanvasDecoration", &canvas::Window::getCanvasDecoration); - + nasal::Hash globals_module(globals, c), canvas_module = globals_module.createHash("canvas");