infinipaint/src/DrawingProgram/DrawingProgramSelection.hpp

35 lines
1.1 KiB
C++
Raw Normal View History

#pragma once
#include "DrawingProgramCache.hpp"
class DrawingProgram;
class DrawingProgramSelection {
public:
DrawingProgramSelection(DrawingProgram& initDrawP);
void add_from_cam_coord_collider_to_selection(const SCollision::ColliderCollection<float>& cC);
void deselect_all();
void update();
2025-07-24 19:35:51 +03:00
void draw_components(SkCanvas* canvas, const DrawData& drawData);
void draw_gui(SkCanvas* canvas, const DrawData& drawData);
bool is_something_selected();
2025-07-24 19:35:51 +03:00
bool mouse_collided_with_selection_aabb();
private:
void calculate_aabb();
2025-07-24 19:35:51 +03:00
void rebuild_cam_space();
SCollision::AABB<WorldScalar> initialSelectionAABB;
SCollision::ColliderCollection<float> camSpaceSelection;
WorldVec selectionRectMin;
WorldVec selectionRectMax;
CoordSpaceHelper selectionTransformCoords;
std::unordered_set<CollabListType::ObjectInfoPtr> selectedSet;
DrawingProgramCache cache;
DrawingProgram& drawP;
2025-07-24 19:35:51 +03:00
struct TranslationData {
bool happening = false;
} translation;
};