From 0adb83693adf11146692b172584a1a35b2a3d3a4 Mon Sep 17 00:00:00 2001 From: Scott Allen Date: Sat, 20 Jun 2020 19:44:10 -0400 Subject: [PATCH] Add functions anyPressed() setCursorX() setCursorY() Suggested by @Pharap --- keywords.txt | 3 ++ src/Arduboy2.cpp | 15 ++++++++++ src/Arduboy2.h | 74 ++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 84 insertions(+), 8 deletions(-) diff --git a/keywords.txt b/keywords.txt index d17a6cc..e576da1 100644 --- a/keywords.txt +++ b/keywords.txt @@ -20,6 +20,7 @@ SpritesB KEYWORD1 ####################################### allPixelsOn KEYWORD2 +anyPressed KEYWORD2 begin KEYWORD2 blank KEYWORD2 boot KEYWORD2 @@ -96,6 +97,8 @@ readUnitName KEYWORD2 safeMode KEYWORD2 saveOnOff KEYWORD2 setCursor KEYWORD2 +setCursorX KEYWORD2 +setCursorY KEYWORD2 setFrameDuration KEYWORD2 setFrameRate KEYWORD2 setRGBled KEYWORD2 diff --git a/src/Arduboy2.cpp b/src/Arduboy2.cpp index 71dce59..d21c7ec 100644 --- a/src/Arduboy2.cpp +++ b/src/Arduboy2.cpp @@ -1027,6 +1027,11 @@ bool Arduboy2Base::pressed(uint8_t buttons) return (buttonsState() & buttons) == buttons; } +bool Arduboy2Base::anyPressed(uint8_t buttons) +{ + return (buttonsState() & buttons) != 0; +} + bool Arduboy2Base::notPressed(uint8_t buttons) { return (buttonsState() & buttons) == 0; @@ -1317,6 +1322,16 @@ void Arduboy2::setCursor(int16_t x, int16_t y) cursor_y = y; } +void Arduboy2::setCursorX(int16_t x) +{ + cursor_x = x; +} + +void Arduboy2::setCursorY(int16_t y) +{ + cursor_y = y; +} + int16_t Arduboy2::getCursorX() { return cursor_x; diff --git a/src/Arduboy2.h b/src/Arduboy2.h index b9e16e4..3d97fb6 100644 --- a/src/Arduboy2.h +++ b/src/Arduboy2.h @@ -937,7 +937,7 @@ class Arduboy2Base : public Arduboy2Core int cpuLoad(); /** \brief - * Test if the specified buttons are pressed. + * Test if the all of the specified buttons are pressed. * * \param buttons A bit mask indicating which buttons to test. * (Can be a single button) @@ -945,16 +945,40 @@ class Arduboy2Base : public Arduboy2Core * \return `true` if *all* buttons in the provided mask are currently pressed. * * \details - * Read the state of the buttons and return `true` if all the buttons in the - * specified mask are being pressed. + * Read the state of the buttons and return `true` if all of the buttons in + * the specified mask are being pressed. * * Example: `if (pressed(LEFT_BUTTON | A_BUTTON))` * * \note * This function does not perform any button debouncing. + * + * \see anyPressed() notPressed() */ bool pressed(uint8_t buttons); + /** \brief + * Test if any of the specified buttons are pressed. + * + * \param buttons A bit mask indicating which buttons to test. + * (Can be a single button) + * + * \return `true` if *one or more* of the buttons in the provided mask are + * currently pressed. + * + * \details + * Read the state of the buttons and return `true` if one or more of the + * buttons in the specified mask are being pressed. + * + * Example: `if (anyPressed(RIGHT_BUTTON | LEFT_BUTTON))` + * + * \note + * This function does not perform any button debouncing. + * + * \see pressed() notPressed() + */ + bool anyPressed(uint8_t buttons); + /** \brief * Test if the specified buttons are not pressed. * @@ -972,6 +996,8 @@ class Arduboy2Base : public Arduboy2Core * * \note * This function does not perform any button debouncing. + * + * \see pressed() anyPressed() */ bool notPressed(uint8_t buttons); @@ -1590,8 +1616,10 @@ class Arduboy2 : public Print, public Arduboy2Base /** \brief * Set the location of the text cursor. * - * \param x The X coordinate, in pixels, for the new location of the text cursor. - * \param y The Y coordinate, in pixels, for the new location of the text cursor. + * \param x The X (horizontal) coordinate, in pixels, for the new location of + * the text cursor. + * \param y The Y (vertical) coordinate, in pixels, for the new location of + * the text cursor. * * \details * The location of the text cursor is set the the specified coordinates. @@ -1601,10 +1629,40 @@ class Arduboy2 : public Print, public Arduboy2Base * the display. The cursor location represents the top left corner of the * next character written. * - * \see getCursorX() getCursorY() + * \see setCursorX() setCursorY() getCursorX() getCursorY() */ void setCursor(int16_t x, int16_t y); + /** \brief + * Set the X coordinate of the text cursor location. + * + * \param x The X (horizontal) coordinate, in pixels, for the new location of + * the text cursor. + * + * \details + * The X coordinate for the location of the text cursor is set to the + * specified value, leaving the Y coordinate unchanged. For more details + * about the text cursor, see the `setCursor()` function. + * + * \see setCursor() setCursorY() getCursorX() getCursorY() + */ + void setCursorX(int16_t x); + + /** \brief + * Set the Y coordinate of the text cursor location. + * + * \param y The Y (vertical) coordinate, in pixels, for the new location of + * the text cursor. + * + * \details + * The Y coordinate for the location of the text cursor is set to the + * specified value, leaving the X coordinate unchanged. For more details + * about the text cursor, see the `setCursor()` function. + * + * \see setCursor() setCursorX() getCursorX() getCursorY() + */ + void setCursorY(int16_t y); + /** \brief * Get the X coordinate of the current text cursor position. * @@ -1614,7 +1672,7 @@ class Arduboy2 : public Print, public Arduboy2Base * The X coordinate returned is a pixel location with 0 indicating the * leftmost column. * - * \see getCursorY() setCursor() + * \see getCursorY() setCursor() setCursorX() setCursorY() */ int16_t getCursorX(); @@ -1627,7 +1685,7 @@ class Arduboy2 : public Print, public Arduboy2Base * The Y coordinate returned is a pixel location with 0 indicating the * topmost row. * - * \see getCursorX() setCursor() + * \see getCursorX() setCursor() setCursorX() setCursorY() */ int16_t getCursorY();