Commit cc097762 authored by Dick Hollenbeck's avatar Dick Hollenbeck

Temporarily reverse out the evolving support for finer Board Internal Units (BIU)s.

parent d4bfa450
...@@ -884,7 +884,7 @@ void EDGE_MODULE::Draw3D( EDA_3D_CANVAS* glcanvas ) ...@@ -884,7 +884,7 @@ void EDGE_MODULE::Draw3D( EDA_3D_CANVAS* glcanvas )
} }
} }
/** @TODO: move D_PAD method to appropriate file */
/* Draw 3D pads. */ /* Draw 3D pads. */
void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas ) void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas )
{ {
...@@ -903,8 +903,8 @@ void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas ) ...@@ -903,8 +903,8 @@ void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas )
int color; int color;
scale = g_Parm_3D_Visu.m_BoardScale; scale = g_Parm_3D_Visu.m_BoardScale;
holeX = (double) TO_LEGACY_LU_DBL( m_Drill.x() ) * scale / 2; holeX = (double) m_Drill.x * scale / 2;
holeY = (double) TO_LEGACY_LU_DBL( m_Drill.y() ) * scale / 2; holeY = (double) m_Drill.y * scale / 2;
hole = MIN( holeX, holeY ); hole = MIN( holeX, holeY );
/* Calculate the center of the pad. */ /* Calculate the center of the pad. */
...@@ -914,12 +914,12 @@ void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas ) ...@@ -914,12 +914,12 @@ void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas )
xc = ux0; xc = ux0;
yc = uy0; yc = uy0;
dx = dx0 = TO_LEGACY_LU( m_Size.x() ) >> 1; dx = dx0 = m_Size.x >> 1;
dy = dy0 = TO_LEGACY_LU( m_Size.y() ) >> 1; dy = dy0 = m_Size.y >> 1;
angle = m_Orient; angle = m_Orient;
drillx = TO_LEGACY_LU( m_Pos.x() ) * scale; drillx = m_Pos.x * scale;
drilly = TO_LEGACY_LU( m_Pos.y() ) * scale; drilly = m_Pos.y * scale;
/* Draw the pad hole (TODO: draw OBLONG hole) */ /* Draw the pad hole (TODO: draw OBLONG hole) */
if( holeX && holeY ) if( holeX && holeY )
...@@ -980,13 +980,13 @@ void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas ) ...@@ -980,13 +980,13 @@ void D_PAD::Draw3D( EDA_3D_CANVAS* glcanvas )
{ {
delta_cx = dx - dy; delta_cx = dx - dy;
delta_cy = 0; delta_cy = 0;
w = TO_LEGACY_LU( m_Size.y() ) * scale; w = m_Size.y * scale;
} }
else /* Vertical ellipse */ else /* Vertical ellipse */
{ {
delta_cx = 0; delta_cx = 0;
delta_cy = dy - dx; delta_cy = dy - dx;
w = TO_LEGACY_LU( m_Size.x() ) * scale; w = m_Size.x * scale;
} }
RotatePoint( &delta_cx, &delta_cy, angle ); RotatePoint( &delta_cx, &delta_cy, angle );
......
...@@ -29,9 +29,6 @@ option(KICAD_GOST "enable/disable building using GOST notation for multiple gate ...@@ -29,9 +29,6 @@ option(KICAD_GOST "enable/disable building using GOST notation for multiple gate
#for those who bored with uppercase #for those who bored with uppercase
option(KICAD_KEEPCASE "turn-off automatic component name conversion to uppercase if selected") option(KICAD_KEEPCASE "turn-off automatic component name conversion to uppercase if selected")
#highly experimetnal option
option(KICAD_NANOMETRE "set length quantum to 1 nm for PCB")
option(USE_WX_GRAPHICS_CONTEXT option(USE_WX_GRAPHICS_CONTEXT
"Use wxGraphicsContext for rendering (default OFF). Warning, this is experimental") "Use wxGraphicsContext for rendering (default OFF). Warning, this is experimental")
...@@ -102,10 +99,6 @@ if(KICAD_KEEPCASE) ...@@ -102,10 +99,6 @@ if(KICAD_KEEPCASE)
add_definitions(-DKICAD_KEEPCASE) add_definitions(-DKICAD_KEEPCASE)
endif(KICAD_KEEPCASE) endif(KICAD_KEEPCASE)
if(KICAD_NANOMETRE)
add_definitions(-DKICAD_NANOMETRE)
endif(KICAD_NANOMETRE)
if(USE_WX_OVERLAY OR APPLE) if(USE_WX_OVERLAY OR APPLE)
add_definitions(-DUSE_WX_OVERLAY) add_definitions(-DUSE_WX_OVERLAY)
endif(USE_WX_OVERLAY OR APPLE) endif(USE_WX_OVERLAY OR APPLE)
......
...@@ -37,6 +37,13 @@ ...@@ -37,6 +37,13 @@
#include "auxiliary.h" #include "auxiliary.h"
#ifndef max
#define max( a, b ) ( ( (a) > (b) ) ? (a) : (b) )
#endif
#ifndef min
#define min( a, b ) ( ( (a) < (b) ) ? (a) : (b) )
#endif
// Define some types used here from boost::polygon // Define some types used here from boost::polygon
namespace bpl = boost::polygon; // bpl = boost polygon library namespace bpl = boost::polygon; // bpl = boost polygon library
using namespace bpl::operators; // +, -, =, ... using namespace bpl::operators; // +, -, =, ...
...@@ -469,7 +476,7 @@ void BezierToPolyline( std::vector <potrace_dpoint_t>& aCornersBuffer, ...@@ -469,7 +476,7 @@ void BezierToPolyline( std::vector <potrace_dpoint_t>& aCornersBuffer,
* occur at an endpoint. */ * occur at an endpoint. */
dd0 = sq( p1.x - 2 * p2.x + p3.x ) + sq( p1.y - 2 * p2.y + p3.y ); dd0 = sq( p1.x - 2 * p2.x + p3.x ) + sq( p1.y - 2 * p2.y + p3.y );
dd1 = sq( p2.x - 2 * p3.x + p4.x ) + sq( p2.y - 2 * p3.y + p4.y ); dd1 = sq( p2.x - 2 * p3.x + p4.x ) + sq( p2.y - 2 * p3.y + p4.y );
dd = 6 * sqrt( fmax( dd0, dd1 ) ); dd = 6 * sqrt( max( dd0, dd1 ) );
e2 = 8 * delta <= dd ? 8 * delta / dd : 1; e2 = 8 * delta <= dd ? 8 * delta / dd : 1;
epsilon = sqrt( e2 ); /* necessary interval size */ epsilon = sqrt( e2 ); /* necessary interval size */
......
...@@ -518,20 +518,6 @@ void EDA_BASE_FRAME::CopyVersionInfoToClipboard( wxCommandEvent& event ) ...@@ -518,20 +518,6 @@ void EDA_BASE_FRAME::CopyVersionInfoToClipboard( wxCommandEvent& event )
tmp << wxT( "OFF\n" ); tmp << wxT( "OFF\n" );
#endif #endif
tmp << wxT( " KICAD_NANOMETRE=" );
#ifdef KICAD_NANOMETRE
tmp << wxT( "ON\n" );
#else
tmp << wxT( "OFF\n" );
#endif
tmp << wxT( " KICAD_KEEPCASE=" );
#ifdef KICAD_KEEPCASE
tmp << wxT( "ON\n" );
#else
tmp << wxT( "OFF\n" );
#endif
tmp << wxT( " USE_WX_GRAPHICS_CONTEXT=" ); tmp << wxT( " USE_WX_GRAPHICS_CONTEXT=" );
#ifdef USE_WX_GRAPHICS_CONTEXT #ifdef USE_WX_GRAPHICS_CONTEXT
tmp << wxT( "ON\n" ); tmp << wxT( "ON\n" );
......
...@@ -410,193 +410,50 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int ...@@ -410,193 +410,50 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int
} }
#ifdef KICAD_NANOMETRE /**
* Function wxStringSplit
/* * Split a String to a String List when founding 'splitter'
*New common length functions * @return the list
* @param txt : wxString : a String text
* @param splitter : wxChar : the 'split' character
*/ */
wxArrayString* wxStringSplit( wxString txt, wxChar splitter )
const LENGTH_UNIT_DESC MillimetreDesc =
{
LENGTH_UNITS<LENGTH_PCB>::millimetre(),
wxT( "mm" ),
6
};
const LENGTH_UNIT_DESC InchDesc =
{
LENGTH_UNITS<LENGTH_PCB>::inch(),
wxT( "\"" ),
7
};
const LENGTH_UNIT_DESC MilDesc =
{
LENGTH_UNITS<LENGTH_PCB>::mil(),
wxT( "mil" ),
5
};
const LENGTH_UNIT_DESC UnscaledDesc = /* stub */
{
LENGTH_PCB::quantum(),
wxT( "" ),
4
};
const LENGTH_UNIT_DESC *UnitDescription( EDA_UNITS_T aUnit ) {
switch(aUnit) {
case INCHES:
return &InchDesc;
case MILLIMETRES:
return &MillimetreDesc;
default:
return &UnscaledDesc; /* should not be reached */
}
}
/* TODO: localisation */
wxString LengthToString( const LENGTH_UNIT_DESC *aUnit, LENGTH_PCB aValue,
bool aAdd_unit_symbol ) {
wxString StringValue;
double value_to_print;
value_to_print = LENGTH<double>(aValue) / LENGTH<double>(aUnit->m_Value);
StringValue.Printf( wxT( "%.*f" ), aUnit->m_Precision, value_to_print);
size_t zero_tail = StringValue.find_last_not_of( wxT( "0" ) );
if( zero_tail != std::string::npos )
{
//fprintf( stderr, "pos : %d", (int) zero_tail );
size_t delim_pos = StringValue.Length() - aUnit->m_Precision;
if( zero_tail < delim_pos)
zero_tail = delim_pos;
StringValue.Truncate( zero_tail + 1 );
}
if( aAdd_unit_symbol && aUnit->m_Symbol != wxT( "" ) )
{
StringValue += wxT( " " );
StringValue += wxGetTranslation( aUnit->m_Symbol );
}
return StringValue;
}
LENGTH_PCB StringToLength( const LENGTH_UNIT_DESC *aUnit, const wxString& TextValue )
{
LENGTH_PCB Value;
double dtmp = 0;
/* Acquire the 'right' decimal point separator */
const struct lconv* lc = localeconv();
wxChar decimal_point = lc->decimal_point[0];
wxString buf( TextValue.Strip( wxString::both ) );
/* Convert the period in decimal point */
buf.Replace( wxT( "." ), wxString( decimal_point, 1 ) );
// An ugly fix needed by WxWidgets 2.9.1 that sometimes
// back to a point as separator, although the separator is the comma
// TODO: remove this line if WxWidgets 2.9.2 fixes this issue
buf.Replace( wxT( "," ), wxString( decimal_point, 1 ) );
/* Find the end of the numeric part */
unsigned brk_point = 0;
while( brk_point < buf.Len() )
{
wxChar ch = buf[brk_point];
if( !( (ch >= '0' && ch <='9') || (ch == decimal_point)
|| (ch == '-') || (ch == '+') ) )
{
break;
}
++brk_point;
}
/* Extract the numeric part */
buf.Left( brk_point ).ToDouble( &dtmp );
/* Check the optional unit designator (2 ch significant) */
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
if( unit == wxT( "in" ) || unit == wxT( "\"" ) )
{
aUnit = &InchDesc;
}
else if( unit == wxT( "mm" ) )
{
aUnit = &MillimetreDesc;
}
else if( unit == wxT( "mi" ) || unit == wxT( "th" ) ) /* Mils or thous */
{
aUnit = &MilDesc;
}
Value = LENGTH_PCB( dtmp * LENGTH< double, 1 >( aUnit->m_Value ) );
return Value;
}
void LengthToTextCtrl( wxTextCtrl& TextCtr, LENGTH_PCB Value )
{
wxString msg = LengthToString( UnitDescription( g_UserUnit ), Value );
TextCtr.SetValue( msg );
}
LENGTH_PCB LengthFromTextCtrl( const wxTextCtrl& TextCtr )
{
LENGTH_PCB value;
wxString msg = TextCtr.GetValue();
value = StringToLength( UnitDescription( g_UserUnit ), msg );
return value;
}
#endif
wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter )
{ {
wxArrayString* list = new wxArrayString(); wxArrayString* list = new wxArrayString();
while( 1 ) while( 1 )
{ {
int index = aString.Find( aSplitter ); int index = txt.Find( splitter );
if( index == wxNOT_FOUND ) if( index == wxNOT_FOUND )
break; break;
wxString tmp; wxString tmp;
tmp = aString.Mid( 0, index ); tmp = txt.Mid( 0, index );
aString = aString.Mid( index + 1, aString.size() - index ); txt = txt.Mid( index + 1, txt.size() - index );
list->Add( tmp ); list->Add( tmp );
} }
if( !aString.IsEmpty() ) if( !txt.IsEmpty() )
{ {
list->Add( aString ); list->Add( txt );
} }
return list; return list;
} }
/**
* Function To_User_Unit
* Convert in inch or mm the variable "val" (double)given in internal units
* @return the converted value, in double
* @param aUnit : user measure unit
* @param val : double : the given value
* @param internal_unit_value = internal units per inch
*/
double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ) double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value )
{ {
switch( aUnit ) switch( aUnit )
{ {
case MILLIMETRES: case MILLIMETRES:
...@@ -611,6 +468,9 @@ double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ) ...@@ -611,6 +468,9 @@ double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value )
} }
/*
* Return in internal units the value "val" given in inch or mm
*/
int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ) int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value )
{ {
double value; double value;
...@@ -627,6 +487,7 @@ int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ) ...@@ -627,6 +487,7 @@ int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value )
default: default:
case UNSCALED_UNITS: case UNSCALED_UNITS:
value = val; value = val;
} }
...@@ -634,6 +495,9 @@ int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ) ...@@ -634,6 +495,9 @@ int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value )
} }
/*
* Return the string date "day month year" like "23 jun 2005"
*/
wxString GenDate() wxString GenDate()
{ {
static const wxString mois[12] = static const wxString mois[12] =
...@@ -647,6 +511,7 @@ wxString GenDate() ...@@ -647,6 +511,7 @@ wxString GenDate()
wxString string_date; wxString string_date;
time( &buftime ); time( &buftime );
Date = gmtime( &buftime ); Date = gmtime( &buftime );
string_date.Printf( wxT( "%d %s %d" ), Date->tm_mday, string_date.Printf( wxT( "%d %s %d" ), Date->tm_mday,
GetChars( mois[Date->tm_mon] ), GetChars( mois[Date->tm_mon] ),
......
...@@ -802,85 +802,3 @@ void PARAM_CFG_LIBNAME_LIST::SaveParam( wxConfigBase* aConfig ) ...@@ -802,85 +802,3 @@ void PARAM_CFG_LIBNAME_LIST::SaveParam( wxConfigBase* aConfig )
aConfig->Write( configkey, libname ); aConfig->Write( configkey, libname );
} }
} }
/*
* LENGTH_PCB
*/
PARAM_CFG_LENGTH_PCB::PARAM_CFG_LENGTH_PCB( const wxChar* ident,
LENGTH_PCB* ptparam,
LENGTH_PCB default_val,
LENGTH_PCB min,
LENGTH_PCB max,
const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
{
m_Pt_param = ptparam;
m_Default = default_val;
m_Min = min;
m_Max = max;
}
PARAM_CFG_LENGTH_PCB::PARAM_CFG_LENGTH_PCB( bool Insetup,
const wxChar* ident,
LENGTH_PCB* ptparam,
LENGTH_PCB default_val,
LENGTH_PCB min,
LENGTH_PCB max,
const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
{
m_Pt_param = ptparam;
m_Default = default_val;
m_Min = min;
m_Max = max;
m_Setup = Insetup;
}
/** ReadParam
* read the value of parameter this stored in aConfig
* @param aConfig = the wxConfigBase that store the parameter
*/
void PARAM_CFG_LENGTH_PCB::ReadParam( wxConfigBase* aConfig )
{
if( m_Pt_param == NULL || aConfig == NULL )
return;
LENGTH_PCB ftmp;
wxString msg;
msg = aConfig->Read( m_Ident, wxT( "" ) );
if( msg.IsEmpty() )
{
ftmp = m_Default;
}
else
{
double t;
msg.ToDouble( &t );
ftmp = FROM_LEGACY_LU( t );
if( (ftmp < m_Min) || (ftmp > m_Max) )
ftmp = m_Default;
}
*m_Pt_param = ftmp;
}
/** SaveParam
* save the the value of parameter this stored in aConfig
* @param aConfig = the wxConfigBase that can store the parameter
*/
void PARAM_CFG_LENGTH_PCB::SaveParam( wxConfigBase* aConfig )
{
if( m_Pt_param == NULL || aConfig == NULL )
return;
#ifdef KICAD_NANOMETRE
aConfig->Write( m_Ident, TO_LEGACY_LU_DBL( *m_Pt_param ) );
#else // save it as int to mantain compatibility while in transition to nanoscale
aConfig->Write( m_Ident, TO_LEGACY_LU( *m_Pt_param ) );
#endif
}
...@@ -167,15 +167,11 @@ public: ...@@ -167,15 +167,11 @@ public:
* @return const wxPoint& - The position of this object. * @return const wxPoint& - The position of this object.
* This function exists mainly to satisfy the virtual GetPosition() in parent class * This function exists mainly to satisfy the virtual GetPosition() in parent class
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Start; // it had to be start or end. return m_Start; // it had to be start or end.
} }
void SetPosition( const wxPoint& pos ) {
m_Start = pos;
}
/** /**
* Function GetABPosition * Function GetABPosition
* returns the image position of aPosition for this object. * returns the image position of aPosition for this object.
......
...@@ -7,10 +7,6 @@ ...@@ -7,10 +7,6 @@
#include "pcbstruct.h" // NB_COLORS #include "pcbstruct.h" // NB_COLORS
#include "lengthpcb.h"
#include "class_via_dimension.h"
// Class for handle current printed board design settings // Class for handle current printed board design settings
class BOARD_DESIGN_SETTINGS class BOARD_DESIGN_SETTINGS
{ {
...@@ -26,14 +22,11 @@ public: ...@@ -26,14 +22,11 @@ public:
int m_EdgeSegmentWidth; // current graphic line width (EDGE layer only) int m_EdgeSegmentWidth; // current graphic line width (EDGE layer only)
int m_PcbTextWidth; // current Pcb (not module) Text width int m_PcbTextWidth; // current Pcb (not module) Text width
wxSize m_PcbTextSize; // current Pcb (not module) Text size wxSize m_PcbTextSize; // current Pcb (not module) Text size
LENGTH_PCB m_TrackMinWidth; // track min value for width ((min copper size value int m_TrackMinWidth; // track min value for width ((min copper size value
int m_ViasMinSize; // vias (not micro vias) min diameter
VIA_DIMENSION m_MinVia; int m_ViasMinDrill; // vias (not micro vias) min drill diameter
VIA_DIMENSION m_MinMicroVia; int m_MicroViasMinSize; // micro vias (not vias) min diameter
//LENGTH_PCB m_ViasMinSize; // vias (not micro vias) min diameter int m_MicroViasMinDrill; // micro vias (not vias) min drill diameter
//LENGTH_PCB m_ViasMinDrill; // vias (not micro vias) min drill diameter
//LENGTH_PCB m_MicroViasMinSize; // micro vias (not vias) min diameter
//LENGTH_PCB m_MicroViasMinDrill; // micro vias (not vias) min drill diameter
// Global mask margins: // Global mask margins:
int m_SolderMaskMargin; // Solder mask margin int m_SolderMaskMargin; // Solder mask margin
......
...@@ -76,19 +76,9 @@ public: ...@@ -76,19 +76,9 @@ public:
/** /**
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* @return wxPoint - The position of this object * @return wxPoint& - The position of this object, non-const so it can be changed
* It seems this function could not return modifiable reference as this
* contradict good design practice: as the class could be able
* doing internal recalculations on reposition.
* @TODO: Check all the GetPosition calls for position assignments.
*/ */
virtual const wxPoint GetPosition() const = 0; virtual wxPoint& GetPosition() = 0;
/**
* Sets the position of this object.
* @param pos The position of this object
*/
virtual void SetPosition( const wxPoint& pos ) = 0;
/** /**
* Function GetLayer * Function GetLayer
...@@ -323,9 +313,10 @@ public: ...@@ -323,9 +313,10 @@ public:
{} {}
//-----< satisfy some virtual functions >------------------------------ //-----< satisfy some virtual functions >------------------------------
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return wxPoint(0, 0); static wxPoint dummy;
return dummy;
} }
void Draw( EDA_DRAW_PANEL* DrawPanel, wxDC* DC, void Draw( EDA_DRAW_PANEL* DrawPanel, wxDC* DC,
......
...@@ -22,11 +22,6 @@ public: ...@@ -22,11 +22,6 @@ public:
m_Drill = FROM_LEGACY_LU( 0 ); m_Drill = FROM_LEGACY_LU( 0 );
} }
VIA_DIMENSION( LENGTH_PCB diam, LENGTH_PCB drill )
{
m_Diameter = diam;
m_Drill = drill;
}
bool operator ==( const VIA_DIMENSION& other ) const bool operator ==( const VIA_DIMENSION& other ) const
{ {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * 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 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2007-2011 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2008-2011 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2008-2011 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
* *
...@@ -28,18 +29,13 @@ ...@@ -28,18 +29,13 @@
* @file common.h * @file common.h
*/ */
#ifndef __INCLUDE__COMMON_H__ #ifndef INCLUDE__COMMON_H_
#define __INCLUDE__COMMON_H__ 1 #define INCLUDE__COMMON_H_
#include "wx/wx.h" #include "wx/wx.h"
#include "wx/confbase.h" #include "wx/confbase.h"
#include "wx/fileconf.h" #include "wx/fileconf.h"
#ifdef KICAD_NANOMETRE
#include "lengthpcb.h"
#endif
class wxAboutDialogInfo; class wxAboutDialogInfo;
class BASE_SCREEN; class BASE_SCREEN;
class EDA_DRAW_FRAME; class EDA_DRAW_FRAME;
...@@ -363,85 +359,27 @@ wxString ReturnStringFromValue( EDA_UNITS_T aUnit, ...@@ -363,85 +359,27 @@ wxString ReturnStringFromValue( EDA_UNITS_T aUnit,
int aInternal_Unit, int aInternal_Unit,
bool aAdd_unit_symbol = false ); bool aAdd_unit_symbol = false );
/**
* Function AddUnitSymbol
* adds string " (mm):" or " ("):" to the static text Stext.
* Used in dialog boxes for entering values depending on selected units
*/
void AddUnitSymbol( wxStaticText& Stext, EDA_UNITS_T aUnit = g_UserUnit ); void AddUnitSymbol( wxStaticText& Stext, EDA_UNITS_T aUnit = g_UserUnit );
/* Add string " (mm):" or " ("):" to the static text Stext. /* Add string " (mm):" or " ("):" to the static text Stext.
* Used in dialog boxes for entering values depending on selected units */ * Used in dialog boxes for entering values depending on selected units */
void PutValueInLocalUnits( wxTextCtrl& TextCtr, int Value, int Internal_Unit ); void PutValueInLocalUnits( wxTextCtrl& TextCtr, int Value,
int Internal_Unit );
/** /* Convert the number Value in a string according to the internal units
* Convert the number Value in a string according to the internal units
* and the selected unit (g_UserUnit) and put it in the wxTextCtrl TextCtrl * and the selected unit (g_UserUnit) and put it in the wxTextCtrl TextCtrl
*/ **/
int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr, int Internal_Unit ); int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr,
int Internal_Unit );
#ifdef KICAD_NANOMETRE
struct LENGTH_UNIT_DESC
{
LENGTH_PCB m_Value;
const wxString m_Symbol;
int m_Precision;
};
extern const LENGTH_UNIT_DESC MillimetreDesc, InchDesc, MilDesc;
const LENGTH_UNIT_DESC *UnitDescription( EDA_UNITS_T aUnit );
LENGTH_PCB StringToLength( const LENGTH_UNIT_DESC *aUnit, const wxString& TextValue );
wxString LengthToString( const LENGTH_UNIT_DESC *aUnit, LENGTH_PCB aValue,
bool aAdd_unit_symbol = false );
void LengthToTextCtrl( wxTextCtrl& TextCtr, LENGTH_PCB Value );
LENGTH_PCB LengthFromTextCtrl( const wxTextCtrl& TextCtr );
/* transition macros */
#define STR_TO_LENGTH( unit, str, iu ) \
( StringToLength( UnitDescription( ( unit ) ), ( str ) ) )
#define LENGTH_TO_STR( unit, l, iu ) \
( LengthToString( UnitDescription( ( unit ) ), ( l ) ) )
#define LENGTH_TO_STR_SYM( unit, l, iu ) \
( LengthToString( UnitDescription( ( unit ) ), ( l ), true ) )
#define CTR_GET_LENGTH( ctr, iu ) \
( StringToLength( UnitDescription( g_UserUnit ), ( ctr ).GetValue() ) )
#define CTR_PUT_LENGTH( ctr, l, iu ) \
( ( ctr ).SetValue( LengthToString( UnitDescription( g_UserUnit ), ( l ) ) ) )
#else
#define STR_TO_LENGTH( unit, str, iu ) \
ReturnValueFromString( ( unit ), ( str ), ( iu ) )
#define LENGTH_TO_STR( unit, l, iu ) \
( ReturnStringFromValue( ( unit ), ( l ), ( iu ) ) )
#define LENGTH_TO_STR_SYM( unit, l, iu ) \
( ReturnStringFromValue( ( unit ), ( l ), ( iu ), true ) )
#define CTR_GET_LENGTH( ctr, iu ) \
ReturnValueFromString( g_UserUnit, ( ctr ).GetValue(), ( iu ) )
#define CTR_PUT_LENGTH( ctr, l, iu ) \
( ( ctr ).SetValue( ReturnStringFromValue( g_UserUnit, ( l ), ( iu ) ) ) )
#endif
/** /**
* Function wxStringSplit * Function wxStringSplit
* splita \a aString to a string list when split by \a aSplitter. * splits \a aString to a string list separated at \a aSplitter.
* @return the list * @return the list
* @param aString : wxString : a String text * @param aString is the text to split
* @param aSplitter : wxChar : the 'split' character * @param aSplitter is the 'split' character
*/ */
wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter ); wxArrayString* wxStringSplit( wxString txt, wxChar aSplitter );
/** /**
* Function To_User_Unit * Function To_User_Unit
...@@ -449,11 +387,12 @@ wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter ); ...@@ -449,11 +387,12 @@ wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter );
* @return the converted value, in double * @return the converted value, in double
* @param aUnit : user unit to be converted to * @param aUnit : user unit to be converted to
* @param val : double : the given value * @param val : double : the given value
* @param internal_unit_value = internal units per inch * @param internal_unit_value = internal units per inch
*/ */
double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ); double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value );
/* /**
* Return in internal units the value "val" given in inch or mm * Return in internal units the value "val" given in inch or mm
*/ */
int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ); int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value );
...@@ -465,4 +404,4 @@ int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value ); ...@@ -465,4 +404,4 @@ int From_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value );
*/ */
wxString GenDate(); wxString GenDate();
#endif // __INCLUDE__COMMON_H__ #endif // INCLUDE__COMMON_H_
This diff is collapsed.
/**
* @file lengthpcb.h
* @brief Length definitions for PCBNEW.
*/
#ifndef LENGTHPCB_H_INCLUDED
#define LENGTHPCB_H_INCLUDED 1
#ifdef KICAD_NANOMETRE
#include "length.h"
#include "limited_int.h"
/* switched type! */
typedef LENGTH< LIMITED_INT< int >, 1 > LENGTH_PCB;
typedef LENGTH< double, 1 > LENGTH_PCB_DBL;
/* Transition macros. they are used for unit conversion between
* nanometre scale and old (0.1 mil) scale */
#define PCB_LEGACY_INCH_SCALE 10000
#define PCB_LEGACY_UNIT( T ) ( LENGTH_UNITS< T >::inch() / PCB_LEGACY_INCH_SCALE )
#define TO_LEGACY_LU( x ) \
( (int) ( LENGTH_PCB( x ) / PCB_LEGACY_UNIT( LENGTH_PCB ) ) )
#define TO_LEGACY_LU_DBL( x ) \
( (double) ( LENGTH_PCB_DBL( x ) / PCB_LEGACY_UNIT( LENGTH_PCB_DBL ) ) )
#ifdef __GNUC__
#define NOT_USED __attribute__ ((unused))
#else
#define NOT_USED
#endif
static LENGTH_PCB NOT_USED from_legacy_lu( int x )
{
return x * PCB_LEGACY_UNIT( LENGTH_PCB );
}
static LENGTH_PCB NOT_USED from_legacy_lu( long x )
{
return x * PCB_LEGACY_UNIT( LENGTH_PCB );
}
static LENGTH_PCB NOT_USED from_legacy_lu( double x )
{
return LENGTH_PCB( x * PCB_LEGACY_UNIT( LENGTH_PCB_DBL ) );
}
static LENGTH_PCB_DBL NOT_USED from_legacy_lu_dbl( double x )
{
return x * LENGTH_UNITS< LENGTH_PCB_DBL >::inch() / PCB_LEGACY_INCH_SCALE;
}
#undef NOT_USED
#define FROM_LEGACY_LU( x ) ( from_legacy_lu( x ) )
#define FROM_LEGACY_LU_DBL( x ) ( from_legacy_lu_dbl( x ) )
#define ZERO_LENGTH ( LENGTH_PCB::zero() )
/* SAVE FILE macros */
#define FM_LENSV "%lf" ///< format specifier for saving
#define ARG_LENSV( x ) TO_LEGACY_LU_DBL( x ) ///< argument for saving
#else
typedef int LENGTH_PCB;
typedef double LENGTH_PCB_DBL;
/* transition macro stubs */
#define TO_LEGACY_LU( x ) ( x )
#define TO_LEGACY_LU_DBL( x ) ( double( x ) )
#define FROM_LEGACY_LU( x ) ( x )
#define FROM_LEGACY_LU_DBL( x ) ( double( x ) )
#define ZERO_LENGTH 0
/* SAVE FILE macros */
/** @TODO: after transition process this could be wrapped in some class */
#define FM_LENSV "%d"
#define ARG_LENSV( x ) ( (int)( x ) )
#endif
/* LOAD FILE macros */
#define FM_LENLD "%lf" ///< scanf format macro for loading
#define ARG_LENLD_TYPE double ///< tmp variable for length read
// they're set to flat type to help the transition process
// there would be some period while program gain ability to
// load float data but not acually save it
#define LENGTH_LOAD_TMP( x ) ( FROM_LEGACY_LU( x ) ) ///< reads tmp value from above
#define LENGTH_LOAD_STR( s ) ( FROM_LEGACY_LU( atof( s ) ) ) ///< reads string
/* used fo loading/saving config */
#define LENGTH_MAX_CONFIG ( FROM_LEGACY_LU( 393700 ) )
#endif /* def LENGTHPCB_H_INCLUDED */
/**
* @file limited_int.h
* @brief Integer class catching overflows.
*/
/* sorry if it is not styled correctly, i'll work on it further */
#ifndef LIMITED_INT_H_INCLUDED
#define LIMITED_INT_H_INCLUDED 1
#include <limits>
#include <assert.h>
#include <math.h>
template < typename T = int > class LIMITED_INT {
private:
T m_Value;
public:
LIMITED_INT( void ) : m_Value() {
}
template<typename V> LIMITED_INT( const LIMITED_INT< V >& orig )
: m_Value( orig.m_Value )
{
assert(std::numeric_limits<T>::min() <= orig.m_Value);
assert(orig.m_Value <= std::numeric_limits<T>::max());
}
template<typename V> LIMITED_INT( const double v )
: m_Value( floor(v+0.5) )
{
assert(std::numeric_limits<T>::min() <= v);
assert(v <= std::numeric_limits<T>::max());
}
LIMITED_INT( T v ): m_Value( v )
{
}
operator T( void ) const
{
return m_Value;
}
operator double( void ) const
{
return ( double )m_Value;
}
LIMITED_INT<T> & operator = ( LIMITED_INT< T > src )
{
m_Value = src.m_Value;
return *this;
}
LIMITED_INT<T> & operator = ( T src )
{
m_Value = src;
return *this;
}
/*************************/
/* comparisons and tests */
/*************************/
bool operator ! (void) const {
return !m_Value;
}
bool operator == ( const LIMITED_INT< T > &y ) const
{
return m_Value == y.m_Value;
}
bool operator == ( const T y ) const
{
return m_Value == y;
}
friend bool operator == ( const T x, const LIMITED_INT< T > &y )
{
return x == y.m_Value;
}
bool operator != ( const LIMITED_INT<T> &y ) const
{
return m_Value != y.m_Value;
}
bool operator != ( const T y ) const
{
return m_Value != y;
}
friend bool operator != ( const T x, const LIMITED_INT< T > &y )
{
return x != y.m_Value;
}
bool operator < ( const LIMITED_INT< T > &y ) const
{
return m_Value < y.m_Value;
}
bool operator < ( const T y ) const
{
return m_Value < y;
}
friend bool operator < ( const T x, const LIMITED_INT< T > &y )
{
return x < y.m_Value;
}
bool operator >= ( const LIMITED_INT< T > &y ) const
{
return m_Value >= y.m_Value;
}
bool operator >= ( const T y ) const
{
return m_Value >= y;
}
friend bool operator >= ( const T x, const LIMITED_INT<T> &y )
{
return x >= y.m_Value;
}
bool operator > ( const LIMITED_INT< T > &y ) const
{
return m_Value > y.m_Value;
}
bool operator > ( const T y ) const
{
return m_Value > y;
}
friend bool operator > ( const T x, const LIMITED_INT< T > &y )
{
return x > y.m_Value;
}
bool operator <= ( const LIMITED_INT< T > &y ) const
{
return m_Value <= y.m_Value;
}
bool operator <= ( const T y ) const
{
return m_Value <= y;
}
friend bool operator <= ( const T x, const LIMITED_INT< T > &y )
{
return x <= y.m_Value;
}
/*************************/
/* basic arithmetic */
/*************************/
LIMITED_INT< T > operator + ( const LIMITED_INT< T > &y ) const
{
assert( !( 0 < m_Value ) || y.m_Value <= std::numeric_limits< T >::max() - m_Value );
assert( !( m_Value < 0 ) || std::numeric_limits< T >::min() - m_Value <= y.m_Value );
return m_Value + y.m_Value;
}
LIMITED_INT< T > operator + ( const T y ) const
{
return *this + LIMITED_INT< T >( y );
}
friend LIMITED_INT< T > operator + ( const T x, const LIMITED_INT< T > &y )
{
return LIMITED_INT< T >( x ) + y;
}
double operator + ( const double y ) const
{
return double( m_Value ) + y;
}
friend double operator + ( const double x, const LIMITED_INT< T > &y )
{
return x + double( y.m_Value );
}
LIMITED_INT< T > operator - ( void ) const
{
assert( -std::numeric_limits< T >::max() <= m_Value );
return -m_Value;
}
LIMITED_INT< T > operator - ( const LIMITED_INT< T > &y ) const
{
assert( !( 0 < m_Value ) || m_Value - std::numeric_limits< T >::max() <= y.m_Value );
assert( !( m_Value < 0 ) || y.m_Value <= m_Value - std::numeric_limits< T >::min() );
return m_Value - y.m_Value;
}
LIMITED_INT< T > operator - ( const T y ) const
{
return *this - LIMITED_INT< T >( y );
}
friend LIMITED_INT< T > operator - ( const T x, const LIMITED_INT< T > &y )
{
return LIMITED_INT< T >( x ) - y;
}
double operator - ( const double y ) const
{
return double( m_Value ) - y;
}
friend double operator - ( const double x, const LIMITED_INT< T > &y )
{
return x - double( y.m_Value );
}
LIMITED_INT< T > operator * ( const LIMITED_INT< T > &y ) const
{
assert( !( 0 < m_Value && 0 < y.m_Value )
|| y.m_Value <= std::numeric_limits<T>::max() / m_Value );
assert( !( 0 < m_Value && y.m_Value < 0 )
|| std::numeric_limits<T>::min() / m_Value <= y.m_Value );
assert( !( m_Value < 0 && 0 < y.m_Value )
|| std::numeric_limits<T>::min() / y.m_Value <= m_Value );
assert( !( m_Value < 0 && y.m_Value < 0 )
|| std::numeric_limits<T>::max() / m_Value <= y.m_Value );
return m_Value * y.m_Value;
}
LIMITED_INT<T> operator * ( const T y) const
{
return *this * LIMITED_INT< T >( y );
}
friend LIMITED_INT< T > operator *( const T x, const LIMITED_INT< T > &y )
{
return LIMITED_INT< T >( x ) * y;
}
double operator * ( const double y ) const
{
return double( m_Value ) * y;
}
friend double operator * ( const double x, const LIMITED_INT< T > &y )
{
return x * double( y.m_Value );
}
LIMITED_INT<T> operator / ( const LIMITED_INT<T> &y ) const
{
assert( !( -1 == y.m_Value )
|| -std::numeric_limits< T >::max() <= m_Value );
return m_Value / y.m_Value;
}
LIMITED_INT<T> operator / ( const T y ) const
{
return *this / LIMITED_INT<T>(y);
}
friend LIMITED_INT< T > operator / ( const T x, const LIMITED_INT< T > &y )
{
return LIMITED_INT< T >( x ) / y;
}
double operator / ( const double y ) const
{
return double( m_Value ) / y;
}
friend double operator / ( const double x, const LIMITED_INT< T > &y )
{
return x / double( y.m_Value );
}
LIMITED_INT<T> operator % ( const LIMITED_INT<T> &y ) const
{
return m_Value % y.m_Value;
}
LIMITED_INT<T> operator % ( const T y ) const
{
return *this % LIMITED_INT<T>(y);
}
friend LIMITED_INT< T > operator % ( const T x, const LIMITED_INT< T > &y )
{
return LIMITED_INT< T >( x ) % y;
}
LIMITED_INT< T >& operator += ( const LIMITED_INT< T > &y )
{
*this = *this + y;
return *this;
}
LIMITED_INT< T >& operator += ( const T y )
{
*this = *this + y;
return *this;
}
LIMITED_INT< T >& operator ++ ( void )
{
*this = *this + 1;
return *this;
}
LIMITED_INT< T >& operator -= ( const LIMITED_INT< T > &y )
{
*this = *this - y;
return *this;
}
LIMITED_INT< T >& operator -= ( const T y )
{
*this = *this - y;
return *this;
}
LIMITED_INT< T >& operator -- ( void )
{
*this = *this - 1;
return *this;
}
LIMITED_INT< T >& operator *= ( const LIMITED_INT< T > &y )
{
*this = *this * y;
return *this;
}
LIMITED_INT< T >& operator *= ( const T y )
{
*this = *this * y;
return *this;
}
LIMITED_INT< T >& operator /= ( const LIMITED_INT< T > &y )
{
*this = *this / y;
return *this;
}
LIMITED_INT< T >& operator /= ( const T y )
{
*this = *this / y;
return *this;
}
};
#endif /* def LIMITED_INT_H_INCLUDED*/
...@@ -65,8 +65,7 @@ static inline const wxChar* GetChars( const wxString& s ) ...@@ -65,8 +65,7 @@ static inline const wxChar* GetChars( const wxString& s )
#endif #endif
#ifndef ABS #ifndef ABS
#define ABS( y ) ( MAX( ( y ), ( -y ) ) ) #define ABS( y ) ( (y) >= 0 ? (y) : ( -(y) ) )
// dirty trick: now this should work with LENGTH<> too
#endif #endif
#define NEGATE( x ) (x = -x) #define NEGATE( x ) (x = -x)
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include "wx/fileconf.h" #include "wx/fileconf.h"
#include <boost/ptr_container/ptr_vector.hpp> #include <boost/ptr_container/ptr_vector.hpp>
#include "lengthpcb.h"
/** Type of parameter in the configuration file */ /** Type of parameter in the configuration file */
enum paramcfg_id { enum paramcfg_id {
...@@ -86,35 +85,6 @@ public: PARAM_CFG_INT( const wxChar* ident, int* ptparam, ...@@ -86,35 +85,6 @@ public: PARAM_CFG_INT( const wxChar* ident, int* ptparam,
virtual void SaveParam( wxConfigBase* aConfig ); virtual void SaveParam( wxConfigBase* aConfig );
}; };
/**
* Configuration parameter - Length PCB Class
*
*/
class PARAM_CFG_LENGTH_PCB : public PARAM_CFG_BASE
{
public:
LENGTH_PCB * m_Pt_param; ///< Pointer to the parameter value
LENGTH_PCB m_Min, m_Max; ///< Minimum and maximum values of the param type
LENGTH_PCB m_Default; ///< The default value of the parameter
public:
PARAM_CFG_LENGTH_PCB( const wxChar* ident, /// @TODO: remove hardcoded constants
LENGTH_PCB* ptparam,
LENGTH_PCB default_val = ZERO_LENGTH,
LENGTH_PCB min = -LENGTH_MAX_CONFIG,
LENGTH_PCB max = LENGTH_MAX_CONFIG,
const wxChar* group = NULL );
PARAM_CFG_LENGTH_PCB( bool Insetup,
const wxChar* ident,
LENGTH_PCB* ptparam,
LENGTH_PCB default_val = ZERO_LENGTH,
LENGTH_PCB min = -LENGTH_MAX_CONFIG,
LENGTH_PCB max = LENGTH_MAX_CONFIG,
const wxChar* group = NULL );
virtual void ReadParam( wxConfigBase* aConfig );
virtual void SaveParam( wxConfigBase* aConfig );
};
/** /**
* Configuration parameter - SetColor Class * Configuration parameter - SetColor Class
......
/**
* @file vectorpcb.h
* @brief Planar vector definitions for PCBNEW.
*/
#ifndef VECTORPCB_H_INCLUDED
#define VECTORPCB_H_INCLUDED 1
/// @TODO: nice template and refiling for it
class VECTOR_PCB
{
public:
LENGTH_PCB data[2];
/** A vector from pair of coords. Constructor is avoided in favor to POD-like object.
*/
static VECTOR_PCB fromXY( LENGTH_PCB x, LENGTH_PCB y )
{
VECTOR_PCB z = { { x, y } };
return z;
}
/** @defgroup vector-elements Access individual attributes
* @{
*/
LENGTH_PCB &operator[]( int i )
{
return data[i];
}
const LENGTH_PCB &operator[]( int i ) const
{
return data[i];
}
/** @} */
/** @defgroup vector-cartesian Access to cartesian coordinates
* Definitions follow the agreement:
* - methods are named exactly as attributes, thus setter and getter have same name;
* - all methods (setters and getterrs) return actual attribute value;
* - method without argument gets the attribute;
* - method with argument sets it to argument value.
* These methods different than operator[]
* because vector actually may have any storage layout,
* so cartesian coords may be calculated rahter than actually stored.
* E. g. homogeneous coordinates is likely to be used in perspective.
* @{
*/
const LENGTH_PCB x() const
{
return data[0];
}
const LENGTH_PCB x( LENGTH_PCB nx )
{
return data[0] = nx;
}
const LENGTH_PCB y() const
{
return data[1];
}
const LENGTH_PCB y( LENGTH_PCB ny )
{
return data[1] = ny;
}
/** @} */
/** @defgroup vector-comparisons Compare vectors
* @{
*/
bool operator == ( const VECTOR_PCB &b ) const
{
return data[0] == b.data[0] && data[1] == b.data[1];
}
bool operator != ( const VECTOR_PCB &b ) const
{
return !(*this == b);
}
/** @} */
/** @defgroup vector-arithmetic Arithmetic operations on vectors
* @{
*/
VECTOR_PCB & operator -= ( const VECTOR_PCB &b )
{
data[0] -= b.data[0];
data[1] -= b.data[1];
return *this;
}
VECTOR_PCB operator - ( const VECTOR_PCB &b ) const
{
VECTOR_PCB z = *this;
z -= b;
return z;
}
VECTOR_PCB & operator += ( const VECTOR_PCB &b )
{
data[0] += b.data[0];
data[1] += b.data[1];
return *this;
}
VECTOR_PCB operator + ( VECTOR_PCB b ) const
{
VECTOR_PCB z = *this;
z += b;
return z;
}
VECTOR_PCB & operator *= ( int b )
{
data[0] *= b;
data[1] *= b;
return *this;
}
VECTOR_PCB operator * ( int b ) const
{
VECTOR_PCB z = *this;
z *= b;
return z;
}
VECTOR_PCB & operator /= ( int b )
{
data[0] /= b;
data[1] /= b;
return *this;
}
VECTOR_PCB operator / ( int b ) const
{
VECTOR_PCB z = *this;
z /= b;
return z;
}
/** @} */
};
#define TO_LEGACY_LU_WXP( p ) ( wxPoint( \
TO_LEGACY_LU( ( p )[0] ), \
TO_LEGACY_LU( ( p )[1] ) ) )
#define TO_LEGACY_LU_WXS( p ) ( wxSize( \
TO_LEGACY_LU( ( p )[0] ), \
TO_LEGACY_LU( ( p )[1] ) ) )
#define FROM_LEGACY_LU_VEC( p ) ( VECTOR_PCB::fromXY( \
FROM_LEGACY_LU( ( p ).x ), \
FROM_LEGACY_LU( ( p ).y ) ) )
#endif /* def VECTORPCB_H_INCLUDED */
...@@ -460,7 +460,7 @@ void MoveMarkedItems( MODULE* module, wxPoint offset ) ...@@ -460,7 +460,7 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
continue; continue;
pad->SetPosition( pad->GetPosition() + offset ); pad->SetPosition( pad->GetPosition() + offset );
pad->m_Pos0 += FROM_LEGACY_LU_VEC( offset ); pad->m_Pos0 += offset;
} }
item = module->m_Drawings; item = module->m_Drawings;
...@@ -538,7 +538,7 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset ) ...@@ -538,7 +538,7 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
{ {
#define SETMIRROR( z ) (z) -= offset.x; (z) = -(z); (z) += offset.x; #define SETMIRROR( z ) (z) -= offset.x; (z) = -(z); (z) += offset.x;
EDA_ITEM* item; EDA_ITEM* item;
wxPoint tmp;
if( module == NULL ) if( module == NULL )
return; return;
...@@ -549,12 +549,10 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset ) ...@@ -549,12 +549,10 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
if( pad->m_Selected == 0 ) if( pad->m_Selected == 0 )
continue; continue;
tmp = pad->GetPosition(); SETMIRROR( pad->GetPosition().x );
SETMIRROR( tmp.x ); pad->m_Pos0.x = pad->GetPosition().x;
pad->SetPosition( tmp ); NEGATE( pad->m_Offset.x );
pad->m_Pos0.x( FROM_LEGACY_LU( pad->GetPosition().x ) ); NEGATE( pad->m_DeltaSize.x );
pad->m_Offset.x( -pad->m_Offset.x() );
pad->m_DeltaSize.x( -pad->m_DeltaSize.x() );
pad->m_Orient = 1800 - pad->m_Orient; pad->m_Orient = 1800 - pad->m_Orient;
NORMALIZE_ANGLE_POS( pad->m_Orient ); NORMALIZE_ANGLE_POS( pad->m_Orient );
} }
...@@ -580,9 +578,7 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset ) ...@@ -580,9 +578,7 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
break; break;
case PCB_MODULE_TEXT_T: case PCB_MODULE_TEXT_T:
tmp = ( (TEXTE_MODULE*) item )->GetPosition(); SETMIRROR( ( (TEXTE_MODULE*) item )->GetPosition().x );
SETMIRROR( tmp.x );
( (TEXTE_MODULE*) item )->SetPosition( tmp );
( (TEXTE_MODULE*) item )->m_Pos0.x = ( (TEXTE_MODULE*) item )->GetPosition().x; ( (TEXTE_MODULE*) item )->m_Pos0.x = ( (TEXTE_MODULE*) item )->GetPosition().x;
break; break;
...@@ -612,10 +608,9 @@ void RotateMarkedItems( MODULE* module, wxPoint offset ) ...@@ -612,10 +608,9 @@ void RotateMarkedItems( MODULE* module, wxPoint offset )
{ {
if( pad->m_Selected == 0 ) if( pad->m_Selected == 0 )
continue; continue;
wxPoint pos = pad->GetPosition();
ROTATE( pos ); ROTATE( pad->GetPosition() );
pad->SetPosition( pos ); pad->m_Pos0 = pad->GetPosition();
pad->m_Pos0 = FROM_LEGACY_LU_VEC( pad->GetPosition() );
pad->m_Orient += 900; pad->m_Orient += 900;
NORMALIZE_ANGLE_POS( pad->m_Orient ); NORMALIZE_ANGLE_POS( pad->m_Orient );
} }
...@@ -637,11 +632,7 @@ void RotateMarkedItems( MODULE* module, wxPoint offset ) ...@@ -637,11 +632,7 @@ void RotateMarkedItems( MODULE* module, wxPoint offset )
break; break;
case PCB_MODULE_TEXT_T: case PCB_MODULE_TEXT_T:
{ ROTATE( ( (TEXTE_MODULE*) item )->GetPosition() );
wxPoint pos = ( (TEXTE_MODULE*) item )->m_Pos;
ROTATE( pos );
( (TEXTE_MODULE*) item )->m_Pos = pos;
}
( (TEXTE_MODULE*) item )->m_Pos0 = ( (TEXTE_MODULE*) item )->GetPosition(); ( (TEXTE_MODULE*) item )->m_Pos0 = ( (TEXTE_MODULE*) item )->GetPosition();
( (TEXTE_MODULE*) item )->m_Orient += 900; ( (TEXTE_MODULE*) item )->m_Orient += 900;
break; break;
......
...@@ -328,13 +328,13 @@ void D_PAD:: TransformShapeWithClearanceToPolygon( std:: vector < CPolyPt>& aCor ...@@ -328,13 +328,13 @@ void D_PAD:: TransformShapeWithClearanceToPolygon( std:: vector < CPolyPt>& aCor
{ {
wxPoint corner_position; wxPoint corner_position;
int ii, angle; int ii, angle;
int dx = TO_LEGACY_LU( m_Size.x() / 2 ) + aClearanceValue; int dx = (m_Size.x / 2) + aClearanceValue;
int dy = TO_LEGACY_LU( m_Size.y() / 2 ) + aClearanceValue; int dy = (m_Size.y / 2) + aClearanceValue;
int delta = 3600 / aCircleToSegmentsCount; // rot angle in 0.1 degree int delta = 3600 / aCircleToSegmentsCount; // rot angle in 0.1 degree
wxPoint PadShapePos = ReturnShapePos(); /* Note: for pad having a shape offset, wxPoint PadShapePos = ReturnShapePos(); /* Note: for pad having a shape offset,
* the pad position is NOT the shape position */ * the pad position is NOT the shape position */
wxSize psize = TO_LEGACY_LU_WXS( m_Size ); /* pad size unsed in RECT and TRAPEZOIDAL pads wxSize psize = m_Size; /* pad size unsed in RECT and TRAPEZOIDAL pads
* trapezoidal pads are considered as rect * trapezoidal pads are considered as rect
* pad shape having they boudary box size */ * pad shape having they boudary box size */
...@@ -437,8 +437,8 @@ void D_PAD:: TransformShapeWithClearanceToPolygon( std:: vector < CPolyPt>& aCor ...@@ -437,8 +437,8 @@ void D_PAD:: TransformShapeWithClearanceToPolygon( std:: vector < CPolyPt>& aCor
default: default:
case PAD_TRAPEZOID: case PAD_TRAPEZOID:
psize.x += TO_LEGACY_LU( abs( m_DeltaSize.y() ) ); psize.x += ABS( m_DeltaSize.y );
psize.y += TO_LEGACY_LU( abs( m_DeltaSize.x() ) ); psize.y += ABS( m_DeltaSize.x );
// fall through // fall through
case PAD_RECT: case PAD_RECT:
...@@ -572,8 +572,8 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer, ...@@ -572,8 +572,8 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer,
wxPoint PadShapePos = aPad.ReturnShapePos(); /* Note: for pad having a shape offset, wxPoint PadShapePos = aPad.ReturnShapePos(); /* Note: for pad having a shape offset,
* the pad position is NOT the shape position */ * the pad position is NOT the shape position */
wxSize copper_thickness; wxSize copper_thickness;
int dx = TO_LEGACY_LU( aPad.m_Size.x() / 2 ); int dx = aPad.m_Size.x / 2;
int dy = TO_LEGACY_LU( aPad.m_Size.y() / 2 ); int dy = aPad.m_Size.y / 2;
int delta = 3600 / aCircleToSegmentsCount; // rot angle in 0.1 degree int delta = 3600 / aCircleToSegmentsCount; // rot angle in 0.1 degree
...@@ -684,8 +684,8 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer, ...@@ -684,8 +684,8 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer,
// Oval pad support along the lines of round and rectangular pads // Oval pad support along the lines of round and rectangular pads
std::vector <wxPoint> corners_buffer; // Polygon buffer as vector std::vector <wxPoint> corners_buffer; // Polygon buffer as vector
int dx = TO_LEGACY_LU( aPad.m_Size.x() / 2 ) + aThermalGap; // Cutout radius x int dx = (aPad.m_Size.x / 2) + aThermalGap; // Cutout radius x
int dy = TO_LEGACY_LU( aPad.m_Size.y() / 2 ) + aThermalGap; // Cutout radius y int dy = (aPad.m_Size.y / 2) + aThermalGap; // Cutout radius y
wxPoint shape_offset; wxPoint shape_offset;
...@@ -839,8 +839,8 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer, ...@@ -839,8 +839,8 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer,
std::vector <wxPoint> corners_buffer; // Polygon buffer as vector std::vector <wxPoint> corners_buffer; // Polygon buffer as vector
int dx = TO_LEGACY_LU( aPad.m_Size.x() / 2 ) + aThermalGap; // Cutout radius x int dx = (aPad.m_Size.x / 2) + aThermalGap; // Cutout radius x
int dy = TO_LEGACY_LU( aPad.m_Size.y() / 2 ) + aThermalGap; // Cutout radius y int dy = (aPad.m_Size.y / 2) + aThermalGap; // Cutout radius y
// The first point of polygon buffer is left lower corner, second the crosspoint of // The first point of polygon buffer is left lower corner, second the crosspoint of
// thermal spoke sides, the third is upper right corner and the rest are rounding // thermal spoke sides, the third is upper right corner and the rest are rounding
...@@ -861,7 +861,7 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer, ...@@ -861,7 +861,7 @@ void CreateThermalReliefPadPolygon( std::vector<CPolyPt>& aCornerBuffer,
RotatePoint( &corner_position, 1800 / aCircleToSegmentsCount ); // Start at half increment offset RotatePoint( &corner_position, 1800 / aCircleToSegmentsCount ); // Start at half increment offset
angle_pg = i * delta; angle_pg = i * delta;
RotatePoint( &corner_position, angle_pg ); // Rounding vector rotation RotatePoint( &corner_position, angle_pg ); // Rounding vector rotation
corner_position -= TO_LEGACY_LU_WXS( aPad.m_Size / 2 ); // Rounding vector + Pad corner offset corner_position -= aPad.m_Size / 2; // Rounding vector + Pad corner offset
corners_buffer.push_back( wxPoint( corner_position.x, corner_position.y ) ); corners_buffer.push_back( wxPoint( corner_position.x, corner_position.y ) );
} }
......
...@@ -20,8 +20,6 @@ ...@@ -20,8 +20,6 @@
#include "class_zone.h" #include "class_zone.h"
#include "class_marker_pcb.h" #include "class_marker_pcb.h"
#include "lengthpcb.h"
/* This is an odd place for this, but CvPcb won't link if it is /* This is an odd place for this, but CvPcb won't link if it is
* in class_board_item.cpp like I first tried it. * in class_board_item.cpp like I first tried it.
...@@ -239,22 +237,21 @@ bool BOARD::SetCurrentNetClass( const wxString& aNetClassName ) ...@@ -239,22 +237,21 @@ bool BOARD::SetCurrentNetClass( const wxString& aNetClassName )
if( m_TrackWidthList.size() == 0 ) if( m_TrackWidthList.size() == 0 )
{ {
lists_sizes_modified = true; lists_sizes_modified = true;
m_TrackWidthList.push_back( ZERO_LENGTH ); m_TrackWidthList.push_back( 0 );
} }
/* note the m_ViasDimensionsList[0] and m_TrackWidthList[0] values /* note the m_ViasDimensionsList[0] and m_TrackWidthList[0] values
* are always the Netclass values * are always the Netclass values
*/ */
if( TO_LEGACY_LU( m_ViasDimensionsList[0].m_Diameter ) != netClass->GetViaDiameter() ) if( m_ViasDimensionsList[0].m_Diameter != netClass->GetViaDiameter() )
lists_sizes_modified = true; lists_sizes_modified = true;
m_ViasDimensionsList[0].m_Diameter = FROM_LEGACY_LU( netClass->GetViaDiameter() ); m_ViasDimensionsList[0].m_Diameter = netClass->GetViaDiameter();
/* NOTE: equality comparison on real values is bad... */ if( m_TrackWidthList[0] != netClass->GetTrackWidth() )
if( TO_LEGACY_LU( m_TrackWidthList[0] ) != netClass->GetTrackWidth() )
lists_sizes_modified = true; lists_sizes_modified = true;
m_TrackWidthList[0] = FROM_LEGACY_LU( netClass->GetTrackWidth() ); m_TrackWidthList[0] = netClass->GetTrackWidth();
if( m_ViaSizeSelector >= m_ViasDimensionsList.size() ) if( m_ViaSizeSelector >= m_ViasDimensionsList.size() )
m_ViaSizeSelector = m_ViasDimensionsList.size(); m_ViaSizeSelector = m_ViasDimensionsList.size();
...@@ -647,14 +644,14 @@ bool BOARD::IsModuleLayerVisible( int layer ) ...@@ -647,14 +644,14 @@ bool BOARD::IsModuleLayerVisible( int layer )
const wxPoint BOARD::GetPosition() const wxPoint& BOARD::GetPosition()
{ {
return wxPoint ( 0, 0 ); static wxPoint dummy( 0, 0 );
}
void BOARD::SetPosition( const wxPoint& pos ) { return dummy; // a reference
} }
void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl ) void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
{ {
if( aBoardItem == NULL ) if( aBoardItem == NULL )
...@@ -1668,7 +1665,7 @@ D_PAD* BOARD::GetPadFast( const wxPoint& aPosition, int aLayerMask ) ...@@ -1668,7 +1665,7 @@ D_PAD* BOARD::GetPadFast( const wxPoint& aPosition, int aLayerMask )
{ {
D_PAD* pad = m_NetInfo->GetPad(i); D_PAD* pad = m_NetInfo->GetPad(i);
if( TO_LEGACY_LU_WXP( pad->m_Pos ) != aPosition ) if( pad->m_Pos != aPosition )
continue; continue;
/* Pad found, it must be on the correct layer */ /* Pad found, it must be on the correct layer */
...@@ -1699,7 +1696,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1699,7 +1696,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
D_PAD* pad = aPadList[idx]; D_PAD* pad = aPadList[idx];
if( TO_LEGACY_LU_WXP( pad->m_Pos ) == aPosition ) // candidate found if( pad->m_Pos == aPosition ) // candidate found
{ {
// The pad must match the layer mask: // The pad must match the layer mask:
if( (aLayerMask & pad->m_layerMask) != 0 ) if( (aLayerMask & pad->m_layerMask) != 0 )
...@@ -1712,7 +1709,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1712,7 +1709,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
for( int ii = idx+1; ii <= idxmax; ii++ ) for( int ii = idx+1; ii <= idxmax; ii++ )
{ {
pad = aPadList[ii]; pad = aPadList[ii];
if( TO_LEGACY_LU_WXP( pad->m_Pos ) != aPosition ) if( pad->m_Pos != aPosition )
break; break;
if( (aLayerMask & pad->m_layerMask) != 0 ) if( (aLayerMask & pad->m_layerMask) != 0 )
return pad; return pad;
...@@ -1721,7 +1718,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1721,7 +1718,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
for( int ii = idx-1 ;ii >=0; ii-- ) for( int ii = idx-1 ;ii >=0; ii-- )
{ {
pad = aPadList[ii]; pad = aPadList[ii];
if( TO_LEGACY_LU_WXP( pad->m_Pos ) != aPosition ) if( pad->m_Pos != aPosition )
break; break;
if( (aLayerMask & pad->m_layerMask) != 0 ) if( (aLayerMask & pad->m_layerMask) != 0 )
return pad; return pad;
...@@ -1731,9 +1728,9 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1731,9 +1728,9 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
return 0; return 0;
} }
if( TO_LEGACY_LU( pad->m_Pos.x() ) == aPosition.x ) // Must search considering Y coordinate if( pad->m_Pos.x == aPosition.x ) // Must search considering Y coordinate
{ {
if( TO_LEGACY_LU( pad->m_Pos.y() ) < aPosition.y ) // Must search after this item if(pad->m_Pos.y < aPosition.y) // Must search after this item
{ {
idx += delta; idx += delta;
if( idx > idxmax ) if( idx > idxmax )
...@@ -1746,7 +1743,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1746,7 +1743,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
idx = 0; idx = 0;
} }
} }
else if( TO_LEGACY_LU( pad->m_Pos.x() ) < aPosition.x ) // Must search after this item else if( pad->m_Pos.x < aPosition.x ) // Must search after this item
{ {
idx += delta; idx += delta;
if( idx > idxmax ) if( idx > idxmax )
...@@ -1770,9 +1767,9 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1770,9 +1767,9 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
*/ */
static bool sortPadsByXthenYCoord( D_PAD* const & ref, D_PAD* const & comp ) static bool sortPadsByXthenYCoord( D_PAD* const & ref, D_PAD* const & comp )
{ {
if( ref->m_Pos.x() == comp->m_Pos.x() ) if( ref->m_Pos.x == comp->m_Pos.x )
return ref->m_Pos.y() < comp->m_Pos.y(); return ref->m_Pos.y < comp->m_Pos.y;
return ref->m_Pos.x() < comp->m_Pos.x(); return ref->m_Pos.x < comp->m_Pos.x;
} }
...@@ -2003,13 +2000,13 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, ...@@ -2003,13 +2000,13 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace,
if( track->GetState( BEGIN_ONPAD ) ) if( track->GetState( BEGIN_ONPAD ) )
{ {
D_PAD * pad = (D_PAD *) track->start; D_PAD * pad = (D_PAD *) track->start;
lenDie += TO_LEGACY_LU_DBL( pad->m_LengthDie ); lenDie += (double) pad->m_LengthDie;
} }
if( track->GetState( END_ONPAD ) ) if( track->GetState( END_ONPAD ) )
{ {
D_PAD * pad = (D_PAD *) track->end; D_PAD * pad = (D_PAD *) track->end;
lenDie += TO_LEGACY_LU_DBL( pad->m_LengthDie ); lenDie += (double) pad->m_LengthDie;
} }
} }
} }
...@@ -2033,13 +2030,13 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, ...@@ -2033,13 +2030,13 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace,
if( track->GetState( BEGIN_ONPAD ) ) if( track->GetState( BEGIN_ONPAD ) )
{ {
D_PAD * pad = (D_PAD *) track->start; D_PAD * pad = (D_PAD *) track->start;
lenDie += TO_LEGACY_LU_DBL( pad->m_LengthDie ); lenDie += (double) pad->m_LengthDie;
} }
if( track->GetState( END_ONPAD ) ) if( track->GetState( END_ONPAD ) )
{ {
D_PAD * pad = (D_PAD *) track->end; D_PAD * pad = (D_PAD *) track->end;
lenDie += TO_LEGACY_LU_DBL( pad->m_LengthDie ); lenDie += (double) pad->m_LengthDie;
} }
} }
} }
......
...@@ -9,14 +9,12 @@ ...@@ -9,14 +9,12 @@
#include "dlist.h" #include "dlist.h"
#include "lengthpcb.h"
#include "layers_id_colors_and_visibility.h" #include "layers_id_colors_and_visibility.h"
#include "class_netinfo.h" #include "class_netinfo.h"
#include "class_pad.h" #include "class_pad.h"
#include "class_colors_design_settings.h" #include "class_colors_design_settings.h"
#include "class_board_design_settings.h" #include "class_board_design_settings.h"
#include "class_via_dimension.h"
class PCB_BASE_FRAME; class PCB_BASE_FRAME;
class PCB_EDIT_FRAME; class PCB_EDIT_FRAME;
...@@ -82,6 +80,35 @@ struct LAYER ...@@ -82,6 +80,35 @@ struct LAYER
}; };
/** a small helper class to handle a stock of specific vias diameter and drill pair
* in the BOARD class
*/
class VIA_DIMENSION
{
public:
int m_Diameter; // <= 0 means use Netclass via diameter
int m_Drill; // <= 0 means use Netclass via drill
VIA_DIMENSION()
{
m_Diameter = 0; m_Drill = 0;
}
bool operator ==( const VIA_DIMENSION& other ) const
{
return (m_Diameter == other.m_Diameter) && (m_Drill == other.m_Drill);
}
bool operator <( const VIA_DIMENSION& other ) const
{
if( m_Diameter != other.m_Diameter )
return m_Diameter < other.m_Diameter;
return m_Drill < other.m_Drill;
}
};
// Helper class to handle high light nets // Helper class to handle high light nets
...@@ -179,7 +206,7 @@ public: ...@@ -179,7 +206,7 @@ public:
// The first value is the current netclass via size // The first value is the current netclass via size
// tracks widths (max count = HISTORY_MAX_COUNT) // tracks widths (max count = HISTORY_MAX_COUNT)
// The first value is the current netclass track width // The first value is the current netclass track width
std::vector <LENGTH_PCB> m_TrackWidthList; std::vector <int> m_TrackWidthList;
/// Index for m_ViaSizeList to select the value. /// Index for m_ViaSizeList to select the value.
/// 0 is the index selection of the default value Netclass /// 0 is the index selection of the default value Netclass
...@@ -226,9 +253,7 @@ public: ...@@ -226,9 +253,7 @@ public:
* is a dummy. * is a dummy.
* @return const wxPoint& of (0,0) * @return const wxPoint& of (0,0)
*/ */
const wxPoint GetPosition() const; wxPoint& GetPosition();
void SetPosition( const wxPoint& pos );
/** /**
* Function Add * Function Add
...@@ -743,7 +768,7 @@ public: ...@@ -743,7 +768,7 @@ public:
*/ */
int GetCurrentTrackWidth() int GetCurrentTrackWidth()
{ {
return TO_LEGACY_LU( m_TrackWidthList[m_TrackWidthSelector] ); return m_TrackWidthList[m_TrackWidthSelector];
} }
...@@ -755,7 +780,7 @@ public: ...@@ -755,7 +780,7 @@ public:
*/ */
int GetCurrentViaSize() int GetCurrentViaSize()
{ {
return TO_LEGACY_LU( m_ViasDimensionsList[m_ViaSizeSelector].m_Diameter ); return m_ViasDimensionsList[m_ViaSizeSelector].m_Diameter;
} }
...@@ -767,8 +792,8 @@ public: ...@@ -767,8 +792,8 @@ public:
*/ */
int GetCurrentViaDrill() int GetCurrentViaDrill()
{ {
int drill = TO_LEGACY_LU( m_ViasDimensionsList[m_ViaSizeSelector].m_Drill ); return m_ViasDimensionsList[m_ViaSizeSelector].m_Drill > 0 ?
return drill > 0 ? drill : -1; m_ViasDimensionsList[m_ViaSizeSelector].m_Drill : -1;
} }
......
...@@ -32,13 +32,11 @@ BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS() ...@@ -32,13 +32,11 @@ BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS()
m_EdgeSegmentWidth = 100; // current graphic line width (EDGE layer only) m_EdgeSegmentWidth = 100; // current graphic line width (EDGE layer only)
m_PcbTextWidth = 100; // current Pcb (not module) Text width m_PcbTextWidth = 100; // current Pcb (not module) Text width
m_PcbTextSize = wxSize( 500, 500 ); // current Pcb (not module) Text size m_PcbTextSize = wxSize( 500, 500 ); // current Pcb (not module) Text size
m_TrackMinWidth = FROM_LEGACY_LU( 80 ); // track min value for width ((min copper size value m_TrackMinWidth = 80; // track min value for width ((min copper size value
m_MinVia = VIA_DIMENSION( FROM_LEGACY_LU( 350 ), FROM_LEGACY_LU( 200 ) ); m_ViasMinSize = 350; // vias (not micro vias) min diameter
m_MinMicroVia = VIA_DIMENSION( FROM_LEGACY_LU( 200 ), FROM_LEGACY_LU( 50 ) ); m_ViasMinDrill = 200; // vias (not micro vias) min drill diameter
//m_ViasMinSize = FROM_LEGACY_LU( 350 ); // vias (not micro vias) min diameter m_MicroViasMinSize = 200; // micro vias (not vias) min diameter
//m_ViasMinDrill = FROM_LEGACY_LU( 200 ); // vias (not micro vias) min drill diameter m_MicroViasMinDrill = 50; // micro vias (not vias) min drill diameter
//m_MicroViasMinSize = FROM_LEGACY_LU( 200 ); // micro vias (not vias) min diameter
//m_MicroViasMinDrill = FROM_LEGACY_LU( 50 ); // micro vias (not vias) min drill diameter
// Global mask margins: // Global mask margins:
m_SolderMaskMargin = 150; // Solder mask margin m_SolderMaskMargin = 150; // Solder mask margin
......
...@@ -37,15 +37,11 @@ public: ...@@ -37,15 +37,11 @@ public:
DIMENSION( BOARD_ITEM* aParent ); DIMENSION( BOARD_ITEM* aParent );
~DIMENSION(); ~DIMENSION();
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& pos ) {
m_Pos = pos;
}
/** /**
* Function SetLayer * Function SetLayer
* sets the layer this item is on. * sets the layer this item is on.
......
...@@ -44,17 +44,13 @@ public: ...@@ -44,17 +44,13 @@ public:
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* Required by pure virtual BOARD_ITEM::GetPosition() * Required by pure virtual BOARD_ITEM::GetPosition()
* @return const wxPoint - The position of this object. * @return const wxPoint& - The position of this object.
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Start; return m_Start;
} }
void SetPosition( const wxPoint& pos ) {
m_Start = pos;
}
/** /**
* Function GetStart * Function GetStart
* returns the starting point of the graphic * returns the starting point of the graphic
......
...@@ -81,14 +81,11 @@ public: ...@@ -81,14 +81,11 @@ public:
* Function GetPosition * Function GetPosition
* returns the position of this MARKER_PCB. * returns the position of this MARKER_PCB.
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Pos; return (wxPoint&) m_Pos;
} }
void SetPosition( const wxPoint& pos ) {
m_Pos = pos;
}
/** /**
* Function HitTest * Function HitTest
......
...@@ -30,14 +30,11 @@ public: ...@@ -30,14 +30,11 @@ public:
PCB_TARGET* Next() const { return (PCB_TARGET*) Pnext; } PCB_TARGET* Next() const { return (PCB_TARGET*) Pnext; }
PCB_TARGET* Back() const { return (PCB_TARGET*) Pnext; } PCB_TARGET* Back() const { return (PCB_TARGET*) Pnext; }
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& pos ) {
m_Pos = pos;
}
/** /**
* Function Move * Function Move
......
...@@ -534,10 +534,9 @@ int MODULE::ReadDescr( LINE_READER* aReader ) ...@@ -534,10 +534,9 @@ int MODULE::ReadDescr( LINE_READER* aReader )
{ {
D_PAD* pad = new D_PAD( this ); D_PAD* pad = new D_PAD( this );
pad->ReadDescr( aReader ); pad->ReadDescr( aReader );
wxPoint pos = TO_LEGACY_LU_WXP( pad->m_Pos ); RotatePoint( &pad->m_Pos, m_Orient );
RotatePoint( &pos, m_Orient ); pad->m_Pos.x += m_Pos.x;
pad->m_Pos = FROM_LEGACY_LU_VEC( pos ); pad->m_Pos.y += m_Pos.y;
pad->m_Pos += FROM_LEGACY_LU_VEC( m_Pos );
m_Pads.PushBack( pad ); m_Pads.PushBack( pad );
continue; continue;
......
...@@ -135,9 +135,9 @@ public: ...@@ -135,9 +135,9 @@ public:
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* Required by pure virtual BOARD_ITEM::GetPosition() * Required by pure virtual BOARD_ITEM::GetPosition()
* @return const wxPoint - The position of this object. * @return const wxPoint& - The position of this object.
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos;
} }
......
...@@ -183,24 +183,12 @@ void MODULE::Flip(const wxPoint& aCentre ) ...@@ -183,24 +183,12 @@ void MODULE::Flip(const wxPoint& aCentre )
for( ; pt_pad != NULL; pt_pad = pt_pad->Next() ) for( ; pt_pad != NULL; pt_pad = pt_pad->Next() )
{ {
LENGTH_PCB tmpy = pt_pad->m_Pos.y(); pt_pad->m_Pos.y -= m_Pos.y;
tmpy -= FROM_LEGACY_LU( m_Pos.y ); pt_pad->m_Pos.y = -pt_pad->m_Pos.y;
tmpy = -tmpy; pt_pad->m_Pos.y += m_Pos.y;
tmpy += FROM_LEGACY_LU( m_Pos.y ); NEGATE( pt_pad->m_Pos0.y );
pt_pad->m_Pos.y( tmpy ); NEGATE( pt_pad->m_Offset.y );
NEGATE( pt_pad->m_DeltaSize.y );
tmpy = pt_pad->m_Pos0.y();
NEGATE( tmpy );
pt_pad->m_Pos0.y( tmpy );
tmpy = pt_pad->m_Offset.y();
NEGATE( tmpy );
pt_pad->m_Offset.y( tmpy );
pt_pad->m_DeltaSize.y();
NEGATE( tmpy );
pt_pad->m_DeltaSize.y( tmpy );
NEGATE_AND_NORMALIZE_ANGLE_POS( pt_pad->m_Orient ); NEGATE_AND_NORMALIZE_ANGLE_POS( pt_pad->m_Orient );
/* flip pads layers*/ /* flip pads layers*/
...@@ -320,7 +308,7 @@ void MODULE::SetPosition( const wxPoint& newpos ) ...@@ -320,7 +308,7 @@ void MODULE::SetPosition( const wxPoint& newpos )
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() ) for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
{ {
pad->m_Pos += FROM_LEGACY_LU_VEC( delta ); pad->m_Pos += delta;
} }
EDA_ITEM* PtStruct = m_Drawings; EDA_ITEM* PtStruct = m_Drawings;
...@@ -364,15 +352,15 @@ void MODULE::SetOrientation( int newangle ) ...@@ -364,15 +352,15 @@ void MODULE::SetOrientation( int newangle )
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() ) for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
{ {
px = TO_LEGACY_LU( pad->m_Pos0.x() ); px = pad->m_Pos0.x;
py = TO_LEGACY_LU( pad->m_Pos0.y() ); py = pad->m_Pos0.y;
pad->m_Orient += newangle; /* change m_Orientation */ pad->m_Orient += newangle; /* change m_Orientation */
NORMALIZE_ANGLE_POS( pad->m_Orient ); NORMALIZE_ANGLE_POS( pad->m_Orient );
RotatePoint( &px, &py, m_Orient ); RotatePoint( &px, &py, m_Orient );
pad->m_Pos.x( FROM_LEGACY_LU( m_Pos.x + px ) ); pad->m_Pos.x = m_Pos.x + px;
pad->m_Pos.y( FROM_LEGACY_LU( m_Pos.y + py ) ); pad->m_Pos.y = m_Pos.y + py;
} }
/* Update of the reference and value. */ /* Update of the reference and value. */
......
...@@ -42,8 +42,8 @@ extern BOARD_DESIGN_SETTINGS boardDesignSettings; ...@@ -42,8 +42,8 @@ extern BOARD_DESIGN_SETTINGS boardDesignSettings;
const wxString NETCLASS::Default = wxT("Default"); const wxString NETCLASS::Default = wxT("Default");
// Initial values for netclass initialization // Initial values for netclass initialization
int NETCLASS::DEFAULT_CLEARANCE = 100; // track to track and track to pads clearance int NETCLASS::DEFAULT_CLEARANCE = 100; // track to track and track to pads clearance
int NETCLASS::DEFAULT_VIA_DRILL = 250; // default via drill (TODO: should be gone on refactoring) int NETCLASS::DEFAULT_VIA_DRILL = 250; // default via drill
int NETCLASS::DEFAULT_UVIA_DRILL = 50; // micro via drill (TODO: --"--) int NETCLASS::DEFAULT_UVIA_DRILL = 50; // micro via drill
NETCLASS::NETCLASS( BOARD* aParent, const wxString& aName, const NETCLASS* initialParameters ) : NETCLASS::NETCLASS( BOARD* aParent, const wxString& aName, const NETCLASS* initialParameters ) :
...@@ -55,40 +55,37 @@ NETCLASS::NETCLASS( BOARD* aParent, const wxString& aName, const NETCLASS* initi ...@@ -55,40 +55,37 @@ NETCLASS::NETCLASS( BOARD* aParent, const wxString& aName, const NETCLASS* initi
SetParams( initialParameters ); SetParams( initialParameters );
} }
void NETCLASS::SetParams( const NETCLASS* defaults ) void NETCLASS::SetParams( const NETCLASS* defaults )
{ {
if( defaults ) if( defaults )
{ {
SetClearance( defaults->GetClearance() ); SetClearance( defaults->GetClearance() );
SetTrackWidth( defaults->GetTrackWidth() ); SetTrackWidth( defaults->GetTrackWidth() );
Via( defaults->Via() ); SetViaDiameter( defaults->GetViaDiameter() );
MicroVia( defaults->MicroVia() ); SetViaDrill( defaults->GetViaDrill() );
SetuViaDiameter( defaults->GetuViaDiameter() );
SetuViaDrill( defaults->GetuViaDrill() );
} }
else else
{ { // We should use m_Parent->GetBoardDesignSettings()
SetToDefault();
}
}
void NETCLASS::SetToDefault()
{
// We should use m_Parent->GetBoardDesignSettings()
// But when the NETCLASSES constructor is called // But when the NETCLASSES constructor is called
// (it call NETCLASS constructor), the m_Parent constructor (see BOARD::BOARD) // (it call NETCLASS constructor), the m_Parent constructor (see BOARD::BOARD)
// is not run, and GetBoardDesignSettings() return a bad value // is not run, and GetBoardDesignSettings() return a bad value
// TODO: see how change that. // TODO: see how change that.
const BOARD_DESIGN_SETTINGS& g = boardDesignSettings; const BOARD_DESIGN_SETTINGS& g = boardDesignSettings;
TrackWidth( g.m_TrackMinWidth ); SetTrackWidth( g.m_TrackMinWidth );
SetViaDiameter( g.m_ViasMinSize );
//SetViaDrill( TO_LEGACY_LU( g.m_ViasMinDrill ) ); // was DEFAULT_VIA_DRILL SetuViaDiameter(g.m_MicroViasMinSize );
//SetuViaDrill( TO_LEGACY_LU( g.m_MicroViasMinDrill ) ); // DEFAULT_UVIA_DRILL
Via( g.m_MinVia );
MicroVia( g.m_MinMicroVia );
// Use default values for next parameters: // Use default values for next parameters:
Clearance( FROM_LEGACY_LU( DEFAULT_CLEARANCE ) ); SetClearance( DEFAULT_CLEARANCE );
SetViaDrill( DEFAULT_VIA_DRILL );
SetuViaDrill( DEFAULT_UVIA_DRILL );
}
} }
NETCLASS::~NETCLASS() NETCLASS::~NETCLASS()
{ {
} }
...@@ -297,14 +294,14 @@ bool NETCLASS::Save( FILE* aFile ) const ...@@ -297,14 +294,14 @@ bool NETCLASS::Save( FILE* aFile ) const
// Write parameters // Write parameters
fprintf( aFile, "Clearance %f\n", TO_LEGACY_LU_DBL( Clearance() ) ); fprintf( aFile, "Clearance %d\n", GetClearance() );
fprintf( aFile, "TrackWidth %f\n", TO_LEGACY_LU_DBL( TrackWidth() ) ); fprintf( aFile, "TrackWidth %d\n", GetTrackWidth() );
fprintf( aFile, "ViaDia %f\n", TO_LEGACY_LU_DBL( Via().m_Diameter ) ); fprintf( aFile, "ViaDia %d\n", GetViaDiameter() );
fprintf( aFile, "ViaDrill %f\n", TO_LEGACY_LU_DBL( Via().m_Drill ) ); fprintf( aFile, "ViaDrill %d\n", GetViaDrill() );
fprintf( aFile, "uViaDia %f\n", TO_LEGACY_LU_DBL( MicroVia().m_Diameter ) ); fprintf( aFile, "uViaDia %d\n", GetuViaDiameter() );
fprintf( aFile, "uViaDrill %f\n", TO_LEGACY_LU_DBL( MicroVia().m_Drill ) ); fprintf( aFile, "uViaDrill %d\n", GetuViaDrill() );
// Write members: // Write members:
for( const_iterator i = begin(); i!=end(); ++i ) for( const_iterator i = begin(); i!=end(); ++i )
...@@ -345,8 +342,6 @@ bool NETCLASS::ReadDescr( LINE_READER* aReader ) ...@@ -345,8 +342,6 @@ bool NETCLASS::ReadDescr( LINE_READER* aReader )
char* Line; char* Line;
char Buffer[1024]; char Buffer[1024];
wxString netname; wxString netname;
VIA_DIMENSION via = Via();
VIA_DIMENSION uvia = MicroVia();
while( aReader->ReadLine() ) while( aReader->ReadLine() )
{ {
...@@ -367,37 +362,33 @@ bool NETCLASS::ReadDescr( LINE_READER* aReader ) ...@@ -367,37 +362,33 @@ bool NETCLASS::ReadDescr( LINE_READER* aReader )
if( strnicmp( Line, "Clearance", 9 ) == 0 ) if( strnicmp( Line, "Clearance", 9 ) == 0 )
{ {
Clearance( FROM_LEGACY_LU( atof( Line + 9 ) ) ); SetClearance( atoi( Line + 9 ) );
continue; continue;
} }
if( strnicmp( Line, "TrackWidth", 10 ) == 0 ) if( strnicmp( Line, "TrackWidth", 10 ) == 0 )
{ {
TrackWidth( FROM_LEGACY_LU( atof( Line + 10 ) ) ); SetTrackWidth( atoi( Line + 10 ) );
continue; continue;
} }
if( strnicmp( Line, "ViaDia", 6 ) == 0 ) if( strnicmp( Line, "ViaDia", 6 ) == 0 )
{ {
via.m_Diameter = FROM_LEGACY_LU( atof( Line + 6 ) ); SetViaDiameter( atoi( Line + 6 ) );
Via(via);
continue; continue;
} }
if( strnicmp( Line, "ViaDrill", 8 ) == 0 ) if( strnicmp( Line, "ViaDrill", 8 ) == 0 )
{ {
via.m_Drill = FROM_LEGACY_LU( atof( Line + 8 ) ); SetViaDrill( atoi( Line + 8 ) );
Via(via);
continue; continue;
} }
if( strnicmp( Line, "uViaDia", 7 ) == 0 ) if( strnicmp( Line, "uViaDia", 7 ) == 0 )
{ {
uvia.m_Diameter = FROM_LEGACY_LU( atof( Line + 7 ) ); SetuViaDiameter( atoi( Line + 7 ) );
MicroVia(uvia);
continue; continue;
} }
if( strnicmp( Line, "uViaDrill", 9 ) == 0 ) if( strnicmp( Line, "uViaDrill", 9 ) == 0 )
{ {
uvia.m_Drill = FROM_LEGACY_LU( atof( Line + 9 ) ); SetuViaDrill( atoi( Line + 9 ) );
MicroVia(uvia);
continue; continue;
} }
...@@ -421,27 +412,27 @@ bool NETCLASS::ReadDescr( LINE_READER* aReader ) ...@@ -421,27 +412,27 @@ bool NETCLASS::ReadDescr( LINE_READER* aReader )
int NETCLASS::GetTrackMinWidth() const int NETCLASS::GetTrackMinWidth() const
{ {
return TO_LEGACY_LU( m_Parent->GetBoardDesignSettings()->m_TrackMinWidth ); return m_Parent->GetBoardDesignSettings()->m_TrackMinWidth;
} }
int NETCLASS::GetViaMinDiameter() const int NETCLASS::GetViaMinDiameter() const
{ {
return TO_LEGACY_LU( m_Parent->GetBoardDesignSettings()->m_MinVia.m_Diameter ); return m_Parent->GetBoardDesignSettings()->m_ViasMinSize;
} }
int NETCLASS::GetViaMinDrill() const int NETCLASS::GetViaMinDrill() const
{ {
return TO_LEGACY_LU( m_Parent->GetBoardDesignSettings()->m_MinVia.m_Drill ); return m_Parent->GetBoardDesignSettings()->m_ViasMinDrill;
} }
int NETCLASS::GetuViaMinDiameter() const int NETCLASS::GetuViaMinDiameter() const
{ {
return TO_LEGACY_LU( m_Parent->GetBoardDesignSettings()->m_MinMicroVia.m_Diameter ); return m_Parent->GetBoardDesignSettings()->m_MicroViasMinSize;
} }
int NETCLASS::GetuViaMinDrill() const int NETCLASS::GetuViaMinDrill() const
{ {
return TO_LEGACY_LU( m_Parent->GetBoardDesignSettings()->m_MinMicroVia.m_Drill ); return m_Parent->GetBoardDesignSettings()->m_MicroViasMinDrill;
} }
...@@ -36,9 +36,6 @@ ...@@ -36,9 +36,6 @@
#include <wx/string.h> #include <wx/string.h>
#include "lengthpcb.h"
#include "class_via_dimension.h"
class LINE_READER; class LINE_READER;
class BOARD; class BOARD;
...@@ -70,12 +67,14 @@ protected: ...@@ -70,12 +67,14 @@ protected:
/// The units on these parameters is 1/10000 of an inch, see define #PCB_INTERNAL_UNIT /// The units on these parameters is 1/10000 of an inch, see define #PCB_INTERNAL_UNIT
LENGTH_PCB m_Clearance; ///< clearance when routing int m_Clearance; ///< clearance when routing
LENGTH_PCB m_TrackWidth; ///< track width used to route NETs in this NETCLASS int m_TrackWidth; ///< track width used to route NETs in this NETCLASS
int m_ViaDia; ///< via diameter
int m_ViaDrill; ///< via drill hole diameter
VIA_DIMENSION m_Via; ///< Specific normal via int m_uViaDia; ///< microvia diameter
VIA_DIMENSION m_uVia; ///< Specific microvia int m_uViaDrill; ///< microvia drill hole diameter
public: public:
...@@ -172,40 +171,29 @@ public: ...@@ -172,40 +171,29 @@ public:
const wxString& GetDescription() const { return m_Description; } const wxString& GetDescription() const { return m_Description; }
void SetDescription( const wxString& aDesc ) { m_Description = aDesc; } void SetDescription( const wxString& aDesc ) { m_Description = aDesc; }
int GetClearance() const { return TO_LEGACY_LU( m_Clearance ); } int GetClearance() const { return m_Clearance; }
void SetClearance( int aClearance ) { m_Clearance = FROM_LEGACY_LU( aClearance ); } void SetClearance( int aClearance ) { m_Clearance = aClearance; }
int GetTrackWidth() const { return TO_LEGACY_LU( m_TrackWidth ); } int GetTrackWidth() const { return m_TrackWidth; }
int GetTrackMinWidth() const; int GetTrackMinWidth() const;
void SetTrackWidth( int aWidth ) { m_TrackWidth = FROM_LEGACY_LU( aWidth ); } void SetTrackWidth( int aWidth ) { m_TrackWidth = aWidth; }
int GetViaDiameter() const { return TO_LEGACY_LU( m_Via.m_Diameter ); } int GetViaDiameter() const { return m_ViaDia; }
int GetViaMinDiameter() const; int GetViaMinDiameter() const;
void SetViaDiameter( int aDia ) { m_Via.m_Diameter = FROM_LEGACY_LU( aDia ); } void SetViaDiameter( int aDia ) { m_ViaDia = aDia; }
int GetViaDrill() const { return TO_LEGACY_LU( m_Via.m_Drill ); } int GetViaDrill() const { return m_ViaDrill; }
int GetViaMinDrill() const; int GetViaMinDrill() const;
void SetViaDrill( int aSize ) { m_Via.m_Drill = FROM_LEGACY_LU( aSize ); } void SetViaDrill( int aSize ) { m_ViaDrill = aSize; }
int GetuViaDiameter() const { return TO_LEGACY_LU( m_uVia.m_Diameter ); } int GetuViaDiameter() const { return m_uViaDia; }
int GetuViaMinDiameter() const; int GetuViaMinDiameter() const;
void SetuViaDiameter( int aSize ) { m_uVia.m_Diameter = FROM_LEGACY_LU( aSize ); } void SetuViaDiameter( int aSize ) { m_uViaDia = aSize; }
int GetuViaDrill() const { return TO_LEGACY_LU( m_uVia.m_Drill ); } int GetuViaDrill() const { return m_uViaDrill; }
int GetuViaMinDrill() const; int GetuViaMinDrill() const;
void SetuViaDrill( int aSize ) { m_uVia.m_Drill = FROM_LEGACY_LU( aSize ); } void SetuViaDrill( int aSize ) { m_uViaDrill = aSize; }
LENGTH_PCB Clearance() const { return m_Clearance; }
LENGTH_PCB Clearance( const LENGTH_PCB a ) { return m_Clearance = a; }
LENGTH_PCB TrackWidth() const { return m_TrackWidth; }
LENGTH_PCB TrackWidth( const LENGTH_PCB a ) { return m_TrackWidth = a; }
VIA_DIMENSION Via() const { return m_Via; }
VIA_DIMENSION Via( const VIA_DIMENSION a ) { return m_Via = a; }
VIA_DIMENSION MicroVia() const { return m_uVia; }
VIA_DIMENSION MicroVia( const VIA_DIMENSION a ) { return m_uVia = a; }
/** /**
* Function SetParams * Function SetParams
...@@ -216,11 +204,6 @@ public: ...@@ -216,11 +204,6 @@ public:
*/ */
void SetParams( const NETCLASS* defaults = NULL ); void SetParams( const NETCLASS* defaults = NULL );
/**
* Sets Parameters to their default state.
*/
void SetToDefault();
/** /**
* Function Save * Function Save
* writes the data structures for this object out to a FILE in "*.brd" format. * writes the data structures for this object out to a FILE in "*.brd" format.
......
...@@ -153,7 +153,7 @@ void NETINFO_ITEM::DisplayInfo( EDA_DRAW_FRAME* frame ) ...@@ -153,7 +153,7 @@ void NETINFO_ITEM::DisplayInfo( EDA_DRAW_FRAME* frame )
if( pad->GetNet() == GetNet() ) if( pad->GetNet() == GetNet() )
{ {
count++; count++;
lengthdie += TO_LEGACY_LU_DBL( pad->m_LengthDie ); lengthdie += pad->m_LengthDie;
} }
} }
} }
...@@ -224,6 +224,6 @@ void RATSNEST_ITEM::Draw( EDA_DRAW_PANEL* panel, ...@@ -224,6 +224,6 @@ void RATSNEST_ITEM::Draw( EDA_DRAW_PANEL* panel,
{ {
GRSetDrawMode( DC, aDrawMode ); GRSetDrawMode( DC, aDrawMode );
int color = g_ColorsSettings.GetItemColor(RATSNEST_VISIBLE); int color = g_ColorsSettings.GetItemColor(RATSNEST_VISIBLE);
GRLine( &panel->m_ClipBox, DC, TO_LEGACY_LU_WXP( m_PadStart->m_Pos ) - aOffset, GRLine( &panel->m_ClipBox, DC, m_PadStart->m_Pos - aOffset,
TO_LEGACY_LU_WXP( m_PadEnd->m_Pos ) - aOffset, 0, color ); m_PadEnd->m_Pos - aOffset, 0, color );
} }
This diff is collapsed.
...@@ -11,8 +11,6 @@ ...@@ -11,8 +11,6 @@
#include "pad_shapes.h" #include "pad_shapes.h"
#include "PolyLine.h" #include "PolyLine.h"
#include "lengthpcb.h"
#include "vectorpcb.h"
class LINE_READER; class LINE_READER;
class EDA_3D_CANVAS; class EDA_3D_CANVAS;
...@@ -72,9 +70,8 @@ private: ...@@ -72,9 +70,8 @@ private:
wxString m_ShortNetname; // short net name, like vout from /mysheet/mysubsheet/vout wxString m_ShortNetname; // short net name, like vout from /mysheet/mysubsheet/vout
public: /** TODO: that's not so good if parameters are easily modifiable outside public:
(e. g. m_Pos, which could be coherent with m_Pos and module orient/pos ) */ wxPoint m_Pos; // pad Position on board
VECTOR_PCB m_Pos; // pad Position on board
union union
{ {
...@@ -88,17 +85,14 @@ public: /** TODO: that's not so good if parameters are easily modifiable outside ...@@ -88,17 +85,14 @@ public: /** TODO: that's not so good if parameters are easily modifiable outside
// 2..14 = internal layers // 2..14 = internal layers
// 16 .. 31 = technical layers // 16 .. 31 = technical layers
int m_PadShape; ///< Shape: PAD_CIRCLE, PAD_RECT, PAD_OVAL, PAD_TRAPEZOID int m_PadShape; // Shape: PAD_CIRCLE, PAD_RECT, PAD_OVAL, PAD_TRAPEZOID
int m_DrillShape; ///< Shape PAD_CIRCLE, PAD_OVAL int m_DrillShape; // Shape PAD_CIRCLE, PAD_OVAL
/// @TODO: as m_DrillShape is eqv. to m_Drill.x==.y
/// it would be relatively easy to remove
/// this redundant flag.
VECTOR_PCB m_Drill; ///< Drill diam (drill shape = PAD_CIRCLE) or drill size wxSize m_Drill; // Drill diam (drill shape = PAD_CIRCLE) or drill size
/// (shape = OVAL) for drill shape = PAD_CIRCLE, drill // (shape = OVAL) for drill shape = PAD_CIRCLE, drill
/// diam = m_Drill.x // diam = m_Drill.x
VECTOR_PCB m_Offset; /* This parameter is useful only for oblong pads (it can be used for other wxSize m_Offset; /* This parameter is useful only for oblong pads (it can be used for other
* shapes, but without any interest). * shapes, but without any interest).
* this is the offset between the pad hole and the pad shape (you must * this is the offset between the pad hole and the pad shape (you must
* understand here pad shape = copper area around the hole) * understand here pad shape = copper area around the hole)
...@@ -111,11 +105,11 @@ public: /** TODO: that's not so good if parameters are easily modifiable outside ...@@ -111,11 +105,11 @@ public: /** TODO: that's not so good if parameters are easily modifiable outside
* D_PAD::ReturnShapePos() returns the physical shape position according to * D_PAD::ReturnShapePos() returns the physical shape position according to
* the offset and the pad rotation.*/ * the offset and the pad rotation.*/
VECTOR_PCB m_Size; // X and Y size ( relative to orient 0) wxSize m_Size; // X and Y size ( relative to orient 0)
VECTOR_PCB m_DeltaSize; // delta on rectangular shapes wxSize m_DeltaSize; // delta on rectangular shapes
VECTOR_PCB m_Pos0; // Initial Pad position (i.e. pad position relative to the wxPoint m_Pos0; // Initial Pad position (i.e. pas position relative to the
// module anchor, orientation 0 // module anchor, orientation 0
int m_ShapeMaxRadius; // radius of the circle containing the pad shape int m_ShapeMaxRadius; // radius of the circle containing the pad shape
...@@ -124,16 +118,16 @@ public: /** TODO: that's not so good if parameters are easily modifiable outside ...@@ -124,16 +118,16 @@ public: /** TODO: that's not so good if parameters are easily modifiable outside
static int m_PadSketchModePenSize; // Pen size used to draw pads in sketch mode static int m_PadSketchModePenSize; // Pen size used to draw pads in sketch mode
// (mode used to print pads on silkscreen layer) // (mode used to print pads on silkscreen layer)
LENGTH_PCB m_LengthDie; // Length net from pad to die on chip int m_LengthDie; // Length net from pad to die on chip
// Local clearance. When null, the module default value is used. // Local clearance. When null, the module default value is used.
// when the module default value is null, the netclass value is used // when the module default value is null, the netclass value is used
// Usually the local clearance is null // Usually the local clearance is null
LENGTH_PCB m_LocalClearance; int m_LocalClearance;
// Local mask margins: when NULL, the parent footprint design values are used // Local mask margins: when NULL, the parent footprint design values are used
LENGTH_PCB m_LocalSolderMaskMargin; // Local solder mask margin int m_LocalSolderMaskMargin; // Local solder mask margin
LENGTH_PCB m_LocalSolderPasteMargin; // Local solder paste margin absolute value int m_LocalSolderPasteMargin; // Local solder paste margin absolute value
double m_LocalSolderPasteMarginRatio; // Local solder mask margin ratio value of pad size double m_LocalSolderPasteMarginRatio; // Local solder mask margin ratio value of pad size
// The final margin is the sum of these 2 values // The final margin is the sum of these 2 values
...@@ -178,17 +172,16 @@ public: ...@@ -178,17 +172,16 @@ public:
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* @return const wxPoint& - The position of this object. * @return const wxPoint& - The position of this object.
* @TODO: could move virtual method to .c file
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return TO_LEGACY_LU_WXP( m_Pos ); return m_Pos;
} }
void SetPosition( const wxPoint& aPos ) void SetPosition( const wxPoint& aPos )
{ {
m_Pos = FROM_LEGACY_LU_VEC( aPos ); m_Pos = aPos;
} }
/** /**
...@@ -387,7 +380,7 @@ public: ...@@ -387,7 +380,7 @@ public:
*/ */
virtual void Move( const wxPoint& aMoveVector ) virtual void Move( const wxPoint& aMoveVector )
{ {
m_Pos += FROM_LEGACY_LU_VEC( aMoveVector ); m_Pos += aMoveVector;
} }
......
...@@ -392,9 +392,9 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo ) ...@@ -392,9 +392,9 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo )
// calculate pad shape position : // calculate pad shape position :
wxPoint shape_pos = ReturnShapePos() - aDrawInfo.m_Offset; wxPoint shape_pos = ReturnShapePos() - aDrawInfo.m_Offset;
wxSize halfsize = TO_LEGACY_LU_WXS( m_Size ); wxSize halfsize = m_Size;
halfsize.x /= 2; halfsize.x >>= 1;
halfsize.y /= 2; halfsize.y >>= 1;
switch( GetShape() ) switch( GetShape() )
{ {
...@@ -475,8 +475,8 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo ) ...@@ -475,8 +475,8 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo )
} }
/* Draw the pad hole */ /* Draw the pad hole */
wxPoint holepos = TO_LEGACY_LU_WXP( m_Pos ) - aDrawInfo.m_Offset; wxPoint holepos = m_Pos - aDrawInfo.m_Offset;
int hole = TO_LEGACY_LU( m_Drill.x() ) / 2; int hole = m_Drill.x >> 1;
bool drawhole = hole > 0; bool drawhole = hole > 0;
...@@ -513,20 +513,20 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo ) ...@@ -513,20 +513,20 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo )
break; break;
case PAD_OVAL: case PAD_OVAL:
halfsize.x = TO_LEGACY_LU( m_Drill.x() ) / 2; halfsize.x = m_Drill.x >> 1;
halfsize.y = TO_LEGACY_LU( m_Drill.y() ) / 2; halfsize.y = m_Drill.y >> 1;
if( m_Drill.x() > m_Drill.y() ) /* horizontal */ if( m_Drill.x > m_Drill.y ) /* horizontal */
{ {
delta_cx = halfsize.x - halfsize.y; delta_cx = halfsize.x - halfsize.y;
delta_cy = 0; delta_cy = 0;
seg_width = TO_LEGACY_LU( m_Drill.y() ); seg_width = m_Drill.y;
} }
else /* vertical */ else /* vertical */
{ {
delta_cx = 0; delta_cx = 0;
delta_cy = halfsize.y - halfsize.x; delta_cy = halfsize.y - halfsize.x;
seg_width = TO_LEGACY_LU( m_Drill.x() ); seg_width = m_Drill.x;
} }
RotatePoint( &delta_cx, &delta_cy, angle ); RotatePoint( &delta_cx, &delta_cy, angle );
...@@ -576,13 +576,13 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo ) ...@@ -576,13 +576,13 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo )
if( GetShape() == PAD_CIRCLE ) if( GetShape() == PAD_CIRCLE )
angle = 0; angle = 0;
AreaSize = TO_LEGACY_LU_WXS( m_Size ); AreaSize = m_Size;
if( m_Size.y() > m_Size.x() ) if( m_Size.y > m_Size.x )
{ {
angle += 900; angle += 900;
AreaSize.x = TO_LEGACY_LU( m_Size.y() ); AreaSize.x = m_Size.y;
AreaSize.y = TO_LEGACY_LU( m_Size.x() ); AreaSize.y = m_Size.x;
} }
if( shortname_len > 0 ) // if there is a netname, provides room to display this netname if( shortname_len > 0 ) // if there is a netname, provides room to display this netname
...@@ -664,23 +664,23 @@ int D_PAD::BuildSegmentFromOvalShape(wxPoint& aSegStart, wxPoint& aSegEnd, int a ...@@ -664,23 +664,23 @@ int D_PAD::BuildSegmentFromOvalShape(wxPoint& aSegStart, wxPoint& aSegEnd, int a
{ {
int width; int width;
if( m_Size.y() < m_Size.x() ) // Build an horizontal equiv segment if( m_Size.y < m_Size.x ) // Build an horizontal equiv segment
{ {
int delta = TO_LEGACY_LU( ( m_Size.x() - m_Size.y() ) / 2 ); int delta = ( m_Size.x - m_Size.y ) / 2;
aSegStart.x = -delta; aSegStart.x = -delta;
aSegStart.y = 0; aSegStart.y = 0;
aSegEnd.x = delta; aSegEnd.x = delta;
aSegEnd.y = 0; aSegEnd.y = 0;
width = TO_LEGACY_LU( m_Size.y() ); width = m_Size.y;
} }
else // Vertical oval: build a vertical equiv segment else // Vertical oval: build a vertical equiv segment
{ {
int delta = TO_LEGACY_LU( ( m_Size.y() -m_Size.x() ) / 2 ); int delta = ( m_Size.y -m_Size.x ) / 2;
aSegStart.x = 0; aSegStart.x = 0;
aSegStart.y = -delta; aSegStart.y = -delta;
aSegEnd.x = 0; aSegEnd.x = 0;
aSegEnd.y = delta; aSegEnd.y = delta;
width = TO_LEGACY_LU( m_Size.x() ); width = m_Size.x;
} }
if( aRotation ) if( aRotation )
...@@ -701,8 +701,8 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat ...@@ -701,8 +701,8 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat
wxSize delta; wxSize delta;
wxSize halfsize; wxSize halfsize;
halfsize.x = TO_LEGACY_LU( m_Size.x() / 2 ); halfsize.x = m_Size.x >> 1;
halfsize.y = TO_LEGACY_LU( m_Size.y() / 2 ); halfsize.y = m_Size.y >> 1;
/* For rectangular shapes, inflate is easy /* For rectangular shapes, inflate is easy
*/ */
...@@ -721,8 +721,8 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat ...@@ -721,8 +721,8 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat
else else
{ {
// Trapezoidal pad: verify delta values // Trapezoidal pad: verify delta values
delta.x = TO_LEGACY_LU( m_DeltaSize.x() / 2 ); delta.x = ( m_DeltaSize.x >> 1 );
delta.y = TO_LEGACY_LU( m_DeltaSize.y() / 2 ); delta.y = ( m_DeltaSize.y >> 1 );
// be sure delta values are not to large // be sure delta values are not to large
if( (delta.x < 0) && (delta.x <= -halfsize.y) ) if( (delta.x < 0) && (delta.x <= -halfsize.y) )
...@@ -762,7 +762,7 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat ...@@ -762,7 +762,7 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat
if( delta.y ) // lower and upper segment is horizontal if( delta.y ) // lower and upper segment is horizontal
{ {
// Calculate angle of left (or right) segment with vertical axis // Calculate angle of left (or right) segment with vertical axis
angle = atan2( m_DeltaSize.y(), m_Size.y() ); angle = atan2( double( m_DeltaSize.y ), double( m_Size.y ) );
// left and right sides are moved by aInflateValue.x in their perpendicular direction // left and right sides are moved by aInflateValue.x in their perpendicular direction
// We must calculate the corresponding displacement on the horizontal axis // We must calculate the corresponding displacement on the horizontal axis
...@@ -778,7 +778,7 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat ...@@ -778,7 +778,7 @@ void D_PAD::BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotat
else if( delta.x ) // left and right segment is vertical else if( delta.x ) // left and right segment is vertical
{ {
// Calculate angle of lower (or upper) segment with horizontal axis // Calculate angle of lower (or upper) segment with horizontal axis
angle = atan2( m_DeltaSize.x(), m_Size.x() ); angle = atan2( double( m_DeltaSize.x ), double( m_Size.x ) );
// lower and upper sides are moved by aInflateValue.x in their perpendicular direction // lower and upper sides are moved by aInflateValue.x in their perpendicular direction
// We must calculate the corresponding displacement on the vertical axis // We must calculate the corresponding displacement on the vertical axis
......
...@@ -26,15 +26,11 @@ public: ...@@ -26,15 +26,11 @@ public:
* returns the position of this object. * returns the position of this object.
* @return wxPoint& - The position of this object, non-const so it can be changed * @return wxPoint& - The position of this object, non-const so it can be changed
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Pos; // within EDA_TEXT return m_Pos; // within EDA_TEXT
} }
void SetPosition( const wxPoint& pos ) {
m_Pos = pos;
}
/** /**
* Function Move * Function Move
* move this object. * move this object.
......
...@@ -51,14 +51,11 @@ public: ...@@ -51,14 +51,11 @@ public:
* Required by pure virtual BOARD_ITEM::GetPosition() * Required by pure virtual BOARD_ITEM::GetPosition()
* @return const wxPoint& - The position of this object. * @return const wxPoint& - The position of this object.
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& pos ) {
m_Pos = pos;
}
void Copy( TEXTE_MODULE* source ); // copy structure void Copy( TEXTE_MODULE* source ); // copy structure
......
...@@ -120,21 +120,13 @@ public: ...@@ -120,21 +120,13 @@ public:
/** /**
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* @return const wxPoint - The position of this object. * @return const wxPoint& - The position of this object.
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Start; // it had to be start or end. return m_Start; // it had to be start or end.
} }
/**
* Sets the position of this object. Virtual function, needed by BOARD_ITEM
* @param pos The position of this object
*/
void SetPosition( const wxPoint& pos ) {
m_Start = pos;
}
EDA_RECT GetBoundingBox() const; EDA_RECT GetBoundingBox() const;
/** /**
...@@ -478,11 +470,12 @@ public: ...@@ -478,11 +470,12 @@ public:
* returns the position of this object. * returns the position of this object.
* @return const wxPoint& - The position of this object. * @return const wxPoint& - The position of this object.
*/ */
const wxPoint GetPosition() const wxPoint& GetPosition()
{ {
return m_Start; return m_Start;
} }
void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; } void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; }
/** /**
......
...@@ -84,14 +84,21 @@ bool ZONE_CONTAINER::UnFill() ...@@ -84,14 +84,21 @@ bool ZONE_CONTAINER::UnFill()
} }
const wxPoint ZONE_CONTAINER::GetPosition() const wxPoint& ZONE_CONTAINER::GetPosition()
{ {
return m_Poly? GetCornerPosition( 0 ) : wxPoint( 0, 0 ); static wxPoint pos;
}
if( m_Poly )
{
pos = GetCornerPosition( 0 );
}
else
pos = wxPoint( 0, 0 );
void ZONE_CONTAINER::SetPosition( const wxPoint& pos ) { return pos;
} }
void ZONE_CONTAINER::SetNet( int aNetCode ) void ZONE_CONTAINER::SetNet( int aNetCode )
{ {
m_NetCode = aNetCode; m_NetCode = aNetCode;
......
...@@ -118,8 +118,8 @@ public: ...@@ -118,8 +118,8 @@ public:
* Function GetPosition * Function GetPosition
* @return a wxPoint, position of the first point of the outline * @return a wxPoint, position of the first point of the outline
*/ */
const wxPoint GetPosition() const; wxPoint& GetPosition();
void SetPosition( const wxPoint& pos );
/** /**
* Function copy * Function copy
* copy useful data from the source. * copy useful data from the source.
......
...@@ -850,7 +850,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame ) ...@@ -850,7 +850,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame )
if( pad ) if( pad )
{ {
// test if the track start point is not exactly starting on the pad // test if the track start point is not exactly starting on the pad
if( segment->m_Start != TO_LEGACY_LU_WXP( pad->m_Pos ) ) if( segment->m_Start != pad->m_Pos )
{ {
if( segment->GetTrace( frame->GetBoard()->m_Track, NULL, START ) == NULL ) if( segment->GetTrace( frame->GetBoard()->m_Track, NULL, START ) == NULL )
{ {
...@@ -858,7 +858,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame ) ...@@ -858,7 +858,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame )
frame->GetBoard()->m_Track.Insert( newTrack, segment->Next() ); frame->GetBoard()->m_Track.Insert( newTrack, segment->Next() );
newTrack->m_End = TO_LEGACY_LU_WXP( pad->m_Pos ); newTrack->m_End = pad->m_Pos;
newTrack->start = segment; newTrack->start = segment;
newTrack->end = pad; newTrack->end = pad;
...@@ -872,7 +872,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame ) ...@@ -872,7 +872,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame )
if( pad ) if( pad )
{ {
// test if the track end point is not exactly on the pad // test if the track end point is not exactly on the pad
if( segment->m_End != TO_LEGACY_LU_WXP( pad->m_Pos ) ) if( segment->m_End != pad->m_Pos )
{ {
if( segment->GetTrace( frame->GetBoard()->m_Track, NULL, END ) == NULL ) if( segment->GetTrace( frame->GetBoard()->m_Track, NULL, END ) == NULL )
{ {
...@@ -880,7 +880,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame ) ...@@ -880,7 +880,7 @@ void ConnectDanglingEndToPad( PCB_EDIT_FRAME* frame )
frame->GetBoard()->m_Track.Insert( newTrack, segment->Next() ); frame->GetBoard()->m_Track.Insert( newTrack, segment->Next() );
newTrack->m_Start = TO_LEGACY_LU_WXP( pad->m_Pos ); newTrack->m_Start = pad->m_Pos;
newTrack->start = pad; newTrack->start = pad;
newTrack->end = segment; newTrack->end = segment;
......
This diff is collapsed.
...@@ -57,7 +57,7 @@ private: ...@@ -57,7 +57,7 @@ private:
// List of values to "customize" some tracks and vias // List of values to "customize" some tracks and vias
std::vector <VIA_DIMENSION> m_ViasDimensionsList; std::vector <VIA_DIMENSION> m_ViasDimensionsList;
std::vector <LENGTH_PCB> m_TracksWidthList; std::vector <int> m_TracksWidthList;
private: private:
void OnNetClassesNameLeftClick( wxGridEvent& event ){ event.Skip(); } void OnNetClassesNameLeftClick( wxGridEvent& event ){ event.Skip(); }
......
...@@ -213,6 +213,7 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID ...@@ -213,6 +213,7 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
fgMinValuesSizer->Add( m_MicroViaMinSizeTitle, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); fgMinValuesSizer->Add( m_MicroViaMinSizeTitle, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
m_SetMicroViasMinSizeCtrl = new wxTextCtrl( m_panelGolbalDesignRules, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_SetMicroViasMinSizeCtrl = new wxTextCtrl( m_panelGolbalDesignRules, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_SetMicroViasMinSizeCtrl->SetMaxLength( 6 );
fgMinValuesSizer->Add( m_SetMicroViasMinSizeCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); fgMinValuesSizer->Add( m_SetMicroViasMinSizeCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
m_MicroViaMinDrillTitle = new wxStaticText( m_panelGolbalDesignRules, wxID_ANY, _("Min uvia drill dia"), wxDefaultPosition, wxDefaultSize, 0 ); m_MicroViaMinDrillTitle = new wxStaticText( m_panelGolbalDesignRules, wxID_ANY, _("Min uvia drill dia"), wxDefaultPosition, wxDefaultSize, 0 );
...@@ -220,6 +221,7 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID ...@@ -220,6 +221,7 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
fgMinValuesSizer->Add( m_MicroViaMinDrillTitle, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 ); fgMinValuesSizer->Add( m_MicroViaMinDrillTitle, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 );
m_SetMicroViasMinDrillCtrl = new wxTextCtrl( m_panelGolbalDesignRules, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_SetMicroViasMinDrillCtrl = new wxTextCtrl( m_panelGolbalDesignRules, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_SetMicroViasMinDrillCtrl->SetMaxLength( 6 );
fgMinValuesSizer->Add( m_SetMicroViasMinDrillCtrl, 0, wxEXPAND|wxALL, 5 ); fgMinValuesSizer->Add( m_SetMicroViasMinDrillCtrl, 0, wxEXPAND|wxALL, 5 );
sbMinSizesSizer->Add( fgMinValuesSizer, 0, wxEXPAND, 5 ); sbMinSizesSizer->Add( fgMinValuesSizer, 0, wxEXPAND, 5 );
......
...@@ -130,21 +130,12 @@ void DIALOG_DRC_CONTROL::InitValues() ...@@ -130,21 +130,12 @@ void DIALOG_DRC_CONTROL::InitValues()
*/ */
void DIALOG_DRC_CONTROL::SetDrcParmeters( ) void DIALOG_DRC_CONTROL::SetDrcParmeters( )
{ {
#ifdef KICAD_NANOMETRE
m_BrdSettings->m_TrackMinWidth =
LengthFromTextCtrl( *m_SetTrackMinWidthCtrl );
m_BrdSettings->m_MinVia.m_Diameter =
LengthFromTextCtrl( *m_SetViaMinSizeCtrl );
m_BrdSettings->m_MinMicroVia.m_Diameter =
LengthFromTextCtrl( *m_SetMicroViakMinSizeCtrl );
#else
m_BrdSettings->m_TrackMinWidth = m_BrdSettings->m_TrackMinWidth =
ReturnValueFromTextCtrl( *m_SetTrackMinWidthCtrl, m_Parent->m_InternalUnits ); ReturnValueFromTextCtrl( *m_SetTrackMinWidthCtrl, m_Parent->m_InternalUnits );
m_BrdSettings->m_MinVia.m_Diameter = m_BrdSettings->m_ViasMinSize =
ReturnValueFromTextCtrl( *m_SetViaMinSizeCtrl, m_Parent->m_InternalUnits ); ReturnValueFromTextCtrl( *m_SetViaMinSizeCtrl, m_Parent->m_InternalUnits );
m_BrdSettings->m_MinMicroVia.m_Diameter = m_BrdSettings->m_MicroViasMinSize =
ReturnValueFromTextCtrl( *m_SetMicroViakMinSizeCtrl, m_Parent->m_InternalUnits ); ReturnValueFromTextCtrl( *m_SetMicroViakMinSizeCtrl, m_Parent->m_InternalUnits );
#endif
} }
......
...@@ -185,7 +185,7 @@ void DIALOG_GENDRILL::InitDisplayParams( void ) ...@@ -185,7 +185,7 @@ void DIALOG_GENDRILL::InitDisplayParams( void )
{ {
if( pad->m_DrillShape == PAD_CIRCLE ) if( pad->m_DrillShape == PAD_CIRCLE )
{ {
if( pad->m_Drill.x() != ZERO_LENGTH ) if( pad->m_Drill.x != 0 )
{ {
if( pad->m_Attribut == PAD_HOLE_NOT_PLATED ) if( pad->m_Attribut == PAD_HOLE_NOT_PLATED )
m_notplatedPadsHoleCount++; m_notplatedPadsHoleCount++;
...@@ -195,7 +195,7 @@ void DIALOG_GENDRILL::InitDisplayParams( void ) ...@@ -195,7 +195,7 @@ void DIALOG_GENDRILL::InitDisplayParams( void )
} }
else else
{ {
if( min( TO_LEGACY_LU( pad->m_Drill.x() ), TO_LEGACY_LU( pad->m_Drill.y() ) ) != 0 ) if( MIN( pad->m_Drill.x, pad->m_Drill.y ) != 0 )
{ {
if( pad->m_Attribut == PAD_HOLE_NOT_PLATED ) if( pad->m_Attribut == PAD_HOLE_NOT_PLATED )
m_notplatedPadsHoleCount++; m_notplatedPadsHoleCount++;
......
This diff is collapsed.
...@@ -52,7 +52,7 @@ void DrawSegmentWhileMovingFootprint( EDA_DRAW_PANEL* panel, wxDC* DC ) ...@@ -52,7 +52,7 @@ void DrawSegmentWhileMovingFootprint( EDA_DRAW_PANEL* panel, wxDC* DC )
if( pt_pad ) if( pt_pad )
{ {
pos = TO_LEGACY_LU_WXP( pt_pad->m_Pos ) - g_Offset_Module; pos = pt_pad->m_Pos - g_Offset_Module;
Track->m_Start = pos; Track->m_Start = pos;
} }
...@@ -60,7 +60,7 @@ void DrawSegmentWhileMovingFootprint( EDA_DRAW_PANEL* panel, wxDC* DC ) ...@@ -60,7 +60,7 @@ void DrawSegmentWhileMovingFootprint( EDA_DRAW_PANEL* panel, wxDC* DC )
if( pt_pad ) if( pt_pad )
{ {
pos = TO_LEGACY_LU_WXP( pt_pad->m_Pos ) - g_Offset_Module; pos = pt_pad->m_Pos - g_Offset_Module;
Track->m_End = pos; Track->m_End = pos;
} }
...@@ -105,7 +105,7 @@ void Build_1_Pad_SegmentsToDrag( EDA_DRAW_PANEL* panel, wxDC* DC, D_PAD* PtPad ) ...@@ -105,7 +105,7 @@ void Build_1_Pad_SegmentsToDrag( EDA_DRAW_PANEL* panel, wxDC* DC, D_PAD* PtPad )
Track = pcb->m_Track->GetStartNetCode( net_code ); Track = pcb->m_Track->GetStartNetCode( net_code );
pos = TO_LEGACY_LU_WXP( PtPad->m_Pos ); pos = PtPad->m_Pos;
LayerMask = PtPad->m_layerMask; LayerMask = PtPad->m_layerMask;
for( ; Track; Track = Track->Next() ) for( ; Track; Track = Track->Next() )
......
...@@ -54,24 +54,15 @@ void DRC::ShowDialog() ...@@ -54,24 +54,15 @@ void DRC::ShowDialog()
// copy data retained in this DRC object into the m_ui DrcPanel: // copy data retained in this DRC object into the m_ui DrcPanel:
#ifdef KICAD_NANOMETRE
LengthToTextCtrl( *m_ui->m_SetTrackMinWidthCtrl,
m_pcb->GetBoardDesignSettings()->m_TrackMinWidth );
LengthToTextCtrl( *m_ui->m_SetViaMinSizeCtrl,
m_pcb->GetBoardDesignSettings()->m_MinVia.m_Diameter );
LengthToTextCtrl( *m_ui->m_SetMicroViakMinSizeCtrl,
m_pcb->GetBoardDesignSettings()->m_MinMicroVia.m_Diameter );
#else
PutValueInLocalUnits( *m_ui->m_SetTrackMinWidthCtrl, PutValueInLocalUnits( *m_ui->m_SetTrackMinWidthCtrl,
TO_LEGACY_LU( m_pcb->GetBoardDesignSettings()->m_TrackMinWidth ), m_pcb->GetBoardDesignSettings()->m_TrackMinWidth,
m_mainWindow->m_InternalUnits ); m_mainWindow->m_InternalUnits );
PutValueInLocalUnits( *m_ui->m_SetViaMinSizeCtrl, PutValueInLocalUnits( *m_ui->m_SetViaMinSizeCtrl,
TO_LEGACY_LU( m_pcb->GetBoardDesignSettings()->m_MinVia.m_Diameter ), m_pcb->GetBoardDesignSettings()->m_ViasMinSize,
m_mainWindow->m_InternalUnits ); m_mainWindow->m_InternalUnits );
PutValueInLocalUnits( *m_ui->m_SetMicroViakMinSizeCtrl, PutValueInLocalUnits( *m_ui->m_SetMicroViakMinSizeCtrl,
TO_LEGACY_LU( m_pcb->GetBoardDesignSettings()->m_MinMicroVia.m_Diameter ), m_pcb->GetBoardDesignSettings()->m_MicroViasMinSize,
m_mainWindow->m_InternalUnits ); m_mainWindow->m_InternalUnits );
#endif
m_ui->m_CreateRptCtrl->SetValue( m_doCreateRptFile ); m_ui->m_CreateRptCtrl->SetValue( m_doCreateRptFile );
m_ui->m_RptFilenameCtrl->SetValue( m_rptFilename ); m_ui->m_RptFilenameCtrl->SetValue( m_rptFilename );
...@@ -321,12 +312,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg ) ...@@ -321,12 +312,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg )
} }
#endif #endif
if( nc->GetTrackWidth() < TO_LEGACY_LU( g.m_TrackMinWidth ) ) if( nc->GetTrackWidth() < g.m_TrackMinWidth )
{ {
msg.Printf( _( "NETCLASS: '%s' has TrackWidth:%s which is less than global:%s" ), msg.Printf( _( "NETCLASS: '%s' has TrackWidth:%s which is less than global:%s" ),
GetChars( nc->GetName() ), GetChars( nc->GetName() ),
FmtVal( nc->GetTrackWidth() ), FmtVal( nc->GetTrackWidth() ),
FmtVal( TO_LEGACY_LU( g.m_TrackMinWidth ) ) FmtVal( g.m_TrackMinWidth )
); );
m_currentMarker = fillMarker( DRCE_NETCLASS_TRACKWIDTH, msg, m_currentMarker ); m_currentMarker = fillMarker( DRCE_NETCLASS_TRACKWIDTH, msg, m_currentMarker );
...@@ -335,12 +326,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg ) ...@@ -335,12 +326,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg )
ret = false; ret = false;
} }
if( nc->GetViaDiameter() < TO_LEGACY_LU( g.m_MinVia.m_Diameter ) ) if( nc->GetViaDiameter() < g.m_ViasMinSize )
{ {
msg.Printf( _( "NETCLASS: '%s' has Via Dia:%s which is less than global:%s" ), msg.Printf( _( "NETCLASS: '%s' has Via Dia:%s which is less than global:%s" ),
GetChars( nc->GetName() ), GetChars( nc->GetName() ),
FmtVal( nc->GetViaDiameter() ), FmtVal( nc->GetViaDiameter() ),
FmtVal( TO_LEGACY_LU( g.m_MinVia.m_Diameter ) ) FmtVal( g.m_ViasMinSize )
); );
m_currentMarker = fillMarker( DRCE_NETCLASS_VIASIZE, msg, m_currentMarker ); m_currentMarker = fillMarker( DRCE_NETCLASS_VIASIZE, msg, m_currentMarker );
...@@ -349,12 +340,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg ) ...@@ -349,12 +340,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg )
ret = false; ret = false;
} }
if( nc->GetViaDrill() < TO_LEGACY_LU( g.m_MinVia.m_Drill ) ) if( nc->GetViaDrill() < g.m_ViasMinDrill )
{ {
msg.Printf( _( "NETCLASS: '%s' has Via Drill:%s which is less than global:%s" ), msg.Printf( _( "NETCLASS: '%s' has Via Drill:%s which is less than global:%s" ),
GetChars( nc->GetName() ), GetChars( nc->GetName() ),
FmtVal( nc->GetViaDrill() ), FmtVal( nc->GetViaDrill() ),
FmtVal( TO_LEGACY_LU( g.m_MinVia.m_Drill ) ) FmtVal( g.m_ViasMinDrill )
); );
m_currentMarker = fillMarker( DRCE_NETCLASS_VIADRILLSIZE, msg, m_currentMarker ); m_currentMarker = fillMarker( DRCE_NETCLASS_VIADRILLSIZE, msg, m_currentMarker );
...@@ -363,12 +354,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg ) ...@@ -363,12 +354,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg )
ret = false; ret = false;
} }
if( nc->GetuViaDiameter() < TO_LEGACY_LU( g.m_MinMicroVia.m_Diameter ) ) if( nc->GetuViaDiameter() < g.m_MicroViasMinSize )
{ {
msg.Printf( _( "NETCLASS: '%s' has uVia Dia:%s which is less than global:%s" ), msg.Printf( _( "NETCLASS: '%s' has uVia Dia:%s which is less than global:%s" ),
GetChars( nc->GetName() ), GetChars( nc->GetName() ),
FmtVal( nc->GetuViaDiameter() ), FmtVal( nc->GetuViaDiameter() ),
FmtVal( TO_LEGACY_LU( g.m_MinMicroVia.m_Diameter ) ) FmtVal( g.m_MicroViasMinSize )
); );
m_currentMarker = fillMarker( DRCE_NETCLASS_uVIASIZE, msg, m_currentMarker ); m_currentMarker = fillMarker( DRCE_NETCLASS_uVIASIZE, msg, m_currentMarker );
...@@ -377,12 +368,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg ) ...@@ -377,12 +368,12 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg )
ret = false; ret = false;
} }
if( nc->GetuViaDrill() < TO_LEGACY_LU( g.m_MinMicroVia.m_Drill ) ) if( nc->GetuViaDrill() < g.m_MicroViasMinDrill )
{ {
msg.Printf( _( "NETCLASS: '%s' has uVia Drill:%s which is less than global:%s" ), msg.Printf( _( "NETCLASS: '%s' has uVia Drill:%s which is less than global:%s" ),
GetChars( nc->GetName() ), GetChars( nc->GetName() ),
FmtVal( nc->GetuViaDrill() ), FmtVal( nc->GetuViaDrill() ),
FmtVal( TO_LEGACY_LU( g.m_MinMicroVia.m_Drill ) ) FmtVal( g.m_MicroViasMinDrill )
); );
m_currentMarker = fillMarker( DRCE_NETCLASS_uVIADRILLSIZE, msg, m_currentMarker ); m_currentMarker = fillMarker( DRCE_NETCLASS_uVIADRILLSIZE, msg, m_currentMarker );
...@@ -577,7 +568,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li ...@@ -577,7 +568,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li
MODULE dummymodule( m_pcb ); // Creates a dummy parent MODULE dummymodule( m_pcb ); // Creates a dummy parent
D_PAD dummypad( &dummymodule ); D_PAD dummypad( &dummymodule );
dummypad.m_layerMask |= ALL_CU_LAYERS; // Ensure the hole is on all copper layers dummypad.m_layerMask |= ALL_CU_LAYERS; // Ensure the hole is on all copper layers
dummypad.m_LocalClearance = FROM_LEGACY_LU( 1 ); /* Use the minimal local clearance value for the dummy pad dummypad.m_LocalClearance = 1; /* Use the minimal local clearance value for the dummy pad
* the clearance of the active pad will be used * the clearance of the active pad will be used
* as minimum distance to a hole * as minimum distance to a hole
* (a value = 0 means use netclass value) * (a value = 0 means use netclass value)
...@@ -592,7 +583,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li ...@@ -592,7 +583,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li
// We can stop the test when pad->m_Pos.x > x_limit // We can stop the test when pad->m_Pos.x > x_limit
// because the list is sorted by X values // because the list is sorted by X values
if( TO_LEGACY_LU( pad->m_Pos.x() ) > x_limit ) if( pad->m_Pos.x > x_limit )
break; break;
// No problem if pads are on different copper layers, // No problem if pads are on different copper layers,
...@@ -617,7 +608,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li ...@@ -617,7 +608,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li
/* Here, we must test clearance between holes and pads /* Here, we must test clearance between holes and pads
* dummy pad size and shape is adjusted to pad drill size and shape * dummy pad size and shape is adjusted to pad drill size and shape
*/ */
if( pad->m_Drill.x() != ZERO_LENGTH ) if( pad->m_Drill.x )
{ {
// pad under testing has a hole, test this hole against pad reference // pad under testing has a hole, test this hole against pad reference
dummypad.SetPosition( pad->GetPosition() ); dummypad.SetPosition( pad->GetPosition() );
...@@ -637,7 +628,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li ...@@ -637,7 +628,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li
} }
} }
if( aRefPad->m_Drill.x() != ZERO_LENGTH ) // pad reference has a hole if( aRefPad->m_Drill.x ) // pad reference has a hole
{ {
dummypad.SetPosition( aRefPad->GetPosition() ); dummypad.SetPosition( aRefPad->GetPosition() );
dummypad.m_Size = aRefPad->m_Drill; dummypad.m_Size = aRefPad->m_Drill;
......
...@@ -290,7 +290,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -290,7 +290,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
* checkClearanceSegmToPad(),a pseudo pad is used, with a shape and a * checkClearanceSegmToPad(),a pseudo pad is used, with a shape and a
* size like the hole * size like the hole
*/ */
if( pad->m_Drill.x() == ZERO_LENGTH ) if( pad->m_Drill.x == 0 )
continue; continue;
dummypad.m_Size = pad->m_Drill; dummypad.m_Size = pad->m_Drill;
...@@ -633,7 +633,7 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad ) ...@@ -633,7 +633,7 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad )
m_segmEnd.x = m_segmEnd.y = 0; m_segmEnd.x = m_segmEnd.y = 0;
m_padToTestPos = relativePadPos; m_padToTestPos = relativePadPos;
diag = checkClearanceSegmToPad( aPad, TO_LEGACY_LU( aRefPad->m_Size.x() ), dist_min ); diag = checkClearanceSegmToPad( aPad, aRefPad->m_Size.x, dist_min );
break; break;
case PAD_RECT: case PAD_RECT:
...@@ -644,7 +644,7 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad ) ...@@ -644,7 +644,7 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad )
if( aPad->m_PadShape == PAD_RECT ) if( aPad->m_PadShape == PAD_RECT )
{ {
wxSize size = TO_LEGACY_LU_WXS( aPad->m_Size ); wxSize size = aPad->m_Size;
// The trivial case is if both rects are rotated by multiple of 90 deg // The trivial case is if both rects are rotated by multiple of 90 deg
// Most of time this is the case, and the test is fast // Most of time this is the case, and the test is fast
...@@ -664,10 +664,10 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad ) ...@@ -664,10 +664,10 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad )
relativePadPos.x = ABS( relativePadPos.x ); relativePadPos.x = ABS( relativePadPos.x );
relativePadPos.y = ABS( relativePadPos.y ); relativePadPos.y = ABS( relativePadPos.y );
if( ( relativePadPos.x - ( (size.x + TO_LEGACY_LU( aRefPad->m_Size.x() ) ) / 2 ) ) >= dist_min ) if( ( relativePadPos.x - ( (size.x + aRefPad->m_Size.x) / 2 ) ) >= dist_min )
diag = true; diag = true;
if( ( relativePadPos.y - ( (size.y + TO_LEGACY_LU( aRefPad->m_Size.y() ) ) / 2 ) ) >= dist_min ) if( ( relativePadPos.y - ( (size.y + aRefPad->m_Size.y) / 2 ) ) >= dist_min )
diag = true; diag = true;
} }
else // at least one pad has any other orient. Test is more tricky else // at least one pad has any other orient. Test is more tricky
...@@ -716,15 +716,15 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad ) ...@@ -716,15 +716,15 @@ bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad )
int segm_width; int segm_width;
m_segmAngle = aRefPad->m_Orient; // Segment orient. m_segmAngle = aRefPad->m_Orient; // Segment orient.
if( aRefPad->m_Size.y() < aRefPad->m_Size.x() ) // Build an horizontal equiv segment if( aRefPad->m_Size.y < aRefPad->m_Size.x ) // Build an horizontal equiv segment
{ {
segm_width = TO_LEGACY_LU( aRefPad->m_Size.y() ); segm_width = aRefPad->m_Size.y;
m_segmLength = TO_LEGACY_LU( aRefPad->m_Size.x() - aRefPad->m_Size.y() ); m_segmLength = aRefPad->m_Size.x - aRefPad->m_Size.y;
} }
else // Vertical oval: build an horizontal equiv segment and rotate 90.0 deg else // Vertical oval: build an horizontal equiv segment and rotate 90.0 deg
{ {
segm_width = TO_LEGACY_LU( aRefPad->m_Size.x() ); segm_width = aRefPad->m_Size.x;
m_segmLength = TO_LEGACY_LU( aRefPad->m_Size.y() - aRefPad->m_Size.x() ); m_segmLength = aRefPad->m_Size.y - aRefPad->m_Size.x;
m_segmAngle += 900; m_segmAngle += 900;
} }
...@@ -796,13 +796,13 @@ bool DRC::checkClearanceSegmToPad( const D_PAD* aPad, int aSegmentWidth, int aMi ...@@ -796,13 +796,13 @@ bool DRC::checkClearanceSegmToPad( const D_PAD* aPad, int aSegmentWidth, int aMi
int segmHalfWidth = aSegmentWidth / 2; int segmHalfWidth = aSegmentWidth / 2;
seuil = segmHalfWidth + aMinDist; seuil = segmHalfWidth + aMinDist;
padHalfsize.x = TO_LEGACY_LU( aPad->m_Size.x() / 2 ); padHalfsize.x = aPad->m_Size.x >> 1;
padHalfsize.y = TO_LEGACY_LU( aPad->m_Size.y() / 2 ); padHalfsize.y = aPad->m_Size.y >> 1;
if( aPad->m_PadShape == PAD_TRAPEZOID ) // The size is bigger, due to m_DeltaSize extra size if( aPad->m_PadShape == PAD_TRAPEZOID ) // The size is bigger, due to m_DeltaSize extra size
{ {
padHalfsize.x += TO_LEGACY_LU( abs( aPad->m_DeltaSize.y() ) / 2 ); // Remember: m_DeltaSize.y is the m_Size.x change padHalfsize.x += ABS(aPad->m_DeltaSize.y) / 2; // Remember: m_DeltaSize.y is the m_Size.x change
padHalfsize.y += TO_LEGACY_LU( abs( aPad->m_DeltaSize.x() ) / 2 ); // Remember: m_DeltaSize.x is the m_Size.y change padHalfsize.y += ABS(aPad->m_DeltaSize.x) / 2; // Remember: m_DeltaSize.x is the m_Size.y change
} }
if( aPad->m_PadShape == PAD_CIRCLE ) if( aPad->m_PadShape == PAD_CIRCLE )
......
...@@ -69,10 +69,10 @@ ...@@ -69,10 +69,10 @@
#define DRCE_TOO_SMALL_MICROVIA 29 ///< Too small micro via size #define DRCE_TOO_SMALL_MICROVIA 29 ///< Too small micro via size
#define DRCE_NETCLASS_TRACKWIDTH 30 ///< netclass has TrackWidth < board.m_designSettings->m_TrackMinWidth #define DRCE_NETCLASS_TRACKWIDTH 30 ///< netclass has TrackWidth < board.m_designSettings->m_TrackMinWidth
#define DRCE_NETCLASS_CLEARANCE 31 ///< netclass has Clearance < board.m_designSettings->m_TrackClearance #define DRCE_NETCLASS_CLEARANCE 31 ///< netclass has Clearance < board.m_designSettings->m_TrackClearance
#define DRCE_NETCLASS_VIASIZE 32 ///< netclass has ViaSize < board.m_designSettings->m_MinVia.m_Diameter #define DRCE_NETCLASS_VIASIZE 32 ///< netclass has ViaSize < board.m_designSettings->m_ViasMinSize
#define DRCE_NETCLASS_VIADRILLSIZE 33 ///< netclass has ViaDrillSize < board.m_designSettings->m_MinVia.m_Drill #define DRCE_NETCLASS_VIADRILLSIZE 33 ///< netclass has ViaDrillSize < board.m_designSettings->m_ViasMinDrill
#define DRCE_NETCLASS_uVIASIZE 34 ///< netclass has ViaSize < board.m_designSettings->m_MinMicroVia.m_Diameter #define DRCE_NETCLASS_uVIASIZE 34 ///< netclass has ViaSize < board.m_designSettings->m_MicroViasMinSize
#define DRCE_NETCLASS_uVIADRILLSIZE 35 ///< netclass has ViaSize < board.m_designSettings->m_MinMicroVia.m_Drill #define DRCE_NETCLASS_uVIADRILLSIZE 35 ///< netclass has ViaSize < board.m_designSettings->m_MicroViasMinDrill
class EDA_DRAW_PANEL; class EDA_DRAW_PANEL;
......
...@@ -82,7 +82,7 @@ void FOOTPRINT_EDIT_FRAME::Place_Ancre( MODULE* pt_mod ) ...@@ -82,7 +82,7 @@ void FOOTPRINT_EDIT_FRAME::Place_Ancre( MODULE* pt_mod )
for( ; pt_pad != NULL; pt_pad = pt_pad->Next() ) for( ; pt_pad != NULL; pt_pad = pt_pad->Next() )
{ {
pt_pad->m_Pos0 += VECTOR_PCB::fromXY( FROM_LEGACY_LU( moveVector.x ), FROM_LEGACY_LU( moveVector.y ) ); pt_pad->m_Pos0 += moveVector;
} }
/* Update the draw element coordinates. */ /* Update the draw element coordinates. */
...@@ -93,7 +93,7 @@ void FOOTPRINT_EDIT_FRAME::Place_Ancre( MODULE* pt_mod ) ...@@ -93,7 +93,7 @@ void FOOTPRINT_EDIT_FRAME::Place_Ancre( MODULE* pt_mod )
switch( PtStruct->Type() ) switch( PtStruct->Type() )
{ {
case PCB_MODULE_EDGE_T: case PCB_MODULE_EDGE_T:
#undef STRUCT /// @BUG: unsafe type cast #undef STRUCT
#define STRUCT ( (EDGE_MODULE*) PtStruct ) #define STRUCT ( (EDGE_MODULE*) PtStruct )
STRUCT->m_Start0 += moveVector; STRUCT->m_Start0 += moveVector;
STRUCT->m_End0 += moveVector; STRUCT->m_End0 += moveVector;
......
...@@ -125,7 +125,7 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -125,7 +125,7 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
pt_pad = (D_PAD*) LockPoint; pt_pad = (D_PAD*) LockPoint;
/* A pad is found: put the starting point on pad center */ /* A pad is found: put the starting point on pad center */
pos = TO_LEGACY_LU_WXP( pt_pad->m_Pos ); pos = pt_pad->m_Pos;
GetBoard()->SetHighLightNet( pt_pad->GetNet() ); GetBoard()->SetHighLightNet( pt_pad->GetNet() );
} }
else /* A track segment is found */ else /* A track segment is found */
...@@ -783,7 +783,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -783,7 +783,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
if( g_FirstTrackSegment->GetState( BEGIN_ONPAD ) ) if( g_FirstTrackSegment->GetState( BEGIN_ONPAD ) )
{ {
D_PAD * pad = (D_PAD *) g_FirstTrackSegment->start; D_PAD * pad = (D_PAD *) g_FirstTrackSegment->start;
lenDie = TO_LEGACY_LU_DBL( pad->m_LengthDie ); lenDie = (double) pad->m_LengthDie;
} }
// calculate track len on board: // calculate track len on board:
...@@ -1067,7 +1067,7 @@ void DeleteNullTrackSegments( BOARD* pcb, DLIST<TRACK>& aTrackList ) ...@@ -1067,7 +1067,7 @@ void DeleteNullTrackSegments( BOARD* pcb, DLIST<TRACK>& aTrackList )
*/ */
void EnsureEndTrackOnPad( D_PAD* Pad ) void EnsureEndTrackOnPad( D_PAD* Pad )
{ {
if( g_CurrentTrackSegment->m_End == TO_LEGACY_LU_WXP( Pad->m_Pos ) ) // Ok ! if( g_CurrentTrackSegment->m_End == Pad->m_Pos ) // Ok !
{ {
g_CurrentTrackSegment->end = Pad; g_CurrentTrackSegment->end = Pad;
g_CurrentTrackSegment->SetState( END_ONPAD, ON ); g_CurrentTrackSegment->SetState( END_ONPAD, ON );
...@@ -1084,7 +1084,7 @@ void EnsureEndTrackOnPad( D_PAD* Pad ) ...@@ -1084,7 +1084,7 @@ void EnsureEndTrackOnPad( D_PAD* Pad )
lasttrack->end = g_CurrentTrackSegment; lasttrack->end = g_CurrentTrackSegment;
} }
g_CurrentTrackSegment->m_End = TO_LEGACY_LU_WXP( Pad->m_Pos ); g_CurrentTrackSegment->m_End = Pad->m_Pos;
g_CurrentTrackSegment->SetState( END_ONPAD, OFF ); g_CurrentTrackSegment->SetState( END_ONPAD, OFF );
g_CurrentTrackSegment->end = Pad; g_CurrentTrackSegment->end = Pad;
......
...@@ -252,70 +252,70 @@ void CreatePadsShapesSection( FILE* file, BOARD* pcb ) ...@@ -252,70 +252,70 @@ void CreatePadsShapesSection( FILE* file, BOARD* pcb )
fprintf( file, "PAD PAD%d", pad->GetSubRatsnest() ); fprintf( file, "PAD PAD%d", pad->GetSubRatsnest() );
int dx = TO_LEGACY_LU( pad->m_Size.x() / 2 ); int dx = pad->m_Size.x / 2;
int dy = TO_LEGACY_LU( pad->m_Size.y() / 2 ); int dy = pad->m_Size.y / 2;
switch( pad->m_PadShape ) switch( pad->m_PadShape )
{ {
default: default:
case PAD_CIRCLE: case PAD_CIRCLE:
pad_type = "ROUND"; // how about oval holes? pad_type = "ROUND";
fprintf( file, " %s %d\n", pad_type, ( int )TO_LEGACY_LU( pad->m_Drill.x() ) ); fprintf( file, " %s %d\n", pad_type, pad->m_Drill.x );
fprintf( file, "CIRCLE %d %d %d\n", fprintf( file, "CIRCLE %d %d %d\n",
TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ), dx ); pad->m_Offset.x, -pad->m_Offset.y, dx );
break; break;
case PAD_RECT: case PAD_RECT:
pad_type = "RECTANGULAR"; pad_type = "RECTANGULAR";
fprintf( file, " %s %d\n", pad_type, ( int )TO_LEGACY_LU( pad->m_Drill.x() ) ); fprintf( file, " %s %d\n", pad_type, pad->m_Drill.x );
fprintf( file, "RECTANGLE %d %d %d %d\n", fprintf( file, "RECTANGLE %d %d %d %d\n",
TO_LEGACY_LU( pad->m_Offset.x() ) - dx, -TO_LEGACY_LU( pad->m_Offset.y() ) - dy, pad->m_Offset.x - dx, -pad->m_Offset.y - dy,
TO_LEGACY_LU( pad->m_Size.x() ), TO_LEGACY_LU( pad->m_Size.y() ) ); pad->m_Size.x, pad->m_Size.y );
break; break;
case PAD_OVAL: /* Create outline by 2 lines and 2 arcs */ case PAD_OVAL: /* Create outline by 2 lines and 2 arcs */
{ {
pad_type = "FINGER"; pad_type = "FINGER";
fprintf( file, " %s %d\n", pad_type, ( int )TO_LEGACY_LU( pad->m_Drill.x() ) ); fprintf( file, " %s %d\n", pad_type, pad->m_Drill.x );
int dr = dx - dy; int dr = dx - dy;
if( dr >= 0 ) // Horizontal oval if( dr >= 0 ) // Horizontal oval
{ {
int radius = dy; int radius = dy;
fprintf( file, "LINE %d %d %d %d\n", fprintf( file, "LINE %d %d %d %d\n",
-dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - radius, -dr + pad->m_Offset.x, -pad->m_Offset.y - radius,
dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - radius ); dr + pad->m_Offset.x, -pad->m_Offset.y - radius );
fprintf( file, "ARC %d %d %d %d %d %d\n", fprintf( file, "ARC %d %d %d %d %d %d\n",
dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - radius, dr + pad->m_Offset.x, -pad->m_Offset.y - radius,
dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + radius, dr + pad->m_Offset.x, -pad->m_Offset.y + radius,
dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) ); dr + pad->m_Offset.x, -pad->m_Offset.y );
fprintf( file, "LINE %d %d %d %d\n", fprintf( file, "LINE %d %d %d %d\n",
dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + radius, dr + pad->m_Offset.x, -pad->m_Offset.y + radius,
-dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + radius ); -dr + pad->m_Offset.x, -pad->m_Offset.y + radius );
fprintf( file, "ARC %d %d %d %d %d %d\n", fprintf( file, "ARC %d %d %d %d %d %d\n",
-dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + radius, -dr + pad->m_Offset.x, -pad->m_Offset.y + radius,
-dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - radius, -dr + pad->m_Offset.x, -pad->m_Offset.y - radius,
-dr + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) ); -dr + pad->m_Offset.x, -pad->m_Offset.y );
} }
else // Vertical oval else // Vertical oval
{ {
dr = -dr; dr = -dr;
int radius = dx; int radius = dx;
fprintf( file, "LINE %d %d %d %d\n", fprintf( file, "LINE %d %d %d %d\n",
-radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - dr, -radius + pad->m_Offset.x, -pad->m_Offset.y - dr,
-radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + dr ); -radius + pad->m_Offset.x, -pad->m_Offset.y + dr );
fprintf( file, "ARC %d %d %d %d %d %d\n", fprintf( file, "ARC %d %d %d %d %d %d\n",
-radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + dr, -radius + pad->m_Offset.x, -pad->m_Offset.y + dr,
radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + dr, radius + pad->m_Offset.x, -pad->m_Offset.y + dr,
TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + dr ); pad->m_Offset.x, -pad->m_Offset.y + dr );
fprintf( file, "LINE %d %d %d %d\n", fprintf( file, "LINE %d %d %d %d\n",
radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) + dr, radius + pad->m_Offset.x, -pad->m_Offset.y + dr,
radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - dr ); radius + pad->m_Offset.x, -pad->m_Offset.y - dr );
fprintf( file, "ARC %d %d %d %d %d %d\n", fprintf( file, "ARC %d %d %d %d %d %d\n",
radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - dr, radius + pad->m_Offset.x, -pad->m_Offset.y - dr,
-radius + TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - dr, -radius + pad->m_Offset.x, -pad->m_Offset.y - dr,
TO_LEGACY_LU( pad->m_Offset.x() ), -TO_LEGACY_LU( pad->m_Offset.y() ) - dr ); pad->m_Offset.x, -pad->m_Offset.y - dr );
} }
break; break;
} }
...@@ -410,7 +410,7 @@ void CreateShapesSection( FILE* file, BOARD* pcb ) ...@@ -410,7 +410,7 @@ void CreateShapesSection( FILE* file, BOARD* pcb )
NORMALIZE_ANGLE_POS( orient ); NORMALIZE_ANGLE_POS( orient );
fprintf( file, "PIN %s PAD%d %d %d %s %d %s", fprintf( file, "PIN %s PAD%d %d %d %s %d %s",
TO_UTF8( pinname ), pad->GetSubRatsnest(), TO_UTF8( pinname ), pad->GetSubRatsnest(),
TO_LEGACY_LU( pad->m_Pos0.x() ), TO_LEGACY_LU( -pad->m_Pos0.y() ), pad->m_Pos0.x, -pad->m_Pos0.y,
layer, orient / 10, mirror ); layer, orient / 10, mirror );
if( orient % 10 ) if( orient % 10 )
......
...@@ -881,11 +881,11 @@ static void export_vrml_edge_module( EDGE_MODULE* module ) /*{{{*/ ...@@ -881,11 +881,11 @@ static void export_vrml_edge_module( EDGE_MODULE* module ) /*{{{*/
static void export_vrml_pad( BOARD* pcb, D_PAD* pad ) /*{{{*/ static void export_vrml_pad( BOARD* pcb, D_PAD* pad ) /*{{{*/
{ {
double hole_drill_w = (double) TO_LEGACY_LU_DBL( pad->m_Drill.x() / 2 ); double hole_drill_w = (double) pad->m_Drill.x / 2;
double hole_drill_h = (double) TO_LEGACY_LU_DBL( pad->m_Drill.y() / 2 ); double hole_drill_h = (double) pad->m_Drill.y / 2;
double hole_drill = MIN( hole_drill_w, hole_drill_h ); double hole_drill = MIN( hole_drill_w, hole_drill_h );
double hole_x = TO_LEGACY_LU_DBL( pad->m_Pos.x() ); double hole_x = pad->m_Pos.x;
double hole_y = TO_LEGACY_LU_DBL( pad->m_Pos.y() ); double hole_y = pad->m_Pos.y;
/* Export the hole on the edge layer */ /* Export the hole on the edge layer */
if( hole_drill > 0 ) if( hole_drill > 0 )
...@@ -913,11 +913,11 @@ static void export_vrml_pad( BOARD* pcb, D_PAD* pad ) /*{{{*/ ...@@ -913,11 +913,11 @@ static void export_vrml_pad( BOARD* pcb, D_PAD* pad ) /*{{{*/
wxPoint pad_pos = pad->ReturnShapePos(); wxPoint pad_pos = pad->ReturnShapePos();
double pad_x = pad_pos.x; double pad_x = pad_pos.x;
double pad_y = pad_pos.y; double pad_y = pad_pos.y;
wxSize pad_delta = TO_LEGACY_LU_WXS( pad->m_DeltaSize ); wxSize pad_delta = pad->m_DeltaSize;
double pad_dx = pad_delta.x / 2; double pad_dx = pad_delta.x / 2;
double pad_dy = pad_delta.y / 2; double pad_dy = pad_delta.y / 2;
double pad_w = TO_LEGACY_LU_DBL( pad->m_Size.x() / 2 ); double pad_w = pad->m_Size.x / 2;
double pad_h = TO_LEGACY_LU_DBL( pad->m_Size.y() / 2 ); double pad_h = pad->m_Size.y / 2;
for( int layer = FIRST_COPPER_LAYER; layer < copper_layers; layer++ ) for( int layer = FIRST_COPPER_LAYER; layer < copper_layers; layer++ )
{ {
......
...@@ -127,22 +127,21 @@ void Build_Holes_List( BOARD* aPcb, ...@@ -127,22 +127,21 @@ void Build_Holes_List( BOARD* aPcb,
if( aGenerateNPTH_list && pad->m_Attribut != PAD_HOLE_NOT_PLATED ) if( aGenerateNPTH_list && pad->m_Attribut != PAD_HOLE_NOT_PLATED )
continue; continue;
if( pad->m_Drill.x() == ZERO_LENGTH ) if( pad->m_Drill.x == 0 )
continue; continue;
new_hole.m_Hole_NotPlated = (pad->m_Attribut == PAD_HOLE_NOT_PLATED); new_hole.m_Hole_NotPlated = (pad->m_Attribut == PAD_HOLE_NOT_PLATED);
new_hole.m_Tool_Reference = -1; // Flag is: Not initialized new_hole.m_Tool_Reference = -1; // Flag is: Not initialized
new_hole.m_Hole_Orient = pad->m_Orient; new_hole.m_Hole_Orient = pad->m_Orient;
new_hole.m_Hole_Shape = 0; // hole shape: round new_hole.m_Hole_Shape = 0; // hole shape: round
new_hole.m_Hole_Diameter = min( TO_LEGACY_LU( pad->m_Drill.x() ), TO_LEGACY_LU( pad->m_Drill.y() ) ); new_hole.m_Hole_Diameter = min( pad->m_Drill.x, pad->m_Drill.y );
new_hole.m_Hole_Size.x = new_hole.m_Hole_Size.y = new_hole.m_Hole_Diameter; new_hole.m_Hole_Size.x = new_hole.m_Hole_Size.y = new_hole.m_Hole_Diameter;
if( pad->m_DrillShape != PAD_CIRCLE ) if( pad->m_DrillShape != PAD_CIRCLE )
new_hole.m_Hole_Shape = 1; // oval flag set new_hole.m_Hole_Shape = 1; // oval flag set
new_hole.m_Hole_Size.x = TO_LEGACY_LU( pad->m_Drill.x() ); new_hole.m_Hole_Size = pad->m_Drill;
new_hole.m_Hole_Size.y = TO_LEGACY_LU( pad->m_Drill.y() ); new_hole.m_Hole_Pos = pad->m_Pos; // hole position
new_hole.m_Hole_Pos = TO_LEGACY_LU_WXP( pad->m_Pos ); // hole position
new_hole.m_Hole_Bottom_Layer = LAYER_N_BACK; new_hole.m_Hole_Bottom_Layer = LAYER_N_BACK;
new_hole.m_Hole_Top_Layer = LAYER_N_FRONT;// pad holes are through holes new_hole.m_Hole_Top_Layer = LAYER_N_FRONT;// pad holes are through holes
aHoleListBuffer.push_back( new_hole ); aHoleListBuffer.push_back( new_hole );
......
...@@ -438,20 +438,19 @@ void PCB_EDIT_FRAME::GenModuleReport( wxCommandEvent& event ) ...@@ -438,20 +438,19 @@ void PCB_EDIT_FRAME::GenModuleReport( wxCommandEvent& event )
{ {
fprintf( rptfile, "$PAD \"%.4s\"\n", pad->m_Padname ); fprintf( rptfile, "$PAD \"%.4s\"\n", pad->m_Padname );
sprintf( line, "position %9.6f %9.6f\n", sprintf( line, "position %9.6f %9.6f\n",
TO_LEGACY_LU_DBL( pad->m_Pos0.x() ) * conv_unit, pad->m_Pos0.x * conv_unit,
TO_LEGACY_LU_DBL( pad->m_Pos0.y() ) * conv_unit ); pad->m_Pos0.y * conv_unit );
fputs( line, rptfile ); fputs( line, rptfile );
sprintf( line, "size %9.6f %9.6f\n", sprintf( line, "size %9.6f %9.6f\n",
TO_LEGACY_LU_DBL( pad->m_Size.x() ) * conv_unit, pad->m_Size.x * conv_unit,
TO_LEGACY_LU_DBL( pad->m_Size.y() ) * conv_unit ); pad->m_Size.y * conv_unit );
fputs( line, rptfile ); fputs( line, rptfile );
sprintf( line, "drill %9.6f\n", sprintf( line, "drill %9.6f\n", pad->m_Drill.x * conv_unit );
TO_LEGACY_LU_DBL( pad->m_Drill.x() ) * conv_unit );
fputs( line, rptfile ); fputs( line, rptfile );
sprintf( line, "shape_offset %9.6f %9.6f\n", sprintf( line, "shape_offset %9.6f %9.6f\n",
TO_LEGACY_LU_DBL( pad->m_Offset.x() ) * conv_unit, pad->m_Offset.x * conv_unit,
TO_LEGACY_LU_DBL( pad->m_Offset.y() ) * conv_unit ); pad->m_Offset.y * conv_unit );
fputs( line, rptfile ); fputs( line, rptfile );
sprintf( line, "orientation %.2f\n", sprintf( line, "orientation %.2f\n",
......
...@@ -254,19 +254,19 @@ void PCB_BASE_FRAME::Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw ) ...@@ -254,19 +254,19 @@ void PCB_BASE_FRAME::Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw )
if( pt_pad->m_PadShape != PAD_TRAPEZOID ) if( pt_pad->m_PadShape != PAD_TRAPEZOID )
{ {
pt_pad->m_DeltaSize.x( ZERO_LENGTH ); pt_pad->m_DeltaSize.x = 0;
pt_pad->m_DeltaSize.y( ZERO_LENGTH ); pt_pad->m_DeltaSize.y = 0;
} }
if( pt_pad->m_PadShape == PAD_CIRCLE ) if( pt_pad->m_PadShape == PAD_CIRCLE )
pt_pad->m_Size.y( pt_pad->m_Size.x() ); pt_pad->m_Size.y = pt_pad->m_Size.x;
switch( pt_pad->m_Attribut & 0x7F ) switch( pt_pad->m_Attribut & 0x7F )
{ {
case PAD_SMD: case PAD_SMD:
case PAD_CONN: case PAD_CONN:
pt_pad->m_Drill = VECTOR_PCB::fromXY(ZERO_LENGTH, ZERO_LENGTH);//wxSize( 0, 0 ); pt_pad->m_Drill = wxSize( 0, 0 );
pt_pad->m_Offset.x( ZERO_LENGTH ); pt_pad->m_Offset.x = 0;
pt_pad->m_Offset.y( ZERO_LENGTH ); pt_pad->m_Offset.y = 0;
break; break;
default: default:
......
...@@ -369,14 +369,16 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName ) ...@@ -369,14 +369,16 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName )
{ {
Pad->SetPadName( params[10] ); Pad->SetPadName( params[10] );
} }
Pad->m_Size.x( FROM_LEGACY_LU( ibuf[4] + abs( ibuf[0] - ibuf[2] ) ) ); Pad->m_Pos.x = (ibuf[0] + ibuf[2]) / 2;
Pad->m_Size.y( FROM_LEGACY_LU( ibuf[4] + abs( ibuf[1] - ibuf[3] ) ) ); Pad->m_Pos.y = (ibuf[1] + ibuf[3]) / 2;
Pad->m_Pos.x( FROM_LEGACY_LU( (ibuf[0] + ibuf[2]) / 2 + m_Pos.x ) ); Pad->m_Size.x = ibuf[4] + abs( ibuf[0] - ibuf[2] );
Pad->m_Pos.y( FROM_LEGACY_LU( (ibuf[1] + ibuf[3]) / 2 + m_Pos.y ) ); Pad->m_Size.y = ibuf[4] + abs( ibuf[1] - ibuf[3] );
Pad->m_Pos.x += m_Pos.x;
Pad->m_Pos.y += m_Pos.y;
if( !TestFlags( params[iflgidx], 0x0100, wxT( "square" ) ) ) if( !TestFlags( params[iflgidx], 0x0100, wxT( "square" ) ) )
{ {
if( Pad->m_Size.x() == Pad->m_Size.y() ) if( Pad->m_Size.x == Pad->m_Size.y )
Pad->m_PadShape = PAD_ROUND; Pad->m_PadShape = PAD_ROUND;
else else
Pad->m_PadShape = PAD_OVAL; Pad->m_PadShape = PAD_OVAL;
...@@ -426,14 +428,14 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName ) ...@@ -426,14 +428,14 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName )
Pad->SetPadName( params[9] ); Pad->SetPadName( params[9] );
} }
Pad->m_Drill.x( FROM_LEGACY_LU( (int) ibuf[5] ) ); Pad->m_Pos.x = ibuf[0];
Pad->m_Drill.y( Pad->m_Drill.x() ); Pad->m_Pos.y = ibuf[1];
Pad->m_Size.x( FROM_LEGACY_LU( ibuf[3] ) + Pad->m_Drill.x() ); Pad->m_Drill.x = Pad->m_Drill.y = ibuf[5];
Pad->m_Size.y( Pad->m_Size.x() ); Pad->m_Size.x = Pad->m_Size.y = ibuf[3] + Pad->m_Drill.x;
Pad->m_Pos.x( FROM_LEGACY_LU( ibuf[0] + m_Pos.x ) ); Pad->m_Pos.x += m_Pos.x;
Pad->m_Pos.y( FROM_LEGACY_LU( ibuf[1] + m_Pos.y ) ); Pad->m_Pos.y += m_Pos.y;
if( (Pad->m_PadShape == PAD_ROUND) && (Pad->m_Size.x() != Pad->m_Size.y()) ) if( (Pad->m_PadShape == PAD_ROUND) && (Pad->m_Size.x != Pad->m_Size.y) )
Pad->m_PadShape = PAD_OVAL; Pad->m_PadShape = PAD_OVAL;
m_Pads.PushBack( Pad ); m_Pads.PushBack( Pad );
......
...@@ -89,7 +89,7 @@ void PlacePad( BOARD* Pcb, D_PAD* pt_pad, int color, int marge, int op_logic ) ...@@ -89,7 +89,7 @@ void PlacePad( BOARD* Pcb, D_PAD* pt_pad, int color, int marge, int op_logic )
int dx, dy; int dx, dy;
wxPoint shape_pos = pt_pad->ReturnShapePos(); wxPoint shape_pos = pt_pad->ReturnShapePos();
dx = TO_LEGACY_LU( pt_pad->m_Size.x() / 2 ); dx = pt_pad->m_Size.x / 2;
dx += marge; dx += marge;
if( pt_pad->m_PadShape == PAD_CIRCLE ) if( pt_pad->m_PadShape == PAD_CIRCLE )
...@@ -100,13 +100,13 @@ void PlacePad( BOARD* Pcb, D_PAD* pt_pad, int color, int marge, int op_logic ) ...@@ -100,13 +100,13 @@ void PlacePad( BOARD* Pcb, D_PAD* pt_pad, int color, int marge, int op_logic )
} }
dy = TO_LEGACY_LU( pt_pad->m_Size.y() / 2 ); dy = pt_pad->m_Size.y / 2;
dy += marge; dy += marge;
if( pt_pad->m_PadShape == PAD_TRAPEZOID ) if( pt_pad->m_PadShape == PAD_TRAPEZOID )
{ {
dx += TO_LEGACY_LU( abs( pt_pad->m_DeltaSize.y() ) / 2 ); dx += abs( pt_pad->m_DeltaSize.y ) / 2;
dy += TO_LEGACY_LU( abs( pt_pad->m_DeltaSize.x() ) / 2 ); dy += abs( pt_pad->m_DeltaSize.x ) / 2;
} }
if( ( pt_pad->m_Orient % 900 ) == 0 ) /* The pad is a rectangle if( ( pt_pad->m_Orient % 900 ) == 0 ) /* The pad is a rectangle
......
...@@ -436,21 +436,20 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader ) ...@@ -436,21 +436,20 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader )
if( stricmp( line, "TrackWidthList" ) == 0 ) if( stricmp( line, "TrackWidthList" ) == 0 )
{ {
//double tmp = atof( data ); int tmp = atoi( data );
GetBoard()->m_TrackWidthList.push_back( LENGTH_LOAD_STR( data ) ); GetBoard()->m_TrackWidthList.push_back( tmp );
continue; continue;
} }
if( stricmp( line, "TrackClearence" ) == 0 ) if( stricmp( line, "TrackClearence" ) == 0 )
{ {
netclass_default->Clearance( LENGTH_LOAD_STR( data ) ); netclass_default->SetClearance( atoi( data ) );
continue; continue;
} }
if( stricmp( line, "TrackMinWidth" ) == 0 ) if( stricmp( line, "TrackMinWidth" ) == 0 )
{ {
//double width = atof( data ); GetBoard()->GetBoardDesignSettings()->m_TrackMinWidth = atoi( data );
GetBoard()->GetBoardDesignSettings()->m_TrackMinWidth = LENGTH_LOAD_STR( data );
continue; continue;
} }
...@@ -479,8 +478,7 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader ) ...@@ -479,8 +478,7 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader )
if( stricmp( line, "ViaMinSize" ) == 0 ) if( stricmp( line, "ViaMinSize" ) == 0 )
{ {
//double diameter = atof( data ); GetBoard()->GetBoardDesignSettings()->m_ViasMinSize = atoi( data );
GetBoard()->GetBoardDesignSettings()->m_MinVia.m_Diameter = LENGTH_LOAD_STR( data );
continue; continue;
} }
...@@ -491,23 +489,21 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader ) ...@@ -491,23 +489,21 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader )
if( stricmp( line, "MicroViaMinSize" ) == 0 ) if( stricmp( line, "MicroViaMinSize" ) == 0 )
{ {
//double diameter = atof( data ); GetBoard()->GetBoardDesignSettings()->m_MicroViasMinSize = atoi( data );
GetBoard()->GetBoardDesignSettings()->m_MinMicroVia.m_Diameter = LENGTH_LOAD_STR( data );
continue; continue;
} }
if( stricmp( line, "ViaSizeList" ) == 0 ) if( stricmp( line, "ViaSizeList" ) == 0 )
{ {
//double tmp = atof( data ); int tmp = atoi( data );
VIA_DIMENSION via_dim; VIA_DIMENSION via_dim;
via_dim.m_Diameter = LENGTH_LOAD_STR( data ); via_dim.m_Diameter = tmp;
data = strtok( NULL, " \n\r" ); data = strtok( NULL, " \n\r" );
if( data ) if( data )
{ {
//tmp = atof( data ); tmp = atoi( data );
LENGTH_PCB tmp = LENGTH_LOAD_STR( data ); via_dim.m_Drill = tmp > 0 ? tmp : 0;
via_dim.m_Drill = tmp > ZERO_LENGTH ? tmp : ZERO_LENGTH;
} }
GetBoard()->m_ViasDimensionsList.push_back( via_dim ); GetBoard()->m_ViasDimensionsList.push_back( via_dim );
...@@ -516,31 +512,28 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader ) ...@@ -516,31 +512,28 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader )
if( stricmp( line, "ViaDrill" ) == 0 ) if( stricmp( line, "ViaDrill" ) == 0 )
{ {
VIA_DIMENSION via = netclass_default->Via(); int diameter = atoi( data );
via.m_Drill = LENGTH_LOAD_STR( data ); netclass_default->SetViaDrill( diameter );
netclass_default->Via( via );
continue; continue;
} }
if( stricmp( line, "ViaMinDrill" ) == 0 ) if( stricmp( line, "ViaMinDrill" ) == 0 )
{ {
//double diameter = atof( data ); GetBoard()->GetBoardDesignSettings()->m_ViasMinDrill = atoi( data );
GetBoard()->GetBoardDesignSettings()->m_MinVia.m_Drill = LENGTH_LOAD_STR( data );
continue; continue;
} }
if( stricmp( line, "MicroViaDrill" ) == 0 ) if( stricmp( line, "MicroViaDrill" ) == 0 )
{ {
VIA_DIMENSION via = netclass_default->MicroVia(); int diameter = atoi( data );
via.m_Drill = LENGTH_LOAD_STR( data ); netclass_default->SetuViaDrill( diameter );
netclass_default->MicroVia( via );
continue; continue;
} }
if( stricmp( line, "MicroViaMinDrill" ) == 0 ) if( stricmp( line, "MicroViaMinDrill" ) == 0 )
{ {
//double diameter = atof( data ); int diameter = atoi( data );
GetBoard()->GetBoardDesignSettings()->m_MinMicroVia.m_Drill = LENGTH_LOAD_STR( data ); GetBoard()->GetBoardDesignSettings()->m_MicroViasMinDrill = diameter;
continue; continue;
} }
...@@ -586,16 +579,16 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader ) ...@@ -586,16 +579,16 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader )
if( stricmp( line, "PadSize" ) == 0 ) if( stricmp( line, "PadSize" ) == 0 )
{ {
g_Pad_Master.m_Size.x( LENGTH_LOAD_STR( data ) ); g_Pad_Master.m_Size.x = atoi( data );
data = strtok( NULL, delims ); data = strtok( NULL, delims );
g_Pad_Master.m_Size.y( LENGTH_LOAD_STR( data ) ); g_Pad_Master.m_Size.y = atoi( data );
continue; continue;
} }
if( stricmp( line, "PadDrill" ) == 0 ) if( stricmp( line, "PadDrill" ) == 0 )
{ {
g_Pad_Master.m_Drill.x( LENGTH_LOAD_STR( data ) ); g_Pad_Master.m_Drill.x = atoi( data );
g_Pad_Master.m_Drill.y( g_Pad_Master.m_Drill.x() ); g_Pad_Master.m_Drill.y = g_Pad_Master.m_Drill.x;
continue; continue;
} }
...@@ -696,57 +689,41 @@ static int WriteSetup( FILE* aFile, PCB_EDIT_FRAME* aFrame, BOARD* aBoard ) ...@@ -696,57 +689,41 @@ static int WriteSetup( FILE* aFile, PCB_EDIT_FRAME* aFrame, BOARD* aBoard )
// Save custom tracks width list (the first is not saved here: this is the netclass value // Save custom tracks width list (the first is not saved here: this is the netclass value
for( unsigned ii = 1; ii < aBoard->m_TrackWidthList.size(); ii++ ) for( unsigned ii = 1; ii < aBoard->m_TrackWidthList.size(); ii++ )
fprintf( aFile, "TrackWidthList "FM_LENSV"\n", ARG_LENSV( aBoard->m_TrackWidthList[ii] ) ); fprintf( aFile, "TrackWidthList %d\n", aBoard->m_TrackWidthList[ii] );
fprintf( aFile, fprintf( aFile, "TrackClearence %d\n", netclass_default->GetClearance() );
"TrackClearence "FM_LENSV"\n",
ARG_LENSV( netclass_default->Clearance() ) );
fprintf( aFile, "ZoneClearence %d\n", g_Zone_Default_Setting.m_ZoneClearance ); fprintf( aFile, "ZoneClearence %d\n", g_Zone_Default_Setting.m_ZoneClearance );
fprintf( aFile, fprintf( aFile, "TrackMinWidth %d\n", aBoard->GetBoardDesignSettings()->m_TrackMinWidth );
"TrackMinWidth "FM_LENSV"\n",
ARG_LENSV( aBoard->GetBoardDesignSettings()->m_TrackMinWidth ) );
fprintf( aFile, "DrawSegmWidth %d\n", aBoard->GetBoardDesignSettings()->m_DrawSegmentWidth ); fprintf( aFile, "DrawSegmWidth %d\n", aBoard->GetBoardDesignSettings()->m_DrawSegmentWidth );
fprintf( aFile, "EdgeSegmWidth %d\n", aBoard->GetBoardDesignSettings()->m_EdgeSegmentWidth ); fprintf( aFile, "EdgeSegmWidth %d\n", aBoard->GetBoardDesignSettings()->m_EdgeSegmentWidth );
// Save current default via size, for compatibility with older Pcbnew version; // Save current default via size, for compatibility with older Pcbnew version;
fprintf( aFile, fprintf( aFile, "ViaSize %d\n", netclass_default->GetViaDiameter() );
"ViaSize "FM_LENSV"\n", fprintf( aFile, "ViaDrill %d\n", netclass_default->GetViaDrill() );
ARG_LENSV( netclass_default->Via().m_Diameter ) ); fprintf( aFile, "ViaMinSize %d\n", aBoard->GetBoardDesignSettings()->m_ViasMinSize );
fprintf( aFile, fprintf( aFile, "ViaMinDrill %d\n", aBoard->GetBoardDesignSettings()->m_ViasMinDrill );
"ViaDrill "FM_LENSV"\n",
ARG_LENSV( netclass_default->Via().m_Drill ) );
fprintf( aFile,
"ViaMinSize "FM_LENSV"\n",
ARG_LENSV( aBoard->GetBoardDesignSettings()->m_MinVia.m_Diameter ) );
fprintf( aFile,
"ViaMinDrill "FM_LENSV"\n",
ARG_LENSV( aBoard->GetBoardDesignSettings()->m_MinVia.m_Drill ) );
// Save custom vias diameters list (the first is not saved here: this is // Save custom vias diameters list (the first is not saved here: this is
// the netclass value // the netclass value
for( unsigned ii = 1; ii < aBoard->m_ViasDimensionsList.size(); ii++ ) for( unsigned ii = 1; ii < aBoard->m_ViasDimensionsList.size(); ii++ )
fprintf( aFile, "ViaSizeList "FM_LENSV" "FM_LENSV"\n", fprintf( aFile, "ViaSizeList %d %d\n",
ARG_LENSV( aBoard->m_ViasDimensionsList[ii].m_Diameter ), aBoard->m_ViasDimensionsList[ii].m_Diameter,
ARG_LENSV( aBoard->m_ViasDimensionsList[ii].m_Drill ) ); aBoard->m_ViasDimensionsList[ii].m_Drill );
// for old versions compatibility: // for old versions compatibility:
fprintf( aFile, fprintf( aFile, "MicroViaSize %d\n", netclass_default->GetuViaDiameter() );
"MicroViaSize "FM_LENSV"\n", fprintf( aFile, "MicroViaDrill %d\n", netclass_default->GetuViaDrill() );
ARG_LENSV( netclass_default->MicroVia().m_Diameter ) );
fprintf( aFile,
"MicroViaDrill "FM_LENSV"\n",
ARG_LENSV( netclass_default->MicroVia().m_Drill ) );
fprintf( aFile, fprintf( aFile,
"MicroViasAllowed %d\n", "MicroViasAllowed %d\n",
aBoard->GetBoardDesignSettings()->m_MicroViasAllowed ); aBoard->GetBoardDesignSettings()->m_MicroViasAllowed );
fprintf( aFile, fprintf( aFile,
"MicroViaMinSize "FM_LENSV"\n", "MicroViaMinSize %d\n",
ARG_LENSV( aBoard->GetBoardDesignSettings()->m_MinMicroVia.m_Diameter ) ); aBoard->GetBoardDesignSettings()->m_MicroViasMinSize );
fprintf( aFile, fprintf( aFile,
"MicroViaMinDrill "FM_LENSV"\n", "MicroViaMinDrill %d\n",
ARG_LENSV( aBoard->GetBoardDesignSettings()->m_MinMicroVia.m_Drill ) ); aBoard->GetBoardDesignSettings()->m_MicroViasMinDrill );
fprintf( aFile, "TextPcbWidth %d\n", aBoard->GetBoardDesignSettings()->m_PcbTextWidth ); fprintf( aFile, "TextPcbWidth %d\n", aBoard->GetBoardDesignSettings()->m_PcbTextWidth );
fprintf( aFile, fprintf( aFile,
...@@ -757,8 +734,8 @@ static int WriteSetup( FILE* aFile, PCB_EDIT_FRAME* aFrame, BOARD* aBoard ) ...@@ -757,8 +734,8 @@ static int WriteSetup( FILE* aFile, PCB_EDIT_FRAME* aFrame, BOARD* aBoard )
fprintf( aFile, "EdgeModWidth %d\n", g_ModuleSegmentWidth ); fprintf( aFile, "EdgeModWidth %d\n", g_ModuleSegmentWidth );
fprintf( aFile, "TextModSize %d %d\n", g_ModuleTextSize.x, g_ModuleTextSize.y ); fprintf( aFile, "TextModSize %d %d\n", g_ModuleTextSize.x, g_ModuleTextSize.y );
fprintf( aFile, "TextModWidth %d\n", g_ModuleTextWidth ); fprintf( aFile, "TextModWidth %d\n", g_ModuleTextWidth );
fprintf( aFile, "PadSize "FM_LENSV" "FM_LENSV"\n", ARG_LENSV( g_Pad_Master.m_Size.x() ), ARG_LENSV( g_Pad_Master.m_Size.y() ) ); fprintf( aFile, "PadSize %d %d\n", g_Pad_Master.m_Size.x, g_Pad_Master.m_Size.y );
fprintf( aFile, "PadDrill "FM_LENSV"\n", ARG_LENSV( g_Pad_Master.m_Drill.x() ) ); fprintf( aFile, "PadDrill %d\n", g_Pad_Master.m_Drill.x );
fprintf( aFile, fprintf( aFile,
"Pad2MaskClearance %d\n", "Pad2MaskClearance %d\n",
aBoard->GetBoardDesignSettings()->m_SolderMaskMargin ); aBoard->GetBoardDesignSettings()->m_SolderMaskMargin );
......
...@@ -165,7 +165,7 @@ bool Magnetize( BOARD* m_Pcb, PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize gr ...@@ -165,7 +165,7 @@ bool Magnetize( BOARD* m_Pcb, PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize gr
if( doCheckNet && currTrack && currTrack->GetNet() != pad->GetNet() ) if( doCheckNet && currTrack && currTrack->GetNet() != pad->GetNet() )
return false; return false;
*curpos = TO_LEGACY_LU_WXP( pad->m_Pos ); *curpos = pad->m_Pos;
return true; return true;
} }
} }
......
...@@ -692,7 +692,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) ...@@ -692,7 +692,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
DrawPanel->Refresh(); DrawPanel->Refresh();
} }
// TODO: this should be refactored in the name of good programming style
void FOOTPRINT_EDIT_FRAME::Transform( MODULE* module, int transform ) void FOOTPRINT_EDIT_FRAME::Transform( MODULE* module, int transform )
{ {
D_PAD* pad = module->m_Pads; D_PAD* pad = module->m_Pads;
...@@ -710,16 +710,9 @@ void FOOTPRINT_EDIT_FRAME::Transform( MODULE* module, int transform ) ...@@ -710,16 +710,9 @@ void FOOTPRINT_EDIT_FRAME::Transform( MODULE* module, int transform )
{ {
pad->m_Pos0 = pad->m_Pos; pad->m_Pos0 = pad->m_Pos;
pad->m_Orient -= angle; pad->m_Orient -= angle;
wxPoint of; RotatePoint( &pad->m_Offset.x, &pad->m_Offset.y, angle );
of.x = TO_LEGACY_LU( pad->m_Offset.x() ); EXCHG( pad->m_Size.x, pad->m_Size.y );
of.y = TO_LEGACY_LU( pad->m_Offset.y() ); RotatePoint( &pad->m_DeltaSize.x, &pad->m_DeltaSize.y, -angle );
RotatePoint( &of.x, &of.y, angle );
pad->m_Offset.x( FROM_LEGACY_LU( of.x ) );
pad->m_Offset.y( FROM_LEGACY_LU( of.y ) );
EXCHG( pad->m_Size[0], pad->m_Size[1] ); /// @TODO: make it using geom. transform
wxSize delta = TO_LEGACY_LU_WXS( pad->m_DeltaSize );
RotatePoint( &delta.x, &delta.y, -angle );
pad->m_DeltaSize = VECTOR_PCB::fromXY( FROM_LEGACY_LU( delta.x ), FROM_LEGACY_LU( delta.y ) );
} }
module->m_Reference->m_Pos0 = module->m_Reference->m_Pos; module->m_Reference->m_Pos0 = module->m_Reference->m_Pos;
...@@ -756,10 +749,10 @@ void FOOTPRINT_EDIT_FRAME::Transform( MODULE* module, int transform ) ...@@ -756,10 +749,10 @@ void FOOTPRINT_EDIT_FRAME::Transform( MODULE* module, int transform )
case ID_MODEDIT_MODULE_MIRROR: case ID_MODEDIT_MODULE_MIRROR:
for( ; pad != NULL; pad = (D_PAD*) pad->Next() ) for( ; pad != NULL; pad = (D_PAD*) pad->Next() )
{ {
pad->m_Pos.y( -pad->m_Pos.y() ); NEGATE( pad->m_Pos.y );
pad->m_Pos0.y( -pad->m_Pos0.y() ); NEGATE( pad->m_Pos0.y );
pad->m_Offset.y( -pad->m_Offset.y() ); NEGATE( pad->m_Offset.y );
pad->m_DeltaSize.y( -pad->m_DeltaSize.y() ); NEGATE( pad->m_DeltaSize.y );
if( pad->m_Orient ) if( pad->m_Orient )
pad->m_Orient = 3600 - pad->m_Orient; pad->m_Orient = 3600 - pad->m_Orient;
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
static D_PAD* s_CurrentSelectedPad; static D_PAD* s_CurrentSelectedPad;
static VECTOR_PCB Pad_OldPos; static wxPoint Pad_OldPos;
/* Cancel move pad command. /* Cancel move pad command.
...@@ -76,7 +76,7 @@ static void Show_Pad_Move( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPo ...@@ -76,7 +76,7 @@ static void Show_Pad_Move( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPo
if( aErase ) if( aErase )
pad->Draw( aPanel, aDC, GR_XOR ); pad->Draw( aPanel, aDC, GR_XOR );
pad->m_Pos = FROM_LEGACY_LU_VEC( screen->GetCrossHairPosition() ); pad->m_Pos = screen->GetCrossHairPosition();
pad->Draw( aPanel, aDC, GR_XOR ); pad->Draw( aPanel, aDC, GR_XOR );
if( !g_Drag_Pistes_On ) if( !g_Drag_Pistes_On )
...@@ -91,12 +91,12 @@ static void Show_Pad_Move( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPo ...@@ -91,12 +91,12 @@ static void Show_Pad_Move( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPo
if( g_DragSegmentList[ii].m_Pad_Start ) if( g_DragSegmentList[ii].m_Pad_Start )
{ {
Track->m_Start = TO_LEGACY_LU_WXP( pad->m_Pos ); Track->m_Start = pad->m_Pos;
} }
if( g_DragSegmentList[ii].m_Pad_End ) if( g_DragSegmentList[ii].m_Pad_End )
{ {
Track->m_End = TO_LEGACY_LU_WXP( pad->m_Pos ); Track->m_End = pad->m_Pos;
} }
Track->Draw( aPanel, aDC, GR_XOR ); Track->Draw( aPanel, aDC, GR_XOR );
...@@ -148,7 +148,7 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw ) ...@@ -148,7 +148,7 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw )
aPad->m_Orient = g_Pad_Master.m_Orient + aPad->m_Orient = g_Pad_Master.m_Orient +
( (MODULE*) aPad->GetParent() )->m_Orient; ( (MODULE*) aPad->GetParent() )->m_Orient;
aPad->m_Size = g_Pad_Master.m_Size; aPad->m_Size = g_Pad_Master.m_Size;
aPad->m_DeltaSize = VECTOR_PCB::fromXY( ZERO_LENGTH, ZERO_LENGTH );//wxSize( 0, 0 ); aPad->m_DeltaSize = wxSize( 0, 0 );
aPad->m_Offset = g_Pad_Master.m_Offset; aPad->m_Offset = g_Pad_Master.m_Offset;
aPad->m_Drill = g_Pad_Master.m_Drill; aPad->m_Drill = g_Pad_Master.m_Drill;
aPad->m_DrillShape = g_Pad_Master.m_DrillShape; aPad->m_DrillShape = g_Pad_Master.m_DrillShape;
...@@ -160,7 +160,7 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw ) ...@@ -160,7 +160,7 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw )
break; break;
case PAD_CIRCLE: case PAD_CIRCLE:
aPad->m_Size.y( aPad->m_Size.x() ); aPad->m_Size.y = aPad->m_Size.x;
break; break;
} }
...@@ -168,8 +168,9 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw ) ...@@ -168,8 +168,9 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw )
{ {
case PAD_SMD: case PAD_SMD:
case PAD_CONN: case PAD_CONN:
aPad->m_Drill = VECTOR_PCB::fromXY( ZERO_LENGTH, ZERO_LENGTH ); //wxSize( 0, 0 ); aPad->m_Drill = wxSize( 0, 0 );
aPad->m_Offset = VECTOR_PCB::fromXY( ZERO_LENGTH, ZERO_LENGTH ); aPad->m_Offset.x = 0;
aPad->m_Offset.y = 0;
} }
aPad->ComputeShapeMaxRadius(); aPad->ComputeShapeMaxRadius();
...@@ -200,14 +201,12 @@ void PCB_BASE_FRAME::AddPad( MODULE* Module, bool draw ) ...@@ -200,14 +201,12 @@ void PCB_BASE_FRAME::AddPad( MODULE* Module, bool draw )
Import_Pad_Settings( Pad, false ); Import_Pad_Settings( Pad, false );
Pad->SetNetname( wxEmptyString ); Pad->SetNetname( wxEmptyString );
Pad->m_Pos = FROM_LEGACY_LU_VEC( GetScreen()->GetCrossHairPosition() ); Pad->m_Pos = GetScreen()->GetCrossHairPosition();
// Set the relative pad position // Set the relative pad position
// ( pad position for module orient, 0, and relative to the module position) // ( pad position for module orient, 0, and relative to the module position)
Pad->m_Pos0 = Pad->m_Pos - FROM_LEGACY_LU_VEC( Module->m_Pos ); Pad->m_Pos0 = Pad->m_Pos - Module->m_Pos;
wxPoint p = TO_LEGACY_LU_WXP( Pad->m_Pos0 ); RotatePoint( &Pad->m_Pos0, -Module->m_Orient );
RotatePoint( &p, -Module->m_Orient );
Pad->m_Pos0 = FROM_LEGACY_LU_VEC( p );
/* Automatically increment the current pad number. */ /* Automatically increment the current pad number. */
long num = 0; long num = 0;
...@@ -317,17 +316,17 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC ) ...@@ -317,17 +316,17 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC )
// Set the old state // Set the old state
if( g_DragSegmentList[ii].m_Pad_Start ) if( g_DragSegmentList[ii].m_Pad_Start )
Track->m_Start = TO_LEGACY_LU_WXP( Pad_OldPos ); Track->m_Start = Pad_OldPos;
if( g_DragSegmentList[ii].m_Pad_End ) if( g_DragSegmentList[ii].m_Pad_End )
Track->m_End = TO_LEGACY_LU_WXP( Pad_OldPos ); Track->m_End = Pad_OldPos;
picker.m_PickedItem = Track; picker.m_PickedItem = Track;
pickList.PushItem( picker ); pickList.PushItem( picker );
} }
/* Save old module and old items values */ /* Save old module and old items values */
wxPoint pad_curr_position = TO_LEGACY_LU_WXP( Pad->m_Pos ); wxPoint pad_curr_position = Pad->m_Pos;
Pad->m_Pos = Pad_OldPos; Pad->m_Pos = Pad_OldPos;
...@@ -340,7 +339,7 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC ) ...@@ -340,7 +339,7 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC )
SaveCopyInUndoList( pickList, UR_CHANGED ); SaveCopyInUndoList( pickList, UR_CHANGED );
} }
Pad->m_Pos = FROM_LEGACY_LU_VEC( pad_curr_position ); Pad->m_Pos = pad_curr_position;
Pad->Draw( DrawPanel, DC, GR_XOR ); Pad->Draw( DrawPanel, DC, GR_XOR );
/* Redraw dragged track segments */ /* Redraw dragged track segments */
...@@ -350,10 +349,10 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC ) ...@@ -350,10 +349,10 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC )
// Set the new state // Set the new state
if( g_DragSegmentList[ii].m_Pad_Start ) if( g_DragSegmentList[ii].m_Pad_Start )
Track->m_Start = TO_LEGACY_LU_WXP( Pad->m_Pos ); Track->m_Start = Pad->m_Pos;
if( g_DragSegmentList[ii].m_Pad_End ) if( g_DragSegmentList[ii].m_Pad_End )
Track->m_End = TO_LEGACY_LU_WXP( Pad->m_Pos ); Track->m_End = Pad->m_Pos;
Track->SetState( IN_EDIT, OFF ); Track->SetState( IN_EDIT, OFF );
...@@ -362,12 +361,12 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC ) ...@@ -362,12 +361,12 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* Pad, wxDC* DC )
} }
/* Compute local coordinates (i.e refer to Module position and for Module orient = 0) */ /* Compute local coordinates (i.e refer to Module position and for Module orient = 0) */
dX = TO_LEGACY_LU( Pad->m_Pos.x() - Pad_OldPos.x() ); dX = Pad->m_Pos.x - Pad_OldPos.x;
dY = TO_LEGACY_LU( Pad->m_Pos.y() - Pad_OldPos.y() ); dY = Pad->m_Pos.y - Pad_OldPos.y;
RotatePoint( &dX, &dY, -Module->m_Orient ); RotatePoint( &dX, &dY, -Module->m_Orient );
Pad->m_Pos0.x( Pad->m_Pos0.x() + FROM_LEGACY_LU( dX ) ); Pad->m_Pos0.x += dX;
Pad->m_Pos0.y( Pad->m_Pos0.y() + FROM_LEGACY_LU( dY ) ); /// @BUG was it really s_CurrentSelectedPad ??? s_CurrentSelectedPad->m_Pos0.y += dY;
Pad->m_Flags = 0; Pad->m_Flags = 0;
...@@ -402,13 +401,13 @@ void PCB_BASE_FRAME::RotatePad( D_PAD* Pad, wxDC* DC ) ...@@ -402,13 +401,13 @@ void PCB_BASE_FRAME::RotatePad( D_PAD* Pad, wxDC* DC )
if( DC ) if( DC )
Module->Draw( DrawPanel, DC, GR_XOR ); Module->Draw( DrawPanel, DC, GR_XOR );
EXCHG( Pad->m_Size[0], Pad->m_Size[1] ); /// @TODO: make it using geom. transform EXCHG( Pad->m_Size.x, Pad->m_Size.y );
EXCHG( Pad->m_Drill[0], Pad->m_Drill[1] ); EXCHG( Pad->m_Drill.x, Pad->m_Drill.y );
EXCHG( Pad->m_Offset[0], Pad->m_Offset[1] ); EXCHG( Pad->m_Offset.x, Pad->m_Offset.y );
Pad->m_Offset.y( -Pad->m_Offset.y() ); Pad->m_Offset.y = -Pad->m_Offset.y;
EXCHG( Pad->m_DeltaSize[0], Pad->m_DeltaSize[1] ); EXCHG( Pad->m_DeltaSize.x, Pad->m_DeltaSize.y );
Pad->m_DeltaSize.x( -Pad->m_DeltaSize.x() ); Pad->m_DeltaSize.x = -Pad->m_DeltaSize.x;
Module->CalculateBoundingBox(); Module->CalculateBoundingBox();
Pad->DisplayInfo( this ); Pad->DisplayInfo( this );
......
This diff is collapsed.
...@@ -839,8 +839,7 @@ static wxMenu* Append_Track_Width_List( BOARD* aBoard ) ...@@ -839,8 +839,7 @@ static wxMenu* Append_Track_Width_List( BOARD* aBoard )
for( unsigned ii = 0; ii < aBoard->m_TrackWidthList.size(); ii++ ) for( unsigned ii = 0; ii < aBoard->m_TrackWidthList.size(); ii++ )
{ {
value = ReturnStringFromValue( g_UserUnit, value = ReturnStringFromValue( g_UserUnit, aBoard->m_TrackWidthList[ii],
TO_LEGACY_LU( aBoard->m_TrackWidthList[ii] ),
PCB_INTERNAL_UNIT, true ); PCB_INTERNAL_UNIT, true );
msg.Printf( _( "Track %s" ), GetChars( value ) ); msg.Printf( _( "Track %s" ), GetChars( value ) );
...@@ -854,14 +853,13 @@ static wxMenu* Append_Track_Width_List( BOARD* aBoard ) ...@@ -854,14 +853,13 @@ static wxMenu* Append_Track_Width_List( BOARD* aBoard )
for( unsigned ii = 0; ii < aBoard->m_ViasDimensionsList.size(); ii++ ) for( unsigned ii = 0; ii < aBoard->m_ViasDimensionsList.size(); ii++ )
{ {
value = ReturnStringFromValue( g_UserUnit, value = ReturnStringFromValue( g_UserUnit, aBoard->m_ViasDimensionsList[ii].m_Diameter,
TO_LEGACY_LU( aBoard->m_ViasDimensionsList[ii].m_Diameter ),
PCB_INTERNAL_UNIT, true ); PCB_INTERNAL_UNIT, true );
wxString drill = ReturnStringFromValue( g_UserUnit, wxString drill = ReturnStringFromValue( g_UserUnit,
TO_LEGACY_LU( aBoard->m_ViasDimensionsList[ii].m_Drill ), aBoard->m_ViasDimensionsList[ii].m_Drill,
PCB_INTERNAL_UNIT, true ); PCB_INTERNAL_UNIT, true );
if( TO_LEGACY_LU( aBoard->m_ViasDimensionsList[ii].m_Drill ) <= 0 ) if( aBoard->m_ViasDimensionsList[ii].m_Drill <= 0 )
{ {
msg.Printf( _( "Via %s" ), GetChars( value ) ); msg.Printf( _( "Via %s" ), GetChars( value ) );
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -201,7 +201,7 @@ void ZONE_CONTAINER::AddClearanceAreasPolygonsToPolysList( BOARD* aPcb ) ...@@ -201,7 +201,7 @@ void ZONE_CONTAINER::AddClearanceAreasPolygonsToPolysList( BOARD* aPcb )
* inside the board (in fact inside the hole. Some photo diodes and Leds are * inside the board (in fact inside the hole. Some photo diodes and Leds are
* like this) * like this)
*/ */
if( (pad->m_Drill.x() == ZERO_LENGTH) && (pad->m_Drill.y() == ZERO_LENGTH) ) if( (pad->m_Drill.x == 0) && (pad->m_Drill.y == 0) )
continue; continue;
// Use a dummy pad to calculate a hole shape that have the same dimension as // Use a dummy pad to calculate a hole shape that have the same dimension as
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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