Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
71390134
Commit
71390134
authored
May 05, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
beautify
parent
efc15348
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
311 additions
and
215 deletions
+311
-215
plotps.cpp
eeschema/plotps.cpp
+311
-215
No files found.
eeschema/plotps.cpp
View file @
71390134
/////////////////////////////////////////////////////////////////////////////
// Name: plotps.cpp
// Purpose:
// Author: jean-pierre Charras
...
...
@@ -11,7 +12,7 @@
// Generated by DialogBlocks (unregistered), 01/02/2006 08:37:24
#if defined
(__GNUG__) && !defined
(NO_GCC_PRAGMA)
#if defined
(__GNUG__) && !defined
(NO_GCC_PRAGMA)
#pragma implementation "plotps.h"
#endif
...
...
@@ -52,9 +53,9 @@ enum PageFormatReq {
/* Variables locales : */
static
int
PS_SizeSelect
=
PAGE_SIZE_AUTO
;
extern
FILE
*
PlotOutput
;
static
bool
Plot_Sheet_Ref
=
TRUE
;
static
int
PS_SizeSelect
=
PAGE_SIZE_AUTO
;
extern
FILE
*
PlotOutput
;
static
bool
Plot_Sheet_Ref
=
TRUE
;
////@begin includes
...
...
@@ -67,19 +68,24 @@ static bool Plot_Sheet_Ref = TRUE;
/***********************************************************/
void
WinEDA_SchematicFrame
::
ToPlot_PS
(
wxCommandEvent
&
event
)
void
WinEDA_SchematicFrame
::
ToPlot_PS
(
wxCommandEvent
&
event
)
/***********************************************************/
/* fonction relai de creation de la frame de dialogue pour trace Postscript
*/
*/
{
wxPoint
pos
;
wxPoint
pos
;
pos
=
GetPosition
();
pos
.
x
+=
10
;
pos
.
y
+=
20
;
WinEDA_PlotPSFrame
*
Ps_frame
=
new
WinEDA_PlotPSFrame
(
this
);
Ps_frame
->
ShowModal
();
Ps_frame
->
Destroy
();
}
pos
.
x
+=
10
;
pos
.
y
+=
20
;
WinEDA_PlotPSFrame
*
Ps_frame
=
new
WinEDA_PlotPSFrame
(
this
);
Ps_frame
->
ShowModal
();
Ps_frame
->
Destroy
();
}
/*!
...
...
@@ -95,13 +101,13 @@ IMPLEMENT_DYNAMIC_CLASS( WinEDA_PlotPSFrame, wxDialog )
BEGIN_EVENT_TABLE
(
WinEDA_PlotPSFrame
,
wxDialog
)
////@begin WinEDA_PlotPSFrame event table entries
EVT_INIT_DIALOG
(
WinEDA_PlotPSFrame
::
OnInitDialog
)
EVT_INIT_DIALOG
(
WinEDA_PlotPSFrame
::
OnInitDialog
)
EVT_BUTTON
(
ID_PLOT_PS_CURRENT_EXECUTE
,
WinEDA_PlotPSFrame
::
OnPlotPsCurrentExecuteClick
)
EVT_BUTTON
(
ID_PLOT_PS_CURRENT_EXECUTE
,
WinEDA_PlotPSFrame
::
OnPlotPsCurrentExecuteClick
)
EVT_BUTTON
(
ID_PLOT_PS_ALL_EXECUTE
,
WinEDA_PlotPSFrame
::
OnPlotPsAllExecuteClick
)
EVT_BUTTON
(
ID_PLOT_PS_ALL_EXECUTE
,
WinEDA_PlotPSFrame
::
OnPlotPsAllExecuteClick
)
EVT_BUTTON
(
wxID_CANCEL
,
WinEDA_PlotPSFrame
::
OnCancelClick
)
EVT_BUTTON
(
wxID_CANCEL
,
WinEDA_PlotPSFrame
::
OnCancelClick
)
////@end WinEDA_PlotPSFrame event table entries
...
...
@@ -111,127 +117,184 @@ END_EVENT_TABLE()
* WinEDA_PlotPSFrame constructors
*/
WinEDA_PlotPSFrame
::
WinEDA_PlotPSFrame
(
)
WinEDA_PlotPSFrame
::
WinEDA_PlotPSFrame
()
{
}
WinEDA_PlotPSFrame
::
WinEDA_PlotPSFrame
(
wxWindow
*
parent
,
wxWindowID
id
,
const
wxString
&
caption
,
const
wxPoint
&
pos
,
const
wxSize
&
size
,
long
style
)
WinEDA_PlotPSFrame
::
WinEDA_PlotPSFrame
(
wxWindow
*
parent
,
wxWindowID
id
,
const
wxString
&
caption
,
const
wxPoint
&
pos
,
const
wxSize
&
size
,
long
style
)
{
Create
(
parent
,
id
,
caption
,
pos
,
size
,
style
);
Create
(
parent
,
id
,
caption
,
pos
,
size
,
style
);
}
/*!
* WinEDA_PlotPSFrame creator
*/
bool
WinEDA_PlotPSFrame
::
Create
(
wxWindow
*
parent
,
wxWindowID
id
,
const
wxString
&
caption
,
const
wxPoint
&
pos
,
const
wxSize
&
size
,
long
style
)
bool
WinEDA_PlotPSFrame
::
Create
(
wxWindow
*
parent
,
wxWindowID
id
,
const
wxString
&
caption
,
const
wxPoint
&
pos
,
const
wxSize
&
size
,
long
style
)
{
////@begin WinEDA_PlotPSFrame member initialisation
m_SizeOption
=
NULL
;
m_PlotPSColorOption
=
NULL
;
m_Plot_Sheet_Ref
=
NULL
;
m_Plot_Sheet_Ref
=
NULL
;
m_btClose
=
NULL
;
m_DefaultLineSizeCtrlSizer
=
NULL
;
m_MsgBox
=
NULL
;
////@end WinEDA_PlotPSFrame member initialisation
////@begin WinEDA_PlotPSFrame creation
SetExtraStyle
(
wxWS_EX_BLOCK_EVENTS
);
SetExtraStyle
(
wxWS_EX_BLOCK_EVENTS
);
wxDialog
::
Create
(
parent
,
id
,
caption
,
pos
,
size
,
style
);
CreateControls
();
if
(
GetSizer
()
)
if
(
GetSizer
()
)
{
GetSizer
()
->
SetSizeHints
(
this
);
GetSizer
()
->
SetSizeHints
(
this
);
}
Centre
();
////@end WinEDA_PlotPSFrame creation
return
true
;
}
/*!
* Control creation for WinEDA_PlotPSFrame
*/
void
WinEDA_PlotPSFrame
::
CreateControls
()
{
SetFont
(
*
g_DialogFont
);
SetFont
(
*
g_DialogFont
);
////@begin WinEDA_PlotPSFrame content construction
// Generated by DialogBlocks, 29/04/2008 21:12:22 (unregistered)
WinEDA_PlotPSFrame
*
itemDialog1
=
this
;
wxBoxSizer
*
itemBoxSizer2
=
new
wxBoxSizer
(
wxVERTICAL
);
itemDialog1
->
SetSizer
(
itemBoxSizer2
);
wxBoxSizer
*
itemBoxSizer2
=
new
wxBoxSizer
(
wxVERTICAL
);
itemDialog1
->
SetSizer
(
itemBoxSizer2
);
wxBoxSizer
*
itemBoxSizer3
=
new
wxBoxSizer
(
wxHORIZONTAL
);
itemBoxSizer2
->
Add
(
itemBoxSizer3
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxALL
,
5
);
wxBoxSizer
*
itemBoxSizer3
=
new
wxBoxSizer
(
wxHORIZONTAL
);
itemBoxSizer2
->
Add
(
itemBoxSizer3
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxALL
,
5
);
wxArrayString
m_SizeOptionStrings
;
m_SizeOptionStrings
.
Add
(
_
(
"Auto"
));
m_SizeOptionStrings
.
Add
(
_
(
"Page Size A4"
));
m_SizeOptionStrings
.
Add
(
_
(
"Page Size A"
));
m_SizeOption
=
new
wxRadioBox
(
itemDialog1
,
ID_RADIOBOX1
,
_
(
"Plot page size:"
),
wxDefaultPosition
,
wxDefaultSize
,
m_SizeOptionStrings
,
1
,
wxRA_SPECIFY_COLS
);
m_SizeOption
->
SetSelection
(
0
);
itemBoxSizer3
->
Add
(
m_SizeOption
,
0
,
wxGROW
|
wxALL
,
5
);
m_SizeOptionStrings
.
Add
(
_
(
"Auto"
)
);
m_SizeOptionStrings
.
Add
(
_
(
"Page Size A4"
)
);
m_SizeOptionStrings
.
Add
(
_
(
"Page Size A"
)
);
m_SizeOption
=
new
wxRadioBox
(
itemDialog1
,
ID_RADIOBOX1
,
_
(
"Plot page size:"
),
wxDefaultPosition
,
wxDefaultSize
,
m_SizeOptionStrings
,
1
,
wxRA_SPECIFY_COLS
);
m_SizeOption
->
SetSelection
(
0
);
itemBoxSizer3
->
Add
(
m_SizeOption
,
0
,
wxGROW
|
wxALL
,
5
);
itemBoxSizer3
->
Add
(
5
,
5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
wxStaticBox
*
itemStaticBoxSizer6Static
=
new
wxStaticBox
(
itemDialog1
,
wxID_ANY
,
_
(
"Plot Options:"
)
);
itemBoxSizer3
->
Add
(
5
,
5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
wxStaticBoxSizer
*
itemStaticBoxSizer6
=
new
wxStaticBoxSizer
(
itemStaticBoxSizer6Static
,
wxVERTICAL
);
wxStaticBox
*
itemStaticBoxSizer6Static
=
new
wxStaticBox
(
itemDialog1
,
wxID_ANY
,
_
(
"Plot Options:"
));
wxStaticBoxSizer
*
itemStaticBoxSizer6
=
new
wxStaticBoxSizer
(
itemStaticBoxSizer6Static
,
wxVERTICAL
);
itemBoxSizer3
->
Add
(
itemStaticBoxSizer6
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
itemBoxSizer3
->
Add
(
itemStaticBoxSizer6
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
wxArrayString
m_PlotPSColorOptionStrings
;
m_PlotPSColorOptionStrings
.
Add
(
_
(
"B/W"
));
m_PlotPSColorOptionStrings
.
Add
(
_
(
"Color"
));
m_PlotPSColorOption
=
new
wxRadioBox
(
itemDialog1
,
ID_RADIOBOX
,
_
(
"Plot Color:"
),
wxDefaultPosition
,
wxDefaultSize
,
m_PlotPSColorOptionStrings
,
1
,
wxRA_SPECIFY_COLS
);
m_PlotPSColorOption
->
SetSelection
(
0
);
itemStaticBoxSizer6
->
Add
(
m_PlotPSColorOption
,
0
,
wxGROW
|
wxALL
,
5
);
m_PlotPSColorOptionStrings
.
Add
(
_
(
"B/W"
)
);
m_PlotPSColorOptionStrings
.
Add
(
_
(
"Color"
)
);
m_PlotPSColorOption
=
new
wxRadioBox
(
itemDialog1
,
ID_RADIOBOX
,
_
(
"Plot Color:"
),
wxDefaultPosition
,
wxDefaultSize
,
m_PlotPSColorOptionStrings
,
1
,
wxRA_SPECIFY_COLS
);
m_Plot_Sheet_Ref
=
new
wxCheckBox
(
itemDialog1
,
ID_CHECKBOX
,
_
(
"Print Sheet Ref"
),
wxDefaultPosition
,
wxDefaultSize
,
wxCHK_2STATE
);
m_Plot_Sheet_Ref
->
SetValue
(
false
);
itemStaticBoxSizer6
->
Add
(
m_Plot_Sheet_Ref
,
0
,
wxGROW
|
wxALL
,
5
);
m_PlotPSColorOption
->
SetSelection
(
0
);
itemStaticBoxSizer6
->
Add
(
m_PlotPSColorOption
,
0
,
wxGROW
|
wxALL
,
5
);
itemBoxSizer3
->
Add
(
5
,
5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
m_Plot_Sheet_Ref
=
new
wxCheckBox
(
itemDialog1
,
ID_CHECKBOX
,
_
(
"Print Sheet Ref"
),
wxDefaultPosition
,
wxDefaultSize
,
wxCHK_2STATE
);
wxBoxSizer
*
itemBoxSizer10
=
new
wxBoxSizer
(
wxVERTICAL
);
item
BoxSizer3
->
Add
(
itemBoxSizer10
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
m_Plot_Sheet_Ref
->
SetValue
(
false
);
item
StaticBoxSizer6
->
Add
(
m_Plot_Sheet_Ref
,
0
,
wxGROW
|
wxALL
,
5
);
wxButton
*
itemButton11
=
new
wxButton
(
itemDialog1
,
ID_PLOT_PS_CURRENT_EXECUTE
,
_
(
"&Plot CURRENT"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemButton11
->
SetForegroundColour
(
wxColour
(
0
,
128
,
0
));
itemBoxSizer10
->
Add
(
itemButton11
,
0
,
wxGROW
|
wxALL
,
5
);
itemBoxSizer3
->
Add
(
5
,
5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
wxButton
*
itemButton12
=
new
wxButton
(
itemDialog1
,
ID_PLOT_PS_ALL_EXECUTE
,
_
(
"Plot A&LL"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemButton12
->
SetForegroundColour
(
wxColour
(
179
,
0
,
0
));
itemBoxSizer10
->
Add
(
itemButton12
,
0
,
wxGROW
|
wxALL
,
5
);
wxBoxSizer
*
itemBoxSizer10
=
new
wxBoxSizer
(
wxVERTICAL
);
itemBoxSizer3
->
Add
(
itemBoxSizer10
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
wxButton
*
itemButton11
=
new
wxButton
(
itemDialog1
,
ID_PLOT_PS_CURRENT_EXECUTE
,
_
(
"&Plot CURRENT"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemButton11
->
SetForegroundColour
(
wxColour
(
0
,
128
,
0
)
);
itemBoxSizer10
->
Add
(
itemButton11
,
0
,
wxGROW
|
wxALL
,
5
);
wxButton
*
itemButton12
=
new
wxButton
(
itemDialog1
,
ID_PLOT_PS_ALL_EXECUTE
,
_
(
"Plot A&LL"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemButton12
->
SetForegroundColour
(
wxColour
(
179
,
0
,
0
)
);
itemBoxSizer10
->
Add
(
itemButton12
,
0
,
wxGROW
|
wxALL
,
5
);
m_btClose
=
new
wxButton
(
itemDialog1
,
wxID_CANCEL
,
_
(
"Close"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_btClose
=
new
wxButton
(
itemDialog1
,
wxID_CANCEL
,
_
(
"Close"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_btClose
->
SetDefault
();
m_btClose
->
SetForegroundColour
(
wxColour
(
0
,
0
,
255
));
itemBoxSizer10
->
Add
(
m_btClose
,
0
,
wxGROW
|
wxALL
,
5
);
m_btClose
->
SetForegroundColour
(
wxColour
(
0
,
0
,
255
)
);
itemBoxSizer10
->
Add
(
m_btClose
,
0
,
wxGROW
|
wxALL
,
5
);
m_DefaultLineSizeCtrlSizer
=
new
wxBoxSizer
(
wxVERTICAL
);
itemBoxSizer2
->
Add
(
m_DefaultLineSizeCtrlSizer
,
0
,
wxGROW
|
wxALL
,
5
);
m_DefaultLineSizeCtrlSizer
=
new
wxBoxSizer
(
wxVERTICAL
);
itemBoxSizer2
->
Add
(
m_DefaultLineSizeCtrlSizer
,
0
,
wxGROW
|
wxALL
,
5
);
wxStaticText
*
itemStaticText15
=
new
wxStaticText
(
itemDialog1
,
wxID_STATIC
,
_
(
"Messages :"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
wxStaticText
*
itemStaticText15
=
new
wxStaticText
(
itemDialog1
,
wxID_STATIC
,
_
(
"Messages :"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemBoxSizer2
->
Add
(
itemStaticText15
,
0
,
wxALIGN_LEFT
|
wxLEFT
|
wxRIGHT
|
wxTOP
|
wxADJUST_MINSIZE
,
5
);
itemBoxSizer2
->
Add
(
itemStaticText15
,
0
,
wxALIGN_LEFT
|
wxLEFT
|
wxRIGHT
|
wxTOP
|
wxADJUST_MINSIZE
,
5
);
m_MsgBox
=
new
wxTextCtrl
(
itemDialog1
,
ID_TEXTCTRL
,
_T
(
""
),
wxDefaultPosition
,
wxSize
(
-
1
,
200
),
wxTE_MULTILINE
);
itemBoxSizer2
->
Add
(
m_MsgBox
,
0
,
wxGROW
|
wxALL
|
wxFIXED_MINSIZE
,
5
);
m_MsgBox
=
new
wxTextCtrl
(
itemDialog1
,
ID_TEXTCTRL
,
_T
(
""
),
wxDefaultPosition
,
wxSize
(
-
1
,
200
),
wxTE_MULTILINE
);
itemBoxSizer2
->
Add
(
m_MsgBox
,
0
,
wxGROW
|
wxALL
|
wxFIXED_MINSIZE
,
5
);
// Set validators
m_SizeOption
->
SetValidator
(
wxGenericValidator
(
&
PS_SizeSelect
)
);
m_PlotPSColorOption
->
SetValidator
(
wxGenericValidator
(
&
g_PlotPSColorOpt
)
);
m_Plot_Sheet_Ref
->
SetValidator
(
wxGenericValidator
(
&
Plot_Sheet_Ref
)
);
m_SizeOption
->
SetValidator
(
wxGenericValidator
(
&
PS_SizeSelect
)
);
m_PlotPSColorOption
->
SetValidator
(
wxGenericValidator
(
&
g_PlotPSColorOpt
)
);
m_Plot_Sheet_Ref
->
SetValidator
(
wxGenericValidator
(
&
Plot_Sheet_Ref
)
);
////@end WinEDA_PlotPSFrame content construction
m_btClose
->
SetFocus
();
m_DefaultLineSizeCtrl
=
new
WinEDA_ValueCtrl
(
this
,
_
(
"Default Line Width"
),
g_PlotPSMinimunLineWidth
,
g_UnitMetric
,
m_DefaultLineSizeCtrlSizer
,
EESCHEMA_INTERNAL_UNIT
);
m_DefaultLineSizeCtrl
=
new
WinEDA_ValueCtrl
(
this
,
_
(
"Default Line Width"
),
g_PlotPSMinimunLineWidth
,
g_UnitMetric
,
m_DefaultLineSizeCtrlSizer
,
EESCHEMA_INTERNAL_UNIT
);
}
/*!
* Should we show tooltips?
*/
...
...
@@ -241,6 +304,7 @@ bool WinEDA_PlotPSFrame::ShowToolTips()
return
true
;
}
/*!
* Get bitmap resources
*/
...
...
@@ -249,11 +313,13 @@ wxBitmap WinEDA_PlotPSFrame::GetBitmapResource( const wxString& name )
{
// Bitmap retrieval
////@begin WinEDA_PlotPSFrame bitmap retrieval
wxUnusedVar
(
name
);
wxUnusedVar
(
name
);
return
wxNullBitmap
;
////@end WinEDA_PlotPSFrame bitmap retrieval
}
/*!
* Get icon resources
*/
...
...
@@ -262,21 +328,24 @@ wxIcon WinEDA_PlotPSFrame::GetIconResource( const wxString& name )
{
// Icon retrieval
////@begin WinEDA_PlotPSFrame icon retrieval
wxUnusedVar
(
name
);
wxUnusedVar
(
name
);
return
wxNullIcon
;
////@end WinEDA_PlotPSFrame icon retrieval
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON
*/
void
WinEDA_PlotPSFrame
::
OnPlotPsCurrentExecuteClick
(
wxCommandEvent
&
event
)
{
int
Select_PlotAll
=
FALSE
;
int
Select_PlotAll
=
FALSE
;
InitOptVars
();
CreatePSFile
(
Select_PlotAll
,
PS_SizeSelect
);
m_MsgBox
->
AppendText
(
wxT
(
"*****
\n
"
)
);
CreatePSFile
(
Select_PlotAll
,
PS_SizeSelect
);
m_MsgBox
->
AppendText
(
wxT
(
"*****
\n
"
)
);
}
...
...
@@ -286,11 +355,11 @@ int Select_PlotAll = FALSE;
void
WinEDA_PlotPSFrame
::
OnPlotPsAllExecuteClick
(
wxCommandEvent
&
event
)
{
int
Select_PlotAll
=
TRUE
;
int
Select_PlotAll
=
TRUE
;
InitOptVars
();
CreatePSFile
(
Select_PlotAll
,
PS_SizeSelect
);
m_MsgBox
->
AppendText
(
wxT
(
"*****
\n
"
)
);
CreatePSFile
(
Select_PlotAll
,
PS_SizeSelect
);
m_MsgBox
->
AppendText
(
wxT
(
"*****
\n
"
)
);
}
...
...
@@ -301,7 +370,7 @@ int Select_PlotAll = TRUE;
void
WinEDA_PlotPSFrame
::
OnCancelClick
(
wxCommandEvent
&
event
)
{
InitOptVars
();
EndModal
(
0
);
EndModal
(
0
);
}
...
...
@@ -309,213 +378,241 @@ void WinEDA_PlotPSFrame::OnCancelClick( wxCommandEvent& event )
void
WinEDA_PlotPSFrame
::
InitOptVars
()
/*****************************************/
{
Plot_Sheet_Ref
=
m_Plot_Sheet_Ref
->
GetValue
();
Plot_Sheet_Ref
=
m_Plot_Sheet_Ref
->
GetValue
();
g_PlotPSColorOpt
=
m_PlotPSColorOption
->
GetSelection
();
PS_SizeSelect
=
m_SizeOption
->
GetSelection
();
PS_SizeSelect
=
m_SizeOption
->
GetSelection
();
g_PlotPSMinimunLineWidth
=
m_DefaultLineSizeCtrl
->
GetValue
();
if
(
g_PlotPSMinimunLineWidth
<
1
)
g_PlotPSMinimunLineWidth
=
1
;
if
(
g_PlotPSMinimunLineWidth
<
1
)
g_PlotPSMinimunLineWidth
=
1
;
}
/*************************************************************/
void
WinEDA_PlotPSFrame
::
CreatePSFile
(
int
AllPages
,
int
pagesize
)
void
WinEDA_PlotPSFrame
::
CreatePSFile
(
int
AllPages
,
int
pagesize
)
/*************************************************************/
{
wxString
PlotFileName
,
ShortFileName
;
BASE_SCREEN
*
screen
;
Ki_PageDescr
*
PlotSheet
,
*
RealSheet
;
int
BBox
[
4
];
wxPoint
plot_offset
;
wxString
PlotFileName
,
ShortFileName
;
BASE_SCREEN
*
screen
;
Ki_PageDescr
*
PlotSheet
,
*
RealSheet
;
int
BBox
[
4
];
wxPoint
plot_offset
;
g_PlotFormat
=
PLOT_FORMAT_POST
;
/* Build the screen list */
EDA_ScreenList
ScreenList
;
if
(
AllPages
==
TRUE
)
screen
=
ScreenList
.
GetFirst
();
else
screen
=
ActiveScreen
;
for
(
;
screen
!=
NULL
;
screen
=
ScreenList
.
GetNext
()
)
if
(
AllPages
==
TRUE
)
screen
=
ScreenList
.
GetFirst
();
else
screen
=
ActiveScreen
;
for
(
;
screen
!=
NULL
;
screen
=
ScreenList
.
GetNext
()
)
{
PlotSheet
=
screen
->
m_CurrentSheetDesc
;
RealSheet
=
&
g_Sheet_A4
;
if
(
pagesize
==
PAGE_SIZE_AUTO
)
RealSheet
=
PlotSheet
;
else
if
(
pagesize
==
PAGE_SIZE_A
)
RealSheet
=
&
g_Sheet_A
;
if
(
pagesize
==
PAGE_SIZE_AUTO
)
RealSheet
=
PlotSheet
;
else
if
(
pagesize
==
PAGE_SIZE_A
)
RealSheet
=
&
g_Sheet_A
;
/* Calcul des limites de trace en 1/1000 pouce */
BBox
[
0
]
=
BBox
[
1
]
=
g_PlotMargin
;
// Plot margin in 1/1000 inch
BBox
[
0
]
=
BBox
[
1
]
=
g_PlotMargin
;
// Plot margin in 1/1000 inch
BBox
[
2
]
=
RealSheet
->
m_Size
.
x
-
g_PlotMargin
;
BBox
[
3
]
=
RealSheet
->
m_Size
.
y
-
g_PlotMargin
;
/* Calcul des echelles de conversion */
g_PlotScaleX
=
SCALE_PS
*
(
float
)
(
BBox
[
2
]
-
BBox
[
0
])
/
PlotSheet
->
m_Size
.
x
;
(
float
)
(
BBox
[
2
]
-
BBox
[
0
])
/
PlotSheet
->
m_Size
.
x
;
g_PlotScaleY
=
SCALE_PS
*
(
float
)
(
BBox
[
3
]
-
BBox
[
1
])
/
PlotSheet
->
m_Size
.
y
;
(
float
)
(
BBox
[
3
]
-
BBox
[
1
])
/
PlotSheet
->
m_Size
.
y
;
plot_offset
.
x
=
0
;
plot_offset
.
y
=
PlotSheet
->
m_Size
.
y
;
wxSplitPath
(
screen
->
m_FileName
.
GetData
(),
(
wxString
*
)
NULL
,
&
ShortFileName
,
(
wxString
*
)
NULL
);
wxSplitPath
(
screen
->
m_FileName
.
GetData
(),
(
wxString
*
)
NULL
,
&
ShortFileName
,
(
wxString
*
)
NULL
);
wxString
dirbuf
=
wxGetCwd
()
+
STRING_DIR_SEP
;
if
(
!
ShortFileName
.
IsEmpty
()
)
PlotFileName
=
MakeFileName
(
dirbuf
,
ShortFileName
,
wxT
(
".ps"
));
else
PlotFileName
=
MakeFileName
(
dirbuf
,
g_DefaultSchematicFileName
,
wxT
(
".ps"
));
PlotOneSheetPS
(
PlotFileName
,
screen
,
RealSheet
,
BBox
,
plot_offset
);
screen
=
(
BASE_SCREEN
*
)
screen
->
Pnext
;
if
(
AllPages
==
FALSE
)
break
;
if
(
!
ShortFileName
.
IsEmpty
()
)
PlotFileName
=
MakeFileName
(
dirbuf
,
ShortFileName
,
wxT
(
".ps"
)
);
else
PlotFileName
=
MakeFileName
(
dirbuf
,
g_DefaultSchematicFileName
,
wxT
(
".ps"
)
);
PlotOneSheetPS
(
PlotFileName
,
screen
,
RealSheet
,
BBox
,
plot_offset
);
screen
=
(
BASE_SCREEN
*
)
screen
->
Pnext
;
if
(
AllPages
==
FALSE
)
break
;
}
}
/*****************************************************************************************/
void
WinEDA_PlotPSFrame
::
PlotOneSheetPS
(
const
wxString
&
FileName
,
BASE_SCREEN
*
screen
,
Ki_PageDescr
*
sheet
,
int
BBox
[
4
],
wxPoint
plot_offset
)
void
WinEDA_PlotPSFrame
::
PlotOneSheetPS
(
const
wxString
&
FileName
,
BASE_SCREEN
*
screen
,
Ki_PageDescr
*
sheet
,
int
BBox
[
4
],
wxPoint
plot_offset
)
/*****************************************************************************************/
/* Trace en format PS. d'une feuille de dessin
*/
*/
{
wxString
Line
;
SCH_ITEM
*
DrawList
;
SCH_COMPONENT
*
DrawLibItem
;
int
layer
;
wxPoint
StartPos
,
EndPos
;
PlotOutput
=
wxFopen
(
FileName
,
wxT
(
"wt"
)
);
if
(
PlotOutput
==
NULL
)
wxString
Line
;
SCH_ITEM
*
DrawList
;
SCH_COMPONENT
*
DrawLibItem
;
int
layer
;
wxPoint
StartPos
,
EndPos
;
PlotOutput
=
wxFopen
(
FileName
,
wxT
(
"wt"
)
);
if
(
PlotOutput
==
NULL
)
{
Line
=
wxT
(
"
\n
** "
);
Line
+=
_
(
"Unable to create "
)
+
FileName
+
wxT
(
" **
\n\n
"
);
m_MsgBox
->
AppendText
(
Line
);
Line
=
wxT
(
"
\n
** "
);
Line
+=
_
(
"Unable to create "
)
+
FileName
+
wxT
(
" **
\n\n
"
);
m_MsgBox
->
AppendText
(
Line
);
wxBell
();
return
;
return
;
}
setlocale
(
LC_NUMERIC
,
"C"
);
Line
.
Printf
(
_
(
"Plot: %s
\n
"
),
FileName
.
GetData
())
;
m_MsgBox
->
AppendText
(
Line
);
setlocale
(
LC_NUMERIC
,
"C"
);
Line
.
Printf
(
_
(
"Plot: %s
\n
"
),
FileName
.
GetData
()
)
;
m_MsgBox
->
AppendText
(
Line
);
InitPlotParametresPS
(
plot_offset
,
sheet
,
g_PlotScaleX
,
g_PlotScaleY
);
SetDefaultLineWidthPS
(
g_PlotPSMinimunLineWidth
);
InitPlotParametresPS
(
plot_offset
,
sheet
,
g_PlotScaleX
,
g_PlotScaleY
);
SetDefaultLineWidthPS
(
g_PlotPSMinimunLineWidth
);
/* Init : */
PrintHeaderPS
(
PlotOutput
,
wxT
(
"EESchema-PS"
),
FileName
,
1
,
BBox
,
wxLANDSCAPE
);
InitPlotParametresPS
(
plot_offset
,
sheet
,
1.0
,
1.0
);
PrintHeaderPS
(
PlotOutput
,
wxT
(
"EESchema-PS"
),
FileName
,
1
,
BBox
,
wxLANDSCAPE
);
InitPlotParametresPS
(
plot_offset
,
sheet
,
1.0
,
1.0
);
if
(
m_Plot_Sheet_Ref
->
GetValue
()
)
if
(
m_Plot_Sheet_Ref
->
GetValue
()
)
{
if
(
(
g_PlotFormat
==
PLOT_FORMAT_POST
)
&&
g_PlotPSColorOpt
)
SetColorMapPS
(
BLACK
);
PlotWorkSheet
(
PLOT_FORMAT_POST
,
screen
);
if
(
(
g_PlotFormat
==
PLOT_FORMAT_POST
)
&&
g_PlotPSColorOpt
)
SetColorMapPS
(
BLACK
);
PlotWorkSheet
(
PLOT_FORMAT_POST
,
screen
);
}
DrawList
=
screen
->
EEDrawList
;
while
(
DrawList
)
/* tracage */
while
(
DrawList
)
/* tracage */
{
Plume
(
'U'
);
Plume
(
'U'
);
layer
=
LAYER_NOTES
;
switch
(
DrawList
->
Type
()
)
{
case
DRAW_BUSENTRY_STRUCT_TYPE
:
/* Struct Raccord et Segment sont identiques */
#undef STRUCT
#define STRUCT ((DrawBusEntryStruct*)DrawList)
StartPos
=
STRUCT
->
m_Pos
;
EndPos
=
STRUCT
->
m_End
();
layer
=
STRUCT
->
GetLayer
();
case
DRAW_SEGMENT_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ((EDA_DrawLineStruct*)DrawList)
if
(
DrawList
->
Type
()
==
DRAW_SEGMENT_STRUCT_TYPE
)
{
StartPos
=
STRUCT
->
m_Start
;
EndPos
=
STRUCT
->
m_End
;
layer
=
STRUCT
->
GetLayer
();
}
if
(
g_PlotPSColorOpt
)
SetColorMapPS
(
ReturnLayerColor
(
layer
)
);
switch
(
layer
)
{
case
LAYER_NOTES
:
/* Trace en pointilles */
SetCurrentLineWidth
(
-
1
);
fprintf
(
PlotOutput
,
"[50 50] 0 setdash
\n
"
);
Move_Plume
(
StartPos
,
'U'
);
Move_Plume
(
EndPos
,
'D'
);
fprintf
(
PlotOutput
,
"[] 0 setdash
\n
"
);
break
;
case
LAYER_BUS
:
/* Trait large */
{
fprintf
(
PlotOutput
,
"%d setlinewidth
\n
"
,
g_PlotPSMinimunLineWidth
*
3
);
Move_Plume
(
StartPos
,
'U'
);
Move_Plume
(
EndPos
,
'D'
);
fprintf
(
PlotOutput
,
"%d setlinewidth
\n
"
,
g_PlotPSMinimunLineWidth
);
}
break
;
default
:
SetCurrentLineWidth
(
-
1
);
Move_Plume
(
StartPos
,
'U'
);
Move_Plume
(
EndPos
,
'D'
);
break
;
}
case
DRAW_BUSENTRY_STRUCT_TYPE
:
/* Struct Raccord et Segment sont identiques */
#undef STRUCT
#define STRUCT ( (DrawBusEntryStruct*) DrawList )
StartPos
=
STRUCT
->
m_Pos
;
EndPos
=
STRUCT
->
m_End
();
layer
=
STRUCT
->
GetLayer
();
case
DRAW_SEGMENT_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ( (EDA_DrawLineStruct*) DrawList )
if
(
DrawList
->
Type
()
==
DRAW_SEGMENT_STRUCT_TYPE
)
{
StartPos
=
STRUCT
->
m_Start
;
EndPos
=
STRUCT
->
m_End
;
layer
=
STRUCT
->
GetLayer
();
}
if
(
g_PlotPSColorOpt
)
SetColorMapPS
(
ReturnLayerColor
(
layer
)
);
switch
(
layer
)
{
case
LAYER_NOTES
:
/* Trace en pointilles */
SetCurrentLineWidth
(
-
1
);
fprintf
(
PlotOutput
,
"[50 50] 0 setdash
\n
"
);
Move_Plume
(
StartPos
,
'U'
);
Move_Plume
(
EndPos
,
'D'
);
fprintf
(
PlotOutput
,
"[] 0 setdash
\n
"
);
break
;
case
DRAW_JUNCTION_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ((DrawJunctionStruct*)DrawList)
if
(
g_PlotPSColorOpt
)
SetColorMapPS
(
ReturnLayerColor
(
STRUCT
->
GetLayer
())
);
PlotCercle
(
STRUCT
->
m_Pos
,
DRAWJUNCTION_SIZE
);
case
LAYER_BUS
:
/* Trait large */
{
fprintf
(
PlotOutput
,
"%d setlinewidth
\n
"
,
g_PlotPSMinimunLineWidth
*
3
);
Move_Plume
(
StartPos
,
'U'
);
Move_Plume
(
EndPos
,
'D'
);
fprintf
(
PlotOutput
,
"%d setlinewidth
\n
"
,
g_PlotPSMinimunLineWidth
);
}
break
;
case
TYPE_SCH_TEXT
:
case
TYPE_SCH_LABEL
:
case
TYPE_SCH_GLOBALLABEL
:
case
TYPE_SCH_HIERLABEL
:
PlotTextStruct
(
DrawList
);
break
;
case
TYPE_SCH_COMPONENT
:
DrawLibItem
=
(
SCH_COMPONENT
*
)
DrawList
;
PlotLibPart
(
DrawLibItem
);
default
:
SetCurrentLineWidth
(
-
1
);
Move_Plume
(
StartPos
,
'U'
);
Move_Plume
(
EndPos
,
'D'
);
break
;
}
case
DRAW_PICK_ITEM_STRUCT_TYPE
:
break
;
case
DRAW_POLYLINE_STRUCT_TYPE
:
break
;
case
DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE
:
break
;
case
DRAW_MARKER_STRUCT_TYPE
:
break
;
break
;
case
DRAW_SHEET_STRUCT_TYPE
:
case
DRAW_JUNCTION_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ((DrawSheetStruct*)DrawList)
PlotSheetStruct
(
STRUCT
);
break
;
#define STRUCT ( (DrawJunctionStruct*) DrawList )
if
(
g_PlotPSColorOpt
)
SetColorMapPS
(
ReturnLayerColor
(
STRUCT
->
GetLayer
()
)
);
PlotCercle
(
STRUCT
->
m_Pos
,
DRAWJUNCTION_SIZE
);
break
;
case
TYPE_SCH_TEXT
:
case
TYPE_SCH_LABEL
:
case
TYPE_SCH_GLOBALLABEL
:
case
TYPE_SCH_HIERLABEL
:
PlotTextStruct
(
DrawList
);
break
;
case
TYPE_SCH_COMPONENT
:
DrawLibItem
=
(
SCH_COMPONENT
*
)
DrawList
;
PlotLibPart
(
DrawLibItem
);
break
;
case
DRAW_PICK_ITEM_STRUCT_TYPE
:
break
;
case
DRAW_POLYLINE_STRUCT_TYPE
:
break
;
case
DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE
:
break
;
case
DRAW_NOCONNECT_STRUCT_TYPE
:
case
DRAW_MARKER_STRUCT_TYPE
:
break
;
case
DRAW_SHEET_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ((DrawNoConnectStruct*)DrawList)
if
(
g_PlotPSColorOpt
)
SetColorMapPS
(
ReturnLayerColor
(
LAYER_NOCONNECT
)
);
PlotNoConnectStruct
(
STRUCT
);
break
;
#define STRUCT ( (DrawSheetStruct*) DrawList )
PlotSheetStruct
(
STRUCT
);
break
;
default
:
break
;
case
DRAW_NOCONNECT_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ( (DrawNoConnectStruct*) DrawList )
if
(
g_PlotPSColorOpt
)
SetColorMapPS
(
ReturnLayerColor
(
LAYER_NOCONNECT
)
);
PlotNoConnectStruct
(
STRUCT
);
break
;
default
:
break
;
}
Plume
(
'U'
);
Plume
(
'U'
);
DrawList
=
DrawList
->
Next
();
}
/* fin */
CloseFilePS
(
PlotOutput
);
setlocale
(
LC_NUMERIC
,
""
);
CloseFilePS
(
PlotOutput
);
setlocale
(
LC_NUMERIC
,
""
);
m_MsgBox
->
AppendText
(
wxT
(
"Ok
\n
"
)
);
m_MsgBox
->
AppendText
(
wxT
(
"Ok
\n
"
)
);
}
...
...
@@ -525,13 +622,12 @@ wxPoint StartPos, EndPos;
void
WinEDA_PlotPSFrame
::
OnInitDialog
(
wxInitDialogEvent
&
event
)
{
// make the ESC work
m_SizeOption
->
SetFocus
();
////@begin wxEVT_INIT_DIALOG event handler for ID_DIALOG in WinEDA_PlotPSFrame.
// Before editing this code, remove the block markers.
event
.
Skip
();
////@end wxEVT_INIT_DIALOG event handler for ID_DIALOG in WinEDA_PlotPSFrame.
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment