Skip to content

Commit b357a27

Browse files
committed
Engine: add MouseEvent/KeyEvent objects with Java Processing API parity
1 parent c6f3e4e commit b357a27

1 file changed

Lines changed: 67 additions & 9 deletions

File tree

src/Processing.h

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3632,6 +3632,55 @@ inline float dist(A x1,B y1,C z1,D x2,E y2,F z2){ float dx=(float)x2-(float)x1,d
36323632
// int main() { Sketch s; s.run(); return 0; }
36333633
// =============================================================================
36343634

3635+
// ── Event objects (mirrors Java Processing's MouseEvent / KeyEvent) ──────────
3636+
struct MouseEvent {
3637+
float x, y; // cursor position at time of event
3638+
int button; // LEFT, CENTER, RIGHT, or -1
3639+
int count; // click count (press/release/click) or wheel steps
3640+
bool shiftDown;
3641+
bool controlDown;
3642+
bool altDown;
3643+
bool metaDown;
3644+
int action; // PRESS, RELEASE, CLICK, MOVE, DRAG, WHEEL
3645+
// action constants
3646+
static constexpr int PRESS = 1;
3647+
static constexpr int RELEASE = 2;
3648+
static constexpr int CLICK = 3;
3649+
static constexpr int MOVE = 4;
3650+
static constexpr int DRAG = 5;
3651+
static constexpr int WHEEL = 6;
3652+
// convenience
3653+
bool isShiftDown() const { return shiftDown; }
3654+
bool isControlDown() const { return controlDown; }
3655+
bool isAltDown() const { return altDown; }
3656+
bool isMetaDown() const { return metaDown; }
3657+
int getButton() const { return button; }
3658+
int getCount() const { return count; }
3659+
float getX() const { return x; }
3660+
float getY() const { return y; }
3661+
int getAction() const { return action; }
3662+
};
3663+
3664+
struct KeyEvent {
3665+
char16_t key; // the character (matches PApplet::key)
3666+
int keyCode; // VK_* code (matches PApplet::keyCode)
3667+
bool shiftDown;
3668+
bool controlDown;
3669+
bool altDown;
3670+
bool metaDown;
3671+
int action; // PRESS, RELEASE, TYPE
3672+
static constexpr int PRESS = 1;
3673+
static constexpr int RELEASE = 2;
3674+
static constexpr int TYPE = 3;
3675+
bool isShiftDown() const { return shiftDown; }
3676+
bool isControlDown() const { return controlDown; }
3677+
bool isAltDown() const { return altDown; }
3678+
bool isMetaDown() const { return metaDown; }
3679+
char16_t getKey() const { return key; }
3680+
int getKeyCode() const { return keyCode; }
3681+
int getAction() const { return action; }
3682+
};
3683+
36353684
struct PApplet {
36363685
// ── Public state (directly accessible in sketch code) ───────────────────
36373686
int winWidth = 640, winHeight = 480;
@@ -3714,15 +3763,24 @@ struct PApplet {
37143763
virtual void setup() {}
37153764
virtual void draw() {}
37163765
virtual void settings() {}
3717-
virtual void mousePressed() {}
3718-
virtual void mouseReleased() {}
3719-
virtual void mouseClicked() {}
3720-
virtual void mouseMoved() {}
3721-
virtual void mouseDragged() {}
3722-
virtual void mouseWheel(int delta) {}
3723-
virtual void keyPressed() {}
3724-
virtual void keyReleased() {}
3725-
virtual void keyTyped() {}
3766+
virtual void mousePressed() {}
3767+
virtual void mousePressed(MouseEvent e) {}
3768+
virtual void mouseReleased() {}
3769+
virtual void mouseReleased(MouseEvent e) {}
3770+
virtual void mouseClicked() {}
3771+
virtual void mouseClicked(MouseEvent e) {}
3772+
virtual void mouseMoved() {}
3773+
virtual void mouseMoved(MouseEvent e) {}
3774+
virtual void mouseDragged() {}
3775+
virtual void mouseDragged(MouseEvent e) {}
3776+
virtual void mouseWheel(int delta) {}
3777+
virtual void mouseWheel(MouseEvent e) {}
3778+
virtual void keyPressed() {}
3779+
virtual void keyPressed(KeyEvent e) {}
3780+
virtual void keyReleased() {}
3781+
virtual void keyReleased(KeyEvent e) {}
3782+
virtual void keyTyped() {}
3783+
virtual void keyTyped(KeyEvent e) {}
37263784
virtual void windowMoved() {}
37273785
virtual void windowResized() {}
37283786

0 commit comments

Comments
 (0)