177 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
// NoesisGUI - http://www.noesisengine.com
 | 
						|
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
 | 
						|
namespace Noesis
 | 
						|
{
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
NS_GUI_CORE_API Point GetRelativePosition(const Point& p, UIElement* relativeTo);
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline InputEventArgs::InputEventArgs(BaseComponent* s, const RoutedEvent* e): RoutedEventArgs(s, e) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline MouseButtonEventArgs::MouseButtonEventArgs(BaseComponent* s, const RoutedEvent* e,
 | 
						|
    MouseButton button, MouseButtonState state, uint32_t clicks): MouseEventArgs(s, e),
 | 
						|
    changedButton(button), buttonState(state), clickCount(clicks) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline MouseWheelEventArgs::MouseWheelEventArgs(BaseComponent* s, const RoutedEvent* e, int delta,
 | 
						|
    Orientation o) : MouseEventArgs(s, e), wheelRotation(delta), orientation(o) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline Point TouchEventArgs::GetTouchPoint(UIElement* relativeTo) const
 | 
						|
{
 | 
						|
    NS_CHECK(relativeTo != nullptr, "GetTouchPoint relativeTo argument is null");
 | 
						|
    return GetRelativePosition(touchPoint, relativeTo);
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline TouchEventArgs::TouchEventArgs(BaseComponent* s, const RoutedEvent* e, const Point& touchPoint_,
 | 
						|
    uint64_t touchDevice_) : InputEventArgs(s, e), touchPoint(touchPoint_), touchDevice(touchDevice_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline ManipulationStartingEventArgs::ManipulationStartingEventArgs(BaseComponent* s,
 | 
						|
    const RoutedEvent* e, Visual* container, ArrayRef<Manipulator> manipulators_):
 | 
						|
    InputEventArgs(s, e), manipulationContainer(container), manipulators(manipulators_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline ManipulationStartedEventArgs::ManipulationStartedEventArgs(BaseComponent* s,
 | 
						|
    const RoutedEvent* e, Visual* container, const Point& origin,
 | 
						|
    ArrayRef<Manipulator> manipulators_): InputEventArgs(s, e), manipulationContainer(container),
 | 
						|
    manipulationOrigin(origin), manipulators(manipulators_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline ManipulationDeltaEventArgs::ManipulationDeltaEventArgs(BaseComponent* s, const RoutedEvent* e,
 | 
						|
    Visual* container, const Point& origin, const ManipulationDelta& delta,
 | 
						|
    const ManipulationDelta& cumulative, const ManipulationVelocities& velocities_,
 | 
						|
    bool isInertial_, ArrayRef<Manipulator> manipulators_): InputEventArgs(s, e),
 | 
						|
    manipulationContainer(container), manipulationOrigin(origin), deltaManipulation(delta),
 | 
						|
    cumulativeManipulation(cumulative), velocities(velocities_), isInertial(isInertial_),
 | 
						|
    manipulators(manipulators_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline ManipulationInertiaStartingEventArgs::ManipulationInertiaStartingEventArgs(BaseComponent* s,
 | 
						|
    const RoutedEvent* e, Visual* container, const Point& origin,
 | 
						|
    const ManipulationVelocities& velocities, ArrayRef<Manipulator> manipulators_):
 | 
						|
    InputEventArgs(s, e), manipulationContainer(container), manipulationOrigin(origin),
 | 
						|
    initialVelocities(velocities), manipulators(manipulators_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline ManipulationCompletedEventArgs::ManipulationCompletedEventArgs(BaseComponent* s,
 | 
						|
    const RoutedEvent* e, Visual* container, const Point& origin,
 | 
						|
    const ManipulationVelocities& velocities, const ManipulationDelta& totalManipulation_,
 | 
						|
    bool isInertial_, ArrayRef<Manipulator> manipulators_) : InputEventArgs(s, e),
 | 
						|
    manipulationContainer(container), manipulationOrigin(origin), finalVelocities(velocities),
 | 
						|
    totalManipulation(totalManipulation_), isInertial(isInertial_), manipulators(manipulators_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline TappedEventArgs::TappedEventArgs(BaseComponent* source, const RoutedEvent* event,
 | 
						|
    const Point& p, uint64_t device): TouchEventArgs(source, event, p, device) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline DoubleTappedEventArgs::DoubleTappedEventArgs(BaseComponent* source, const RoutedEvent* event,
 | 
						|
    const Point& p, uint64_t device): TouchEventArgs(source, event, p, device) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline HoldingEventArgs::HoldingEventArgs(BaseComponent* source, const RoutedEvent* event,
 | 
						|
    const Point& p, uint64_t device, HoldingState holdingState_):
 | 
						|
    TouchEventArgs(source, event, p, device), holdingState(holdingState_) {};
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline RightTappedEventArgs::RightTappedEventArgs(BaseComponent* source, const RoutedEvent* event,
 | 
						|
    const Point& p, uint64_t device): TouchEventArgs(source, event, p, device) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline KeyboardEventArgs::KeyboardEventArgs(BaseComponent* s, const RoutedEvent* e):
 | 
						|
    InputEventArgs(s, e) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline KeyboardFocusChangedEventArgs::KeyboardFocusChangedEventArgs(BaseComponent* s,
 | 
						|
    const RoutedEvent* e, UIElement* o, UIElement* n) : KeyboardEventArgs(s, e), oldFocus(o), newFocus(n) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline bool KeyEventArgs::GetIsDown() const
 | 
						|
{
 | 
						|
    return (keyStates & KeyStates_Down) != 0;
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline bool KeyEventArgs::GetIsRepeat() const
 | 
						|
{
 | 
						|
    return (keyStates & KeyStates_Down) != 0 && (keyStates & KeyStates_Toggled) == 0;
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline bool KeyEventArgs::GetIsToggled() const
 | 
						|
{
 | 
						|
    return (keyStates & KeyStates_Toggled) != 0;
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline bool KeyEventArgs::GetIsUp() const
 | 
						|
{
 | 
						|
    return (keyStates & KeyStates_Down) == 0;
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline KeyEventArgs::KeyEventArgs(BaseComponent* s, const RoutedEvent* e, Key k, KeyStates ks):
 | 
						|
    KeyboardEventArgs(s, e), keyStates(ks)
 | 
						|
{
 | 
						|
    originalKey = k;
 | 
						|
 | 
						|
    switch (k)
 | 
						|
    {
 | 
						|
        case Key_GamepadLeft: key = Key_Left; break;
 | 
						|
        case Key_GamepadUp: key = Key_Up; break;
 | 
						|
        case Key_GamepadRight: key = Key_Right; break;
 | 
						|
        case Key_GamepadDown: key = Key_Down; break;
 | 
						|
        case Key_GamepadAccept: key = Key_Space; break;
 | 
						|
        case Key_GamepadCancel: key = Key_Escape; break;
 | 
						|
        case Key_GamepadPageUp: key = Key_PageUp; break;
 | 
						|
        case Key_GamepadPageDown: key = Key_PageDown; break;
 | 
						|
        case Key_GamepadPageLeft: key = Key_PageLeft; break;
 | 
						|
        case Key_GamepadPageRight: key = Key_PageRight; break;
 | 
						|
        default: key = k; break;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline TextCompositionEventArgs::TextCompositionEventArgs(BaseComponent* s, const RoutedEvent* e,
 | 
						|
    uint32_t ch_) : InputEventArgs(s, e), ch(ch_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline QueryCursorEventArgs::QueryCursorEventArgs(BaseComponent* s, const RoutedEvent* e):
 | 
						|
    MouseEventArgs(s, e) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline QueryContinueDragEventArgs::QueryContinueDragEventArgs(BaseComponent* source,
 | 
						|
    const RoutedEvent* event, bool escapePressed_, uint32_t keyStates_):
 | 
						|
    RoutedEventArgs(source, event), escapePressed(escapePressed_), keyStates(keyStates_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline GiveFeedbackEventArgs::GiveFeedbackEventArgs(BaseComponent* source, const RoutedEvent* event,
 | 
						|
    uint32_t effects_, bool useDefaultCursors_): RoutedEventArgs(source, event), effects(effects_),
 | 
						|
    useDefaultCursors(useDefaultCursors_) {}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline Point DragEventArgs::GetPosition(UIElement* relativeTo) const
 | 
						|
{
 | 
						|
    NS_CHECK(relativeTo != nullptr, "GetPosition relativeTo argument is null");
 | 
						|
    return GetRelativePosition(dropPoint, relativeTo);
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
inline DragEventArgs::DragEventArgs(BaseComponent* source, const RoutedEvent* event,
 | 
						|
    BaseComponent* data_, uint32_t keyStates_, uint32_t allowedEffects_, UIElement* target_,
 | 
						|
    const Point& point): RoutedEventArgs(source, event), data(data_), keyStates(keyStates_),
 | 
						|
        allowedEffects(allowedEffects_), effects(allowedEffects_), target(target_), dropPoint(point)
 | 
						|
{
 | 
						|
    NS_ASSERT(target != nullptr);
 | 
						|
}
 | 
						|
 | 
						|
}
 |