Global labels problems fixed (see changelog)
This commit is contained in:
parent
9086e68d47
commit
acf03b7d55
|
@ -5,6 +5,13 @@ Started 2007-June-11
|
|||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2008-Feb-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||
================================================================================
|
||||
+eeschema
|
||||
Fixed bug in getpart.cpp:
|
||||
eeschema crashed when aborting a new component place command
|
||||
Global Symbols now have their shapes
|
||||
Bad global label shape fixed when reading a schematic file
|
||||
|
||||
|
||||
2008-Feb-20 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
/* XPM */
|
||||
static const char *lang_chinese_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 16 16 1",
|
||||
". c #E42814",
|
||||
"X c #DC1A1C",
|
||||
"& c #FCFE04",
|
||||
"; c #EC6A14",
|
||||
"% c #FCF20C",
|
||||
"# c #EC5E14",
|
||||
"$ c #F4B20C",
|
||||
"+ c #DB031C",
|
||||
"@ c #F4A60C",
|
||||
"o c #DC0D1C",
|
||||
"O c #E43E14",
|
||||
"* c #F49A0C",
|
||||
"- c #E45214",
|
||||
" c #DC1519",
|
||||
"= c #EC7A0C",
|
||||
": c #E44614",
|
||||
/* pixels */
|
||||
" .. . X",
|
||||
"X oO+ o@#+ ",
|
||||
" ++$ ++o+@o . X",
|
||||
"X.%&&*o o= ",
|
||||
" +.&&+ + + . X",
|
||||
"Xo-+O oo& ",
|
||||
" o o#.++. X",
|
||||
" X ;: . ",
|
||||
" . . oo X",
|
||||
"X . . ",
|
||||
" . . . X",
|
||||
"X ",
|
||||
" . . . . . X",
|
||||
"XX X X",
|
||||
"X X X X X X",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
|
@ -47,6 +47,7 @@
|
|||
#include "Lang_Ko.xpm"
|
||||
#include "Lang_Ru.xpm"
|
||||
#include "Lang_Catalan.xpm"
|
||||
#include "Lang_chinese.xpm"
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -572,7 +573,7 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu )
|
|||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_CHINESE_SIMPLIFIED,
|
||||
_( "Chinese simplified" ), wxEmptyString, wxITEM_CHECK );
|
||||
//SETBITMAPS( lang_chinese_simplified_xpm );
|
||||
SETBITMAPS( lang_chinese_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
}
|
||||
|
||||
|
|
|
@ -16,71 +16,6 @@
|
|||
#define NB_MAX_SHEET 500
|
||||
|
||||
|
||||
/* Type des labels sur sheet (Labels sur hierarchie) et forme des Global-Labels*/
|
||||
typedef enum {
|
||||
NET_INPUT,
|
||||
NET_OUTPUT,
|
||||
NET_BIDI,
|
||||
NET_TRISTATE,
|
||||
NET_UNSPECIFIED,
|
||||
NET_TMAX /* Derniere valeur: fin de tableau */
|
||||
} TypeSheetLabel;
|
||||
|
||||
/* Messages correspondants aux types ou forme des labels */
|
||||
#ifdef MAIN
|
||||
const char* SheetLabelType[] =
|
||||
{
|
||||
"Input",
|
||||
"Output",
|
||||
"BiDi",
|
||||
"3State",
|
||||
"UnSpc",
|
||||
"?????"
|
||||
};
|
||||
#else
|
||||
extern const char* SheetLabelType[];
|
||||
#endif
|
||||
|
||||
/* Description du graphisme des icones associes aux types des Global_Labels */
|
||||
#ifdef MAIN
|
||||
int TemplateIN_HN[] = { 6, 0, 0, -1, -1, -2, -1, -2, 1, -1, 1, 0, 0 };
|
||||
int TemplateIN_HI[] = { 6, 0, 0, 1, 1, 2, 1, 2, -1, 1, -1, 0, 0 };
|
||||
int TemplateIN_BOTTOM[] = { 6, 0, 0, 1, -1, 1, -2, -1, -2, -1, -1, 0, 0 };
|
||||
int TemplateIN_UP[] = { 6, 0, 0, 1, 1, 1, 2, -1, 2, -1, 1, 0, 0 };
|
||||
|
||||
int TemplateOUT_HN[] = { 6, -2, 0, -1, 1, 0, 1, 0, -1, -1, -1, -2, 0 };
|
||||
int TemplateOUT_HI[] = { 6, 2, 0, 1, -1, 0, -1, 0, 1, 1, 1, 2, 0 };
|
||||
int TemplateOUT_BOTTOM[] = { 6, 0, -2, 1, -1, 1, 0, -1, 0, -1, -1, 0, -2 };
|
||||
int TemplateOUT_UP[] = { 6, 0, 2, 1, 1, 1, 0, -1, 0, -1, 1, 0, 2 };
|
||||
|
||||
int TemplateUNSPC_HN[] = { 5, 0, -1, -2, -1, -2, 1, 0, 1, 0, -1 };
|
||||
int TemplateUNSPC_HI[] = { 5, 0, -1, 2, -1, 2, 1, 0, 1, 0, -1 };
|
||||
int TemplateUNSPC_BOTTOM[] = { 5, 1, 0, 1, -2, -1, -2, -1, 0, 1, 0 };
|
||||
int TemplateUNSPC_UP[] = { 5, 1, 0, 1, 2, -1, 2, -1, 0, 1, 0 };
|
||||
|
||||
int TemplateBIDI_HN[] = { 5, 0, 0, -1, -1, -2, 0, -1, 1, 0, 0 };
|
||||
int TemplateBIDI_HI[] = { 5, 0, 0, 1, -1, 2, 0, 1, 1, 0, 0 };
|
||||
int TemplateBIDI_BOTTOM[] = { 5, 0, 0, -1, -1, 0, -2, 1, -1, 0, 0 };
|
||||
int TemplateBIDI_UP[] = { 5, 0, 0, -1, 1, 0, 2, 1, 1, 0, 0 };
|
||||
|
||||
int Template3STATE_HN[] = { 5, 0, 0, -1, -1, -2, 0, -1, 1, 0, 0 };
|
||||
int Template3STATE_HI[] = { 5, 0, 0, 1, -1, 2, 0, 1, 1, 0, 0 };
|
||||
int Template3STATE_BOTTOM[] = { 5, 0, 0, -1, -1, 0, -2, 1, -1, 0, 0 };
|
||||
int Template3STATE_UP[] = { 5, 0, 0, -1, 1, 0, 2, 1, 1, 0, 0 };
|
||||
|
||||
int* TemplateShape[5][4] =
|
||||
{
|
||||
{ TemplateIN_HN, TemplateIN_UP, TemplateIN_HI, TemplateIN_BOTTOM },
|
||||
{ TemplateOUT_HN, TemplateOUT_UP, TemplateOUT_HI, TemplateOUT_BOTTOM },
|
||||
{ TemplateBIDI_HN, TemplateBIDI_UP, TemplateBIDI_HI, TemplateBIDI_BOTTOM },
|
||||
{ Template3STATE_HN, Template3STATE_UP, Template3STATE_HI, Template3STATE_BOTTOM },
|
||||
{ TemplateUNSPC_HN, TemplateUNSPC_UP, TemplateUNSPC_HI, TemplateUNSPC_BOTTOM }
|
||||
};
|
||||
#else
|
||||
extern int* TemplateShape[5][4];
|
||||
#endif
|
||||
|
||||
|
||||
/* Forward declarations */
|
||||
class DrawSheetStruct;
|
||||
extern DrawSheetStruct* g_RootSheet;
|
||||
|
|
|
@ -6,9 +6,11 @@
|
|||
#include "gr_basic.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "trigo.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "id.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
@ -120,6 +122,7 @@ DrawLabelStruct::DrawLabelStruct( const wxPoint& pos, const wxString& text ) :
|
|||
/****************************************************************************/
|
||||
{
|
||||
m_Layer = LAYER_LOCLABEL;
|
||||
m_Shape = NET_INPUT;
|
||||
m_IsDangling = TRUE;
|
||||
}
|
||||
|
||||
|
@ -134,6 +137,7 @@ DrawGlobalLabelStruct::DrawGlobalLabelStruct(const wxPoint& pos, const wxString&
|
|||
m_IsDangling = TRUE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************/
|
||||
DrawHierLabelStruct::DrawHierLabelStruct( const wxPoint& pos, const wxString& text ) :
|
||||
DrawTextStruct( pos, text, DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
|
@ -144,6 +148,7 @@ DrawHierLabelStruct::DrawHierLabelStruct(const wxPoint& pos, const wxString& tex
|
|||
m_IsDangling = TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************************/
|
||||
void DrawTextStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||
int DrawMode, int Color )
|
||||
|
@ -217,13 +222,14 @@ void DrawLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& of
|
|||
void DrawHierLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||
int DrawMode, int Color )
|
||||
/******************************************************************************************/
|
||||
|
||||
/* Texts type Global Label have 4 directions, and the Text origin is the graphic icon
|
||||
*/
|
||||
{
|
||||
int* Template;
|
||||
int Poly[20];
|
||||
int ii, jj, imax, color, HalfSize;
|
||||
wxSize Size = m_Size;
|
||||
int Poly[40];
|
||||
int ii, color;
|
||||
wxPoint AnchorPos = m_Pos + offset;;
|
||||
|
||||
int width = MAX( m_Width, g_DrawMinimunLineWidth );
|
||||
|
||||
if( Color >= 0 )
|
||||
|
@ -233,68 +239,84 @@ void DrawHierLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint
|
|||
|
||||
GRSetDrawMode( DC, DrawMode );
|
||||
|
||||
HalfSize = Size.x / 2; ii = Size.x + TXTMARGE;
|
||||
ii = m_Size.x + TXTMARGE;
|
||||
|
||||
switch( m_Orient )
|
||||
{
|
||||
case 0: /* Orientation horiz normale */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x - ii + offset.x, m_Pos.y + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, Size,
|
||||
wxPoint( AnchorPos.x - ii, AnchorPos.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, m_Size,
|
||||
GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, width );
|
||||
break;
|
||||
|
||||
case 1: /* Orientation vert UP */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x + offset.x, m_Pos.y + ii + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, Size,
|
||||
wxPoint( AnchorPos.x, AnchorPos.y + ii ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, m_Size,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, width );
|
||||
break;
|
||||
|
||||
case 2: /* Orientation horiz inverse */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x + ii + offset.x, m_Pos.y + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, Size,
|
||||
wxPoint( AnchorPos.x + ii, AnchorPos.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, m_Size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width );
|
||||
break;
|
||||
|
||||
case 3: /* Orientation vert BOTTOM */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x + offset.x, m_Pos.y - ii + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, Size,
|
||||
wxPoint( AnchorPos.x, AnchorPos.y - ii ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, m_Size,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM, width );
|
||||
break;
|
||||
}
|
||||
|
||||
Template = TemplateShape[m_Shape][m_Orient];
|
||||
|
||||
imax = *Template; Template++;
|
||||
for( ii = 0, jj = 0; ii < imax; ii++ )
|
||||
{
|
||||
Poly[jj] = ( HalfSize * (*Template) ) + m_Pos.x + offset.x;
|
||||
jj++; Template++;
|
||||
Poly[jj] = ( HalfSize * (*Template) ) + m_Pos.y + offset.y;
|
||||
jj++; Template++;
|
||||
}
|
||||
|
||||
GRPoly( &panel->m_ClipBox, DC, imax, Poly, 0, width, color, color );
|
||||
CreateGraphicShape( Poly, AnchorPos );
|
||||
GRPoly( &panel->m_ClipBox, DC, Poly[0], Poly + 1, 0, width, color, color );
|
||||
|
||||
if( m_IsDangling )
|
||||
DrawDanglingSymbol( panel, DC, m_Pos + offset, color );
|
||||
}
|
||||
|
||||
|
||||
/** function CreateGraphicShape
|
||||
* Calculates the graphic shape (a polygon) associated to the text
|
||||
* @param corner_list = coordinates list fill with polygon corners ooordinates (size > 20)
|
||||
* @param Pos = Postion of the shape
|
||||
* format list is
|
||||
* corner_count, x0, y0, ... xn, yn
|
||||
*/
|
||||
void DrawHierLabelStruct::CreateGraphicShape( int* corner_list, const wxPoint& Pos )
|
||||
{
|
||||
int* Template = TemplateShape[m_Shape][m_Orient];
|
||||
int HalfSize = m_Size.x / 2;
|
||||
|
||||
int imax = *Template; Template++;
|
||||
|
||||
*corner_list = imax; corner_list++;
|
||||
for( int ii = 0; ii < imax; ii++ )
|
||||
{
|
||||
*corner_list = ( HalfSize * (*Template) ) + Pos.x;
|
||||
corner_list++; Template++;
|
||||
*corner_list = ( HalfSize * (*Template) ) + Pos.y;
|
||||
corner_list++; Template++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************************/
|
||||
void DrawGlobalLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||
void DrawGlobalLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& draw_offset,
|
||||
int DrawMode, int Color )
|
||||
/******************************************************************************************/
|
||||
|
||||
/* Texts type Global Label have 4 directions, and the Text origin is the graphic icon
|
||||
*/
|
||||
//should reimplement this with a custom global shape??
|
||||
//it is the same as Hierarchal sheet.
|
||||
{
|
||||
int* Template;
|
||||
int Poly[20];
|
||||
int ii, jj, imax, color, HalfSize;
|
||||
wxSize Size = m_Size;
|
||||
int offset, color, HalfSize;
|
||||
wxPoint AnchorPos = m_Pos + draw_offset;;
|
||||
|
||||
int width = MAX( m_Width, g_DrawMinimunLineWidth );
|
||||
|
||||
if( Color >= 0 )
|
||||
|
@ -304,52 +326,143 @@ void DrawGlobalLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoi
|
|||
|
||||
GRSetDrawMode( DC, DrawMode );
|
||||
|
||||
HalfSize = Size.x / 2; ii = Size.x + TXTMARGE;
|
||||
HalfSize = m_Size.x / 2;
|
||||
offset = width;
|
||||
|
||||
switch( m_Shape )
|
||||
{
|
||||
case NET_INPUT:
|
||||
case NET_BIDI:
|
||||
case NET_TRISTATE:
|
||||
offset += HalfSize;
|
||||
break;
|
||||
|
||||
case NET_OUTPUT:
|
||||
offset += TXTMARGE;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch( m_Orient )
|
||||
{
|
||||
case 0: /* Orientation horiz normale */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x - ii + offset.x, m_Pos.y + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, Size,
|
||||
wxPoint( AnchorPos.x - offset, AnchorPos.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, m_Size,
|
||||
GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, width );
|
||||
break;
|
||||
|
||||
case 1: /* Orientation vert UP */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x + offset.x, m_Pos.y + ii + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, Size,
|
||||
wxPoint( AnchorPos.x, AnchorPos.y + offset ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, m_Size,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, width );
|
||||
break;
|
||||
|
||||
case 2: /* Orientation horiz inverse */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x + ii + offset.x, m_Pos.y + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, Size,
|
||||
wxPoint( AnchorPos.x + offset, AnchorPos.y ), color,
|
||||
m_Text, TEXT_ORIENT_HORIZ, m_Size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width );
|
||||
break;
|
||||
|
||||
case 3: /* Orientation vert BOTTOM */
|
||||
DrawGraphicText( panel, DC,
|
||||
wxPoint( m_Pos.x + offset.x, m_Pos.y - ii + offset.y ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, Size,
|
||||
wxPoint( AnchorPos.x, AnchorPos.y - offset ), color,
|
||||
m_Text, TEXT_ORIENT_VERT, m_Size,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM, width );
|
||||
break;
|
||||
}
|
||||
|
||||
Template = TemplateShape[m_Shape][m_Orient];
|
||||
|
||||
imax = *Template; Template++;
|
||||
for( ii = 0, jj = 0; ii < imax; ii++ )
|
||||
{
|
||||
Poly[jj] = ( HalfSize * (*Template) ) + m_Pos.x + offset.x;
|
||||
jj++; Template++;
|
||||
Poly[jj] = ( HalfSize * (*Template) ) + m_Pos.y + offset.y;
|
||||
jj++; Template++;
|
||||
}
|
||||
|
||||
GRPoly( &panel->m_ClipBox, DC, imax, Poly, 0, width, color, color );
|
||||
CreateGraphicShape( Poly, AnchorPos );
|
||||
GRPoly( &panel->m_ClipBox, DC, Poly[0], Poly + 1, 0, width, color, color );
|
||||
|
||||
if( m_IsDangling )
|
||||
DrawDanglingSymbol( panel, DC, m_Pos + offset, color );
|
||||
DrawDanglingSymbol( panel, DC, AnchorPos, color );
|
||||
}
|
||||
|
||||
|
||||
/** function CreateGraphicShape
|
||||
* Calculates the graphic shape (a polygon) associated to the text
|
||||
* @param corner_list = oordinates list fill with polygon corners ooordinates (size >= 14)
|
||||
* @param Pos = Postion of the shape
|
||||
* format list is
|
||||
* <corner_count>, x0, y0, ... xn, yn
|
||||
*/
|
||||
void DrawGlobalLabelStruct::CreateGraphicShape( int* corner_list, const wxPoint& Pos )
|
||||
{
|
||||
int HalfSize = m_Size.x / 2;
|
||||
int width = MAX( m_Width, g_DrawMinimunLineWidth );
|
||||
|
||||
*corner_list = 7; corner_list++; // 7 corners in list
|
||||
|
||||
int symb_len = Len_Size() + (TXTMARGE * 2); // Real text len + text margin
|
||||
// Create outline shape : 6 points
|
||||
int x = symb_len + width + 3;
|
||||
int y = HalfSize + width + 3;
|
||||
corner_list[0] = 0; corner_list[1] = 0; // Starting point (anchor)
|
||||
corner_list[2] = 0; corner_list[3] = -y; // Up
|
||||
corner_list[4] = -x; corner_list[5] = -y; // left Up
|
||||
corner_list[6] = -x; corner_list[7] = 0; // left
|
||||
corner_list[8] = -x; corner_list[9] = y; // left down
|
||||
corner_list[10] = 0; corner_list[11] = y; // down
|
||||
|
||||
int x_offset = 0;
|
||||
|
||||
switch( m_Shape )
|
||||
{
|
||||
case NET_INPUT:
|
||||
x_offset = -HalfSize;
|
||||
corner_list[0] += HalfSize;
|
||||
break;
|
||||
|
||||
case NET_OUTPUT:
|
||||
corner_list[6] -= HalfSize;
|
||||
break;
|
||||
|
||||
case NET_BIDI:
|
||||
case NET_TRISTATE:
|
||||
x_offset = -HalfSize;
|
||||
corner_list[0] += HalfSize;
|
||||
corner_list[6] -= HalfSize;
|
||||
break;
|
||||
|
||||
case NET_UNSPECIFIED:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
int angle = 0;
|
||||
|
||||
switch( m_Orient )
|
||||
{
|
||||
case 0: /* Orientation horiz normale */
|
||||
break;
|
||||
|
||||
case 1: /* Orientation vert UP */
|
||||
angle = 900;
|
||||
break;
|
||||
|
||||
case 2: /* Orientation horiz inverse */
|
||||
angle = 1800;
|
||||
break;
|
||||
|
||||
case 3: /* Orientation vert BOTTOM */
|
||||
angle = -900;
|
||||
break;
|
||||
}
|
||||
|
||||
// Rotate outlines and move in real position
|
||||
for( int ii = 0; ii < 12; ii += 2 )
|
||||
{
|
||||
corner_list[ii] += x_offset;
|
||||
if( angle )
|
||||
RotatePoint( &corner_list[ii], &corner_list[ii + 1], angle );
|
||||
corner_list[ii] += Pos.x;
|
||||
corner_list[ii + 1] += Pos.y;
|
||||
}
|
||||
|
||||
corner_list[12] = corner_list[0]; corner_list[13] = corner_list[1]; // closing
|
||||
}
|
||||
|
|
|
@ -0,0 +1,175 @@
|
|||
/********************************************/
|
||||
/* Definitions for the EESchema program: */
|
||||
/********************************************/
|
||||
|
||||
#ifndef CLASS_TEXT_LABEL_H
|
||||
#define CLASS_TEXT_LABEL_H
|
||||
|
||||
#ifndef eda_global
|
||||
#define eda_global extern
|
||||
#endif
|
||||
|
||||
#include "macros.h"
|
||||
#include "base_struct.h"
|
||||
|
||||
/* Type des labels sur sheet (Labels sur hierarchie) et forme des Global-Labels*/
|
||||
typedef enum {
|
||||
NET_INPUT,
|
||||
NET_OUTPUT,
|
||||
NET_BIDI,
|
||||
NET_TRISTATE,
|
||||
NET_UNSPECIFIED,
|
||||
NET_TMAX /* Derniere valeur: fin de tableau */
|
||||
} TypeSheetLabel;
|
||||
|
||||
/* Messages correspondants aux types ou forme des labels */
|
||||
#ifdef MAIN
|
||||
const char* SheetLabelType[] =
|
||||
{
|
||||
"Input",
|
||||
"Output",
|
||||
"BiDi",
|
||||
"3State",
|
||||
"UnSpc",
|
||||
"?????"
|
||||
};
|
||||
#else
|
||||
extern const char* SheetLabelType[];
|
||||
#endif
|
||||
|
||||
/* Description du graphisme des icones associes aux types des Global_Labels */
|
||||
#ifdef MAIN
|
||||
int TemplateIN_HN[] = { 6, 0, 0, -1, -1, -2, -1, -2, 1, -1, 1, 0, 0 };
|
||||
int TemplateIN_HI[] = { 6, 0, 0, 1, 1, 2, 1, 2, -1, 1, -1, 0, 0 };
|
||||
int TemplateIN_BOTTOM[] = { 6, 0, 0, 1, -1, 1, -2, -1, -2, -1, -1, 0, 0 };
|
||||
int TemplateIN_UP[] = { 6, 0, 0, 1, 1, 1, 2, -1, 2, -1, 1, 0, 0 };
|
||||
|
||||
int TemplateOUT_HN[] = { 6, -2, 0, -1, 1, 0, 1, 0, -1, -1, -1, -2, 0 };
|
||||
int TemplateOUT_HI[] = { 6, 2, 0, 1, -1, 0, -1, 0, 1, 1, 1, 2, 0 };
|
||||
int TemplateOUT_BOTTOM[] = { 6, 0, -2, 1, -1, 1, 0, -1, 0, -1, -1, 0, -2 };
|
||||
int TemplateOUT_UP[] = { 6, 0, 2, 1, 1, 1, 0, -1, 0, -1, 1, 0, 2 };
|
||||
|
||||
int TemplateUNSPC_HN[] = { 5, 0, -1, -2, -1, -2, 1, 0, 1, 0, -1 };
|
||||
int TemplateUNSPC_HI[] = { 5, 0, -1, 2, -1, 2, 1, 0, 1, 0, -1 };
|
||||
int TemplateUNSPC_BOTTOM[] = { 5, 1, 0, 1, -2, -1, -2, -1, 0, 1, 0 };
|
||||
int TemplateUNSPC_UP[] = { 5, 1, 0, 1, 2, -1, 2, -1, 0, 1, 0 };
|
||||
|
||||
int TemplateBIDI_HN[] = { 5, 0, 0, -1, -1, -2, 0, -1, 1, 0, 0 };
|
||||
int TemplateBIDI_HI[] = { 5, 0, 0, 1, -1, 2, 0, 1, 1, 0, 0 };
|
||||
int TemplateBIDI_BOTTOM[] = { 5, 0, 0, -1, -1, 0, -2, 1, -1, 0, 0 };
|
||||
int TemplateBIDI_UP[] = { 5, 0, 0, -1, 1, 0, 2, 1, 1, 0, 0 };
|
||||
|
||||
int Template3STATE_HN[] = { 5, 0, 0, -1, -1, -2, 0, -1, 1, 0, 0 };
|
||||
int Template3STATE_HI[] = { 5, 0, 0, 1, -1, 2, 0, 1, 1, 0, 0 };
|
||||
int Template3STATE_BOTTOM[] = { 5, 0, 0, -1, -1, 0, -2, 1, -1, 0, 0 };
|
||||
int Template3STATE_UP[] = { 5, 0, 0, -1, 1, 0, 2, 1, 1, 0, 0 };
|
||||
|
||||
int* TemplateShape[5][4] =
|
||||
{
|
||||
{ TemplateIN_HN, TemplateIN_UP, TemplateIN_HI, TemplateIN_BOTTOM },
|
||||
{ TemplateOUT_HN, TemplateOUT_UP, TemplateOUT_HI, TemplateOUT_BOTTOM },
|
||||
{ TemplateBIDI_HN, TemplateBIDI_UP, TemplateBIDI_HI, TemplateBIDI_BOTTOM },
|
||||
{ Template3STATE_HN, Template3STATE_UP, Template3STATE_HI, Template3STATE_BOTTOM },
|
||||
{ TemplateUNSPC_HN, TemplateUNSPC_UP, TemplateUNSPC_HI, TemplateUNSPC_BOTTOM }
|
||||
};
|
||||
#else
|
||||
extern int* TemplateShape[5][4];
|
||||
#endif
|
||||
|
||||
class DrawTextStruct : public EDA_BaseStruct
|
||||
, public EDA_TextStruct
|
||||
{
|
||||
public:
|
||||
int m_Layer;
|
||||
int m_Shape;
|
||||
bool m_IsDangling; // TRUE si non connect<63>
|
||||
|
||||
public:
|
||||
DrawTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString,
|
||||
KICAD_T aType = DRAW_TEXT_STRUCT_TYPE );
|
||||
~DrawTextStruct() { }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawText" );
|
||||
}
|
||||
|
||||
|
||||
DrawTextStruct* GenCopy();
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
void SwapData( DrawTextStruct* copyitem );
|
||||
|
||||
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||
};
|
||||
|
||||
|
||||
class DrawLabelStruct : public DrawTextStruct
|
||||
{
|
||||
public:
|
||||
DrawLabelStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
||||
~DrawLabelStruct() { }
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawLabel" );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class DrawGlobalLabelStruct : public DrawTextStruct
|
||||
{
|
||||
public:
|
||||
DrawGlobalLabelStruct( const wxPoint& pos = wxPoint( 0, 0 ),
|
||||
const wxString& text = wxEmptyString );
|
||||
~DrawGlobalLabelStruct() { }
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawGlobalLabel" );
|
||||
}
|
||||
|
||||
|
||||
/** function CreateGraphicShape
|
||||
* Calculates the graphic shape (a polygon) associated to the text
|
||||
* @param corner_list = coordinates list fill with polygon corners ooordinates (size > 20)
|
||||
* @param Pos = Postion of the shape
|
||||
* format list is
|
||||
* <corner_count>, x0, y0, ... xn, yn
|
||||
*/
|
||||
void CreateGraphicShape( int* corner_list, const wxPoint & Pos );
|
||||
};
|
||||
|
||||
|
||||
|
||||
class DrawHierLabelStruct : public DrawTextStruct
|
||||
{
|
||||
public:
|
||||
DrawHierLabelStruct( const wxPoint& pos = wxPoint( 0, 0 ),
|
||||
const wxString& text = wxEmptyString );
|
||||
~DrawHierLabelStruct() { }
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawHierLabel" );
|
||||
}
|
||||
|
||||
|
||||
/** function CreateGraphicShape
|
||||
* Calculates the graphic shape (a polygon) associated to the text
|
||||
* @param corner_list = coordinates list fill with polygon corners ooordinates (size >= 14)
|
||||
* @param Pos = Postion of the shape
|
||||
* format list is
|
||||
* <corner_count>, x0, y0, ... xn, yn
|
||||
*/
|
||||
void CreateGraphicShape( int* corner_list, const wxPoint & Pos );
|
||||
};
|
||||
|
||||
#endif /* CLASS_TEXT_LABEL_H */
|
|
@ -321,6 +321,7 @@ static void ExitPlaceCmp( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
if( DrawLibItem->m_Flags & IS_NEW ) /* Nouveau Placement en cours, on l'efface */
|
||||
{
|
||||
DrawStructsInGhost( Panel, DC, DrawLibItem, 0, 0 );
|
||||
DrawLibItem->m_Flags = 0;
|
||||
SAFE_DELETE( DrawLibItem );
|
||||
}
|
||||
else if( DrawLibItem ) /* Deplacement ancien composant en cours */
|
||||
|
@ -335,9 +336,9 @@ static void ExitPlaceCmp( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
|
||||
memcpy( DrawLibItem->m_Transform, OldTransMat, sizeof(OldTransMat) );
|
||||
DrawLibItem->Draw( Panel, DC, wxPoint( 0, 0 ), GR_DEFAULT_DRAWMODE );
|
||||
DrawLibItem->m_Flags = 0;
|
||||
}
|
||||
|
||||
DrawLibItem->m_Flags = 0;
|
||||
Panel->ManageCurseur = NULL;
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
Panel->m_Parent->GetScreen()->SetCurItem( NULL );
|
||||
|
|
|
@ -389,6 +389,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
Struct = (EDA_BaseStruct*) TextStruct;
|
||||
TextStruct->m_Size.x = TextStruct->m_Size.y = size;
|
||||
TextStruct->m_Orient = orient;
|
||||
TextStruct->m_Shape = NET_INPUT;
|
||||
if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 )
|
||||
TextStruct->m_Shape = NET_OUTPUT;
|
||||
if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 )
|
||||
|
@ -399,12 +400,13 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
TextStruct->m_Shape = NET_UNSPECIFIED;
|
||||
}
|
||||
else if( (Name1[0] == 'H') || (Name1[0] == 'G' && version == '1'))
|
||||
{ //in sschematic file version 1, glabels were actually hierarchal labels.
|
||||
{ //in schematic file version 1, glabels were actually hierarchal labels.
|
||||
DrawHierLabelStruct* TextStruct =
|
||||
new DrawHierLabelStruct(pos, CONV_FROM_UTF8( text ) );
|
||||
Struct = (EDA_BaseStruct*) TextStruct;
|
||||
TextStruct->m_Size.x = TextStruct->m_Size.y = size;
|
||||
TextStruct->m_Orient = orient;
|
||||
TextStruct->m_Shape = NET_INPUT;
|
||||
if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 )
|
||||
TextStruct->m_Shape = NET_OUTPUT;
|
||||
if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 )
|
||||
|
|
|
@ -19,6 +19,7 @@ static void PlotSheetLabelStruct(DrawSheetLabelStruct *Struct);
|
|||
static void PlotTextField( EDA_SchComponentStruct* DrawLibItem,
|
||||
int FieldNumber, int IsMulti, int DrawMode );
|
||||
static void PlotPinSymbol( int posX, int posY, int len, int orient, int Shape );
|
||||
|
||||
/***/
|
||||
|
||||
/* cte pour remplissage de polygones */
|
||||
|
@ -30,15 +31,18 @@ static void PlotPinSymbol(int posX, int posY, int len, int orient, int Shape);
|
|||
/*******************************/
|
||||
/* Routines de base de trace : */
|
||||
/*******************************/
|
||||
|
||||
/* routine de lever ou baisser de plume.
|
||||
si plume = 'U' les traces suivants se feront plume levee
|
||||
si plume = 'D' les traces suivants se feront plume levee
|
||||
* si plume = 'U' les traces suivants se feront plume levee
|
||||
* si plume = 'D' les traces suivants se feront plume levee
|
||||
*/
|
||||
void Plume( int plume )
|
||||
{
|
||||
if ( g_PlotFormat == PLOT_FORMAT_HPGL ) Plume_HPGL(plume);
|
||||
if( g_PlotFormat == PLOT_FORMAT_HPGL )
|
||||
Plume_HPGL( plume );
|
||||
}
|
||||
|
||||
|
||||
/* routine de deplacement de plume de plume.
|
||||
*/
|
||||
void Move_Plume( wxPoint pos, int plume )
|
||||
|
@ -48,6 +52,7 @@ void Move_Plume( wxPoint pos, int plume )
|
|||
case PLOT_FORMAT_HPGL:
|
||||
Move_Plume_HPGL( pos, plume );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_POST:
|
||||
case PLOT_FORMAT_POST_A4:
|
||||
LineTo_PS( pos, plume );
|
||||
|
@ -55,6 +60,7 @@ void Move_Plume( wxPoint pos, int plume )
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void SetCurrentLineWidth( int width )
|
||||
{
|
||||
switch( g_PlotFormat )
|
||||
|
@ -73,10 +79,11 @@ void SetCurrentLineWidth( int width)
|
|||
/*******************************************************************************/
|
||||
void PlotArc( wxPoint centre, int StAngle, int EndAngle, int rayon, int width )
|
||||
/*******************************************************************************/
|
||||
|
||||
/* trace d'un arc de cercle:
|
||||
x, y = coord du centre
|
||||
StAngle, EndAngle = angle de debut et fin
|
||||
rayon = rayon de l'arc
|
||||
* x, y = coord du centre
|
||||
* StAngle, EndAngle = angle de debut et fin
|
||||
* rayon = rayon de l'arc
|
||||
*/
|
||||
{
|
||||
switch( g_PlotFormat )
|
||||
|
@ -84,12 +91,14 @@ void PlotArc(wxPoint centre, int StAngle, int EndAngle, int rayon, int width)
|
|||
case PLOT_FORMAT_HPGL:
|
||||
PlotArcHPGL( centre, StAngle, EndAngle, rayon, width );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_POST:
|
||||
PlotArcPS( centre, StAngle, EndAngle, rayon, width );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************/
|
||||
void PlotCercle( wxPoint pos, int diametre, int width )
|
||||
/*******************************************************/
|
||||
|
@ -106,16 +115,19 @@ void PlotCercle( wxPoint pos,int diametre, int width )
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************/
|
||||
void PlotPoly( int nb, int* coord, int fill, int width )
|
||||
/******************************************************************/
|
||||
|
||||
/* Trace un polygone ferme
|
||||
coord = tableau des coord des sommets
|
||||
nb = nombre de coord ( 1 coord = 2 elements: X et Y du tableau )
|
||||
fill : si != 0 polygone rempli
|
||||
* coord = tableau des coord des sommets
|
||||
* nb = nombre de coord ( 1 coord = 2 elements: X et Y du tableau )
|
||||
* fill : si != 0 polygone rempli
|
||||
*/
|
||||
{
|
||||
if( nb <= 1 ) return;
|
||||
if( nb <= 1 )
|
||||
return;
|
||||
|
||||
switch( g_PlotFormat )
|
||||
{
|
||||
|
@ -130,10 +142,10 @@ void PlotPoly( int nb, int * coord, int fill, int width)
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
void PlotNoConnectStruct( DrawNoConnectStruct* Struct )
|
||||
/**********************************************************/
|
||||
|
||||
/* Routine de dessin des symboles de "No Connexion" ..
|
||||
*/
|
||||
{
|
||||
|
@ -150,6 +162,7 @@ int pX, pY;
|
|||
Plume( 'U' );
|
||||
}
|
||||
|
||||
|
||||
/*************************************************/
|
||||
void PlotLibPart( EDA_SchComponentStruct* DrawLibItem )
|
||||
/*************************************************/
|
||||
|
@ -163,7 +176,8 @@ int CharColor = -1;
|
|||
wxPoint pos;
|
||||
|
||||
Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
if( Entry == NULL) return;;
|
||||
if( Entry == NULL )
|
||||
return;;
|
||||
memcpy( TransMat, DrawLibItem->m_Transform, sizeof(TransMat) );
|
||||
PartX = DrawLibItem->m_Pos.x; PartY = DrawLibItem->m_Pos.y;
|
||||
Multi = DrawLibItem->m_Multi;
|
||||
|
@ -172,7 +186,8 @@ wxPoint pos;
|
|||
for( DEntry = Entry->m_Drawings; DEntry != NULL; DEntry = DEntry->Next() )
|
||||
{
|
||||
/* Elimination des elements non relatifs a l'unite */
|
||||
if( Multi && DEntry->m_Unit && (DEntry->m_Unit != Multi) ) continue;
|
||||
if( Multi && DEntry->m_Unit && (DEntry->m_Unit != Multi) )
|
||||
continue;
|
||||
if( convert && DEntry->m_Convert && (DEntry->m_Convert != convert) )
|
||||
continue;
|
||||
|
||||
|
@ -209,8 +224,9 @@ wxPoint pos;
|
|||
case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE:
|
||||
{
|
||||
LibDrawText* Text = (LibDrawText*) DEntry;
|
||||
|
||||
/* The text orientation may need to be flipped if the
|
||||
transformation matrix causes xy axes to be flipped. */
|
||||
* transformation matrix causes xy axes to be flipped. */
|
||||
t1 = (TransMat[0][0] != 0) ^ (Text->m_Horiz != 0);
|
||||
pos.x = PartX + TransMat[0][0] * Text->m_Pos.x
|
||||
+ TransMat[0][1] * Text->m_Pos.y;
|
||||
|
@ -286,20 +302,25 @@ wxPoint pos;
|
|||
TransMat[1][0] * polyline->PolyList[ii * 2] +
|
||||
TransMat[1][1] * polyline->PolyList[ii * 2 + 1];
|
||||
}
|
||||
|
||||
PlotPoly( ii, Poly, polyline->m_Fill, polyline->m_Width );
|
||||
MyFree( Poly );
|
||||
}
|
||||
break;
|
||||
|
||||
default:;
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
||||
} /* Fin Switch */
|
||||
/* Fin Switch */
|
||||
Plume( 'U' );
|
||||
} /* Fin Boucle de dessin */
|
||||
}
|
||||
|
||||
/* Fin Boucle de dessin */
|
||||
|
||||
/* Trace des champs, avec placement et orientation selon orient. du
|
||||
composant
|
||||
Si la reference commence par # elle n'est pas tracee
|
||||
* composant
|
||||
* Si la reference commence par # elle n'est pas tracee
|
||||
*/
|
||||
|
||||
if( (Entry->m_Prefix.m_Attributs & TEXT_NO_VISIBLE) == 0 )
|
||||
|
@ -319,19 +340,20 @@ wxPoint pos;
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
static void PlotTextField( EDA_SchComponentStruct* DrawLibItem,
|
||||
int FieldNumber, int IsMulti, int DrawMode )
|
||||
/**************************************************************/
|
||||
|
||||
/* Routine de trace des textes type Field du composant.
|
||||
entree:
|
||||
DrawLibItem: pointeur sur le composant
|
||||
FieldNumber: Numero du champ
|
||||
IsMulti: flag Non Null si il y a plusieurs parts par boitier.
|
||||
n'est utile que pour le champ reference pour ajouter a celui ci
|
||||
l'identification de la part ( A, B ... )
|
||||
DrawMode: mode de trace
|
||||
* entree:
|
||||
* DrawLibItem: pointeur sur le composant
|
||||
* FieldNumber: Numero du champ
|
||||
* IsMulti: flag Non Null si il y a plusieurs parts par boitier.
|
||||
* n'est utile que pour le champ reference pour ajouter a celui ci
|
||||
* l'identification de la part ( A, B ... )
|
||||
* DrawMode: mode de trace
|
||||
*/
|
||||
|
||||
{
|
||||
|
@ -345,8 +367,10 @@ int orient, color = -1;
|
|||
color = ReturnLayerColor( Field->m_Layer );
|
||||
|
||||
DrawMode = 0; /* Unused */
|
||||
if( Field->m_Attributs & TEXT_NO_VISIBLE ) return;
|
||||
if( Field->IsVoid() ) return;
|
||||
if( Field->m_Attributs & TEXT_NO_VISIBLE )
|
||||
return;
|
||||
if( Field->IsVoid() )
|
||||
return;
|
||||
|
||||
/* Calcul de la position des textes, selon orientation du composant */
|
||||
orient = Field->m_Orient;
|
||||
|
@ -363,15 +387,20 @@ int orient, color = -1;
|
|||
/* Y a t-il rotation */
|
||||
if( DrawLibItem->m_Transform[0][1] )
|
||||
{
|
||||
if ( orient == TEXT_ORIENT_HORIZ) orient = TEXT_ORIENT_VERT;
|
||||
else orient = TEXT_ORIENT_HORIZ;
|
||||
if( orient == TEXT_ORIENT_HORIZ )
|
||||
orient = TEXT_ORIENT_VERT;
|
||||
else
|
||||
orient = TEXT_ORIENT_HORIZ;
|
||||
/* Y a t-il rotation, miroir (pour les justifications)*/
|
||||
EXCHG( hjustify, vjustify );
|
||||
if (DrawLibItem->m_Transform[1][0] < 0 ) vjustify = - vjustify;
|
||||
if (DrawLibItem->m_Transform[1][0] > 0 ) hjustify = - hjustify;
|
||||
if( DrawLibItem->m_Transform[1][0] < 0 )
|
||||
vjustify = -vjustify;
|
||||
if( DrawLibItem->m_Transform[1][0] > 0 )
|
||||
hjustify = -hjustify;
|
||||
}
|
||||
else
|
||||
{ /* Texte horizontal: Y a t-il miroir (pour les justifications)*/
|
||||
{
|
||||
/* Texte horizontal: Y a t-il miroir (pour les justifications)*/
|
||||
if( DrawLibItem->m_Transform[0][0] < 0 )
|
||||
hjustify = -hjustify;
|
||||
if( DrawLibItem->m_Transform[1][1] > 0 )
|
||||
|
@ -379,6 +408,7 @@ int orient, color = -1;
|
|||
}
|
||||
|
||||
SetCurrentLineWidth( -1 );
|
||||
|
||||
//not sure what to do here in terms of plotting components that may have multiple REFERENCE entries.
|
||||
if( !IsMulti || (FieldNumber != REFERENCE) )
|
||||
{
|
||||
|
@ -387,9 +417,9 @@ int orient, color = -1;
|
|||
Field->m_Size,
|
||||
hjustify, vjustify );
|
||||
}
|
||||
|
||||
else /* Le champ est la reference, et il y a plusieurs parts par boitier */
|
||||
{ /* On ajoute alors A ou B ... a la reference */
|
||||
{
|
||||
/* On ajoute alors A ou B ... a la reference */
|
||||
wxString Text;
|
||||
Text = Field->m_Text;
|
||||
Text.Append( 'A' - 1 + DrawLibItem->m_Multi );
|
||||
|
@ -403,6 +433,7 @@ int orient, color = -1;
|
|||
/**************************************************************************/
|
||||
static void PlotPinSymbol( int posX, int posY, int len, int orient, int Shape )
|
||||
/**************************************************************************/
|
||||
|
||||
/* Trace la pin du symbole en cours de trace
|
||||
*/
|
||||
{
|
||||
|
@ -417,17 +448,21 @@ int color;
|
|||
SetCurrentLineWidth( -1 );
|
||||
|
||||
MapX1 = MapY1 = 0; x1 = posX; y1 = posY;
|
||||
|
||||
switch( orient )
|
||||
{
|
||||
case PIN_UP:
|
||||
y1 = posY - len; MapY1 = 1;
|
||||
break;
|
||||
|
||||
case PIN_DOWN:
|
||||
y1 = posY + len; MapY1 = -1;
|
||||
break;
|
||||
|
||||
case PIN_LEFT:
|
||||
x1 = posX - len, MapX1 = 1;
|
||||
break;
|
||||
|
||||
case PIN_RIGHT:
|
||||
x1 = posX + len; MapX1 = -1;
|
||||
break;
|
||||
|
@ -504,18 +539,17 @@ int color;
|
|||
/*******************************************/
|
||||
void PlotTextStruct( EDA_BaseStruct* Struct )
|
||||
/*******************************************/
|
||||
|
||||
/*
|
||||
Routine de trace des Textes, Labels et Global-Labels.
|
||||
Les textes peuvent avoir 4 directions.
|
||||
* Routine de trace des Textes, Labels et Global-Labels.
|
||||
* Les textes peuvent avoir 4 directions.
|
||||
*/
|
||||
{
|
||||
int * Template;
|
||||
int Poly[50];
|
||||
int ii, pX, pY, Shape = 0, Orient = 0, offset;
|
||||
int pX, pY, Shape = 0, Orient = 0, offset;
|
||||
wxSize Size;
|
||||
wxString Text;
|
||||
int color = -1;
|
||||
int HalfSize;
|
||||
|
||||
switch( Struct->Type() )
|
||||
{
|
||||
|
@ -530,25 +564,47 @@ int HalfSize;
|
|||
pX = ( (DrawTextStruct*) Struct )->m_Pos.x;
|
||||
pY = ( (DrawTextStruct*) Struct )->m_Pos.y;
|
||||
offset = TXTMARGE;
|
||||
if ( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE ||
|
||||
Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE
|
||||
|| Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
offset += Size.x; // We must draw the Glabel graphic symbol
|
||||
if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt )
|
||||
color = ReturnLayerColor( ( (DrawTextStruct*) Struct )->m_Layer );
|
||||
break;
|
||||
|
||||
default: return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if(Size.x == 0 ) Size = wxSize(DEFAULT_SIZE_TEXT, DEFAULT_SIZE_TEXT);
|
||||
if( Size.x == 0 )
|
||||
Size = wxSize( DEFAULT_SIZE_TEXT, DEFAULT_SIZE_TEXT );
|
||||
|
||||
SetCurrentLineWidth( -1 );
|
||||
|
||||
if ( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE )
|
||||
{
|
||||
offset = ( (DrawGlobalLabelStruct*) Struct )->m_Width;
|
||||
switch( Shape )
|
||||
{
|
||||
case NET_INPUT:
|
||||
case NET_BIDI:
|
||||
case NET_TRISTATE:
|
||||
offset += Size.x/2;
|
||||
break;
|
||||
|
||||
case NET_OUTPUT:
|
||||
offset += TXTMARGE;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch( Orient )
|
||||
{
|
||||
case 0: /* Orientation horiz normale */
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE ||
|
||||
Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE || Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
PlotGraphicText( g_PlotFormat, wxPoint( pX - offset, pY ),
|
||||
color, Text, TEXT_ORIENT_HORIZ, Size,
|
||||
GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER );
|
||||
|
@ -559,8 +615,7 @@ int HalfSize;
|
|||
break;
|
||||
|
||||
case 1: /* Orientation vert UP */
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE ||
|
||||
Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE || Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
PlotGraphicText( g_PlotFormat, wxPoint( pX, pY + offset ),
|
||||
color, Text, TEXT_ORIENT_VERT, Size,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP );
|
||||
|
@ -571,8 +626,7 @@ int HalfSize;
|
|||
break;
|
||||
|
||||
case 2: /* Horiz Orientation - Right justified */
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE ||
|
||||
Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE || Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
PlotGraphicText( g_PlotFormat, wxPoint( pX + offset, pY ),
|
||||
color, Text, TEXT_ORIENT_HORIZ, Size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER );
|
||||
|
@ -583,8 +637,7 @@ int HalfSize;
|
|||
break;
|
||||
|
||||
case 3: /* Orientation vert BOTTOM */
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE ||
|
||||
Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE || Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
PlotGraphicText( g_PlotFormat, wxPoint( pX, pY - offset ),
|
||||
color, Text, TEXT_ORIENT_VERT, Size,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM );
|
||||
|
@ -595,25 +648,19 @@ int HalfSize;
|
|||
break;
|
||||
}
|
||||
|
||||
/* Trace du symbole associe au label global */
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE ||
|
||||
Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
/* Draw graphic symbol for global or hierachical labels */
|
||||
if( Struct->Type() == DRAW_GLOBAL_LABEL_STRUCT_TYPE )
|
||||
{
|
||||
int jj, imax;
|
||||
HalfSize = Size.x / 2;
|
||||
Template = TemplateShape[Shape][Orient];
|
||||
imax = *Template; Template++;
|
||||
( (DrawGlobalLabelStruct*) Struct )->CreateGraphicShape( Poly, wxPoint(pX, pY) );
|
||||
PlotPoly( Poly[0], Poly + 1, NOFILL );
|
||||
}
|
||||
if( Struct->Type() == DRAW_HIER_LABEL_STRUCT_TYPE )
|
||||
{
|
||||
( (DrawHierLabelStruct*) Struct )->CreateGraphicShape( Poly, wxPoint(pX, pY) );
|
||||
PlotPoly( Poly[0], Poly + 1, NOFILL );
|
||||
}
|
||||
}
|
||||
|
||||
for ( ii = 0, jj = 0; ii < imax ; ii++ )
|
||||
{
|
||||
Poly[jj] = ( HalfSize * (*Template) ) + pX;
|
||||
jj ++; Template++;
|
||||
Poly[jj] = ( HalfSize * (*Template) ) + pY;
|
||||
jj ++; Template++;
|
||||
}
|
||||
PlotPoly(imax,Poly,NOFILL );
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************/
|
||||
static void PlotSheetLabelStruct( DrawSheetLabelStruct* Struct )
|
||||
|
@ -633,7 +680,8 @@ int coord[16];
|
|||
tposx = posx - size;
|
||||
side = GR_TEXT_HJUSTIFY_RIGHT;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
tposx = posx + size + (size / 8);
|
||||
side = GR_TEXT_HJUSTIFY_LEFT;
|
||||
}
|
||||
|
@ -642,8 +690,10 @@ int coord[16];
|
|||
side, GR_TEXT_VJUSTIFY_CENTER );
|
||||
/* dessin du symbole de connexion */
|
||||
|
||||
if(Struct->m_Edge) size = -size;
|
||||
if( Struct->m_Edge )
|
||||
size = -size;
|
||||
coord[0] = posx; coord[1] = posy; size2 = size / 2;
|
||||
|
||||
switch( Struct->m_Shape )
|
||||
{
|
||||
case 0: /* input |> */
|
||||
|
@ -685,6 +735,7 @@ int coord[16];
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*************************************************/
|
||||
void PlotSheetStruct( DrawSheetStruct* Struct )
|
||||
/*************************************************/
|
||||
|
@ -726,7 +777,8 @@ wxPoint pos;
|
|||
size = wxSize( Struct->m_FileNameSize, Struct->m_FileNameSize );
|
||||
if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt )
|
||||
SetColorMapPS( ReturnLayerColor( LAYER_SHEETFILENAME ) );
|
||||
PlotGraphicText(g_PlotFormat, wxPoint(Struct->m_Pos.x, Struct->m_Pos.y + Struct->m_Size.y + 4),
|
||||
PlotGraphicText( g_PlotFormat,
|
||||
wxPoint( Struct->m_Pos.x, Struct->m_Pos.y + Struct->m_Size.y + 4 ),
|
||||
txtcolor,
|
||||
Text, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP );
|
||||
|
@ -741,4 +793,3 @@ wxPoint pos;
|
|||
SheetLabelStruct = (DrawSheetLabelStruct*) (SheetLabelStruct->Pnext);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "component_class.h"
|
||||
#include "class_screen.h"
|
||||
#include "class_text-label.h"
|
||||
|
||||
#define DRAWJUNCTION_SIZE 16 /* Rayon du symbole connexion */
|
||||
#define DRAWMARKER_SIZE 16 /* Rayon du symbole marqueur */
|
||||
|
@ -234,77 +235,6 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class DrawTextStruct : public EDA_BaseStruct, public EDA_TextStruct
|
||||
{
|
||||
public:
|
||||
int m_Layer;
|
||||
int m_Shape;
|
||||
bool m_IsDangling; // TRUE si non connect<63>
|
||||
|
||||
public:
|
||||
DrawTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString,
|
||||
KICAD_T aType = DRAW_TEXT_STRUCT_TYPE );
|
||||
~DrawTextStruct() { }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawText" );
|
||||
}
|
||||
|
||||
|
||||
DrawTextStruct* GenCopy();
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
void SwapData( DrawTextStruct* copyitem );
|
||||
|
||||
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||
};
|
||||
|
||||
|
||||
class DrawLabelStruct : public DrawTextStruct
|
||||
{
|
||||
public:
|
||||
DrawLabelStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
||||
~DrawLabelStruct() { }
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawLabel" );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class DrawGlobalLabelStruct : public DrawTextStruct
|
||||
{
|
||||
public:
|
||||
DrawGlobalLabelStruct(const wxPoint& pos = wxPoint( 0, 0 ),
|
||||
const wxString& text = wxEmptyString);
|
||||
~DrawGlobalLabelStruct() { }
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawGlobalLabel" );
|
||||
}
|
||||
};
|
||||
class DrawHierLabelStruct : public DrawTextStruct
|
||||
{
|
||||
public:
|
||||
DrawHierLabelStruct(const wxPoint& pos = wxPoint( 0, 0 ),
|
||||
const wxString& text = wxEmptyString);
|
||||
~DrawHierLabelStruct() { }
|
||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||
int Color = -1 );
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "DrawHierLabel" );
|
||||
}
|
||||
};
|
||||
|
||||
#define MAX_LAYERS 44
|
||||
class LayerStruct
|
||||
|
|
|
@ -269,7 +269,7 @@ bool WinEDA_SchematicFrame::SaveEEFile(SCH_SCREEN *screen, int FileSave)
|
|||
Failed = TRUE;
|
||||
break;
|
||||
|
||||
case DRAW_HIER_LABEL_STRUCT_TYPE: /* Its a Global label item. */
|
||||
case DRAW_HIER_LABEL_STRUCT_TYPE: /* Its a Hierarchical label item. */
|
||||
#undef STRUCT
|
||||
#define STRUCT ((DrawHierLabelStruct *) Phead)
|
||||
shape = STRUCT->m_Shape;
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
/*
|
||||
* File: printing.h
|
||||
* Purpose: Printing demo for wxWindows class library
|
||||
*/
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
// Define a new application
|
||||
class MyApp: public wxApp
|
||||
{
|
||||
public:
|
||||
MyApp() ;
|
||||
bool OnInit();
|
||||
int OnExit();
|
||||
|
||||
wxFont* m_testFont;
|
||||
};
|
||||
|
||||
DECLARE_APP(MyApp)
|
||||
|
||||
class MyCanvas;
|
||||
|
||||
// Define a new canvas and frame
|
||||
class MyFrame: public wxFrame
|
||||
{
|
||||
public:
|
||||
MyCanvas *canvas;
|
||||
MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size);
|
||||
|
||||
void Draw(wxDC& dc);
|
||||
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnPrint(wxCommandEvent& event);
|
||||
void OnPrintPreview(wxCommandEvent& event);
|
||||
void OnPrintSetup(wxCommandEvent& event);
|
||||
void OnPageSetup(wxCommandEvent& event);
|
||||
#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW
|
||||
void OnPrintPS(wxCommandEvent& event);
|
||||
void OnPrintPreviewPS(wxCommandEvent& event);
|
||||
void OnPrintSetupPS(wxCommandEvent& event);
|
||||
void OnPageSetupPS(wxCommandEvent& event);
|
||||
#endif
|
||||
|
||||
void OnExit(wxCommandEvent& event);
|
||||
void OnPrintAbout(wxCommandEvent& event);
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// Define a new canvas which can receive some events
|
||||
class MyCanvas: public wxScrolledWindow
|
||||
{
|
||||
public:
|
||||
MyCanvas(wxFrame *frame, const wxPoint& pos, const wxSize& size, long style = wxRETAINED);
|
||||
~MyCanvas() ;
|
||||
|
||||
virtual void OnDraw(wxDC& dc);
|
||||
void OnEvent(wxMouseEvent& event);
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
class MyPrintout: public wxPrintout
|
||||
{
|
||||
public:
|
||||
MyPrintout(char *title = "My printout"):wxPrintout(title) {}
|
||||
bool OnPrintPage(int page);
|
||||
bool HasPage(int page);
|
||||
bool OnBeginDocument(int startPage, int endPage);
|
||||
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
|
||||
|
||||
void DrawPageOne(wxDC *dc);
|
||||
void DrawPageTwo(wxDC *dc);
|
||||
};
|
||||
|
||||
#define WXPRINT_QUIT 100
|
||||
#define WXPRINT_PRINT 101
|
||||
#define WXPRINT_PRINT_SETUP 102
|
||||
#define WXPRINT_PAGE_SETUP 103
|
||||
#define WXPRINT_PREVIEW 104
|
||||
|
||||
#define WXPRINT_PRINT_PS 105
|
||||
#define WXPRINT_PRINT_SETUP_PS 106
|
||||
#define WXPRINT_PAGE_SETUP_PS 107
|
||||
#define WXPRINT_PREVIEW_PS 108
|
||||
|
||||
#define WXPRINT_ABOUT 109
|
||||
|
Binary file not shown.
7765
internat/fr/kicad.po
7765
internat/fr/kicad.po
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue