mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2026-03-22 02:06:22 -05:00
Some checks are pending
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Waiting to run
CD / Create Pi Mono Setup (push) Blocked by required conditions
CD / Publishing (push) Blocked by required conditions
107 lines
3.2 KiB
C++
Executable File
107 lines
3.2 KiB
C++
Executable File
#ifndef __TEXTRECTANGLE_HPP
|
|
#define __TEXTRECTANGLE_HPP
|
|
|
|
#include <SFML/Graphics.hpp>
|
|
|
|
#include <chrono>
|
|
#include "sfml_gfx_structs.hpp"
|
|
|
|
#define BASE_PIXEL_FONT_HEIGHT 24
|
|
|
|
#define PERCENTAGE_POS_TEXT_ERROR (-1)
|
|
|
|
enum TextKind {TEXT_KIND_NORMAL, TEXT_KIND_SELECTED, TEXT_KIND_SUCCESS, TEXT_KIND_WARNING, TEXT_KIND_ERROR, TEXT_KIND_OPAQUE_ERROR, TEXT_KIND_TITLE, TEXT_KIND_TEXTBOX, TEXT_KIND_TEXTBOX_TRANSPARENT};
|
|
enum FontKind {FONT_KIND_NORMAL, FONT_KIND_MONO};
|
|
enum TextPosKind {POS_KIND_NORMAL, POS_KIND_PRIORITIZE_TOP_LEFT, POS_KIND_PRIORITIZE_BOTTOM_LEFT};
|
|
|
|
typedef sf::Vector2i percentage_pos_text_t;
|
|
typedef sf::Vector2i size_text_t;
|
|
typedef sf::Vector2i position_text_t;
|
|
|
|
class TextRectangle {
|
|
public:
|
|
TextRectangle(bool font_load_success, sf::Font *text_font, bool font_mono_load_success, sf::Font *text_font_mono);
|
|
~TextRectangle();
|
|
void setRectangleKind(TextKind kind);
|
|
void setTextFactor(float size_multiplier);
|
|
void setSize(int width, int height);
|
|
size_text_t getFinalSize();
|
|
size_text_t getFinalSizeNoMultipliers();
|
|
percentage_pos_text_t getCoordInRectanglePercentage(int coord_x, int coord_y);
|
|
bool isCoordInRectangle(int coord_x, int coord_y);
|
|
void setDuration(float on_seconds);
|
|
void setPosition(int pos_x, int pos_y, TextPosKind kind=POS_KIND_NORMAL);
|
|
position_text_t getFinalPosition();
|
|
position_text_t getFinalPositionNoMultipliers();
|
|
void startTimer(bool do_start);
|
|
void setProportionalBox(bool proportional_box);
|
|
void setTightAndCentered(bool tight_and_centered);
|
|
void prepareRenderText();
|
|
void setText(std::string text);
|
|
void setShowText(bool show_text);
|
|
bool getShowText();
|
|
void draw(sf::RenderTarget &window);
|
|
void changeFont(FontKind new_font_kind);
|
|
void setLineSpacing(float new_line_spacing);
|
|
void setCharacterSpacing(float new_character_spacing);
|
|
void setLocked(bool new_locked);
|
|
// Only applies to text displayed with timer set to true
|
|
bool isTimerTextDone();
|
|
|
|
private:
|
|
out_rect_data text_rect;
|
|
sf::Text actual_text;
|
|
sf::Font *text_font;
|
|
sf::Font *text_font_mono;
|
|
bool font_load_success;
|
|
bool font_mono_load_success;
|
|
bool is_done_showing_text;
|
|
std::chrono::time_point<std::chrono::high_resolution_clock> clock_time_start;
|
|
int time_phase;
|
|
sf::Color curr_color;
|
|
const float base_time_slide_factor = 0.5;
|
|
const float base_pixel_slide_factor = 2.0;
|
|
int pos_x_center_contrib = 0;
|
|
int pos_y_center_contrib = 0;
|
|
|
|
struct TextData {
|
|
bool is_timed;
|
|
bool start_timer;
|
|
TextKind kind;
|
|
bool show_text;
|
|
bool render_text;
|
|
bool proportional_box;
|
|
bool tight_and_centered;
|
|
std::string printed_text;
|
|
float duration;
|
|
float font_pixel_height;
|
|
int width;
|
|
int height;
|
|
int stored_width;
|
|
int stored_height;
|
|
int pos_x;
|
|
int pos_y;
|
|
int stored_pos_x;
|
|
int stored_pos_y;
|
|
bool locked;
|
|
bool schedule_font_swap;
|
|
FontKind font_kind;
|
|
float line_spacing;
|
|
float character_spacing;
|
|
TextPosKind pos_kind;
|
|
};
|
|
|
|
TextData future_data;
|
|
TextData loaded_data;
|
|
|
|
void setRealSize(int width, int height, bool check_previous = true);
|
|
void reset_data(TextData &data);
|
|
void setTextWithLineWrapping(int x_limit = 0);
|
|
void updateText(int x_limit = 0);
|
|
void updateSlides(float* time_seconds);
|
|
float getNoBlurCharacterSpacing();
|
|
bool isFontLoaded(TextData &reference_data);
|
|
sf::Font* getFont(TextData &reference_data);
|
|
};
|
|
#endif
|