parent
8545b8cf1d
commit
dfc6aa08e9
@ -1,15 +0,0 @@ |
||||
#pragma once |
||||
#include <SFML/Graphics/Color.hpp> |
||||
|
||||
namespace ColorValue { |
||||
constexpr const sf::Color BLACK{0, 0, 0}; |
||||
constexpr const sf::Color DARK_DARK{10, 10, 10}; |
||||
constexpr const sf::Color DARK_MID{30, 30, 30}; |
||||
constexpr const sf::Color DARK_LIGHT{60, 60, 60}; |
||||
constexpr const sf::Color MID{100, 100, 100}; |
||||
constexpr const sf::Color LIGHT_DARK{150, 150, 150}; |
||||
constexpr const sf::Color LIGHT_MID{200, 200, 200}; |
||||
constexpr const sf::Color LIGHT_LIGHT{230, 230, 230}; |
||||
constexpr const sf::Color WHITE{255, 255, 255}; |
||||
constexpr const sf::Color TRANSPARENT = sf::Color::Transparent; |
||||
} |
@ -1,55 +0,0 @@ |
||||
#pragma once |
||||
#include <string> |
||||
#include <unordered_map> |
||||
#include <functional> |
||||
#include <optional> |
||||
#include <vector> |
||||
|
||||
namespace lel { |
||||
|
||||
struct Cell { |
||||
int x = 0; |
||||
int y = 0; |
||||
int w = 0; |
||||
int h = 0; |
||||
int mid_x = 0; |
||||
int mid_y = 0; |
||||
int max_w = 0; |
||||
int max_h = 0; |
||||
int col = 0; |
||||
int row = 0; |
||||
bool right = false; |
||||
bool bottom = false; |
||||
bool expand = false; |
||||
bool center = false; |
||||
bool percent = false; |
||||
|
||||
Cell(int col, int row) : col(col), row(row) {} |
||||
Cell() {} |
||||
}; |
||||
|
||||
using Row = std::vector<std::string>; |
||||
using CellMap = std::unordered_map<std::string, Cell>; |
||||
|
||||
struct Parser { |
||||
int grid_x = 0; |
||||
int grid_y = 0; |
||||
int grid_w = 0; |
||||
int grid_h = 0; |
||||
Cell cur; |
||||
std::vector<Row> grid; |
||||
CellMap cells; |
||||
|
||||
Parser(int x, int y, int width, int height); |
||||
Parser(); |
||||
|
||||
void position(int x, int y, int width, int height); |
||||
void id(std::string name); |
||||
void reset(); |
||||
bool parse(std::string input); |
||||
void finalize(); |
||||
std::optional<std::string> hit(int x, int y); |
||||
}; |
||||
|
||||
Cell center(int width, int height, Cell &parent); |
||||
} |
@ -1,52 +0,0 @@ |
||||
#include "lel.hpp" |
||||
#include <catch2/catch_test_macros.hpp> |
||||
#include <fmt/core.h> |
||||
#include <string> |
||||
|
||||
TEST_CASE("test basic ops", "[lel]") { |
||||
lel::Parser parser(0, 0, 500, 500); |
||||
|
||||
bool good = parser.parse( |
||||
"[ label_1 | label3 | test1]" |
||||
"[ *(300,300)text1 | %(150)people | ^test2]" |
||||
"[ >label2 | _ | .test3]" |
||||
"[ =message | buttons | test4]"); |
||||
|
||||
REQUIRE(good); |
||||
|
||||
for(size_t rowcount = 0; rowcount < parser.grid.size(); rowcount++) { |
||||
auto& row = parser.grid[rowcount]; |
||||
|
||||
for(size_t colcount = 0; colcount < row.size(); colcount++) { |
||||
auto &name = row[colcount]; |
||||
if(name == "_") { |
||||
REQUIRE(!parser.cells.contains(name)); |
||||
} else { |
||||
auto &cell = parser.cells.at(name); |
||||
REQUIRE(cell.row == int(rowcount)); |
||||
REQUIRE(cell.col == int(colcount)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
REQUIRE(parser.cells.size() == 11); |
||||
REQUIRE(parser.cells.at("label2").right == true); |
||||
REQUIRE(parser.cells.at("text1").expand == true); |
||||
REQUIRE(parser.cells.at("text1").w == 300); |
||||
REQUIRE(parser.cells.at("text1").h == 300); |
||||
REQUIRE(parser.cells.at("people").expand == false); |
||||
REQUIRE(parser.cells.at("message").expand == false); |
||||
REQUIRE(parser.cells.at("message").center == true); |
||||
|
||||
for(auto& [name, cell] : parser.cells) { |
||||
REQUIRE(cell.w > 0); |
||||
REQUIRE(cell.h > 0); |
||||
} |
||||
|
||||
auto hit = parser.hit(10, 10); |
||||
REQUIRE(*hit == "label_1"); |
||||
|
||||
auto nohit = parser.hit(1000, 1000); |
||||
REQUIRE(!nohit); |
||||
REQUIRE(nohit == std::nullopt); |
||||
} |
Loading…
Reference in new issue