Restored support for custom angle rotation.

This commit is contained in:
Maciej Suminski 2014-07-09 13:50:27 +02:00
parent 6e0bd1eedc
commit 5ce29330b1
6 changed files with 45 additions and 19 deletions

View File

@ -87,9 +87,6 @@ class PCB_EDIT_FRAME : public PCB_BASE_EDIT_FRAME
/// The auxiliary right vertical tool bar used to access the microwave tools. /// The auxiliary right vertical tool bar used to access the microwave tools.
wxAuiToolBar* m_microWaveToolBar; wxAuiToolBar* m_microWaveToolBar;
/// User defined rotation angle (in tenths of a degree).
int m_rotationAngle;
/** /**
* Function loadFootprints * Function loadFootprints
* loads the footprints for each #COMPONENT in \a aNetlist from the list of libraries. * loads the footprints for each #COMPONENT in \a aNetlist from the list of libraries.
@ -315,9 +312,6 @@ public:
*/ */
virtual void SetGridColor(EDA_COLOR_T aColor); virtual void SetGridColor(EDA_COLOR_T aColor);
int GetRotationAngle() const { return m_rotationAngle; }
void SetRotationAngle( int aRotationAngle );
// Configurations: // Configurations:
void Process_Config( wxCommandEvent& event ); void Process_Config( wxCommandEvent& event );

View File

@ -160,6 +160,7 @@ set( PCBNEW_CLASS_SRCS
tool_modview.cpp tool_modview.cpp
modview_frame.cpp modview_frame.cpp
pcbframe.cpp pcbframe.cpp
pcb_base_edit_frame.cpp
attribut.cpp attribut.cpp
board_items_to_polygon_shape_transform.cpp board_items_to_polygon_shape_transform.cpp
board_undo_redo.cpp board_undo_redo.cpp

View File

@ -0,0 +1,33 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 CERN
* @author Maciej Suminski <maciej.suminski@cern.ch>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <pcb_base_edit_frame.h>
void PCB_BASE_EDIT_FRAME::SetRotationAngle( int aRotationAngle )
{
wxCHECK2_MSG( aRotationAngle > 0 && aRotationAngle <= 900, aRotationAngle = 900,
wxT( "Invalid rotation angle, defaulting to 90." ) );
m_rotationAngle = aRotationAngle;
}

View File

@ -36,7 +36,8 @@ public:
PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType, PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize, const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
long aStyle, const wxString& aFrameName ) : long aStyle, const wxString& aFrameName ) :
PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ) PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ),
m_rotationAngle( 900 )
{} {}
virtual ~PCB_BASE_EDIT_FRAME() {}; virtual ~PCB_BASE_EDIT_FRAME() {};
@ -64,6 +65,13 @@ public:
* - Get an old version of the data from Undo list * - Get an old version of the data from Undo list
*/ */
virtual void RestoreCopyFromUndoList( wxCommandEvent& aEvent ) = 0; virtual void RestoreCopyFromUndoList( wxCommandEvent& aEvent ) = 0;
int GetRotationAngle() const { return m_rotationAngle; }
void SetRotationAngle( int aRotationAngle );
protected:
/// User defined rotation angle (in tenths of a degree).
int m_rotationAngle;
}; };
#endif #endif

View File

@ -1021,13 +1021,3 @@ void PCB_EDIT_FRAME::ToPlotter( wxCommandEvent& event )
dlg.ShowModal(); dlg.ShowModal();
} }
void PCB_EDIT_FRAME::SetRotationAngle( int aRotationAngle )
{
wxCHECK2_MSG( aRotationAngle > 0 && aRotationAngle <= 900, aRotationAngle = 900,
wxT( "Invalid rotation angle, defaulting to 90." ) );
m_rotationAngle = aRotationAngle;
}

View File

@ -286,7 +286,7 @@ int EDIT_TOOL::Properties( TOOL_EVENT& aEvent )
int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent ) int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent )
{ {
const SELECTION_TOOL::SELECTION& selection = m_selectionTool->GetSelection(); const SELECTION_TOOL::SELECTION& selection = m_selectionTool->GetSelection();
PCB_BASE_FRAME* editFrame = getEditFrame<PCB_BASE_FRAME>(); PCB_BASE_EDIT_FRAME* editFrame = getEditFrame<PCB_BASE_EDIT_FRAME>();
// Shall the selection be cleared at the end? // Shall the selection be cleared at the end?
bool unselect = selection.Empty(); bool unselect = selection.Empty();
@ -310,7 +310,7 @@ int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent )
{ {
BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i ); BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i );
item->Rotate( rotatePoint, 900.0 /*m_frame->GetRotationAngle()*/ ); item->Rotate( rotatePoint, editFrame->GetRotationAngle() );
if( !m_dragging ) if( !m_dragging )
item->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); item->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );