Gerbview: fix incorrect printing of negative objects, when using black and white option.
Eeschema: better name for m_SheetList (changed to m_SheetPath) member of class NETLIST_OBJECT.
This commit is contained in:
parent
473a724b9a
commit
d368739731
|
@ -116,7 +116,7 @@ const char* ShowType( NETLIST_ITEM_T aType )
|
||||||
|
|
||||||
void NETLIST_OBJECT::Show( std::ostream& out, int ndx ) const
|
void NETLIST_OBJECT::Show( std::ostream& out, int ndx ) const
|
||||||
{
|
{
|
||||||
wxString path = m_SheetList.PathHumanReadable();
|
wxString path = m_SheetPath.PathHumanReadable();
|
||||||
|
|
||||||
out << "<netItem ndx=\"" << ndx << '"' <<
|
out << "<netItem ndx=\"" << ndx << '"' <<
|
||||||
" type=\"" << ShowType( m_Type ) << '"' <<
|
" type=\"" << ShowType( m_Type ) << '"' <<
|
||||||
|
@ -129,13 +129,13 @@ void NETLIST_OBJECT::Show( std::ostream& out, int ndx ) const
|
||||||
if( !m_Label.IsEmpty() )
|
if( !m_Label.IsEmpty() )
|
||||||
out << " <label>" << m_Label.mb_str() << "</label>\n";
|
out << " <label>" << m_Label.mb_str() << "</label>\n";
|
||||||
|
|
||||||
out << " <sheetpath>" << m_SheetList.PathHumanReadable().mb_str() << "</sheetpath>\n";
|
out << " <sheetpath>" << m_SheetPath.PathHumanReadable().mb_str() << "</sheetpath>\n";
|
||||||
|
|
||||||
switch( m_Type )
|
switch( m_Type )
|
||||||
{
|
{
|
||||||
case NET_PIN:
|
case NET_PIN:
|
||||||
/* GetRef() needs to be const
|
/* GetRef() needs to be const
|
||||||
out << " <refOfComp>" << ((SCH_COMPONENT*)m_Link)->GetRef(&m_SheetList).mb_str()
|
out << " <refOfComp>" << ((SCH_COMPONENT*)m_Link)->GetRef(&m_SheetPath).mb_str()
|
||||||
<< "</refOfComp>\n";
|
<< "</refOfComp>\n";
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -222,7 +222,7 @@ bool NETLIST_OBJECT::IsLabelConnected( NETLIST_OBJECT* aNetItem )
|
||||||
if( ( at == NET_HIERLABEL || at == NET_HIERBUSLABELMEMBER )
|
if( ( at == NET_HIERLABEL || at == NET_HIERBUSLABELMEMBER )
|
||||||
&& ( bt == NET_SHEETLABEL || bt == NET_SHEETBUSLABELMEMBER ) )
|
&& ( bt == NET_SHEETLABEL || bt == NET_SHEETBUSLABELMEMBER ) )
|
||||||
{
|
{
|
||||||
if( m_SheetList == aNetItem->m_SheetListInclude )
|
if( m_SheetPath == aNetItem->m_SheetPathInclude )
|
||||||
{
|
{
|
||||||
return true; //connected!
|
return true; //connected!
|
||||||
}
|
}
|
||||||
|
@ -325,7 +325,7 @@ wxString NETLIST_OBJECT::GetNetName() const
|
||||||
if( !m_netNameCandidate->IsLabelGlobal() )
|
if( !m_netNameCandidate->IsLabelGlobal() )
|
||||||
{
|
{
|
||||||
// usual net name, prefix it by the sheet path
|
// usual net name, prefix it by the sheet path
|
||||||
netName = m_netNameCandidate->m_SheetList.PathHumanReadable();
|
netName = m_netNameCandidate->m_SheetPath.PathHumanReadable();
|
||||||
}
|
}
|
||||||
|
|
||||||
netName += m_netNameCandidate->m_Label;
|
netName += m_netNameCandidate->m_Label;
|
||||||
|
@ -351,7 +351,7 @@ wxString NETLIST_OBJECT::GetShortNetName() const
|
||||||
if( link ) // Should be always true
|
if( link ) // Should be always true
|
||||||
{
|
{
|
||||||
netName = wxT("Net-<");
|
netName = wxT("Net-<");
|
||||||
netName << link->GetRef( &m_netNameCandidate->m_SheetList );
|
netName << link->GetRef( &m_netNameCandidate->m_SheetPath );
|
||||||
netName << wxT("-Pad")
|
netName << wxT("-Pad")
|
||||||
<< LIB_PIN::ReturnPinStringNum( m_netNameCandidate->m_PinNum )
|
<< LIB_PIN::ReturnPinStringNum( m_netNameCandidate->m_PinNum )
|
||||||
<< wxT(">");
|
<< wxT(">");
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include <lib_pin.h> // LIB_PIN::ReturnPinStringNum( m_PinNum )
|
#include <lib_pin.h> // LIB_PIN::ReturnPinStringNum( m_PinNum )
|
||||||
|
|
||||||
class NETLIST_OBJECT_LIST;
|
class NETLIST_OBJECT_LIST;
|
||||||
|
class SCH_COMPONENT;
|
||||||
|
|
||||||
|
|
||||||
/* Type of Net objects (wires, labels, pins...) */
|
/* Type of Net objects (wires, labels, pins...) */
|
||||||
|
@ -97,7 +98,8 @@ public:
|
||||||
* that contains this pin
|
* that contains this pin
|
||||||
*/
|
*/
|
||||||
int m_Flag; /* flag used in calculations */
|
int m_Flag; /* flag used in calculations */
|
||||||
SCH_SHEET_PATH m_SheetList;
|
SCH_SHEET_PATH m_SheetPath; // the sheet path which contains this item
|
||||||
|
SCH_SHEET_PATH m_SheetPathInclude; // sheet path which contains the hierarchical label
|
||||||
int m_ElectricalType; /* Has meaning only for Pins and
|
int m_ElectricalType; /* Has meaning only for Pins and
|
||||||
* hierarchical pins: electrical type */
|
* hierarchical pins: electrical type */
|
||||||
int m_BusNetCode; /* Used for BUS connections */
|
int m_BusNetCode; /* Used for BUS connections */
|
||||||
|
@ -105,7 +107,6 @@ public:
|
||||||
* created from the BUS label ) member number.
|
* created from the BUS label ) member number.
|
||||||
*/
|
*/
|
||||||
NET_CONNECTION_T m_ConnectionType; // Used to store the connection type
|
NET_CONNECTION_T m_ConnectionType; // Used to store the connection type
|
||||||
SCH_SHEET_PATH m_SheetListInclude; // sheet path which contains the hierarchical label
|
|
||||||
long m_PinNum; // pin number ( 1 long = 4 bytes -> 4 ascii codes)
|
long m_PinNum; // pin number ( 1 long = 4 bytes -> 4 ascii codes)
|
||||||
wxString m_Label; // Label text (for labels) or Pin name (for pins)
|
wxString m_Label; // Label text (for labels) or Pin name (for pins)
|
||||||
wxPoint m_Start; // Position of object or for segments: starting point
|
wxPoint m_Start; // Position of object or for segments: starting point
|
||||||
|
@ -181,6 +182,19 @@ public:
|
||||||
return LIB_PIN::ReturnPinStringNum( m_PinNum );
|
return LIB_PIN::ReturnPinStringNum( m_PinNum );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** For Pins (NET_PINS):
|
||||||
|
* @return the schematic component which contains this pin
|
||||||
|
* (Note: this is the schematic component, not the library component
|
||||||
|
* for others items: return NULL
|
||||||
|
*/
|
||||||
|
SCH_COMPONENT* GetComponentParent() const
|
||||||
|
{
|
||||||
|
if( m_Link && m_Link->Type() == SCH_COMPONENT_T )
|
||||||
|
return (SCH_COMPONENT*) m_Link;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function IsLabelConnected
|
* Function IsLabelConnected
|
||||||
* tests if the net list object is a hierarchical label or sheet label and is
|
* tests if the net list object is a hierarchical label or sheet label and is
|
||||||
|
@ -385,7 +399,7 @@ private:
|
||||||
*/
|
*/
|
||||||
static bool sortItemsBySheet( const NETLIST_OBJECT* Objet1, const NETLIST_OBJECT* Objet2 )
|
static bool sortItemsBySheet( const NETLIST_OBJECT* Objet1, const NETLIST_OBJECT* Objet2 )
|
||||||
{
|
{
|
||||||
return Objet1->m_SheetList.Cmp( Objet2->m_SheetList ) < 0;
|
return Objet1->m_SheetPath.Cmp( Objet2->m_SheetPath ) < 0;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Propagate net codes from a parent sheet to an include sheet,
|
* Propagate net codes from a parent sheet to an include sheet,
|
||||||
|
|
|
@ -240,7 +240,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
|
||||||
|
|
||||||
marker->SetMarkerType( MARK_ERC );
|
marker->SetMarkerType( MARK_ERC );
|
||||||
marker->SetErrorLevel( WAR );
|
marker->SetErrorLevel( WAR );
|
||||||
screen = aNetItemRef->m_SheetList.LastScreen();
|
screen = aNetItemRef->m_SheetPath.LastScreen();
|
||||||
screen->Append( marker );
|
screen->Append( marker );
|
||||||
|
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
@ -277,7 +277,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
|
||||||
cmp_ref = wxT( "?" );
|
cmp_ref = wxT( "?" );
|
||||||
|
|
||||||
if( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
|
if( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
|
||||||
cmp_ref = ( (SCH_COMPONENT*) aNetItemRef->m_Link )->GetRef( &aNetItemRef->m_SheetList );
|
cmp_ref = ( (SCH_COMPONENT*) aNetItemRef->m_Link )->GetRef( &aNetItemRef->m_SheetPath );
|
||||||
|
|
||||||
if( aNetItemTst == NULL )
|
if( aNetItemTst == NULL )
|
||||||
{
|
{
|
||||||
|
@ -296,7 +296,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
|
||||||
{
|
{
|
||||||
if( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
|
if( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
|
||||||
cmp_ref = ( (SCH_COMPONENT*) aNetItemRef->m_Link )->GetRef(
|
cmp_ref = ( (SCH_COMPONENT*) aNetItemRef->m_Link )->GetRef(
|
||||||
&aNetItemRef->m_SheetList );
|
&aNetItemRef->m_SheetPath );
|
||||||
|
|
||||||
msg.Printf( _( "Pin %s (%s) of component %s is not driven (Net %d)." ),
|
msg.Printf( _( "Pin %s (%s) of component %s is not driven (Net %d)." ),
|
||||||
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ),
|
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ),
|
||||||
|
@ -336,7 +336,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
|
||||||
alt_cmp = wxT( "?" );
|
alt_cmp = wxT( "?" );
|
||||||
|
|
||||||
if( aNetItemTst->m_Type == NET_PIN && aNetItemTst->m_Link )
|
if( aNetItemTst->m_Type == NET_PIN && aNetItemTst->m_Link )
|
||||||
alt_cmp = ( (SCH_COMPONENT*) aNetItemTst->m_Link )->GetRef( &aNetItemTst->m_SheetList );
|
alt_cmp = ( (SCH_COMPONENT*) aNetItemTst->m_Link )->GetRef( &aNetItemTst->m_SheetPath );
|
||||||
|
|
||||||
msg.Printf( _( "Pin %s (%s) of component %s is connected to " ),
|
msg.Printf( _( "Pin %s (%s) of component %s is connected to " ),
|
||||||
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ) );
|
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ) );
|
||||||
|
@ -405,9 +405,9 @@ void TestOthersItems( NETLIST_OBJECT_LIST* aList,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( ( (SCH_COMPONENT*) aList->GetItem( aNetItemRef )->
|
if( ( (SCH_COMPONENT*) aList->GetItem( aNetItemRef )->
|
||||||
m_Link )->GetRef( &aList->GetItem( aNetItemRef )-> m_SheetList ) !=
|
m_Link )->GetRef( &aList->GetItem( aNetItemRef )-> m_SheetPath ) !=
|
||||||
( (SCH_COMPONENT*) aList->GetItem( duplicate )->m_Link )
|
( (SCH_COMPONENT*) aList->GetItem( duplicate )->m_Link )
|
||||||
->GetRef( &aList->GetItem( duplicate )->m_SheetList ) )
|
->GetRef( &aList->GetItem( duplicate )->m_SheetPath ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Same component and same pin. Do dot create error for this pin
|
// Same component and same pin. Do dot create error for this pin
|
||||||
|
|
|
@ -878,7 +878,7 @@ XNODE* NETLIST_EXPORT_TOOL::makeGenericListOfNets()
|
||||||
comp = (SCH_COMPONENT*) nitem->m_Link;
|
comp = (SCH_COMPONENT*) nitem->m_Link;
|
||||||
|
|
||||||
// Get the reference for the net name and the main parent component
|
// Get the reference for the net name and the main parent component
|
||||||
ref = comp->GetRef( &nitem->m_SheetList );
|
ref = comp->GetRef( &nitem->m_SheetPath );
|
||||||
if( ref[0] == wxChar( '#' ) )
|
if( ref[0] == wxChar( '#' ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -1520,7 +1520,7 @@ bool NETLIST_EXPORT_TOOL::addPinToComponentPinList( SCH_COMPONENT* aComponent,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// most expensive test at the end.
|
// most expensive test at the end.
|
||||||
if( pin->m_SheetList != *aSheetPath )
|
if( pin->m_SheetPath != *aSheetPath )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
m_SortedComponentPinList.push_back( pin );
|
m_SortedComponentPinList.push_back( pin );
|
||||||
|
@ -1678,7 +1678,7 @@ bool NETLIST_EXPORT_TOOL::writeGENERICListOfNets( FILE* f, NETLIST_OBJECT_LIST&
|
||||||
comp = (SCH_COMPONENT*) nitem->m_Link;
|
comp = (SCH_COMPONENT*) nitem->m_Link;
|
||||||
|
|
||||||
// Get the reference for the net name and the main parent component
|
// Get the reference for the net name and the main parent component
|
||||||
ref = comp->GetRef( &nitem->m_SheetList );
|
ref = comp->GetRef( &nitem->m_SheetPath );
|
||||||
if( ref[0] == wxChar( '#' ) )
|
if( ref[0] == wxChar( '#' ) )
|
||||||
continue; // Pseudo component (Like Power symbol)
|
continue; // Pseudo component (Like Power symbol)
|
||||||
|
|
||||||
|
@ -1825,7 +1825,7 @@ bool NETLIST_EXPORT_TOOL::writeListOfNetsCADSTAR( FILE* f )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Cmp = (SCH_COMPONENT*) nitem->m_Link;
|
Cmp = (SCH_COMPONENT*) nitem->m_Link;
|
||||||
wxString refstr = Cmp->GetRef( &nitem->m_SheetList );
|
wxString refstr = Cmp->GetRef( &nitem->m_SheetPath );
|
||||||
if( refstr[0] == '#' )
|
if( refstr[0] == '#' )
|
||||||
continue; // Power supply symbols.
|
continue; // Power supply symbols.
|
||||||
|
|
||||||
|
|
|
@ -147,16 +147,16 @@ bool NETLIST_OBJECT_LIST::BuildNetListInfo( SCH_SHEET_LIST& aSheets )
|
||||||
// Sort objects by Sheet
|
// Sort objects by Sheet
|
||||||
SortListbySheet();
|
SortListbySheet();
|
||||||
|
|
||||||
sheet = &(GetItem( 0 )->m_SheetList);
|
sheet = &(GetItem( 0 )->m_SheetPath);
|
||||||
m_lastNetCode = m_lastBusNetCode = 1;
|
m_lastNetCode = m_lastBusNetCode = 1;
|
||||||
|
|
||||||
for( unsigned ii = 0, istart = 0; ii < size(); ii++ )
|
for( unsigned ii = 0, istart = 0; ii < size(); ii++ )
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* net_item = GetItem( ii );
|
NETLIST_OBJECT* net_item = GetItem( ii );
|
||||||
|
|
||||||
if( net_item->m_SheetList != *sheet ) // Sheet change
|
if( net_item->m_SheetPath != *sheet ) // Sheet change
|
||||||
{
|
{
|
||||||
sheet = &(net_item->m_SheetList);
|
sheet = &(net_item->m_SheetPath);
|
||||||
istart = ii;
|
istart = ii;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,8 +377,8 @@ static bool evalLabelsPriority( const NETLIST_OBJECT* aLabel1,
|
||||||
// use name defined in higher hierarchical sheet
|
// use name defined in higher hierarchical sheet
|
||||||
// (i.e. shorter path because paths are /<timestamp1>/<timestamp2>/...
|
// (i.e. shorter path because paths are /<timestamp1>/<timestamp2>/...
|
||||||
// and timestamp = 8 letters.
|
// and timestamp = 8 letters.
|
||||||
if( aLabel1->m_SheetList.Path().Length() != aLabel2->m_SheetList.Path().Length() )
|
if( aLabel1->m_SheetPath.Path().Length() != aLabel2->m_SheetPath.Path().Length() )
|
||||||
return aLabel1->m_SheetList.Path().Length() < aLabel2->m_SheetList.Path().Length();
|
return aLabel1->m_SheetPath.Path().Length() < aLabel2->m_SheetPath.Path().Length();
|
||||||
|
|
||||||
// Sheet paths have the same length: use alphabetic label name order
|
// Sheet paths have the same length: use alphabetic label name order
|
||||||
// For labels on sheets having an equivalent deep in hierarchy, use
|
// For labels on sheets having an equivalent deep in hierarchy, use
|
||||||
|
@ -386,8 +386,8 @@ static bool evalLabelsPriority( const NETLIST_OBJECT* aLabel1,
|
||||||
if( aLabel1->m_Label.Cmp( aLabel2->m_Label ) != 0 )
|
if( aLabel1->m_Label.Cmp( aLabel2->m_Label ) != 0 )
|
||||||
return aLabel1->m_Label.Cmp( aLabel2->m_Label ) < 0;
|
return aLabel1->m_Label.Cmp( aLabel2->m_Label ) < 0;
|
||||||
|
|
||||||
return aLabel1->m_SheetList.PathHumanReadable().Cmp(
|
return aLabel1->m_SheetPath.PathHumanReadable().Cmp(
|
||||||
aLabel2->m_SheetList.PathHumanReadable() ) < 0;
|
aLabel2->m_SheetPath.PathHumanReadable() ) < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -547,7 +547,7 @@ void NETLIST_OBJECT_LIST::sheetLabelConnect( NETLIST_OBJECT* SheetLabel )
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* ObjetNet = GetItem( ii );
|
NETLIST_OBJECT* ObjetNet = GetItem( ii );
|
||||||
|
|
||||||
if( ObjetNet->m_SheetList != SheetLabel->m_SheetListInclude )
|
if( ObjetNet->m_SheetPath != SheetLabel->m_SheetPathInclude )
|
||||||
continue; //use SheetInclude, not the sheet!!
|
continue; //use SheetInclude, not the sheet!!
|
||||||
|
|
||||||
if( (ObjetNet->m_Type != NET_HIERLABEL ) && (ObjetNet->m_Type != NET_HIERBUSLABELMEMBER ) )
|
if( (ObjetNet->m_Type != NET_HIERLABEL ) && (ObjetNet->m_Type != NET_HIERBUSLABELMEMBER ) )
|
||||||
|
@ -681,7 +681,7 @@ void NETLIST_OBJECT_LIST::pointToPointConnect( NETLIST_OBJECT* aRef, bool aIsBus
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* item = GetItem( i );
|
NETLIST_OBJECT* item = GetItem( i );
|
||||||
|
|
||||||
if( item->m_SheetList != aRef->m_SheetList ) //used to be > (why?)
|
if( item->m_SheetPath != aRef->m_SheetPath ) //used to be > (why?)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch( item->m_Type )
|
switch( item->m_Type )
|
||||||
|
@ -725,7 +725,7 @@ void NETLIST_OBJECT_LIST::pointToPointConnect( NETLIST_OBJECT* aRef, bool aIsBus
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* item = GetItem( i );
|
NETLIST_OBJECT* item = GetItem( i );
|
||||||
|
|
||||||
if( item->m_SheetList != aRef->m_SheetList )
|
if( item->m_SheetPath != aRef->m_SheetPath )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch( item->m_Type )
|
switch( item->m_Type )
|
||||||
|
@ -779,7 +779,7 @@ void NETLIST_OBJECT_LIST::segmentToPointConnect( NETLIST_OBJECT* aJonction,
|
||||||
NETLIST_OBJECT* segment = GetItem( i );
|
NETLIST_OBJECT* segment = GetItem( i );
|
||||||
|
|
||||||
// if different sheets, obviously no physical connection between elements.
|
// if different sheets, obviously no physical connection between elements.
|
||||||
if( segment->m_SheetList != aJonction->m_SheetList )
|
if( segment->m_SheetPath != aJonction->m_SheetPath )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( aIsBus == IS_WIRE )
|
if( aIsBus == IS_WIRE )
|
||||||
|
@ -832,7 +832,7 @@ void NETLIST_OBJECT_LIST::labelConnect( NETLIST_OBJECT* aLabelRef )
|
||||||
if( item->GetNet() == aLabelRef->GetNet() )
|
if( item->GetNet() == aLabelRef->GetNet() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( item->m_SheetList != aLabelRef->m_SheetList )
|
if( item->m_SheetPath != aLabelRef->m_SheetPath )
|
||||||
{
|
{
|
||||||
if( item->m_Type != NET_PINLABEL && item->m_Type != NET_GLOBLABEL
|
if( item->m_Type != NET_PINLABEL && item->m_Type != NET_GLOBLABEL
|
||||||
&& item->m_Type != NET_GLOBBUSLABELMEMBER )
|
&& item->m_Type != NET_GLOBBUSLABELMEMBER )
|
||||||
|
|
|
@ -1741,9 +1741,9 @@ void SCH_COMPONENT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
wxPoint pos = GetTransform().TransformCoordinate( pin->GetPosition() ) + m_Pos;
|
wxPoint pos = GetTransform().TransformCoordinate( pin->GetPosition() ) + m_Pos;
|
||||||
|
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
item->m_SheetListInclude = *aSheetPath;
|
item->m_SheetPathInclude = *aSheetPath;
|
||||||
item->m_Comp = (SCH_ITEM*) pin;
|
item->m_Comp = (SCH_ITEM*) pin;
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_Type = NET_PIN;
|
item->m_Type = NET_PIN;
|
||||||
item->m_Link = (SCH_ITEM*) this;
|
item->m_Link = (SCH_ITEM*) this;
|
||||||
item->m_ElectricalType = pin->GetType();
|
item->m_ElectricalType = pin->GetType();
|
||||||
|
@ -1757,9 +1757,9 @@ void SCH_COMPONENT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
{
|
{
|
||||||
/* There is an associated PIN_LABEL. */
|
/* There is an associated PIN_LABEL. */
|
||||||
item = new NETLIST_OBJECT();
|
item = new NETLIST_OBJECT();
|
||||||
item->m_SheetListInclude = *aSheetPath;
|
item->m_SheetPathInclude = *aSheetPath;
|
||||||
item->m_Comp = NULL;
|
item->m_Comp = NULL;
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_Type = NET_PINLABEL;
|
item->m_Type = NET_PINLABEL;
|
||||||
item->m_Label = pin->GetName();
|
item->m_Label = pin->GetName();
|
||||||
item->m_Start = pos;
|
item->m_Start = pos;
|
||||||
|
|
|
@ -179,8 +179,8 @@ void SCH_JUNCTION::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
|
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_SheetListInclude = *aSheetPath;
|
item->m_SheetPathInclude = *aSheetPath;
|
||||||
item->m_Comp = (SCH_ITEM*) this;
|
item->m_Comp = (SCH_ITEM*) this;
|
||||||
item->m_Type = NET_JUNCTION;
|
item->m_Type = NET_JUNCTION;
|
||||||
item->m_Start = item->m_End = m_pos;
|
item->m_Start = item->m_End = m_pos;
|
||||||
|
|
|
@ -524,8 +524,8 @@ void SCH_LINE::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_SheetListInclude = *aSheetPath;
|
item->m_SheetPathInclude = *aSheetPath;
|
||||||
item->m_Comp = (SCH_ITEM*) this;
|
item->m_Comp = (SCH_ITEM*) this;
|
||||||
item->m_Start = m_start;
|
item->m_Start = m_start;
|
||||||
item->m_End = m_end;
|
item->m_End = m_end;
|
||||||
|
|
|
@ -193,8 +193,8 @@ void SCH_NO_CONNECT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
|
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_SheetListInclude = *aSheetPath;
|
item->m_SheetPathInclude = *aSheetPath;
|
||||||
item->m_Comp = this;
|
item->m_Comp = this;
|
||||||
item->m_Type = NET_NOCONNECT;
|
item->m_Type = NET_NOCONNECT;
|
||||||
item->m_Start = item->m_End = m_pos;
|
item->m_Start = item->m_End = m_pos;
|
||||||
|
|
|
@ -1081,8 +1081,8 @@ void SCH_SHEET::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||||
{
|
{
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
item->m_SheetListInclude = sheetPath;
|
item->m_SheetPathInclude = sheetPath;
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_Comp = &m_pins[i];
|
item->m_Comp = &m_pins[i];
|
||||||
item->m_Link = this;
|
item->m_Link = this;
|
||||||
item->m_Type = NET_SHEETLABEL;
|
item->m_Type = NET_SHEETLABEL;
|
||||||
|
|
|
@ -620,8 +620,8 @@ void SCH_TEXT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||||
item->m_SheetList = *aSheetPath;
|
item->m_SheetPath = *aSheetPath;
|
||||||
item->m_SheetListInclude = *aSheetPath;
|
item->m_SheetPathInclude = *aSheetPath;
|
||||||
item->m_Comp = (SCH_ITEM*) this;
|
item->m_Comp = (SCH_ITEM*) this;
|
||||||
item->m_Type = NET_LABEL;
|
item->m_Type = NET_LABEL;
|
||||||
|
|
||||||
|
|
|
@ -81,9 +81,12 @@ public:
|
||||||
* @param aDC = the current device context
|
* @param aDC = the current device context
|
||||||
* @param aDrawMode = GR_COPY, GR_OR ... (not always used)
|
* @param aDrawMode = GR_COPY, GR_OR ... (not always used)
|
||||||
* @param aOffset = an draw offset value
|
* @param aOffset = an draw offset value
|
||||||
|
* @param aPrintBlackAndWhite = true to force black and white insdeat of color
|
||||||
|
* useful only to print/plot gebview layers
|
||||||
*/
|
*/
|
||||||
void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC,
|
void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC,
|
||||||
GR_DRAWMODE aDrawMode, const wxPoint& aOffset );
|
GR_DRAWMODE aDrawMode, const wxPoint& aOffset,
|
||||||
|
bool aPrintBlackAndWhite = false );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetVisibleLayers
|
* Function SetVisibleLayers
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
#include <gerbview.h>
|
#include <gerbview.h>
|
||||||
#include <pcbplot.h>
|
#include <pcbplot.h>
|
||||||
#include <class_board_design_settings.h>
|
|
||||||
|
|
||||||
static long s_SelectedLayers;
|
static long s_SelectedLayers;
|
||||||
static double s_ScaleList[] =
|
static double s_ScaleList[] =
|
||||||
|
@ -34,10 +33,10 @@ static wxPageSetupDialogData* g_pageSetupData = (wxPageSetupDialogData*) NULL;
|
||||||
static PRINT_PARAMETERS s_Parameters;
|
static PRINT_PARAMETERS s_Parameters;
|
||||||
|
|
||||||
|
|
||||||
/* Dialog to print schematic. Class derived from DIALOG_PRINT_USING_PRINTER_base
|
/* Dialog to print schematic. Class derived from DIALOG_PRINT_USING_PRINTER_BASE
|
||||||
* created by wxFormBuilder
|
* created by wxFormBuilder
|
||||||
*/
|
*/
|
||||||
class DIALOG_PRINT_USING_PRINTER : public DIALOG_PRINT_USING_PRINTER_base
|
class DIALOG_PRINT_USING_PRINTER : public DIALOG_PRINT_USING_PRINTER_BASE
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
GERBVIEW_FRAME* m_Parent;
|
GERBVIEW_FRAME* m_Parent;
|
||||||
|
@ -76,17 +75,17 @@ void GERBVIEW_FRAME::ToPrinter( wxCommandEvent& event )
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
if( g_PrintData == NULL ) // First print
|
if( g_PrintData == NULL ) // First print
|
||||||
{
|
|
||||||
g_PrintData = new wxPrintData();
|
g_PrintData = new wxPrintData();
|
||||||
|
|
||||||
if( !g_PrintData->Ok() )
|
if( !g_PrintData->Ok() )
|
||||||
{
|
{
|
||||||
DisplayError( this, _( "Error Init Printer info" ) );
|
DisplayError( this, _( "Error Init Printer info" ) );
|
||||||
}
|
return;
|
||||||
g_PrintData->SetQuality( wxPRINT_QUALITY_HIGH ); // Default resolution = HIGHT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_PrintData->SetOrientation( GetPageSettings().IsPortrait() ? wxPORTRAIT : wxLANDSCAPE );
|
g_PrintData->SetQuality( wxPRINT_QUALITY_HIGH );
|
||||||
|
g_PrintData->SetOrientation( GetPageSettings().IsPortrait() ?
|
||||||
|
wxPORTRAIT : wxLANDSCAPE );
|
||||||
|
|
||||||
DIALOG_PRINT_USING_PRINTER* frame = new DIALOG_PRINT_USING_PRINTER( this );
|
DIALOG_PRINT_USING_PRINTER* frame = new DIALOG_PRINT_USING_PRINTER( this );
|
||||||
|
|
||||||
|
@ -97,24 +96,19 @@ void GERBVIEW_FRAME::ToPrinter( wxCommandEvent& event )
|
||||||
|
|
||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER( GERBVIEW_FRAME* parent ) :
|
DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER( GERBVIEW_FRAME* parent ) :
|
||||||
DIALOG_PRINT_USING_PRINTER_base( parent )
|
DIALOG_PRINT_USING_PRINTER_BASE( parent )
|
||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
{
|
{
|
||||||
m_Parent = parent;
|
m_Parent = parent;
|
||||||
m_Config = wxGetApp().GetSettings();
|
m_Config = wxGetApp().GetSettings();
|
||||||
|
|
||||||
InitValues( );
|
InitValues( );
|
||||||
|
GetSizer()->SetSizeHints( this );
|
||||||
|
|
||||||
if( GetSizer() )
|
|
||||||
{
|
|
||||||
GetSizer()->SetSizeHints( this );
|
|
||||||
}
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
/* Problems with modal on wx-2.9 - Anyway preview is standard for OSX */
|
/* Problems with modal on wx-2.9 - Anyway preview is standard for OSX */
|
||||||
m_buttonPreview->Hide();
|
m_buttonPreview->Hide();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_buttonPrint->SetDefault();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +124,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
|
||||||
{
|
{
|
||||||
g_pageSetupData = new wxPageSetupDialogData;
|
g_pageSetupData = new wxPageSetupDialogData;
|
||||||
// Set initial page margins.
|
// Set initial page margins.
|
||||||
// Margins are already set in Pcbnew, so we cans use 0
|
// Margins are already set in Pcbnew, so we can use 0
|
||||||
g_pageSetupData->SetMarginTopLeft(wxPoint(0, 0));
|
g_pageSetupData->SetMarginTopLeft(wxPoint(0, 0));
|
||||||
g_pageSetupData->SetMarginBottomRight(wxPoint(0, 0));
|
g_pageSetupData->SetMarginBottomRight(wxPoint(0, 0));
|
||||||
}
|
}
|
||||||
|
@ -176,7 +170,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
|
||||||
s_Parameters.m_XScaleAdjust = s_Parameters.m_YScaleAdjust = 1.0;
|
s_Parameters.m_XScaleAdjust = s_Parameters.m_YScaleAdjust = 1.0;
|
||||||
|
|
||||||
s_SelectedLayers = 0;
|
s_SelectedLayers = 0;
|
||||||
for( LAYER_NUM layer = FIRST_LAYER; layer<layer_max; ++layer )
|
for( LAYER_NUM layer = FIRST_LAYER; layer < layer_max; ++layer )
|
||||||
{
|
{
|
||||||
wxString layerKey;
|
wxString layerKey;
|
||||||
bool option;
|
bool option;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 10 2012)
|
// C++ code generated with wxFormBuilder (version Oct 8 2012)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
DIALOG_PRINT_USING_PRINTER_base::DIALOG_PRINT_USING_PRINTER_base( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
DIALOG_PRINT_USING_PRINTER_BASE::DIALOG_PRINT_USING_PRINTER_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||||
{
|
{
|
||||||
this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
|
this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ DIALOG_PRINT_USING_PRINTER_base::DIALOG_PRINT_USING_PRINTER_base( wxWindow* pare
|
||||||
bmiddleLeftSizer->Add( m_FineAdjustXscaleTitle, 0, wxRIGHT|wxLEFT, 5 );
|
bmiddleLeftSizer->Add( m_FineAdjustXscaleTitle, 0, wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
m_FineAdjustXscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
m_FineAdjustXscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_FineAdjustXscaleOpt->SetMaxLength( 0 );
|
||||||
m_FineAdjustXscaleOpt->SetToolTip( _("Set X scale adjust for exact scale plotting") );
|
m_FineAdjustXscaleOpt->SetToolTip( _("Set X scale adjust for exact scale plotting") );
|
||||||
|
|
||||||
bmiddleLeftSizer->Add( m_FineAdjustXscaleOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
bmiddleLeftSizer->Add( m_FineAdjustXscaleOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||||
|
@ -61,6 +62,7 @@ DIALOG_PRINT_USING_PRINTER_base::DIALOG_PRINT_USING_PRINTER_base( wxWindow* pare
|
||||||
bmiddleLeftSizer->Add( m_FineAdjustYscaleTitle, 0, wxRIGHT|wxLEFT, 5 );
|
bmiddleLeftSizer->Add( m_FineAdjustYscaleTitle, 0, wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
m_FineAdjustYscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
m_FineAdjustYscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_FineAdjustYscaleOpt->SetMaxLength( 0 );
|
||||||
m_FineAdjustYscaleOpt->SetToolTip( _("Set Y scale adjust for exact scale plotting") );
|
m_FineAdjustYscaleOpt->SetToolTip( _("Set Y scale adjust for exact scale plotting") );
|
||||||
|
|
||||||
bmiddleLeftSizer->Add( m_FineAdjustYscaleOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
bmiddleLeftSizer->Add( m_FineAdjustYscaleOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||||
|
@ -101,6 +103,7 @@ DIALOG_PRINT_USING_PRINTER_base::DIALOG_PRINT_USING_PRINTER_base( wxWindow* pare
|
||||||
b_buttonsSizer->Add( m_buttonPreview, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
|
b_buttonsSizer->Add( m_buttonPreview, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
|
||||||
|
|
||||||
m_buttonPrint = new wxButton( this, wxID_PRINT_ALL, _("Print"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_buttonPrint = new wxButton( this, wxID_PRINT_ALL, _("Print"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_buttonPrint->SetDefault();
|
||||||
b_buttonsSizer->Add( m_buttonPrint, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
|
b_buttonsSizer->Add( m_buttonPrint, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
|
||||||
|
|
||||||
m_buttonQuit = new wxButton( this, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_buttonQuit = new wxButton( this, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
@ -114,22 +117,22 @@ DIALOG_PRINT_USING_PRINTER_base::DIALOG_PRINT_USING_PRINTER_base( wxWindow* pare
|
||||||
this->Layout();
|
this->Layout();
|
||||||
|
|
||||||
// Connect Events
|
// Connect Events
|
||||||
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnCloseWindow ) );
|
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnCloseWindow ) );
|
||||||
m_ScaleOption->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnScaleSelectionClick ), NULL, this );
|
m_ScaleOption->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnScaleSelectionClick ), NULL, this );
|
||||||
m_buttonOption->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnPageSetup ), NULL, this );
|
m_buttonOption->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPageSetup ), NULL, this );
|
||||||
m_buttonPreview->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnPrintPreview ), NULL, this );
|
m_buttonPreview->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPrintPreview ), NULL, this );
|
||||||
m_buttonPrint->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnPrintButtonClick ), NULL, this );
|
m_buttonPrint->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPrintButtonClick ), NULL, this );
|
||||||
m_buttonQuit->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnButtonCancelClick ), NULL, this );
|
m_buttonQuit->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnButtonCancelClick ), NULL, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
DIALOG_PRINT_USING_PRINTER_base::~DIALOG_PRINT_USING_PRINTER_base()
|
DIALOG_PRINT_USING_PRINTER_BASE::~DIALOG_PRINT_USING_PRINTER_BASE()
|
||||||
{
|
{
|
||||||
// Disconnect Events
|
// Disconnect Events
|
||||||
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnCloseWindow ) );
|
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnCloseWindow ) );
|
||||||
m_ScaleOption->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnScaleSelectionClick ), NULL, this );
|
m_ScaleOption->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnScaleSelectionClick ), NULL, this );
|
||||||
m_buttonOption->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnPageSetup ), NULL, this );
|
m_buttonOption->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPageSetup ), NULL, this );
|
||||||
m_buttonPreview->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnPrintPreview ), NULL, this );
|
m_buttonPreview->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPrintPreview ), NULL, this );
|
||||||
m_buttonPrint->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnPrintButtonClick ), NULL, this );
|
m_buttonPrint->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPrintButtonClick ), NULL, this );
|
||||||
m_buttonQuit->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_base::OnButtonCancelClick ), NULL, this );
|
m_buttonQuit->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnButtonCancelClick ), NULL, this );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
<property name="minimum_size">-1,-1</property>
|
<property name="minimum_size">-1,-1</property>
|
||||||
<property name="name">DIALOG_PRINT_USING_PRINTER_base</property>
|
<property name="name">DIALOG_PRINT_USING_PRINTER_BASE</property>
|
||||||
<property name="pos"></property>
|
<property name="pos"></property>
|
||||||
<property name="size">551,314</property>
|
<property name="size">551,314</property>
|
||||||
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||||
|
@ -1002,7 +1002,7 @@
|
||||||
<property name="close_button">1</property>
|
<property name="close_button">1</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
<property name="context_menu">1</property>
|
<property name="context_menu">1</property>
|
||||||
<property name="default">0</property>
|
<property name="default">1</property>
|
||||||
<property name="default_pane">0</property>
|
<property name="default_pane">0</property>
|
||||||
<property name="dock">Dock</property>
|
<property name="dock">Dock</property>
|
||||||
<property name="dock_fixed">0</property>
|
<property name="dock_fixed">0</property>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 10 2012)
|
// C++ code generated with wxFormBuilder (version Oct 8 2012)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
@ -11,6 +11,8 @@
|
||||||
#include <wx/artprov.h>
|
#include <wx/artprov.h>
|
||||||
#include <wx/xrc/xmlres.h>
|
#include <wx/xrc/xmlres.h>
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
|
class DIALOG_SHIM;
|
||||||
|
|
||||||
#include "dialog_shim.h"
|
#include "dialog_shim.h"
|
||||||
#include <wx/string.h>
|
#include <wx/string.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
|
@ -29,9 +31,9 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class DIALOG_PRINT_USING_PRINTER_base
|
/// Class DIALOG_PRINT_USING_PRINTER_BASE
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class DIALOG_PRINT_USING_PRINTER_base : public DIALOG_SHIM
|
class DIALOG_PRINT_USING_PRINTER_BASE : public DIALOG_SHIM
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -68,8 +70,8 @@ class DIALOG_PRINT_USING_PRINTER_base : public DIALOG_SHIM
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DIALOG_PRINT_USING_PRINTER_base( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Print"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 551,314 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
DIALOG_PRINT_USING_PRINTER_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Print"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 551,314 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~DIALOG_PRINT_USING_PRINTER_base();
|
~DIALOG_PRINT_USING_PRINTER_BASE();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include <colors_selection.h>
|
#include <colors_selection.h>
|
||||||
#include <class_gerber_draw_item.h>
|
#include <class_gerber_draw_item.h>
|
||||||
#include <class_GERBER.h>
|
#include <class_GERBER.h>
|
||||||
|
#include <printout_controler.h>
|
||||||
|
|
||||||
|
|
||||||
void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer,
|
void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer,
|
||||||
|
@ -56,10 +57,13 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer,
|
||||||
m_DisplayOptions.m_DisplayDCodes = false;
|
m_DisplayOptions.m_DisplayDCodes = false;
|
||||||
m_DisplayOptions.m_IsPrinting = true;
|
m_DisplayOptions.m_IsPrinting = true;
|
||||||
|
|
||||||
m_canvas->SetPrintMirrored( aPrintMirrorMode );
|
PRINT_PARAMETERS* printParameters = (PRINT_PARAMETERS*)aData;
|
||||||
|
|
||||||
// XXX -1 as drawmode?
|
m_canvas->SetPrintMirrored( aPrintMirrorMode );
|
||||||
GetGerberLayout()->Draw( m_canvas, aDC, UNSPECIFIED_DRAWMODE, wxPoint( 0, 0 ) );
|
bool printBlackAndWhite = printParameters && printParameters->m_Print_Black_and_White;
|
||||||
|
|
||||||
|
GetGerberLayout()->Draw( m_canvas, aDC, UNSPECIFIED_DRAWMODE,
|
||||||
|
wxPoint( 0, 0 ), printBlackAndWhite );
|
||||||
|
|
||||||
m_canvas->SetPrintMirrored( false );
|
m_canvas->SetPrintMirrored( false );
|
||||||
|
|
||||||
|
@ -123,13 +127,13 @@ void GERBVIEW_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
|
||||||
* Redraw All GerbView layers, using a buffered mode or not
|
* Redraw All GerbView layers, using a buffered mode or not
|
||||||
*/
|
*/
|
||||||
void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
|
void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
|
||||||
const wxPoint& aOffset )
|
const wxPoint& aOffset, bool aPrintBlackAndWhite )
|
||||||
{
|
{
|
||||||
// Because Images can be negative (i.e with background filled in color) items are drawn
|
// Because Images can be negative (i.e with background filled in color) items are drawn
|
||||||
// graphic layer per graphic layer, after the background is filled
|
// graphic layer per graphic layer, after the background is filled
|
||||||
// to a temporary bitmap
|
// to a temporary bitmap
|
||||||
// at least when aDrawMode = GR_COPY or aDrawMode = GR_OR
|
// at least when aDrawMode = GR_COPY or aDrawMode = GR_OR
|
||||||
// If aDrawMode = -1, items are drawn to the main screen, and therefore
|
// If aDrawMode = UNSPECIFIED_DRAWMODE, items are drawn to the main screen, and therefore
|
||||||
// artifacts can happen with negative items or negative images
|
// artifacts can happen with negative items or negative images
|
||||||
|
|
||||||
wxColour bgColor = MakeColour( g_DrawBgColor );
|
wxColour bgColor = MakeColour( g_DrawBgColor );
|
||||||
|
@ -200,7 +204,7 @@ void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
|
||||||
if( layer == active_layer ) // active layer will be drawn after other layers
|
if( layer == active_layer ) // active layer will be drawn after other layers
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( layer == 32 ) // last loop: draw active layer
|
if( layer == NB_GERBER_LAYERS ) // last loop: draw active layer
|
||||||
{
|
{
|
||||||
end = true;
|
end = true;
|
||||||
layer = active_layer;
|
layer = active_layer;
|
||||||
|
@ -214,6 +218,12 @@ void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
|
||||||
if( gerber == NULL ) // Graphic layer not yet used
|
if( gerber == NULL ) // Graphic layer not yet used
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
EDA_COLOR_T color = gerbFrame->GetLayerColor( layer );
|
||||||
|
|
||||||
|
// Force black and white draw mode on request:
|
||||||
|
if( aPrintBlackAndWhite )
|
||||||
|
gerbFrame->SetLayerColor( layer, g_DrawBgColor == BLACK ? WHITE : BLACK );
|
||||||
|
|
||||||
if( useBufferBitmap )
|
if( useBufferBitmap )
|
||||||
{
|
{
|
||||||
// Draw each layer into a bitmap first. Negative Gerber
|
// Draw each layer into a bitmap first. Negative Gerber
|
||||||
|
@ -299,6 +309,9 @@ void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
|
||||||
item->Draw( aPanel, plotDC, drawMode, wxPoint(0,0) );
|
item->Draw( aPanel, plotDC, drawMode, wxPoint(0,0) );
|
||||||
doBlit = true;
|
doBlit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( aPrintBlackAndWhite )
|
||||||
|
gerbFrame->SetLayerColor( layer, color );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( doBlit && useBufferBitmap ) // Blit is used only if aDrawMode >= 0
|
if( doBlit && useBufferBitmap ) // Blit is used only if aDrawMode >= 0
|
||||||
|
|
|
@ -56,6 +56,12 @@
|
||||||
* T0
|
* T0
|
||||||
* M30
|
* M30
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
|
* Note there are some variant of tool definition:
|
||||||
|
* T1F00S00C... Feed Rate and Spindle Speed of Tool 1
|
||||||
|
* Feed Rate and Spindle Speed are just skipped because they are not used in a viwer
|
||||||
|
*/
|
||||||
|
|
||||||
#include <fctsys.h>
|
#include <fctsys.h>
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
|
@ -73,6 +79,14 @@
|
||||||
|
|
||||||
#include <html_messagebox.h>
|
#include <html_messagebox.h>
|
||||||
|
|
||||||
|
// Default format for dimensions
|
||||||
|
// number of digits in mantissa:
|
||||||
|
static int fmtMantissaMM = 3;
|
||||||
|
static int fmtMantissaInch = 4;
|
||||||
|
// number of digits, integer part:
|
||||||
|
static int fmtIntegerMM = 3;
|
||||||
|
static int fmtIntegerInch = 2;
|
||||||
|
|
||||||
extern int ReadInt( char*& text, bool aSkipSeparator = true );
|
extern int ReadInt( char*& text, bool aSkipSeparator = true );
|
||||||
extern double ReadDouble( char*& text, bool aSkipSeparator = true );
|
extern double ReadDouble( char*& text, bool aSkipSeparator = true );
|
||||||
extern void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
|
extern void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
|
||||||
|
@ -426,12 +440,21 @@ bool EXCELLON_IMAGE::Execute_HEADER_Command( char*& text )
|
||||||
case DRILL_TOOL_INFORMATION:
|
case DRILL_TOOL_INFORMATION:
|
||||||
|
|
||||||
// Read a tool definition like T1C0.02:
|
// Read a tool definition like T1C0.02:
|
||||||
|
// or T1F00S00C0.02000
|
||||||
// Read tool number:
|
// Read tool number:
|
||||||
iprm = ReadInt( text, false );
|
iprm = ReadInt( text, false );
|
||||||
|
|
||||||
|
// Skip Feed rate and Spindle speed
|
||||||
|
while( *text && ( *text == 'F' || *text == 'S' ) )
|
||||||
|
{
|
||||||
|
text++;
|
||||||
|
ReadInt( text, false );
|
||||||
|
}
|
||||||
|
|
||||||
// Read tool shape
|
// Read tool shape
|
||||||
if( *text != 'C' )
|
if( *text != 'C' )
|
||||||
ReportMessage( _( "Tool definition <%c> not supported" ) );
|
ReportMessage( wxString:: Format(
|
||||||
|
_( "Tool definition <%c> not supported" ), *text ) );
|
||||||
if( *text )
|
if( *text )
|
||||||
text++;
|
text++;
|
||||||
|
|
||||||
|
@ -622,19 +645,30 @@ bool EXCELLON_IMAGE::Execute_EXCELLON_G_Command( char*& text )
|
||||||
|
|
||||||
void EXCELLON_IMAGE::SelectUnits( bool aMetric )
|
void EXCELLON_IMAGE::SelectUnits( bool aMetric )
|
||||||
{
|
{
|
||||||
/* Inches: Default fmt = 2.4 for X and Y axis: 6 digits with 0.0001 resolution (00.0000)
|
/* Coordinates are measured either in inch or metric (millimeters).
|
||||||
* metric: Default fmt = 3.2 for X and Y axis: 5 digits, 1 micron resolution (00.000)
|
* Inch coordinates are in six digits (00.0000) with increments
|
||||||
|
* as small as 0.0001 (1/10,000).
|
||||||
|
* Metric coordinates can be measured in microns (thousandths of a millimeter)
|
||||||
|
* in one of the following three ways:
|
||||||
|
* Five digit 10 micron resolution (000.00)
|
||||||
|
* Six digit 10 micron resolution (0000.00)
|
||||||
|
* Six digit micron resolution (000.000)
|
||||||
|
*/
|
||||||
|
/* Inches: Default fmt = 2.4 for X and Y axis: 6 digits with 0.0001 resolution
|
||||||
|
* metric: Default fmt = 3.3 for X and Y axis: 6 digits, 1 micron resolution
|
||||||
*/
|
*/
|
||||||
if( aMetric )
|
if( aMetric )
|
||||||
{
|
{
|
||||||
m_GerbMetric = true;
|
m_GerbMetric = true;
|
||||||
m_FmtScale.x = m_FmtScale.y = 3; // number of digits in mantissa: here 2
|
// number of digits in mantissa
|
||||||
m_FmtLen.x = m_FmtLen.y = 5; // number of digits: here 3+2
|
m_FmtScale.x = m_FmtScale.y = fmtMantissaMM;
|
||||||
|
// number of digits (mantissa+interger)
|
||||||
|
m_FmtLen.x = m_FmtLen.y = fmtIntegerMM+fmtMantissaMM;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_GerbMetric = false;
|
m_GerbMetric = false;
|
||||||
m_FmtScale.x = m_FmtScale.y = 4; // number of digits in mantissa: here 4
|
m_FmtScale.x = m_FmtScale.y = fmtMantissaInch;
|
||||||
m_FmtLen.x = m_FmtLen.y = 6; // number of digits: here 2+4
|
m_FmtLen.x = m_FmtLen.y = fmtIntegerInch+fmtMantissaInch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,14 +378,14 @@ void GERBVIEW_FRAME::syncLayerBox()
|
||||||
UpdateTitleAndInfo();
|
UpdateTitleAndInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GERBVIEW_FRAME::Liste_D_Codes()
|
void GERBVIEW_FRAME::Liste_D_Codes()
|
||||||
{
|
{
|
||||||
int ii, jj;
|
int ii, jj;
|
||||||
D_CODE* pt_D_code;
|
D_CODE* pt_D_code;
|
||||||
wxString Line;
|
wxString Line;
|
||||||
wxArrayString list;
|
wxArrayString list;
|
||||||
double scale = IU_PER_MILS * 1000;
|
double scale = g_UserUnit == INCHES ? IU_PER_MILS * 1000 :
|
||||||
|
IU_PER_MM;
|
||||||
LAYER_NUM curr_layer = getActiveLayer();
|
LAYER_NUM curr_layer = getActiveLayer();
|
||||||
|
|
||||||
for( LAYER_NUM layer = FIRST_LAYER; layer < NB_LAYERS; ++layer )
|
for( LAYER_NUM layer = FIRST_LAYER; layer < NB_LAYERS; ++layer )
|
||||||
|
@ -405,6 +405,7 @@ void GERBVIEW_FRAME::Liste_D_Codes()
|
||||||
|
|
||||||
list.Add( Line );
|
list.Add( Line );
|
||||||
|
|
||||||
|
const char* units = g_UserUnit == INCHES ? "\"" : "mm";
|
||||||
for( ii = 0, jj = 1; ii < TOOLS_MAX_COUNT; ii++ )
|
for( ii = 0, jj = 1; ii < TOOLS_MAX_COUNT; ii++ )
|
||||||
{
|
{
|
||||||
pt_D_code = gerber->GetDCODE( ii + FIRST_DCODE, false );
|
pt_D_code = gerber->GetDCODE( ii + FIRST_DCODE, false );
|
||||||
|
@ -415,19 +416,19 @@ void GERBVIEW_FRAME::Liste_D_Codes()
|
||||||
if( !pt_D_code->m_InUse && !pt_D_code->m_Defined )
|
if( !pt_D_code->m_InUse && !pt_D_code->m_Defined )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Line.Printf( wxT( "tool %2.2d: D%2.2d V %2.4f H %2.4f %s" ),
|
Line.Printf( wxT( "tool %2.2d: D%2.2d V %.4f %s H %.4f %s %s " ),
|
||||||
jj,
|
jj,
|
||||||
pt_D_code->m_Num_Dcode,
|
pt_D_code->m_Num_Dcode,
|
||||||
pt_D_code->m_Size.y / scale,
|
pt_D_code->m_Size.y / scale, units,
|
||||||
pt_D_code->m_Size.x / scale,
|
pt_D_code->m_Size.x / scale, units,
|
||||||
D_CODE::ShowApertureType( pt_D_code->m_Shape )
|
D_CODE::ShowApertureType( pt_D_code->m_Shape )
|
||||||
);
|
);
|
||||||
|
|
||||||
if( !pt_D_code->m_Defined )
|
if( !pt_D_code->m_Defined )
|
||||||
Line += wxT( " ?" );
|
Line += wxT( "(not used)" );
|
||||||
|
|
||||||
if( !pt_D_code->m_InUse )
|
if( !pt_D_code->m_InUse )
|
||||||
Line += wxT( " *" );
|
Line += wxT( "(in use)" );
|
||||||
|
|
||||||
list.Add( Line );
|
list.Add( Line );
|
||||||
jj++;
|
jj++;
|
||||||
|
|
|
@ -59,7 +59,7 @@ static const wxString tracePrinting( wxT( "KicadPrinting" ) );
|
||||||
|
|
||||||
PRINT_PARAMETERS::PRINT_PARAMETERS()
|
PRINT_PARAMETERS::PRINT_PARAMETERS()
|
||||||
{
|
{
|
||||||
m_PenDefaultSize = Millimeter2iu( 0.2 ); // A reasonable defualt value to draw items
|
m_PenDefaultSize = Millimeter2iu( 0.2 ); // A reasonable default value to draw items
|
||||||
// which do not have a specified line width
|
// which do not have a specified line width
|
||||||
m_PrintScale = 1.0;
|
m_PrintScale = 1.0;
|
||||||
m_XScaleAdjust = 1.0;
|
m_XScaleAdjust = 1.0;
|
||||||
|
@ -290,9 +290,6 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage()
|
||||||
|
|
||||||
GRResetPenAndBrush( dc );
|
GRResetPenAndBrush( dc );
|
||||||
|
|
||||||
if( m_PrintParams.m_Print_Black_and_White )
|
|
||||||
GRForceBlackPen( true );
|
|
||||||
|
|
||||||
EDA_DRAW_PANEL* panel = m_Parent->GetCanvas();
|
EDA_DRAW_PANEL* panel = m_Parent->GetCanvas();
|
||||||
EDA_RECT tmp = *panel->GetClipBox();
|
EDA_RECT tmp = *panel->GetClipBox();
|
||||||
|
|
||||||
|
@ -358,15 +355,26 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage()
|
||||||
{
|
{
|
||||||
// Creates a "local" black background
|
// Creates a "local" black background
|
||||||
GRForceBlackPen( true );
|
GRForceBlackPen( true );
|
||||||
m_Parent->PrintPage( dc, m_PrintParams.m_PrintMaskLayer, printMirror, &m_PrintParams );
|
m_Parent->PrintPage( dc, m_PrintParams.m_PrintMaskLayer,
|
||||||
|
printMirror, &m_PrintParams );
|
||||||
GRForceBlackPen( false );
|
GRForceBlackPen( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( m_PrintParams.m_Print_Black_and_White )
|
||||||
|
GRForceBlackPen( true );
|
||||||
|
|
||||||
if( m_PrintParams.PrintBorderAndTitleBlock() )
|
if( m_PrintParams.PrintBorderAndTitleBlock() )
|
||||||
m_Parent->DrawWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize,
|
m_Parent->DrawWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize,
|
||||||
IU_PER_MILS, titleblockFilename );
|
IU_PER_MILS, titleblockFilename );
|
||||||
|
|
||||||
m_Parent->PrintPage( dc, m_PrintParams.m_PrintMaskLayer, printMirror, &m_PrintParams );
|
#if defined (GERBVIEW)
|
||||||
|
// In B&W mode, do not force black pen for Gerbview
|
||||||
|
// because negative objects need a white pen, not a black pen
|
||||||
|
// B&W mode is handled in print page
|
||||||
|
GRForceBlackPen( false );
|
||||||
|
#endif
|
||||||
|
m_Parent->PrintPage( dc, m_PrintParams.m_PrintMaskLayer, printMirror,
|
||||||
|
&m_PrintParams );
|
||||||
|
|
||||||
g_DrawBgColor = bg_color;
|
g_DrawBgColor = bg_color;
|
||||||
screen->m_IsPrinting = false;
|
screen->m_IsPrinting = false;
|
||||||
|
|
Loading…
Reference in New Issue