Donner 0.5.1
Embeddable browser-grade SVG2 engine
Loading...
Searching...
No Matches
SelectTool.h File Reference

SelectTool is the editor's first and (in this milestone) only tool. It dispatches three different gestures off onMouseDown: More...

#include <optional>
#include <vector>
#include "donner/base/Box.h"
#include "donner/base/EcsRegistry.h"
#include "donner/base/Transform.h"
#include "donner/base/Vector2.h"
#include "donner/editor/AttributeWriteback.h"
#include "donner/editor/Tool.h"
#include "donner/svg/SVGElement.h"
Include dependency graph for SelectTool.h:
This graph shows which files directly or indirectly include this file:

Classes

class  donner::editor::SelectTool
struct  donner::editor::SelectTool::ActiveDragPreview
 Preview state for an in-progress drag, consumed by the async renderer. More...
struct  donner::editor::SelectTool::CompletedDragWriteback
 Payload needed to write a completed drag back into the source pane. For multi-element drags this is the primary; additional writeback entries are latched in extras. More...

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.

Functions

bool donner::editor::CanToggleCompositedRendering (const SelectTool &tool)
 Render-mode toggles are safe whenever there is no in-progress drag or marquee gesture.

Detailed Description

SelectTool is the editor's first and (in this milestone) only tool. It dispatches three different gestures off onMouseDown:

  • Click on an element → replace the selection with that element and start a drag (move on subsequent onMouseMove).
  • Shift+click on an element → toggle that element in the current selection (no drag).
  • Click on empty space → start a marquee drag. Subsequent onMouseMove events grow the marquee rect; onMouseUp resolves the rect to every geometry element it intersects and replaces (or appends-to, if Shift was held) the selection.

All DOM mutations flow through EditorApp::applyMutation() as EditorCommand::SetTransform — never directly.


Class Documentation

◆ donner::editor::SelectTool::ActiveDragPreview

struct donner::editor::SelectTool::ActiveDragPreview

Preview state for an in-progress drag, consumed by the async renderer.

Collaboration diagram for donner::editor::SelectTool::ActiveDragPreview:
[legend]
Class Members
Entity entity = entt::null
Vector2d translation = Vector2d::Zero()

◆ donner::editor::SelectTool::CompletedDragWriteback

struct donner::editor::SelectTool::CompletedDragWriteback

Payload needed to write a completed drag back into the source pane. For multi-element drags this is the primary; additional writeback entries are latched in extras.

Collaboration diagram for donner::editor::SelectTool::CompletedDragWriteback:
[legend]
Class Members
vector< CompletedDragWriteback > extras Additional writeback entries for extra elements in a multi-element drag. One per non-primary element that had a capturable writeback target. Empty for single-element drags.
AttributeWritebackTarget target
Transform2d transform