Skip to content

Commit 4a2c982

Browse files
committed
Add align to window functionality.
1 parent 30fd835 commit 4a2c982

8 files changed

Lines changed: 170 additions & 2 deletions

File tree

Sources/NodeEngineTest/NodeEditorVisualTest.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,4 +436,12 @@ TEST (FitToWindowTest)
436436
ASSERT (env.CheckReference ("10_FitToWindow_Fit.svg"));
437437
}
438438

439+
TEST (AlignToWindowTest)
440+
{
441+
SimpleNodeEditorTestEnvWithConnections env;
442+
ASSERT (env.CheckReference ("11_AlignToWindow_Basic.svg"));
443+
env.nodeEditor.AlignToWindow ();
444+
ASSERT (env.CheckReference ("11_AlignToWindow_Align.svg"));
445+
}
446+
439447
}
Lines changed: 66 additions & 0 deletions
Loading
Lines changed: 66 additions & 0 deletions
Loading

Sources/NodeUIEngine/NUIE_NodeEditor.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,15 +185,29 @@ Point NodeEditor::ViewToModel (const Point& viewPoint) const
185185
return viewBox.ViewToModel (viewPoint);
186186
}
187187

188-
void NodeEditor::FitToWindow ()
188+
void NodeEditor::AlignToWindow ()
189189
{
190190
Rect boundingRect;
191191
if (!GetBoundingRect (uiManager, uiEnvironment, boundingRect)) {
192192
return;
193193
}
194194

195195
double viewPadding = uiEnvironment.GetSkinParams ().GetNodePadding ();
196+
const DrawingContext& drawingContext = uiEnvironment.GetDrawingContext ();
197+
Size contextSize (drawingContext.GetWidth (), drawingContext.GetHeight ());
198+
ViewBox newViewBox (-boundingRect.GetTopLeft () + Point (viewPadding, viewPadding), 1.0);
199+
uiManager.SetViewBox (newViewBox);
200+
Update ();
201+
}
202+
203+
void NodeEditor::FitToWindow ()
204+
{
205+
Rect boundingRect;
206+
if (!GetBoundingRect (uiManager, uiEnvironment, boundingRect)) {
207+
return;
208+
}
196209

210+
double viewPadding = uiEnvironment.GetSkinParams ().GetNodePadding ();
197211
const DrawingContext& drawingContext = uiEnvironment.GetDrawingContext ();
198212
Size contextSize (drawingContext.GetWidth (), drawingContext.GetHeight ());
199213
ViewBox newViewBox = FitRectToSize (contextSize, viewPadding, boundingRect);

Sources/NodeUIEngine/NUIE_NodeEditor.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class NodeEditor
6060
void ConnectOutputSlotToInputSlot (const UIOutputSlotConstPtr& outputSlot, const UIInputSlotConstPtr& inputSlot);
6161

6262
Point ViewToModel (const Point& viewPoint) const;
63+
void AlignToWindow ();
6364
void FitToWindow ();
6465

6566
void New ();

Sources/wxWidgetsAppSupport/WXAS_NodeEditorControl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,11 @@ NUIE::Point NodeEditorControl::ViewToModel (const NUIE::Point& viewPoint) const
284284
return nodeEditor->ViewToModel (viewPoint);
285285
}
286286

287+
void NodeEditorControl::AlignToWindow ()
288+
{
289+
nodeEditor->AlignToWindow ();
290+
}
291+
287292
void NodeEditorControl::FitToWindow ()
288293
{
289294
nodeEditor->FitToWindow ();

Sources/wxWidgetsAppSupport/WXAS_NodeEditorControl.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ class NodeEditorControl : public wxPanel
106106

107107
void AddNode (const NUIE::UINodePtr& uiNode);
108108
NUIE::Point ViewToModel (const NUIE::Point& viewPoint) const;
109+
void AlignToWindow ();
109110
void FitToWindow ();
110111

111112
void New ();

Sources/wxWidgetsTestApp/main.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,8 @@ class MenuBar : public wxMenuBar
281281
Mode_Automatic = 8,
282282
Mode_Manual = 9,
283283
Mode_Update = 10,
284-
View_FitToWindow = 11
284+
View_AlignToWindow = 11,
285+
View_FitToWindow = 12
285286
};
286287

287288
MenuBar () :
@@ -309,6 +310,7 @@ class MenuBar : public wxMenuBar
309310
Append (modeMenu, L"&Mode");
310311

311312
wxMenu* viewMenu = new wxMenu ();
313+
viewMenu->Append (CommandId::View_AlignToWindow, "Align To Window");
312314
viewMenu->Append (CommandId::View_FitToWindow, "Fit To Window");
313315
Append (viewMenu, L"&View");
314316
}
@@ -447,6 +449,11 @@ class MainFrame : public wxFrame
447449
nodeEditorControl->ManualUpdate ();
448450
}
449451
break;
452+
case MenuBar::CommandId::View_AlignToWindow:
453+
{
454+
nodeEditorControl->AlignToWindow ();
455+
}
456+
break;
450457
case MenuBar::CommandId::View_FitToWindow:
451458
{
452459
nodeEditorControl->FitToWindow ();

0 commit comments

Comments
 (0)