Skip to content

Commit

Permalink
I added the mouse button enum.
Browse files Browse the repository at this point in the history
  • Loading branch information
ronsaldo committed Nov 24, 2023
1 parent 5c209b5 commit 5a3e615
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 2 deletions.
11 changes: 10 additions & 1 deletion package-sources/Graphics.Window/Event.sysmel
Expand Up @@ -139,8 +139,17 @@ public class MouseMoveEvent superclass: MouseEvent; definition: {
* I am a mouse button event
*#
public class MouseButtonEvent superclass: MouseEvent; definition: {
public field button => UInt8.
public field button => MouseButton.
public field clicks => UInt8.

public inline method isLeftButton => Boolean
:= button isLeft.

public inline method isMiddleButton => Boolean
:= button isMiddle.

public inline method isRightButton => Boolean
:= button isRight.
}.

#**
Expand Down
35 changes: 35 additions & 0 deletions package-sources/Graphics.Window/MouseButton.sysmel
@@ -0,0 +1,35 @@
#**
* I represent a particular mouse button.
*#
public enum MouseButton valueType: UInt8; values: #{
None: 0u8.
Left: 1u8.
Middle: 2u8.
Right: 3u8.
X1: 4u8.
X2: 5u8.
}; definition: {
public inline method asMaskBit => UInt32
:= 1u32<<(self value asUInt32 - 1u32).

public inline method isLeft => Boolean
:= self value = MouseButton Left value.

public inline method isMiddle => Boolean
:= self value = MouseButton Middle value.

public inline method isRight => Boolean
:= self value = MouseButton Right value.
}.

#**
* I am a mask of different mouse buttons.
*#
public enum MouseButtonMask bitMask valueType: UInt32; values: #{
None: 0u32.
Left: MouseButton Left asMaskBit.
Middle: MouseButton Middle asMaskBit.
Right: MouseButton Right asMaskBit.
X1: MouseButton X1 asMaskBit.
X2: MouseButton X2 asMaskBit.
}.
2 changes: 1 addition & 1 deletion package-sources/Graphics.Window/Window.sysmel
Expand Up @@ -87,7 +87,7 @@ public class Window superclass: Object; definition: {

private method convertMouseButtonEventInto: (palEvent: SysmelPAL::MouseButtonEvent ref) into: (event: MouseButtonEvent) ::=> MouseButtonEvent
:= event
button: palEvent button;
button: (MouseButton value: palEvent button);
clicks: palEvent clicks;
position: (Float32x2 x: palEvent x asFloat32 y: palEvent y asFloat32);
yourself.
Expand Down
1 change: 1 addition & 0 deletions package-sources/Graphics.Window/package.sysmel
@@ -1,5 +1,6 @@
loadSourceNamed: "KeyModifiers.sysmel".
loadSourceNamed: "KeySymbol.sysmel".
loadSourceNamed: "MouseButton.sysmel".

loadSourceNamed: "Event.sysmel".
loadSourceNamed: "EventHandler.sysmel".
Expand Down

0 comments on commit 5a3e615

Please sign in to comment.