Cumulia Illustrator Rendering Engine v1.0.0
A Rendering engine for industrial CAD/CAE model and optimized for greatest performance
 
Loading...
Searching...
No Matches
manipulator.h
1//##################################################################################################
2//
3// Copyright (c) 2024 Beijing Qiongqi Tech Co.,Ltd. All rights reserved.
4
5// This source code is confidential and proprietary to Beijing Qiongqi Tech Co.,Ltd(The Holder).
6// Any unauthorized use, copying, modification, or distribution of the code is strictly prohibited.
7// Any user shall obtain authorizaition from the Holder before modifying the source code. And the user shall not
8// sublicense, sell, distribute, or transfer the source code, whether in original or modified form, to any third party
9// without the prior written consent of the Holder.
10
11// This copyright notice and permission grant shall be included in all copies or substantial portions of the source code.
12
13// Author Cumulia Illustrator
14// Date 2024-05-01
15// Version V1.0.0
16//##################################################################################################
17
18#pragma once
19
20#include <cilcore.h>
21
22#include <memory>
23#include <vector>
24#include <map>
25
26#include "action.h"
27
28namespace cil
29{
31 {
32 public:
34 virtual ~Manipulator();
35 };
36
38 {
39 private:
40 Vector2i m_position;
41 int m_threshold;
42 std::shared_ptr<MouseAction> m_actived;
43 std::shared_ptr<MouseAction> m_alternate;
44
45 std::map<int, std::vector<std::shared_ptr<MouseHoveredAction>>> m_hoveredActionMap;
46 std::map<int, std::vector<std::shared_ptr<MouseClickedAction>>> m_clickedActionMap;
47 std::map<int, std::vector<std::shared_ptr<MouseDraggedAction>>> m_draggedActionMap;
48 std::map<int, std::vector<std::shared_ptr<MouseWheeledAction>>> m_wheeledActionMap;
49
50 public:
51 enum class Button {
52 None = 0x0000,
53 Left = 0x0001,
54 Right = 0x0002,
55 Middle = 0x0004,
56 X1 = 0x0008,
57 X2 = 0x0010
58 };
59
60 enum class Modifier {
61 None = 0x0000,
62 Shift = 0x0020,
63 Ctrl = 0x0040,
64 Alt = 0x0080,
65 };
66
68
69 virtual void mouseDown(const ivec2& position, Button button, Modifier modifier);
70 virtual void mouseMove(const ivec2& position, Button button, Modifier modifier);
71 virtual void mouseUp(const ivec2& position, Button button, Modifier modifier);
72 virtual void mouseWheel(const ivec2& position, Modifier modifier, bool up);
73 virtual void cancel();
74
75 virtual void bind(int gesture, std::shared_ptr<MouseHoveredAction> action);
76 virtual void bind(int gesture, std::shared_ptr<MouseClickedAction> action);
77 virtual void bind(int gesture, std::shared_ptr<MouseDraggedAction> action);
78 virtual void bind(int gesture, std::shared_ptr<MouseWheeledAction> action);
79 virtual void unbind(int gesture, std::shared_ptr<MouseHoveredAction> action);
80 virtual void unbind(int gesture, std::shared_ptr<MouseClickedAction> action);
81 virtual void unbind(int gesture, std::shared_ptr<MouseDraggedAction> action);
82 virtual void unbind(int gesture, std::shared_ptr<MouseWheeledAction> action);
83 };
84
86 {
87 public:
89 };
90
92 {
93 public:
94 enum class Gesture {
95 None,
96 Motion,
97 Button,
98 };
99
101 };
102}
Definition manipulator.h:31
virtual ~Manipulator()
Definition manipulator.h:38
virtual void bind(int gesture, std::shared_ptr< MouseWheeledAction > action)
virtual void bind(int gesture, std::shared_ptr< MouseClickedAction > action)
virtual void unbind(int gesture, std::shared_ptr< MouseClickedAction > action)
virtual void bind(int gesture, std::shared_ptr< MouseHoveredAction > action)
virtual void unbind(int gesture, std::shared_ptr< MouseHoveredAction > action)
virtual void mouseDown(const ivec2 &position, Button button, Modifier modifier)
virtual void mouseWheel(const ivec2 &position, Modifier modifier, bool up)
virtual void cancel()
virtual void mouseMove(const ivec2 &position, Button button, Modifier modifier)
virtual void unbind(int gesture, std::shared_ptr< MouseWheeledAction > action)
virtual void bind(int gesture, std::shared_ptr< MouseDraggedAction > action)
virtual void unbind(int gesture, std::shared_ptr< MouseDraggedAction > action)
Button
Definition manipulator.h:51
Modifier
Definition manipulator.h:60
virtual void mouseUp(const ivec2 &position, Button button, Modifier modifier)
Definition manipulator.h:92
Gesture
Definition manipulator.h:94
Definition manipulator.h:86
The class Vector2i inherits from the templated class of Vector2, and the template parameters are spec...
Definition vector.h:255
Definition decal.h:23