Commit c32f56ff authored by Lorenzo Marcantonio's avatar Lorenzo Marcantonio

Removed the long time dead SCH_POLYLINE class (schematic level polyline)

parent 86851d39
......@@ -132,7 +132,6 @@ set(EESCHEMA_SRCS
sch_line.cpp
sch_marker.cpp
sch_no_connect.cpp
sch_polyline.cpp
sch_screen.cpp
sch_sheet.cpp
sch_sheet_path.cpp
......
......@@ -41,7 +41,6 @@
#include <sch_junction.h>
#include <sch_line.h>
#include <sch_no_connect.h>
#include <sch_polyline.h>
#include <sch_text.h>
#include <sch_component.h>
#include <sch_sheet.h>
......@@ -346,33 +345,7 @@ void SCH_EDIT_FRAME::DeleteCurrentSegment( wxDC* DC )
if( ( screen->GetCurItem() == NULL ) || !screen->GetCurItem()->IsNew() )
return;
/* Cancel trace in progress */
if( screen->GetCurItem()->Type() == SCH_POLYLINE_T )
{
SCH_POLYLINE* polyLine = (SCH_POLYLINE*) screen->GetCurItem();
wxPoint endpos;
endpos = screen->GetCrossHairPosition();
int idx = polyLine->GetCornerCount() - 1;
wxPoint pt = (*polyLine)[idx];
if( GetForceHVLines() )
{
/* Coerce the line to vertical or horizontal one: */
if( std::abs( endpos.x - pt.x ) < std::abs( endpos.y - pt.y ) )
endpos.x = pt.x;
else
endpos.y = pt.y;
}
polyLine->SetPoint( idx, endpos );
polyLine->Draw( m_canvas, DC, wxPoint( 0, 0 ), g_XorMode );
}
else
{
DrawSegment( m_canvas, DC, wxDefaultPosition, false );
}
screen->Remove( screen->GetCurItem() );
m_canvas->SetMouseCaptureCallback( NULL );
......
......@@ -41,7 +41,6 @@
#include <sch_line.h>
#include <sch_no_connect.h>
#include <sch_component.h>
#include <sch_polyline.h>
#include <sch_text.h>
#include <sch_sheet.h>
#include <sch_bitmap.h>
......@@ -182,10 +181,6 @@ again." );
item = new SCH_BUS_ENTRY();
break;
case 'P': // Its a polyline item.
item = new SCH_POLYLINE();
break;
case 'C': // It is a connection item.
item = new SCH_JUNCTION();
break;
......
......@@ -15,7 +15,6 @@
#include <sch_marker.h>
#include <sch_line.h>
#include <sch_no_connect.h>
#include <sch_polyline.h>
#include <sch_sheet.h>
#include <sch_component.h>
#include <sch_junction.h>
......@@ -25,7 +24,6 @@ void SetSchItemParent( SCH_ITEM* Struct, SCH_SCREEN* Screen )
{
switch( Struct->Type() )
{
case SCH_POLYLINE_T:
case SCH_JUNCTION_T:
case SCH_TEXT_T:
case SCH_LABEL_T:
......@@ -185,7 +183,6 @@ void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
{
switch( newitem->Type() )
{
case SCH_POLYLINE_T:
case SCH_JUNCTION_T:
case SCH_LINE_T:
case SCH_BUS_ENTRY_T:
......
......@@ -41,7 +41,6 @@ const KICAD_T SCH_COLLECTOR::AllItems[] = {
SCH_NO_CONNECT_T,
SCH_BUS_ENTRY_T,
SCH_LINE_T,
SCH_POLYLINE_T,
SCH_BITMAP_T,
SCH_TEXT_T,
SCH_LABEL_T,
......@@ -62,7 +61,6 @@ const KICAD_T SCH_COLLECTOR::AllItemsButPins[] = {
SCH_NO_CONNECT_T,
SCH_BUS_ENTRY_T,
SCH_LINE_T,
SCH_POLYLINE_T,
SCH_BITMAP_T,
SCH_TEXT_T,
SCH_LABEL_T,
......@@ -111,7 +109,6 @@ const KICAD_T SCH_COLLECTOR::MovableItems[] = {
SCH_NO_CONNECT_T,
SCH_BUS_ENTRY_T,
// SCH_LINE_T,
SCH_POLYLINE_T,
SCH_BITMAP_T,
SCH_TEXT_T,
SCH_LABEL_T,
......@@ -129,7 +126,6 @@ const KICAD_T SCH_COLLECTOR::DraggableItems[] = {
SCH_JUNCTION_T,
SCH_BUS_ENTRY_T,
SCH_LINE_T,
SCH_POLYLINE_T,
SCH_LABEL_T,
SCH_GLOBAL_LABEL_T,
SCH_HIERARCHICAL_LABEL_T,
......@@ -158,7 +154,6 @@ const KICAD_T SCH_COLLECTOR::ParentItems[] = {
SCH_NO_CONNECT_T,
SCH_BUS_ENTRY_T,
SCH_LINE_T,
SCH_POLYLINE_T,
SCH_TEXT_T,
SCH_LABEL_T,
SCH_GLOBAL_LABEL_T,
......
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2004-2011 KiCad Developers, see change_log.txt for contributors.
*
* 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
*/
/**
* @file sch_polyline.cpp
*/
#include <fctsys.h>
#include <gr_basic.h>
#include <macros.h>
#include <class_drawpanel.h>
#include <trigo.h>
#include <common.h>
#include <richio.h>
#include <general.h>
#include <protos.h>
#include <sch_polyline.h>
SCH_POLYLINE::SCH_POLYLINE( int layer ) :
SCH_ITEM( NULL, SCH_POLYLINE_T )
{
m_width = 0;
switch( layer )
{
default:
m_Layer = LAYER_NOTES;
break;
case LAYER_WIRE:
case LAYER_NOTES:
case LAYER_BUS:
m_Layer = layer;
break;
}
}
SCH_POLYLINE::~SCH_POLYLINE()
{
}
EDA_ITEM* SCH_POLYLINE::Clone() const
{
return new SCH_POLYLINE( *this );
}
bool SCH_POLYLINE::Save( FILE* aFile ) const
{
bool success = true;
const char* layer = "Notes";
const char* width = "Line";
if( GetLayer() == LAYER_WIRE )
layer = "Wire";
if( GetLayer() == LAYER_BUS )
layer = "Bus";
if( fprintf( aFile, "Poly %s %s %d\n", width, layer, GetCornerCount() ) == EOF )
{
return false;
}
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
if( fprintf( aFile, "\t%-4d %-4d\n", m_points[ii ].x, m_points[ii].y ) == EOF )
{
success = false;
break;
}
}
return success;
}
bool SCH_POLYLINE::Load( LINE_READER& aLine, wxString& aErrorMsg )
{
char Name1[256];
char Name2[256];
wxPoint pt;
int ii;
char* line = (char*) aLine;
while( (*line != ' ' ) && *line )
line++;
if( sscanf( line, "%s %s %d", Name1, Name2, &ii ) != 3 )
{
aErrorMsg.Printf( wxT( "Eeschema file polyline struct error at line %d, aborted" ),
aLine.LineNumber() );
aErrorMsg << wxT( "\n" ) << FROM_UTF8( (char*) aLine );
return false;
}
m_Layer = LAYER_NOTES;
if( Name2[0] == 'W' )
m_Layer = LAYER_WIRE;
if( Name2[0] == 'B' )
m_Layer = LAYER_BUS;
for( unsigned jj = 0; jj < (unsigned)ii; jj++ )
{
wxPoint point;
if( !aLine.ReadLine() || sscanf( ((char*) aLine), "%d %d", &pt.x, &pt.y ) != 2 )
{
aErrorMsg.Printf( wxT( "Eeschema file polyline struct error at line %d, aborted" ),
aLine.LineNumber() );
aErrorMsg << wxT( "\n" ) << FROM_UTF8( (char*) aLine );
return false;
}
AddPoint( pt );
}
return true;
}
int SCH_POLYLINE::GetPenSize() const
{
int pensize = ( m_width == 0 ) ? GetDefaultLineThickness() : m_width;
return pensize;
}
void SCH_POLYLINE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset,
GR_DRAWMODE aDrawMode, EDA_COLOR_T aColor )
{
EDA_COLOR_T color;
int width = GetPenSize();
if( aColor >= 0 )
color = aColor;
else
color = ReturnLayerColor( m_Layer );
GRSetDrawMode( aDC, aDrawMode );
if( m_Layer == LAYER_BUS )
{
width *= 3;
}
GRMoveTo( m_points[0].x, m_points[0].y );
if( m_Layer == LAYER_NOTES )
{
for( unsigned i = 1; i < GetCornerCount(); i++ )
GRDashedLineTo( aPanel->GetClipBox(), aDC, m_points[i].x + aOffset.x,
m_points[i].y + aOffset.y, width, color );
}
else
{
for( unsigned i = 1; i < GetCornerCount(); i++ )
GRLineTo( aPanel->GetClipBox(), aDC, m_points[i].x + aOffset.x,
m_points[i].y + aOffset.y, width, color );
}
}
void SCH_POLYLINE::MirrorX( int aXaxis_position )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
m_points[ii].y -= aXaxis_position;
NEGATE( m_points[ii].y );
m_points[ii].y = aXaxis_position;
}
}
void SCH_POLYLINE::MirrorY( int aYaxis_position )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
m_points[ii].x -= aYaxis_position;
NEGATE( m_points[ii].x );
m_points[ii].x = aYaxis_position;
}
}
void SCH_POLYLINE::Rotate( wxPoint aPosition )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
RotatePoint( &m_points[ii], aPosition, 900 );
}
}
wxString SCH_POLYLINE::GetSelectMenuText() const
{
wxString menuText, fmt;
switch( m_Layer )
{
case LAYER_NOTES:
fmt = _( "Graphic Polyline with %d Points" );
break;
case LAYER_WIRE:
fmt = _( "Polyline Wire with %d Points" );
break;
case LAYER_BUS:
fmt = _( "Polyline Bus with %d Points" );
break;
default:
fmt = _( "Polyline on Unkown Layer with %d Points" );
}
menuText.Printf( fmt, m_points.size() );
return menuText;
}
BITMAP_DEF SCH_POLYLINE::GetMenuImage() const
{
if( m_Layer == LAYER_NOTES )
return add_dashed_line_xpm;
else if( m_Layer == LAYER_WIRE )
return add_line_xpm;
return add_bus_xpm;
}
bool SCH_POLYLINE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
for( size_t i = 0; i < m_points.size() - 1; i++ )
{
if( TestSegmentHit( aPosition, m_points[i], m_points[i + 1], aAccuracy ) )
return true;
}
return false;
}
bool SCH_POLYLINE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
EDA_RECT rect = aRect;
rect.Inflate( aAccuracy );
if( aContained )
return rect.Contains( GetBoundingBox() );
return rect.Intersects( GetBoundingBox() );
}
void SCH_POLYLINE::SetPosition( const wxPoint& aPosition )
{
wxPoint offset = m_points[0] - aPosition;
for( size_t i = 0; i < m_points.size(); i++ )
m_points[i] = m_points[i] - offset;
}
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2004-2011 KiCad Developers, see change_log.txt for contributors.
*
* 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
*/
/**
* @file sch_polyline.h
*
*/
#ifndef _SCH_POLYLINE_H_
#define _SCH_POLYLINE_H_
#include <sch_item_struct.h>
class SCH_POLYLINE : public SCH_ITEM
{
int m_width; // Thickness
std::vector<wxPoint> m_points; // list of points (>= 2)
public:
SCH_POLYLINE( int layer = LAYER_NOTES );
// Do not create a copy constructor. The one generated by the compiler is adequate.
~SCH_POLYLINE();
wxString GetClass() const
{
return wxT( "SCH_POLYLINE" );
}
void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset,
GR_DRAWMODE aDrawMode, EDA_COLOR_T aColor = UNSPECIFIED_COLOR );
bool Save( FILE* aFile ) const;
bool Load( LINE_READER& aLine, wxString& aErrorMsg );
/**
* Function AddPoint
* add a corner to m_points
*/
void AddPoint( const wxPoint& point )
{
m_points.push_back( point );
}
/**
* Function SetPoint
* sets the point at \a aIndex in the list to \a aPoint.
*
* @param aIndex The index in the point list.
* @param aPoint The new point value.
*/
void SetPoint( int aIndex, const wxPoint& aPoint )
{
// (unsigned) excludes aIndex<0 also
wxCHECK_RET( (unsigned)aIndex < m_points.size(),
wxT( "Invalid SCH_POLYLINE point list index." ) );
m_points[ aIndex ] = aPoint;
}
/**
* Function GetCornerCount
* @return the number of corners
*/
unsigned GetCornerCount() const { return m_points.size(); }
int GetPenSize() const;
void Move( const wxPoint& aMoveVector )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
m_points[ii] += aMoveVector;
}
void MirrorY( int aYaxis_position );
void MirrorX( int aXaxis_position );
void Rotate( wxPoint aPosition );
wxString GetSelectMenuText() const;
BITMAP_DEF GetMenuImage() const;
/**
* Function operator[]
* is used for read only access and returns the point at \a aIndex.
* @param aIndex The index of the list of points to return.
* @return A wxPoint object containing the point at \a aIndex.
*/
wxPoint operator[]( int aIndex ) const
{
// (unsigned) excludes aIndex<0 also
wxCHECK_MSG( (unsigned)aIndex < m_points.size(), wxDefaultPosition,
wxT( "Invalid SCH_POLYLINE point list index." ) );
return m_points[ aIndex ];
}
wxPoint GetPosition() const { return m_points[0]; }
void SetPosition( const wxPoint& aPosition );
bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
EDA_ITEM* Clone() const;
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
#endif
};
#endif // _SCH_POLYLINE_H_
......@@ -39,7 +39,6 @@
#include <sch_line.h>
#include <sch_no_connect.h>
#include <sch_component.h>
#include <sch_polyline.h>
#include <sch_sheet.h>
#include <sch_bitmap.h>
......
......@@ -84,7 +84,6 @@ enum KICAD_T {
SCH_NO_CONNECT_T,
SCH_BUS_ENTRY_T,
SCH_LINE_T,
SCH_POLYLINE_T,
SCH_BITMAP_T,
SCH_TEXT_T,
SCH_LABEL_T,
......
......@@ -7,8 +7,7 @@
#define _COLORS_DESIGN_SETTING_H
#include <layers_id_colors_and_visibility.h>
// XXX shouldn't these come from somewhere else?
#define LAYERSCOLORSBUFFERSIZE 32
#define LAYERSCOLORSBUFFERSIZE NB_LAYERS
#define ITEMSCOLORSBUFFERSIZE 32
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment