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