mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-07 22:05:32 +00:00
Sym edit: allow to drag pins with edges
Only applies when dragging an edge by the midpoint handle, and only in the symbol editor if configured to do so.
This commit is contained in:
parent
c9a231610a
commit
a4cbd0adb4
eeschema
dialogs
panel_sym_editing_options.cpppanel_sym_editing_options_base.cpppanel_sym_editing_options_base.fbppanel_sym_editing_options_base.h
symbol_editor
tools
libs/kimath
@ -56,6 +56,7 @@ void PANEL_SYM_EDITING_OPTIONS::loadSymEditorSettings( SYMBOL_EDITOR_SETTINGS* a
|
||||
m_pinPitch.SetValue( schIUScale.MilsToIU( aCfg->m_Repeat.pin_step ) );
|
||||
m_spinRepeatLabel->SetValue( aCfg->m_Repeat.label_delta );
|
||||
m_cbShowPinElectricalType->SetValue( aCfg->m_ShowPinElectricalType );
|
||||
m_dragPinsWithEdges->SetValue( aCfg->m_dragPinsAlongWithEdges );
|
||||
}
|
||||
|
||||
|
||||
@ -83,6 +84,7 @@ bool PANEL_SYM_EDITING_OPTIONS::TransferDataFromWindow()
|
||||
settings->m_Repeat.label_delta = m_spinRepeatLabel->GetValue();
|
||||
settings->m_Repeat.pin_step = schIUScale.IUToMils( m_pinPitch.GetIntValue() );
|
||||
settings->m_ShowPinElectricalType = m_cbShowPinElectricalType->GetValue();
|
||||
settings->m_dragPinsAlongWithEdges = m_dragPinsWithEdges->GetValue();
|
||||
|
||||
// Force pin_step to a grid multiple
|
||||
settings->m_Repeat.pin_step = KiROUND( double( settings->m_Repeat.pin_step ) / MIN_GRID ) * MIN_GRID;
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -140,6 +140,25 @@ PANEL_SYM_EDITING_OPTIONS_BASE::PANEL_SYM_EDITING_OPTIONS_BASE( wxWindow* parent
|
||||
|
||||
p1mainSizer->Add( leftColumn, 0, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* rightColumn;
|
||||
rightColumn = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_generalOption = new wxStaticText( this, wxID_ANY, _("General editing"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_generalOption->Wrap( -1 );
|
||||
rightColumn->Add( m_generalOption, 0, wxLEFT|wxTOP, 13 );
|
||||
|
||||
m_staticline3 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
rightColumn->Add( m_staticline3, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_dragPinsWithEdges = new wxCheckBox( this, wxID_ANY, _("Keep pins attached when dragging edges"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
rightColumn->Add( m_dragPinsWithEdges, 0, wxBOTTOM|wxLEFT, 10 );
|
||||
|
||||
|
||||
rightColumn->Add( 0, 15, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
p1mainSizer->Add( rightColumn, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
this->SetSizer( p1mainSizer );
|
||||
this->Layout();
|
||||
|
@ -1,34 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<wxFormBuilder_Project>
|
||||
<FileVersion major="1" minor="17"/>
|
||||
<FileVersion major="1" minor="18"/>
|
||||
<object class="Project" expanded="true">
|
||||
<property name="class_decoration"></property>
|
||||
<property name="code_generation">C++</property>
|
||||
<property name="disconnect_events">1</property>
|
||||
<property name="disconnect_mode">source_name</property>
|
||||
<property name="disconnect_php_events">0</property>
|
||||
<property name="disconnect_python_events">0</property>
|
||||
<property name="cpp_class_decoration"></property>
|
||||
<property name="cpp_disconnect_events">1</property>
|
||||
<property name="cpp_event_generation">connect</property>
|
||||
<property name="cpp_help_provider">none</property>
|
||||
<property name="cpp_namespace"></property>
|
||||
<property name="cpp_precompiled_header"></property>
|
||||
<property name="cpp_use_array_enum">0</property>
|
||||
<property name="cpp_use_enum">0</property>
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="event_generation">connect</property>
|
||||
<property name="file">panel_sym_editing_options_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="image_path_wrapper_function_name"></property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="lua_skip_events">1</property>
|
||||
<property name="lua_ui_table">UI</property>
|
||||
<property name="name">PanelSymEditingOptionsBase</property>
|
||||
<property name="namespace"></property>
|
||||
<property name="path">.</property>
|
||||
<property name="precompiled_header"></property>
|
||||
<property name="php_disconnect_events">0</property>
|
||||
<property name="php_disconnect_mode">source_name</property>
|
||||
<property name="php_skip_events">1</property>
|
||||
<property name="python_disconnect_events">0</property>
|
||||
<property name="python_disconnect_mode">source_name</property>
|
||||
<property name="python_image_path_wrapper_function_name"></property>
|
||||
<property name="python_indent_with_spaces"></property>
|
||||
<property name="python_skip_events">1</property>
|
||||
<property name="relative_path">1</property>
|
||||
<property name="skip_lua_events">1</property>
|
||||
<property name="skip_php_events">1</property>
|
||||
<property name="skip_python_events">1</property>
|
||||
<property name="ui_table">UI</property>
|
||||
<property name="use_array_enum">0</property>
|
||||
<property name="use_enum">0</property>
|
||||
<property name="use_microsoft_bom">0</property>
|
||||
<property name="use_native_eol">0</property>
|
||||
<object class="Panel" expanded="true">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
@ -76,10 +78,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -148,10 +150,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -225,10 +227,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -290,10 +292,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -317,7 +319,7 @@
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
@ -358,10 +360,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -423,10 +425,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -488,10 +490,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -553,10 +555,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -580,7 +582,7 @@
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
@ -621,10 +623,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -686,10 +688,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -751,10 +753,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -778,7 +780,7 @@
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
@ -819,10 +821,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -884,10 +886,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -949,10 +951,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -976,7 +978,7 @@
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
@ -1017,10 +1019,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1082,10 +1084,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1147,10 +1149,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1174,7 +1176,7 @@
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
@ -1215,10 +1217,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1279,10 +1281,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1354,10 +1356,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1426,10 +1428,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1503,10 +1505,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1568,10 +1570,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1595,7 +1597,7 @@
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
@ -1637,10 +1639,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1702,10 +1704,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1767,10 +1769,10 @@
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
@ -1825,6 +1827,213 @@
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxBoxSizer" expanded="true">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">rightColumn</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">13</property>
|
||||
<property name="flag">wxLEFT|wxTOP</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">General editing</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_generalOption</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND | wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticLine" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_staticline3</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style">wxLI_HORIZONTAL</property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">10</property>
|
||||
<property name="flag">wxBOTTOM|wxLEFT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxCheckBox" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="checked">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Keep pins attached when dragging edges</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_dragPinsWithEdges</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="spacer" expanded="true">
|
||||
<property name="height">15</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="width">0</property>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -27,7 +27,6 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class PANEL_SYM_EDITING_OPTIONS_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -62,6 +61,9 @@ class PANEL_SYM_EDITING_OPTIONS_BASE : public RESETTABLE_PANEL
|
||||
wxStaticText* m_pinPitchUnits;
|
||||
wxStaticText* m_labelIncrementLabel1;
|
||||
wxSpinCtrl* m_spinRepeatLabel;
|
||||
wxStaticText* m_generalOption;
|
||||
wxStaticLine* m_staticline3;
|
||||
wxCheckBox* m_dragPinsWithEdges;
|
||||
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void onKillFocusPinPitch( wxFocusEvent& event ) { event.Skip(); }
|
||||
|
@ -109,6 +109,9 @@ SYMBOL_EDITOR_SETTINGS::SYMBOL_EDITOR_SETTINGS() :
|
||||
m_params.emplace_back( new PARAM<bool>( "show_hidden_lib_pins",
|
||||
&m_ShowHiddenPins, true ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "drag_pins_along_with_edges",
|
||||
&m_dragPinsAlongWithEdges, true ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<int>( "lib_table_width",
|
||||
&m_LibWidth, 250 ) );
|
||||
|
||||
|
@ -21,8 +21,7 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef SYMBOL_EDITOR_SETTINGS_H
|
||||
#define SYMBOL_EDITOR_SETTINGS_H
|
||||
#pragma once
|
||||
|
||||
#include <settings/app_settings.h>
|
||||
#include <project/sch_project_settings.h>
|
||||
@ -84,6 +83,9 @@ public:
|
||||
bool m_ShowHiddenPins;
|
||||
bool m_ShowHiddenFields;
|
||||
|
||||
///< When true, dragging an outline edge will drag pins rooted on it
|
||||
bool m_dragPinsAlongWithEdges;
|
||||
|
||||
int m_LibWidth;
|
||||
|
||||
int m_LibrarySortMode;
|
||||
@ -100,5 +102,3 @@ protected:
|
||||
|
||||
virtual std::string getLegacyFrameName() const override { return "LibeditFrame"; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -32,6 +32,7 @@ using namespace std::placeholders;
|
||||
#include <view/view_controls.h>
|
||||
#include <gal/graphics_abstraction_layer.h>
|
||||
#include <geometry/seg.h>
|
||||
#include <geometry/shape_utils.h>
|
||||
#include <tools/ee_actions.h>
|
||||
#include <tools/ee_selection_tool.h>
|
||||
#include <sch_edit_frame.h>
|
||||
@ -40,6 +41,7 @@ using namespace std::placeholders;
|
||||
#include <sch_sheet.h>
|
||||
#include <sch_textbox.h>
|
||||
#include <sch_table.h>
|
||||
#include <symbol_editor/symbol_editor_settings.h>
|
||||
|
||||
|
||||
static const std::vector<KICAD_T> pointEditorTypes = { SCH_SHAPE_T,
|
||||
@ -489,7 +491,7 @@ int EE_POINT_EDITOR::Main( const TOOL_EVENT& aEvent )
|
||||
|
||||
m_editedPoint->SetPosition( controls->GetCursorPosition( snap ) );
|
||||
|
||||
updateParentItem( snap );
|
||||
updateParentItem( snap, commit );
|
||||
updatePoints();
|
||||
}
|
||||
else if( inDrag && evt->IsMouseUp( BUT_LEFT ) )
|
||||
@ -650,7 +652,76 @@ void EE_POINT_EDITOR::pinEditedCorner( int minWidth, int minHeight, VECTOR2I& to
|
||||
}
|
||||
|
||||
|
||||
void EE_POINT_EDITOR::updateParentItem( bool aSnapToGrid ) const
|
||||
void EE_POINT_EDITOR::dragPinsOnEdge( const std::vector<SEG>& aOldEdges,
|
||||
const std::vector<VECTOR2I>& aMoveVecs, int aEdgeUnit,
|
||||
SCH_COMMIT& aCommit ) const
|
||||
{
|
||||
wxCHECK( aOldEdges.size() == aMoveVecs.size(), /* void */ );
|
||||
|
||||
// This only make sense in the symbol editor
|
||||
if( !m_frame->IsType( FRAME_SCH_SYMBOL_EDITOR ) )
|
||||
return;
|
||||
|
||||
SYMBOL_EDIT_FRAME& editor = static_cast<SYMBOL_EDIT_FRAME&>( *m_frame );
|
||||
|
||||
// And only if the setting is enabled
|
||||
if( !editor.GetSettings()->m_dragPinsAlongWithEdges )
|
||||
return;
|
||||
|
||||
// Adjuting pins on a different unit to a unit-limited shape
|
||||
// seems suspect.
|
||||
wxCHECK( aEdgeUnit == 0 || aEdgeUnit == editor.GetUnit(), /* void */ );
|
||||
|
||||
/*
|
||||
* Get a list of pins on a line segment
|
||||
*/
|
||||
const auto getPinsOnSeg = []( LIB_SYMBOL& aSymbol, int aUnit, const SEG& aSeg,
|
||||
bool aIncludeEnds ) -> std::vector<SCH_PIN*>
|
||||
{
|
||||
// const BOX2I segBox = BOX2I::ByCorners( aSeg.A, aSeg.B ).GetInflated( 1 );
|
||||
// const EE_RTREE& rtree = m_frame->GetScreen()->Items().Overlapping( SCH_PIN_T, segBox );
|
||||
|
||||
std::vector<SCH_PIN*> pins;
|
||||
|
||||
for( SCH_PIN* pin : aSymbol.GetPins( aUnit ) )
|
||||
{
|
||||
// Figure out if the pin "connects" to the line
|
||||
const VECTOR2I pinRootPos = pin->GetPinRoot();
|
||||
|
||||
if( aSeg.Contains( pinRootPos ) )
|
||||
{
|
||||
if( aIncludeEnds || ( pinRootPos != aSeg.A && pinRootPos != aSeg.B ) )
|
||||
{
|
||||
pins.push_back( pin );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pins;
|
||||
};
|
||||
|
||||
LIB_SYMBOL* const symbol = editor.GetCurSymbol();
|
||||
|
||||
for( std::size_t i = 0; i < aOldEdges.size(); ++i )
|
||||
{
|
||||
if( aMoveVecs[i] == VECTOR2I( 0, 0 ) || !symbol )
|
||||
continue;
|
||||
|
||||
const std::vector<SCH_PIN*> pins = getPinsOnSeg( *symbol, aEdgeUnit, aOldEdges[i], false );
|
||||
|
||||
for( SCH_PIN* pin : pins )
|
||||
{
|
||||
// Move the pin
|
||||
aCommit.Modify( pin, m_frame->GetScreen() );
|
||||
pin->Move( aMoveVecs[i] );
|
||||
|
||||
updateItem( pin, true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EE_POINT_EDITOR::updateParentItem( bool aSnapToGrid, SCH_COMMIT& aCommit ) const
|
||||
{
|
||||
EDA_ITEM* item = m_editPoints->GetParent();
|
||||
|
||||
@ -714,31 +785,49 @@ void EE_POINT_EDITOR::updateParentItem( bool aSnapToGrid ) const
|
||||
pinEditedCorner( schIUScale.MilsToIU( 1 ), schIUScale.MilsToIU( 1 ), topLeft, topRight,
|
||||
botLeft, botRight, &gridHelper );
|
||||
|
||||
const BOX2I oldBox = BOX2I::ByCorners( shape->GetStart(), shape->GetEnd() );
|
||||
std::vector<SEG> oldSegs;
|
||||
std::vector<VECTOR2I> moveVecs;
|
||||
|
||||
if( isModified( m_editPoints->Point( RECT_TOPLEFT ) )
|
||||
|| isModified( m_editPoints->Point( RECT_TOPRIGHT ) )
|
||||
|| isModified( m_editPoints->Point( RECT_BOTRIGHT ) )
|
||||
|| isModified( m_editPoints->Point( RECT_BOTLEFT ) ) )
|
||||
{
|
||||
// Corner drags don't update pins. Not only is it an escape hatch to avoid
|
||||
// moving pins, it also avoids tricky problems when the pins "fall off"
|
||||
// the ends of one of the two segments and get either left behind or
|
||||
// "swept up" into the corner.
|
||||
shape->SetPosition( topLeft );
|
||||
shape->SetEnd( botRight );
|
||||
}
|
||||
else if( isModified( m_editPoints->Line( RECT_TOP ) ) )
|
||||
{
|
||||
oldSegs = KIGEOM::GetSegsInDirection( oldBox, DIRECTION_45::Directions::N );
|
||||
moveVecs.emplace_back( 0, topLeft.y - oldBox.GetTop() );
|
||||
shape->SetStartY( topLeft.y );
|
||||
}
|
||||
else if( isModified( m_editPoints->Line( RECT_LEFT ) ) )
|
||||
{
|
||||
oldSegs = KIGEOM::GetSegsInDirection( oldBox, DIRECTION_45::Directions::W );
|
||||
moveVecs.emplace_back( topLeft.x - oldBox.GetLeft(), 0 );
|
||||
shape->SetStartX( topLeft.x );
|
||||
}
|
||||
else if( isModified( m_editPoints->Line( RECT_BOT ) ) )
|
||||
{
|
||||
oldSegs = KIGEOM::GetSegsInDirection( oldBox, DIRECTION_45::Directions::S );
|
||||
moveVecs.emplace_back( 0, botRight.y - oldBox.GetBottom() );
|
||||
shape->SetEndY( botRight.y );
|
||||
}
|
||||
else if( isModified( m_editPoints->Line( RECT_RIGHT ) ) )
|
||||
{
|
||||
oldSegs = KIGEOM::GetSegsInDirection( oldBox, DIRECTION_45::Directions::E );
|
||||
moveVecs.emplace_back( botRight.x - oldBox.GetRight(), 0 );
|
||||
shape->SetEndX( botRight.x );
|
||||
}
|
||||
|
||||
dragPinsOnEdge( oldSegs, moveVecs, shape->GetUnit(), aCommit );
|
||||
|
||||
for( unsigned i = 0; i < m_editPoints->LinesSize(); ++i )
|
||||
{
|
||||
if( !isModified( m_editPoints->Line( i ) ) )
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
class EE_SELECTION_TOOL;
|
||||
class SCH_BASE_FRAME;
|
||||
class SCH_COMMIT;
|
||||
|
||||
/**
|
||||
* Tool that displays edit points allowing to modify items by dragging the points.
|
||||
@ -59,7 +60,11 @@ public:
|
||||
|
||||
private:
|
||||
///< Update item's points with edit points.
|
||||
void updateParentItem( bool aSnapToGrid ) const;
|
||||
void updateParentItem( bool aSnapToGrid, SCH_COMMIT& aCommit ) const;
|
||||
|
||||
///< When dragging a graphics edge, update pins too.
|
||||
void dragPinsOnEdge( const std::vector<SEG>& aOldEdges, const std::vector<VECTOR2I>& aMoveVecs,
|
||||
int aUnit, SCH_COMMIT& aCommit ) const;
|
||||
|
||||
///< Update edit points with item's points.
|
||||
void updatePoints();
|
||||
|
@ -75,6 +75,15 @@ OPT_VECTOR2I GetSharedEndpoint( const SEG& aSegA, const SEG& aSegB );
|
||||
*/
|
||||
std::array<SEG, 4> BoxToSegs( const BOX2I& aBox );
|
||||
|
||||
/**
|
||||
* Get the segments of a box that are in the given direction.
|
||||
*
|
||||
* N,E,S,W are the sides of the box.
|
||||
* NE,SE,SW,NW are the corners of the box, which return the two segments that meet at the corner,
|
||||
* in the order of the direction (e.g. NW = N, then W).
|
||||
*/
|
||||
std::vector<SEG> GetSegsInDirection( const BOX2I& aBox, DIRECTION_45::Directions aDir );
|
||||
|
||||
/**
|
||||
* Get the segment of a half-line that is inside a box, if any.
|
||||
*/
|
||||
|
@ -80,6 +80,53 @@ std::array<SEG, 4> KIGEOM::BoxToSegs( const BOX2I& aBox )
|
||||
}
|
||||
|
||||
|
||||
std::vector<SEG> KIGEOM::GetSegsInDirection( const BOX2I& aBox, DIRECTION_45::Directions aDir )
|
||||
{
|
||||
// clang-format off
|
||||
switch( aDir )
|
||||
{
|
||||
case DIRECTION_45::Directions::N:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetTop() },
|
||||
{ aBox.GetRight(), aBox.GetTop() } } };
|
||||
case DIRECTION_45::Directions::E:
|
||||
return { SEG{ { aBox.GetRight(), aBox.GetTop() },
|
||||
{ aBox.GetRight(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::S:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetBottom() },
|
||||
{ aBox.GetRight(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::W:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetTop() },
|
||||
{ aBox.GetLeft(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::NE:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetTop() },
|
||||
{ aBox.GetRight(), aBox.GetTop() } },
|
||||
SEG{ { aBox.GetRight(), aBox.GetTop() },
|
||||
{ aBox.GetRight(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::SE:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetBottom() },
|
||||
{ aBox.GetRight(), aBox.GetBottom() } },
|
||||
SEG{ { aBox.GetRight(), aBox.GetTop() },
|
||||
{ aBox.GetRight(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::SW:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetBottom() },
|
||||
{ aBox.GetRight(), aBox.GetBottom() } },
|
||||
SEG{ { aBox.GetLeft(), aBox.GetTop() },
|
||||
{ aBox.GetLeft(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::NW:
|
||||
return { SEG{ { aBox.GetLeft(), aBox.GetTop() },
|
||||
{ aBox.GetRight(), aBox.GetTop() } },
|
||||
SEG{ { aBox.GetLeft(), aBox.GetTop() },
|
||||
{ aBox.GetLeft(), aBox.GetBottom() } } };
|
||||
case DIRECTION_45::Directions::LAST:
|
||||
case DIRECTION_45::Directions::UNDEFINED: break;
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
wxASSERT( false );
|
||||
return {};
|
||||
};
|
||||
|
||||
|
||||
std::optional<SEG> KIGEOM::ClipHalfLineToBox( const HALF_LINE& aRay, const BOX2I& aBox )
|
||||
{
|
||||
// Do the naive implementation - if this really is done in a tight loop,
|
||||
|
Loading…
Reference in New Issue
Block a user