Donner 0.8.0-pre
Embeddable browser-grade SVG2 engine
Loading...
Searching...
No Matches
donner::editor::PenTool Class Referencefinal

Click-to-place path authoring tool. More...

#include "donner/editor/PenTool.h"

Inheritance diagram for donner::editor::PenTool:
[legend]
Collaboration diagram for donner::editor::PenTool:
[legend]

Classes

struct  PreviewSegment
 Preview segment for immediate pen-tool chrome. More...
struct  PreviewHandleLine
 Preview line connecting an anchor to one of its control handles. More...

Public Member Functions

void onMouseDown (EditorApp &editor, const Vector2d &documentPoint, MouseModifiers modifiers) override
 Handle a click in document space.
void onMouseMove (EditorApp &editor, const Vector2d &documentPoint, bool buttonHeld) override
 Handle pointer movement; currently unused by the prototype.
void onMouseUp (EditorApp &editor, const Vector2d &documentPoint) override
 Handle mouse release; currently unused by the prototype.
void cancel ()
 Cancel the in-progress path without modifying the current document.
bool isDrafting () const
 Whether the tool is currently appending to a path.
bool isDraggingAnchor () const
 Whether the current mouse drag is shaping the most recently placed anchor.
const std::string & activePathData () const
 Current path data for tests and UI diagnostics.
std::vector< PreviewSegmentpreviewSegments () const
 Path preview segments for immediate render-pane chrome.
std::vector< Vector2dpreviewAnchors () const
 Anchor positions for immediate render-pane chrome.
std::vector< PreviewHandleLinepreviewHandleLines () const
 Handle guide lines for immediate render-pane chrome.
Public Member Functions inherited from donner::editor::Tool
 Tool (const Tool &)=delete
Tool & operator= (const Tool &)=delete
 Tool (Tool &&)=delete
Tool & operator= (Tool &&)=delete

Detailed Description

Click-to-place path authoring tool.

The prototype supports polyline creation, shift-constrained points, continuing a selected open <path>, and closing an active path by clicking near its first point.


Class Documentation

◆ donner::editor::PenTool::PreviewSegment

struct donner::editor::PenTool::PreviewSegment

Preview segment for immediate pen-tool chrome.

Collaboration diagram for donner::editor::PenTool::PreviewSegment:
[legend]
Class Members
Vector2d control1 = Vector2d::Zero()
Vector2d control2 = Vector2d::Zero()
bool cubic = false
Vector2d end = Vector2d::Zero()
Vector2d start = Vector2d::Zero()

◆ donner::editor::PenTool::PreviewHandleLine

struct donner::editor::PenTool::PreviewHandleLine

Preview line connecting an anchor to one of its control handles.

Collaboration diagram for donner::editor::PenTool::PreviewHandleLine:
[legend]
Class Members
Vector2d end = Vector2d::Zero()
Vector2d start = Vector2d::Zero()

Member Function Documentation

◆ onMouseDown()

void donner::editor::PenTool::onMouseDown ( EditorApp & editor,
const Vector2d & documentPoint,
MouseModifiers modifiers )
overridevirtual

Handle a click in document space.

Parameters
editorEditor state and mutation queue.
documentPointClick location in SVG document coordinates.
modifiersModifier-key state for the click.

Implements donner::editor::Tool.

◆ onMouseMove()

void donner::editor::PenTool::onMouseMove ( EditorApp & editor,
const Vector2d & documentPoint,
bool buttonHeld )
overridevirtual

Handle pointer movement; currently unused by the prototype.

Parameters
editorEditor state and mutation queue.
documentPointPointer location in SVG document coordinates.
buttonHeldWhether the left mouse button is down.

Implements donner::editor::Tool.

◆ onMouseUp()

void donner::editor::PenTool::onMouseUp ( EditorApp & editor,
const Vector2d & documentPoint )
overridevirtual

Handle mouse release; currently unused by the prototype.

Parameters
editorEditor state and mutation queue.
documentPointRelease location in SVG document coordinates.

Implements donner::editor::Tool.


The documentation for this class was generated from the following file: