FuncDoodle
Loading...
Searching...
No Matches
FuncDoodle::EditorController Class Reference

Handles canvas editing, painting tools, and stroke recording. More...

#include <EditorController.h>

Classes

struct  CanvasContext
 Bundles per-frame canvas state used during rendering and input handling. More...

Public Member Functions

 EditorController ()
 Creates an editor controller.
bool Paint (Frame *frame, unsigned long frameI, ToolManager *toolManager, AnimationPlayer *player, int pixelX, int pixelY, bool mouseDown, bool mouseClicked)
 Applies the active tool to a frame at a specific pixel.
void SetUndoByStroke (bool undoByStroke, AnimationPlayer *player)
 Enables or disables stroke-grouped undo behavior.
void RenderCanvas (CanvasContext &context)
 Renders the frame canvas and handles its live interaction.
void EndStroke (AnimationPlayer *player)
 Finalizes the active stroke and pushes its undo record.
void ResetState ()
 Clears transient editor state tied to the active project.
SharedPtr< SelectionSel ()
 Returns the active selection object.

Private Member Functions

bool PaintPencil (Frame *frame, unsigned long frameI, ToolManager *toolManager, AnimationPlayer *player, int pixelX, int pixelY, bool mouseDown)
bool PaintEraser (Frame *frame, unsigned long frameI, ToolManager *toolManager, AnimationPlayer *player, int pixelX, int pixelY, bool mouseDown)
bool PaintBucket (Frame *frame, unsigned long frameI, ToolManager *toolManager, AnimationPlayer *player, int pixelX, int pixelY, bool mouseClicked)
bool PaintSelect (Frame *frame, ToolManager *toolManager, int pixelX, int pixelY)
void RecordStrokeChange (unsigned long frameI, int x, int y, const Col &prev, const Col &next)
void ApplyToolAt (CanvasContext &context, const ImageArray *pixels, float startX, float startY, float frameWidth, float frameHeight)
void DrawCanvas (CanvasContext &context, const ImageArray *pixels, ImDrawList *drawList, float startX, float startY, float frameWidth, float frameHeight)
void FinalizeStroke (AnimationPlayer *player)

Static Private Member Functions

static bool PaintPicker (Frame *frame, ToolManager *toolManager, int pixelX, int pixelY)
static void FloodFill (int x, int y, Col targetCol, Col fillCol, Frame *targetFrame, std::vector< std::pair< int, int > > &changed)
static void HandleCanvasInput (CanvasContext &context)

Private Attributes

bool m_UndoByStroke = false
bool m_StrokeActive = false
unsigned long m_StrokeFrameI = 0
std::vector< StrokeAction::PixelChangem_StrokeChanges
std::unordered_map< unsigned long long, size_t > m_StrokeIndexByKey
SharedPtr< Selectionm_Sel
SquareSelection m_SquareSel

Detailed Description

Handles canvas editing, painting tools, and stroke recording.

Bridges canvas input, tool execution, and frame mutation logic.

Constructor & Destructor Documentation

◆ EditorController()

FuncDoodle::EditorController::EditorController ( )
default

Creates an editor controller.

Member Function Documentation

◆ ApplyToolAt()

void FuncDoodle::EditorController::ApplyToolAt ( CanvasContext & context,
const ImageArray * pixels,
float startX,
float startY,
float frameWidth,
float frameHeight )
private

◆ DrawCanvas()

void FuncDoodle::EditorController::DrawCanvas ( CanvasContext & context,
const ImageArray * pixels,
ImDrawList * drawList,
float startX,
float startY,
float frameWidth,
float frameHeight )
private

◆ EndStroke()

void FuncDoodle::EditorController::EndStroke ( AnimationPlayer * player)

Finalizes the active stroke and pushes its undo record.

Parameters
playerPlayer providing access to the current project.

◆ FinalizeStroke()

void FuncDoodle::EditorController::FinalizeStroke ( AnimationPlayer * player)
private

◆ FloodFill()

