infinipaint/src/GridManager.cpp

41 lines
1.2 KiB
C++
Raw Normal View History

2025-07-06 20:43:53 +03:00
#include "GridManager.hpp"
#include "World.hpp"
2025-09-17 17:17:43 +03:00
#include "MainProgram.hpp"
2025-07-06 20:43:53 +03:00
2025-09-06 19:06:30 +03:00
GridManager::GridManager(World& w):
world(w) {}
2025-07-06 20:43:53 +03:00
2025-09-06 19:06:30 +03:00
void GridManager::init_client_callbacks() {
}
2025-07-06 20:43:53 +03:00
2025-09-06 19:06:30 +03:00
void GridManager::add_grid(const std::string& name) {
WorldGrid g;
g.color = color_mul_alpha(convert_vec4<Vector4f>(world.canvasTheme.toolFrontColor), 0.6f);
2025-09-17 17:17:43 +03:00
g.set_subdivisions(7);
g.size = world.drawData.cam.c.inverseScale * WorldScalar(WorldGrid::GRID_UNIT_PIXEL_SIZE);
g.offset = world.drawData.cam.c.pos + world.drawData.cam.c.dir_from_space(world.main.window.size.cast<float>() * 0.5f);
2025-09-06 19:06:30 +03:00
grids[name] = g;
changed = true;
2025-08-01 10:58:45 +03:00
}
2025-09-06 19:06:30 +03:00
void GridManager::remove_grid(const std::string& name) {
grids.erase(name);
changed = true;
2025-07-06 20:43:53 +03:00
}
2025-09-06 19:06:30 +03:00
const std::vector<std::string>& GridManager::sorted_names() {
if(changed) {
sortedNames.clear();
for(auto& [k, v] : grids)
sortedNames.emplace_back(k);
std::sort(sortedNames.begin(), sortedNames.end());
changed = false;
2025-07-06 20:43:53 +03:00
}
2025-09-06 19:06:30 +03:00
return sortedNames;
}
2025-07-06 20:43:53 +03:00
2025-09-06 19:06:30 +03:00
void GridManager::draw(SkCanvas* canvas, const DrawData& drawData) {
for(auto& [str, g] : grids)
g.draw(*this, canvas, drawData);
2025-07-06 20:43:53 +03:00
}