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
2caad6b1
Commit
2caad6b1
authored
Mar 05, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
beautify
parent
2a0fd4ef
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
102 additions
and
98 deletions
+102
-98
copy_to_clipboard.cpp
common/copy_to_clipboard.cpp
+102
-98
No files found.
common/copy_to_clipboard.cpp
View file @
2caad6b1
/////////////////////////////////////////////////////////////////////////////
// Name: copy_to_clipboard.cpp
// Author: jean-pierre Charras
// Created: 18 aug 2006
...
...
@@ -23,119 +24,122 @@
#include "common.h"
#include "id.h"
extern
BASE_SCREEN
*
ActiveScreen
;
extern
BASE_SCREEN
*
ActiveScreen
;
static
const
bool
s_PlotBlackAndWhite
=
FALSE
;
static
const
bool
Print_Sheet_Ref
=
TRUE
;
static
const
bool
s_PlotBlackAndWhite
=
FALSE
;
static
const
bool
Print_Sheet_Ref
=
TRUE
;
static
bool
DrawPage
(
WinEDA_DrawPanel
*
panel
);
static
bool
DrawPage
(
WinEDA_DrawPanel
*
panel
);
/************************************************************/
void
WinEDA_DrawFrame
::
CopyToClipboard
(
wxCommandEvent
&
event
)
void
WinEDA_DrawFrame
::
CopyToClipboard
(
wxCommandEvent
&
event
)
/************************************************************/
/* calls the function to copy the current page or the current bock to the clipboard
*/
*/
{
DrawPage
(
DrawPanel
);
if
(
event
.
GetId
()
==
ID_GEN_COPY_BLOCK_TO_CLIPBOARD
)
{
if
(
GetScreen
()
->
BlockLocate
.
m_Command
!=
BLOCK_IDLE
)
DrawPanel
->
SetCursor
(
wxCursor
(
DrawPanel
->
m_PanelCursor
=
DrawPanel
->
m_PanelDefaultCursor
)
);
if
(
DrawPanel
->
ManageCurseur
&&
DrawPanel
->
ForceCloseManageCurseur
)
{
wxClientDC
dc
(
DrawPanel
);
DrawPanel
->
PrepareGraphicContext
(
&
dc
);
DrawPanel
->
ForceCloseManageCurseur
(
DrawPanel
,
&
dc
);
}
}
DrawPage
(
DrawPanel
);
if
(
event
.
GetId
()
==
ID_GEN_COPY_BLOCK_TO_CLIPBOARD
)
{
if
(
GetScreen
()
->
BlockLocate
.
m_Command
!=
BLOCK_IDLE
)
DrawPanel
->
SetCursor
(
wxCursor
(
DrawPanel
->
m_PanelCursor
=
DrawPanel
->
m_PanelDefaultCursor
)
);
if
(
DrawPanel
->
ManageCurseur
&&
DrawPanel
->
ForceCloseManageCurseur
)
{
wxClientDC
dc
(
DrawPanel
);
DrawPanel
->
PrepareGraphicContext
(
&
dc
);
DrawPanel
->
ForceCloseManageCurseur
(
DrawPanel
,
&
dc
);
}
}
}
/*****************************************************************/
bool
DrawPage
(
WinEDA_DrawPanel
*
panel
)
bool
DrawPage
(
WinEDA_DrawPanel
*
panel
)
/*****************************************************************/
/* copy the current page or block to the clipboard ,
to export drawings to other applications (word processing ...)
Thi is not suitable for copy command within eeschema or pcbnew
*/
*
to export drawings to other applications (word processing ...)
*
Thi is not suitable for copy command within eeschema or pcbnew
*/
{
bool
success
=
TRUE
;
bool
success
=
TRUE
;
#ifdef __WINDOWS__
int
tmpzoom
;
wxPoint
tmp_startvisu
;
wxPoint
old_org
;
wxPoint
DrawOffset
;
// Offset de trace
int
ClipboardSizeX
,
ClipboardSizeY
;
bool
DrawBlock
=
FALSE
;
wxRect
DrawArea
;
/* scale is the ratio resolution/internal units */
float
scale
=
82.0
/
panel
->
m_Parent
->
m_InternalUnits
;
if
(
ActiveScreen
->
BlockLocate
.
m_Command
!=
BLOCK_IDLE
)
{
DrawBlock
=
TRUE
;
DrawArea
.
SetX
((
int
)(
ActiveScreen
->
BlockLocate
.
GetX
())
);
DrawArea
.
SetY
((
int
)(
ActiveScreen
->
BlockLocate
.
GetY
()));
DrawArea
.
SetWidth
((
int
)(
ActiveScreen
->
BlockLocate
.
GetWidth
()));
DrawArea
.
SetHeight
((
int
)(
ActiveScreen
->
BlockLocate
.
GetHeight
()));
}
/* modification des cadrages et reglages locaux */
tmp_startvisu
=
ActiveScreen
->
m_StartVisu
;
tmpzoom
=
ActiveScreen
->
GetZoom
();
old_org
=
ActiveScreen
->
m_DrawOrg
;
ActiveScreen
->
m_DrawOrg
.
x
=
ActiveScreen
->
m_DrawOrg
.
y
=
0
;
ActiveScreen
->
m_StartVisu
.
x
=
ActiveScreen
->
m_StartVisu
.
y
=
0
;
ActiveScreen
->
SetZoom
(
1
);
wxMetafileDC
dc
/*(wxT(""), DrawArea.GetWidth(), DrawArea.GetHeight())*/
;
if
(
!
dc
.
Ok
()
)
{
DisplayError
(
NULL
,
wxT
(
"CopyToClipboard: DrawPage error: wxMetafileDC not OK"
));
success
=
FALSE
;
}
else
{
EDA_Rect
tmp
=
panel
->
m_ClipBox
;
GRResetPenAndBrush
(
&
dc
);
GRForceBlackPen
(
s_PlotBlackAndWhite
);
g_IsPrinting
=
TRUE
;
dc
.
SetUserScale
(
scale
,
scale
);
ClipboardSizeX
=
dc
.
MaxX
()
+
10
;
ClipboardSizeY
=
dc
.
MaxY
()
+
10
;
panel
->
m_ClipBox
.
SetX
(
0
);
panel
->
m_ClipBox
.
SetY
(
0
);
panel
->
m_ClipBox
.
SetWidth
(
0x7FFFFF0
);
panel
->
m_ClipBox
.
SetHeight
(
0x7FFFFF0
);
if
(
DrawBlock
)
{
dc
.
SetClippingRegion
(
DrawArea
);
}
panel
->
PrintPage
(
&
dc
,
Print_Sheet_Ref
,
-
1
);
g_IsPrinting
=
FALSE
;
panel
->
m_ClipBox
=
tmp
;
wxMetafile
*
mf
=
dc
.
Close
();
if
(
mf
)
{
success
=
mf
->
SetClipboard
(
ClipboardSizeX
,
ClipboardSizeY
);
delete
mf
;
}
}
GRForceBlackPen
(
FALSE
);
SetPenMinWidth
(
1
);
ActiveScreen
->
m_StartVisu
=
tmp_startvisu
;
ActiveScreen
->
m_DrawOrg
=
old_org
;
ActiveScreen
->
SetZoom
(
tmpzoom
);
int
tmpzoom
;
wxPoint
tmp_startvisu
;
wxPoint
old_org
;
wxPoint
DrawOffset
;
// Offset de trace
int
ClipboardSizeX
,
ClipboardSizeY
;
bool
DrawBlock
=
FALSE
;
wxRect
DrawArea
;
/* scale is the ratio resolution/internal units */
float
scale
=
82.0
/
panel
->
m_Parent
->
m_InternalUnits
;
if
(
ActiveScreen
->
BlockLocate
.
m_Command
!=
BLOCK_IDLE
)
{
DrawBlock
=
TRUE
;
DrawArea
.
SetX
(
(
int
)
(
ActiveScreen
->
BlockLocate
.
GetX
()
)
);
DrawArea
.
SetY
(
(
int
)
(
ActiveScreen
->
BlockLocate
.
GetY
()
)
);
DrawArea
.
SetWidth
(
(
int
)
(
ActiveScreen
->
BlockLocate
.
GetWidth
()
)
);
DrawArea
.
SetHeight
(
(
int
)
(
ActiveScreen
->
BlockLocate
.
GetHeight
()
)
);
}
/* modification des cadrages et reglages locaux */
tmp_startvisu
=
ActiveScreen
->
m_StartVisu
;
tmpzoom
=
ActiveScreen
->
GetZoom
();
old_org
=
ActiveScreen
->
m_DrawOrg
;
ActiveScreen
->
m_DrawOrg
.
x
=
ActiveScreen
->
m_DrawOrg
.
y
=
0
;
ActiveScreen
->
m_StartVisu
.
x
=
ActiveScreen
->
m_StartVisu
.
y
=
0
;
ActiveScreen
->
SetZoom
(
1
);
wxMetafileDC
dc
/*(wxT(""), DrawArea.GetWidth(), DrawArea.GetHeight())*/
;
if
(
!
dc
.
Ok
()
)
{
DisplayError
(
NULL
,
wxT
(
"CopyToClipboard: DrawPage error: wxMetafileDC not OK"
)
);
success
=
FALSE
;
}
else
{
EDA_Rect
tmp
=
panel
->
m_ClipBox
;
GRResetPenAndBrush
(
&
dc
);
GRForceBlackPen
(
s_PlotBlackAndWhite
);
g_IsPrinting
=
TRUE
;
dc
.
SetUserScale
(
scale
,
scale
);
ClipboardSizeX
=
dc
.
MaxX
()
+
10
;
ClipboardSizeY
=
dc
.
MaxY
()
+
10
;
panel
->
m_ClipBox
.
SetX
(
0
);
panel
->
m_ClipBox
.
SetY
(
0
);
panel
->
m_ClipBox
.
SetWidth
(
0x7FFFFF0
);
panel
->
m_ClipBox
.
SetHeight
(
0x7FFFFF0
);
if
(
DrawBlock
)
{
dc
.
SetClippingRegion
(
DrawArea
);
}
panel
->
PrintPage
(
&
dc
,
Print_Sheet_Ref
,
-
1
);
g_IsPrinting
=
FALSE
;
panel
->
m_ClipBox
=
tmp
;
wxMetafile
*
mf
=
dc
.
Close
();
if
(
mf
)
{
success
=
mf
->
SetClipboard
(
ClipboardSizeX
,
ClipboardSizeY
);
delete
mf
;
}
}
GRForceBlackPen
(
FALSE
);
SetPenMinWidth
(
1
);
ActiveScreen
->
m_StartVisu
=
tmp_startvisu
;
ActiveScreen
->
m_DrawOrg
=
old_org
;
ActiveScreen
->
SetZoom
(
tmpzoom
);
#endif
return
success
;
return
success
;
}
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