Cumulia Illustrator Rendering Engine v1.1.0
A Rendering engine for industrial CAD/CAE model and optimized for greatest performance
 
Loading...
Searching...
No Matches
action.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-10-31
15// Version V1.1.0
16//##################################################################################################
17
18#pragma once
19
20#include <cilcore.h>
21
22#include <string>
23
24namespace cil
25{
27 {
28 public:
29 enum class Type {
30 Hover,
31 Click,
32 Drag,
33 Hold,
34 Wheel
35 };
36
37 MouseAction(std::shared_ptr<MouseAction> successor = nullptr);
38 virtual ~MouseAction();
39
40 virtual Type type() const = 0;
41 std::shared_ptr<MouseAction> successor() const;
42 void setSuccessor(std::shared_ptr<MouseAction> successor);
43
44 public:
45 std::string name;
46
47 protected:
48 std::shared_ptr<MouseAction> m_successor;
49 };
50
52 {
53 public:
54 MouseHoveredAction(std::shared_ptr<MouseHoveredAction> successor = nullptr);
56
57 virtual Type type() const;
59 virtual bool hover(const ivec2& coord) = 0;
60 };
61
63 {
64 public:
65 MouseClickedAction(std::shared_ptr<MouseClickedAction> successor = nullptr);
67
68 virtual Type type() const;
70 virtual bool click(const ivec2& coord) = 0;
71 };
72
74 {
75 public:
76 MouseDraggedAction(std::shared_ptr<MouseDraggedAction> successor = nullptr);
78
79 virtual Type type() const;
81 virtual bool begin(const ivec2& coord) = 0;
82 virtual void drag(const ivec2& coord) = 0;
83 virtual void end(const ivec2& coord) = 0;
84 virtual void wheel(const ivec2& coord, bool up);
85 virtual void cancel();
86 };
87
89 {
90 public:
91 MouseHeldAction(std::shared_ptr<MouseHeldAction> successor = nullptr);
93
94 virtual Type type() const;
96 virtual bool hold(const ivec2& coord) = 0;
97 };
98
100 {
101 public:
102 MouseWheeledAction(std::shared_ptr<MouseWheeledAction> successor = nullptr);
104
105 virtual Type type() const;
106 MouseWheeledAction* mouseWheel(const ivec2& coord, bool up);
107 virtual bool wheel(const ivec2& coord, bool up) = 0;
108 };
109}
Definition action.h:27
MouseAction(std::shared_ptr< MouseAction > successor=nullptr)
virtual Type type() const =0
std::shared_ptr< MouseAction > m_successor
Definition action.h:48
Type
Definition action.h:29
std::shared_ptr< MouseAction > successor() const
std::string name
Definition action.h:45
void setSuccessor(std::shared_ptr< MouseAction > successor)
virtual ~MouseAction()
Definition action.h:63
virtual Type type() const
virtual bool click(const ivec2 &coord)=0
MouseClickedAction * mouseUp(const ivec2 &coord)
MouseClickedAction(std::shared_ptr< MouseClickedAction > successor=nullptr)
Definition action.h:74
virtual void end(const ivec2 &coord)=0
virtual void drag(const ivec2 &coord)=0
virtual void wheel(const ivec2 &coord, bool up)
MouseDraggedAction(std::shared_ptr< MouseDraggedAction > successor=nullptr)
virtual bool begin(const ivec2 &coord)=0
MouseDraggedAction * mouseDown(const ivec2 &coord)
virtual void cancel()
virtual Type type() const
Definition action.h:89
virtual bool hold(const ivec2 &coord)=0
MouseHeldAction(std::shared_ptr< MouseHeldAction > successor=nullptr)
virtual Type type() const
virtual ~MouseHeldAction()
MouseHeldAction * mouseDown(const ivec2 &coord)
Definition action.h:52
MouseHoveredAction(std::shared_ptr< MouseHoveredAction > successor=nullptr)
virtual bool hover(const ivec2 &coord)=0
MouseHoveredAction * mouseMove(const ivec2 &coord)
virtual Type type() const
Definition action.h:100
virtual Type type() const
MouseWheeledAction(std::shared_ptr< MouseWheeledAction > successor=nullptr)
virtual bool wheel(const ivec2 &coord, bool up)=0
MouseWheeledAction * mouseWheel(const ivec2 &coord, bool up)
The class Vector2i inherits from the templated class of Vector2, and the template parameters are spec...
Definition vector.h:255
Definition decal.h:23