本文整理汇总了C++中PCB_SCREEN::GetParentPcbFrame方法的典型用法代码示例。如果您正苦于以下问题:C++ PCB_SCREEN::GetParentPcbFrame方法的具体用法?C++ PCB_SCREEN::GetParentPcbFrame怎么用?C++ PCB_SCREEN::GetParentPcbFrame使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PCB_SCREEN
的用法示例。
在下文中一共展示了PCB_SCREEN::GetParentPcbFrame方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Draw
void EDGE_MODULE::Draw(WinEDA_DrawPanel * panel, wxDC * DC,
const wxPoint & offset, int draw_mode)
/********************************************************************************/
/* Affichage d'un segment contour de module :
Entree : ox, oy = offset de trace
draw_mode = mode de trace ( GR_OR, GR_XOR, GR_AND)
Les contours sont de differents type:
- Segment
- Cercles
- Arcs
*/
{
int ux0, uy0, dx, dy,rayon, StAngle, EndAngle;
int color , type_trace;
int zoom;
int typeaff;
PCB_SCREEN * screen;
WinEDA_BasePcbFrame * frame;
MODULE * Module = NULL;
if ( m_Parent && (m_Parent->m_StructType == TYPEMODULE) )
Module = (MODULE*) m_Parent;
GRSetDrawMode(DC, draw_mode);
color = g_DesignSettings.m_LayerColor[m_Layer];
if ( panel ) screen = (PCB_SCREEN *) panel->m_Parent->m_CurrentScreen;
else screen = ActiveScreen;
frame = screen->GetParentPcbFrame();
zoom = screen->GetZoom();
type_trace = m_Shape;
ux0 = m_Start.x - offset.x; uy0 = m_Start.y - offset.y;
dx = m_End.x - offset.x ;
dy = m_End.y - offset.y ;
typeaff = frame->m_DisplayModEdge;
if( m_Layer <= CMP_N )
typeaff = frame->m_DisplayPcbTrackFill;
if( (m_Width /zoom) < L_MIN_DESSIN ) typeaff = FILAIRE;
switch (type_trace )
{
case S_SEGMENT:
if( typeaff == FILAIRE)
GRLine(&panel->m_ClipBox, DC, ux0, uy0, dx, dy, color);
else Affiche_1_Segment(panel, DC, ux0,uy0,dx,dy,m_Width,
typeaff,color);
break ;
case S_CIRCLE:
rayon = (int)hypot((double)(dx-ux0),(double)(dy-uy0) );
if( typeaff == FILAIRE)
{
GRCircle(&panel->m_ClipBox, DC, ux0, uy0, rayon, color) ;
}
else
{
if(typeaff == FILLED )
{
GRCircle(&panel->m_ClipBox, DC, ux0, uy0, rayon, m_Width, color);
}
else
{
GRCircle(&panel->m_ClipBox, DC, ux0, uy0, rayon + (m_Width/2), color) ;
GRCircle(&panel->m_ClipBox, DC, ux0, uy0, rayon - (m_Width/2), color) ;
}
}
break;
case S_ARC:
rayon = (int)hypot((double)(dx-ux0),(double)(dy-uy0) );
StAngle = (int)ArcTangente( dy-uy0, dx-ux0 );
EndAngle = StAngle + m_Angle;
if ( StAngle > EndAngle) EXCHG (StAngle, EndAngle);
if( typeaff == FILAIRE)
{
GRArc(&panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, color) ;
}
else if(typeaff == FILLED )
{
GRArc(&panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon,
m_Width, color);
}
else
{
GRArc(&panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle,
rayon + (m_Width/2), color) ;
GRArc(&panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle,
rayon - (m_Width/2), color) ;
}
break;
case S_POLYGON:
{
// We must compute true coordinates from m_PolyList
// which are relative to module position, orientation 0
//.........这里部分代码省略.........