From 6d66d5675d0fb78827bc47c49f9d4a1852c7255d Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 8 Jun 2022 18:31:58 +0200 Subject: feat: implement command mode --- src/engine/user/cursor.cpp | 15 +++++++++++++++ src/engine/user/cursor.hpp | 6 ++++++ 2 files changed, 21 insertions(+) (limited to 'src/engine') diff --git a/src/engine/user/cursor.cpp b/src/engine/user/cursor.cpp index d348d9e..963531f 100644 --- a/src/engine/user/cursor.cpp +++ b/src/engine/user/cursor.cpp @@ -55,6 +55,11 @@ void CursorController::ensure_position() noexcept _position = _invert_position_y(Vector2(vector2_options)); } +void CursorController::update_position(const Vector2 &position) noexcept +{ + _position = position; +} + void CursorController::hide() noexcept { fmt::print(CURSOR_INVISIBLE, fmt::arg("esc", ESC)); @@ -67,6 +72,16 @@ void CursorController::show() noexcept std::cout.flush(); } +void CursorController::set_cursor_style(CursorStyle cursor_style) noexcept +{ + fmt::print( + SET_CURSOR_STYLE, + fmt::arg("esc", ESC), + fmt::arg("style", static_cast(cursor_style))); + + std::cout.flush(); +} + void CursorController::set_bounds(const Bounds &bounds) noexcept { _bounds = bounds; diff --git a/src/engine/user/cursor.hpp b/src/engine/user/cursor.hpp index 199c86b..ace47ee 100644 --- a/src/engine/user/cursor.hpp +++ b/src/engine/user/cursor.hpp @@ -25,6 +25,8 @@ constexpr fmt::string_view REQUEST_CURSOR_POSITION = "{esc}[6n"; constexpr fmt::string_view CURSOR_VISIBLE = "{esc}[?25h"; constexpr fmt::string_view CURSOR_INVISIBLE = "{esc}[?25l"; +constexpr fmt::string_view SET_CURSOR_STYLE = "{esc}[{style} q"; + const std::unordered_map direction_format_map = {{Vector2::up(), MOVE_CURSOR_UP}, {Vector2::down(), MOVE_CURSOR_DOWN}, @@ -45,10 +47,14 @@ public: void ensure_position() noexcept override; + void update_position(const Vector2 &position) noexcept override; + void hide() noexcept override; void show() noexcept override; + void set_cursor_style(CursorStyle cursor_style) noexcept override; + void set_bounds(const Bounds &bounds) noexcept override; private: -- cgit v1.2.3-18-g5258