void FuncDoodle::EditorController::FloodFill ( int x,
int y,
Col targetCol,
Col fillCol,
Frame * targetFrame,
std::vector< std::pair< int, int > > & changed )
staticprivate

◆ HandleCanvasInput()

void FuncDoodle::EditorController::HandleCanvasInput ( CanvasContext & context)
staticprivate

◆ Paint()

bool FuncDoodle::EditorController::Paint ( Frame * frame,
unsigned long frameI,
ToolManager * toolManager,
AnimationPlayer * player,
int pixelX,
int pixelY,
bool mouseDown,
bool mouseClicked )

Applies the active tool to a frame at a specific pixel.

Parameters
frameFrame being edited.
frameIFrame index within the project.
toolManagerTool state and color source.
playerAnimation player for project access.
pixelXTarget pixel X coordinate.
pixelYTarget pixel Y coordinate.
mouseDownWhether the primary mouse button is held.
mouseClickedWhether the primary mouse button was clicked this frame.
Returns
Whether the frame was modified.

◆ PaintBucket()

bool FuncDoodle::EditorController::PaintBucket ( Frame * frame,
unsigned long frameI,
ToolManager * toolManager,
AnimationPlayer * player,
int pixelX,
int pixelY,
bool mouseClicked )
private

◆ PaintEraser()

bool FuncDoodle::EditorController::PaintEraser ( Frame * frame,
unsigned long frameI,
ToolManager * toolManager,
AnimationPlayer * player,
int pixelX,
int pixelY,
bool mouseDown )
private

◆ PaintPencil()

bool FuncDoodle::EditorController::PaintPencil ( Frame * frame,
unsigned long frameI,
ToolManager * toolManager,
AnimationPlayer * player,
int pixelX,
int pixelY,
bool mouseDown )
private

◆ PaintPicker()

bool FuncDoodle::EditorController::PaintPicker ( Frame * frame,
ToolManager * toolManager,
int pixelX,
int pixelY )
staticprivate

◆ PaintSelect()

bool FuncDoodle::EditorController::PaintSelect ( Frame * frame,
ToolManager * toolManager,
int pixelX,
int pixelY )
private

◆ RecordStrokeChange()

void FuncDoodle::EditorController::RecordStrokeChange ( unsigned long frameI,
int x,
int y,
const Col & prev,
const Col & next )
private

◆ RenderCanvas()

void FuncDoodle::EditorController::RenderCanvas ( CanvasContext & context)

Renders the frame canvas and handles its live interaction.

Parameters
contextCanvas state for the frame being rendered.

◆ ResetState()

void FuncDoodle::EditorController::ResetState ( )

Clears transient editor state tied to the active project.

◆ Sel()

SharedPtr< Selection > FuncDoodle::EditorController::Sel ( )
inline

Returns the active selection object.

Returns
Shared selection pointer.

◆ SetUndoByStroke()

void FuncDoodle::EditorController::SetUndoByStroke ( bool undoByStroke,
AnimationPlayer * player )

Enables or disables stroke-grouped undo behavior.

Parameters
undoByStrokeWhether strokes should become single undo entries.
playerPlayer providing project access for flushing active strokes.

Member Data Documentation

◆ m_Sel

SharedPtr<Selection> FuncDoodle::EditorController::m_Sel
private

◆ m_SquareSel

SquareSelection FuncDoodle::EditorController::m_SquareSel
private

◆ m_StrokeActive

bool FuncDoodle::EditorController::m_StrokeActive = false
private

◆ m_StrokeChanges

std::vector<StrokeAction::PixelChange> FuncDoodle::EditorController::m_StrokeChanges
private

◆ m_StrokeFrameI

unsigned long FuncDoodle::EditorController::m_StrokeFrameI = 0
private

◆ m_StrokeIndexByKey

std::unordered_map<unsigned long long, size_t> FuncDoodle::EditorController::m_StrokeIndexByKey
private

◆ m_UndoByStroke

bool FuncDoodle::EditorController::m_UndoByStroke = false
private

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