Code cleaning and move worksheet code specific to title block and frame references shape in title_block_shapes.h and title_block_shapes_gost.h
This commit is contained in:
parent
6b0980d964
commit
a8a640811b
|
@ -62,7 +62,8 @@ const wxString PAGE_INFO::Custom( wxT( "User" ) );
|
|||
// local readability macro for millimeter wxSize
|
||||
#define MMsize( x, y ) wxSize( Mm2mils( x ), Mm2mils( y ) )
|
||||
|
||||
// All MUST be defined as landscape. If IsGOST() is true, A4 is dynamically rotated later.
|
||||
// All MUST be defined as landscape.
|
||||
// If IsGOST() is true, A4 is dynamically rotated later.
|
||||
const PAGE_INFO PAGE_INFO::pageA4( MMsize( 297, 210 ), wxT( "A4" ), wxPAPER_A4 );
|
||||
const PAGE_INFO PAGE_INFO::pageA3( MMsize( 420, 297 ), wxT( "A3" ), wxPAPER_A3 );
|
||||
const PAGE_INFO PAGE_INFO::pageA2( MMsize( 594, 420 ), wxT( "A2" ), wxPAPER_A2 );
|
||||
|
@ -139,7 +140,7 @@ void PAGE_INFO::setMargins()
|
|||
m_left_margin =
|
||||
m_right_margin =
|
||||
m_top_margin =
|
||||
m_bottom_margin = 400; // Units = mils
|
||||
m_bottom_margin = Mm2mils( 10 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,22 +54,14 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock,
|
|||
const wxString &aSheetDesc,
|
||||
const wxString &aFilename )
|
||||
{
|
||||
static const int WSTEXTSIZE = 50; // Text size in mils
|
||||
|
||||
int iusPerMil = plotter->GetIUsPerDecimil() * 10;
|
||||
wxSize pageSize = aPageInfo.GetSizeMils(); // in mils
|
||||
int xg, yg;
|
||||
|
||||
#if defined( KICAD_GOST )
|
||||
int refx, refy;
|
||||
#endif
|
||||
|
||||
wxPoint pos, end, ref;
|
||||
wxString msg;
|
||||
wxSize text_size;
|
||||
|
||||
int UpperLimit = VARIABLE_BLOCK_START_POSITION;
|
||||
|
||||
EDA_COLOR_T plotClr;
|
||||
plotClr = plotter->GetColorMode() ? RED : BLACK;
|
||||
plotter->SetColor( plotClr );
|
||||
|
@ -83,7 +75,7 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock,
|
|||
yg = ( pageSize.y - aPageInfo.GetBottomMarginMils() ) * iusPerMil;
|
||||
|
||||
#if defined(KICAD_GOST)
|
||||
|
||||
int refx, refy;
|
||||
int lnMsg, ln;
|
||||
text_size.x = SIZETEXT * iusPerMil;
|
||||
text_size.y = SIZETEXT * iusPerMil;
|
||||
|
@ -110,6 +102,8 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock,
|
|||
plotter->SetCurrentLineWidth( PLOTTER::DEFAULT_LINE_WIDTH );
|
||||
|
||||
#else
|
||||
const int WSTEXTSIZE = 50; // Text size in mils
|
||||
int UpperLimit = VARIABLE_BLOCK_START_POSITION;
|
||||
|
||||
for( unsigned ii = 0; ii < 2; ii++ )
|
||||
{
|
||||
|
|
|
@ -0,0 +1,580 @@
|
|||
/**
|
||||
* @file title_block_shape.h
|
||||
* @brief description of graphic items and texts to build a title block
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file should be included only in worksheet.cpp
|
||||
* This is not an usual .h file, it is more a .cpp file
|
||||
* it creates a lot of structures which define the shape of a title block
|
||||
* and frame references
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
|
||||
* Copyright (C) 1992-2013 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
// The coordinates below are relative to the bottom right corner of page and
|
||||
// will be subtracted from this origin.
|
||||
#define BLOCK_OX 4200
|
||||
#define BLOCK_KICAD_VERSION_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_KICAD_VERSION_Y SIZETEXT
|
||||
#define BLOCK_REV_X 820
|
||||
#define BLOCK_REV_Y (SIZETEXT * 3)
|
||||
#define BLOCK_DATE_X BLOCK_OX - (SIZETEXT * 15)
|
||||
#define BLOCK_DATE_Y (SIZETEXT * 3)
|
||||
#define BLOCK_ID_SHEET_X 820
|
||||
#define BLOCK_ID_SHEET_Y SIZETEXT
|
||||
#define BLOCK_SIZE_SHEET_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_SIZE_SHEET_Y (SIZETEXT * 3)
|
||||
#define BLOCK_TITLE_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_TITLE_Y (SIZETEXT * 5)
|
||||
#define BLOCK_FULLSHEETNAME_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_FULLSHEETNAME_Y (SIZETEXT * 7)
|
||||
#define BLOCK_FILENAME_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_FILENAME_Y (SIZETEXT * 9)
|
||||
#define BLOCK_COMMENT_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_COMPANY_Y (SIZETEXT * 11)
|
||||
#define BLOCK_COMMENT1_Y (SIZETEXT * 13)
|
||||
#define BLOCK_COMMENT2_Y (SIZETEXT * 15)
|
||||
#define BLOCK_COMMENT3_Y (SIZETEXT * 17)
|
||||
#define BLOCK_COMMENT4_Y (SIZETEXT * 19)
|
||||
|
||||
|
||||
Ki_WorkSheetData WS_Date =
|
||||
{
|
||||
WS_DATE,
|
||||
&WS_Licence,
|
||||
BLOCK_DATE_X, BLOCK_DATE_Y,
|
||||
0, 0,
|
||||
wxT( "Date: " ),NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Licence =
|
||||
{
|
||||
WS_KICAD_VERSION,
|
||||
&WS_Revision,
|
||||
BLOCK_KICAD_VERSION_X,BLOCK_KICAD_VERSION_Y,
|
||||
0, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Revision =
|
||||
{
|
||||
WS_REV,
|
||||
&WS_SizeSheet,
|
||||
BLOCK_REV_X, BLOCK_REV_Y,
|
||||
0, 0,
|
||||
wxT( "Rev: " ), NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_SizeSheet =
|
||||
{
|
||||
WS_SIZESHEET,
|
||||
&WS_IdentSheet,
|
||||
BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y,
|
||||
0, 0,
|
||||
wxT( "Size: " ), NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_IdentSheet =
|
||||
{
|
||||
WS_IDENTSHEET,
|
||||
&WS_Title,
|
||||
BLOCK_ID_SHEET_X,BLOCK_ID_SHEET_Y,
|
||||
0, 0,
|
||||
wxT( "Id: " ), NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Title =
|
||||
{
|
||||
WS_TITLE,
|
||||
&WS_SheetFilename,
|
||||
BLOCK_TITLE_X, BLOCK_TITLE_Y,
|
||||
0, 0,
|
||||
wxT( "Title: " ), NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_SheetFilename =
|
||||
{
|
||||
WS_FILENAME,
|
||||
&WS_FullSheetName,
|
||||
BLOCK_FILENAME_X, BLOCK_FILENAME_Y,
|
||||
0, 0,
|
||||
wxT( "File: " ), NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_FullSheetName =
|
||||
{
|
||||
WS_FULLSHEETNAME,
|
||||
&WS_Company,
|
||||
BLOCK_FULLSHEETNAME_X,BLOCK_FULLSHEETNAME_Y,
|
||||
0, 0,
|
||||
wxT( "Sheet: " ), NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Company =
|
||||
{
|
||||
WS_COMPANY_NAME,
|
||||
&WS_Comment1,
|
||||
BLOCK_COMMENT_X,BLOCK_COMPANY_Y,
|
||||
0, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Comment1 =
|
||||
{
|
||||
WS_COMMENT1,
|
||||
&WS_Comment2,
|
||||
BLOCK_COMMENT_X,BLOCK_COMMENT1_Y,
|
||||
0, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Comment2 =
|
||||
{
|
||||
WS_COMMENT2,
|
||||
&WS_Comment3,
|
||||
BLOCK_COMMENT_X,BLOCK_COMMENT2_Y,
|
||||
0, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Comment3 =
|
||||
{
|
||||
WS_COMMENT3,
|
||||
&WS_Comment4,
|
||||
BLOCK_COMMENT_X,BLOCK_COMMENT3_Y,
|
||||
0, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
Ki_WorkSheetData WS_Comment4 =
|
||||
{
|
||||
WS_COMMENT4,
|
||||
&WS_MostLeftLine,
|
||||
BLOCK_COMMENT_X, BLOCK_COMMENT4_Y,
|
||||
0, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
/// Left vertical segment
|
||||
Ki_WorkSheetData WS_MostLeftLine =
|
||||
{
|
||||
WS_LEFT_SEGMENT,
|
||||
&WS_SeparatorLine,
|
||||
BLOCK_OX, SIZETEXT * 16,
|
||||
BLOCK_OX, 0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
/// horizontal segment between filename and comments
|
||||
Ki_WorkSheetData WS_SeparatorLine =
|
||||
{
|
||||
WS_SEGMENT,
|
||||
&WS_MostUpperLine,
|
||||
BLOCK_OX, VARIABLE_BLOCK_START_POSITION,
|
||||
0, VARIABLE_BLOCK_START_POSITION,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
/// superior horizontal segment
|
||||
Ki_WorkSheetData WS_MostUpperLine =
|
||||
{
|
||||
WS_UPPER_SEGMENT,
|
||||
&WS_Segm3,
|
||||
BLOCK_OX, SIZETEXT * 16,
|
||||
0, SIZETEXT * 16,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
/// horizontal segment above COMPANY NAME
|
||||
Ki_WorkSheetData WS_Segm3 =
|
||||
{
|
||||
WS_SEGMENT,
|
||||
&WS_Segm4,
|
||||
BLOCK_OX, SIZETEXT * 6,
|
||||
0, SIZETEXT * 6,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
/// vertical segment of the left REV and SHEET
|
||||
Ki_WorkSheetData WS_Segm4 =
|
||||
{
|
||||
WS_SEGMENT,
|
||||
&WS_Segm5,
|
||||
BLOCK_REV_X + SIZETEXT,SIZETEXT * 4,
|
||||
BLOCK_REV_X + SIZETEXT,0,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
Ki_WorkSheetData WS_Segm5 =
|
||||
{
|
||||
WS_SEGMENT,
|
||||
&WS_Segm6,
|
||||
BLOCK_OX, SIZETEXT * 2,
|
||||
0, SIZETEXT * 2,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
Ki_WorkSheetData WS_Segm6 =
|
||||
{
|
||||
WS_SEGMENT,
|
||||
&WS_Segm7,
|
||||
BLOCK_OX, SIZETEXT * 4,
|
||||
0, SIZETEXT * 4,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
Ki_WorkSheetData WS_Segm7 =
|
||||
{
|
||||
WS_SEGMENT,
|
||||
NULL,
|
||||
BLOCK_OX - (SIZETEXT * 11),SIZETEXT * 4,
|
||||
BLOCK_OX - (SIZETEXT * 11),SIZETEXT * 2,
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* aDC, wxSize& aPageSize,
|
||||
wxPoint& aLTmargin, wxPoint& aRBmargin,
|
||||
wxString& aPaperFormat, wxString& aFileName,
|
||||
TITLE_BLOCK& aTitleBlock,
|
||||
int aSheetCount, int aSheetNumber,
|
||||
int aPenWidth, double aScalar,
|
||||
EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor )
|
||||
{
|
||||
wxPoint pos;
|
||||
wxPoint end;
|
||||
int refx, refy;
|
||||
wxString Line;
|
||||
Ki_WorkSheetData* WsItem;
|
||||
wxSize size( SIZETEXT * aScalar, SIZETEXT * aScalar );
|
||||
wxSize size_ref( SIZETEXT_REF * aScalar, SIZETEXT_REF * aScalar );
|
||||
wxString msg;
|
||||
|
||||
GRSetDrawMode( aDC, GR_COPY );
|
||||
|
||||
// Upper left corner
|
||||
refx = aLTmargin.x;
|
||||
refy = aLTmargin.y;
|
||||
|
||||
// lower right corner
|
||||
int xg, yg;
|
||||
xg = aPageSize.x - aRBmargin.x;
|
||||
yg = aPageSize.y - aRBmargin.y;
|
||||
|
||||
// Draw the border.
|
||||
int ii, jj, ipas, gxpas, gypas;
|
||||
for( ii = 0; ii < 2; ii++ )
|
||||
{
|
||||
GRRect( m_canvas->GetClipBox(), aDC, refx * aScalar, refy * aScalar,
|
||||
xg * aScalar, yg * aScalar, aPenWidth, aLineColor );
|
||||
|
||||
refx += GRID_REF_W; refy += GRID_REF_W;
|
||||
xg -= GRID_REF_W; yg -= GRID_REF_W;
|
||||
}
|
||||
|
||||
// Upper left corner
|
||||
refx = aLTmargin.x;
|
||||
refy = aLTmargin.y;
|
||||
|
||||
// lower right corner
|
||||
xg = aPageSize.x - aRBmargin.x;
|
||||
yg = aPageSize.y - aRBmargin.y;
|
||||
|
||||
ipas = ( xg - refx ) / PAS_REF;
|
||||
gxpas = ( xg - refx ) / ipas;
|
||||
for( ii = refx + gxpas, jj = 1; ipas > 0; ii += gxpas, jj++, ipas-- )
|
||||
{
|
||||
Line.Printf( wxT( "%d" ), jj );
|
||||
|
||||
if( ii < xg - PAS_REF / 2 )
|
||||
{
|
||||
GRLine( m_canvas->GetClipBox(), aDC, ii * aScalar, refy * aScalar,
|
||||
ii * aScalar, ( refy + GRID_REF_W ) * aScalar, aPenWidth, aLineColor );
|
||||
}
|
||||
DrawGraphicText( m_canvas, aDC,
|
||||
wxPoint( ( ii - gxpas / 2 ) * aScalar,
|
||||
( refy + GRID_REF_W / 2 ) * aScalar ),
|
||||
aLineColor, Line, TEXT_ORIENT_HORIZ, size_ref,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
|
||||
if( ii < xg - PAS_REF / 2 )
|
||||
{
|
||||
GRLine( m_canvas->GetClipBox(), aDC, ii * aScalar, yg * aScalar,
|
||||
ii * aScalar, ( yg - GRID_REF_W ) * aScalar, aPenWidth, aLineColor );
|
||||
}
|
||||
DrawGraphicText( m_canvas, aDC,
|
||||
wxPoint( ( ii - gxpas / 2 ) * aScalar,
|
||||
( yg - GRID_REF_W / 2) * aScalar ),
|
||||
aLineColor, Line, TEXT_ORIENT_HORIZ, size_ref,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
}
|
||||
|
||||
ipas = ( yg - refy ) / PAS_REF;
|
||||
gypas = ( yg - refy ) / ipas;
|
||||
|
||||
for( ii = refy + gypas, jj = 0; ipas > 0; ii += gypas, jj++, ipas-- )
|
||||
{
|
||||
if( jj < 26 )
|
||||
Line.Printf( wxT( "%c" ), jj + 'A' );
|
||||
else // I hope 52 identifiers are enough...
|
||||
Line.Printf( wxT( "%c" ), 'a' + jj - 26 );
|
||||
|
||||
if( ii < yg - PAS_REF / 2 )
|
||||
{
|
||||
GRLine( m_canvas->GetClipBox(), aDC, refx * aScalar, ii * aScalar,
|
||||
( refx + GRID_REF_W ) * aScalar, ii * aScalar, aPenWidth, aLineColor );
|
||||
}
|
||||
|
||||
DrawGraphicText( m_canvas, aDC,
|
||||
wxPoint( ( refx + GRID_REF_W / 2 ) * aScalar,
|
||||
( ii - gypas / 2 ) * aScalar ),
|
||||
aLineColor, Line, TEXT_ORIENT_HORIZ, size_ref,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
|
||||
if( ii < yg - PAS_REF / 2 )
|
||||
{
|
||||
GRLine( m_canvas->GetClipBox(), aDC, xg * aScalar, ii * aScalar,
|
||||
( xg - GRID_REF_W ) * aScalar, ii * aScalar, aPenWidth, aLineColor );
|
||||
}
|
||||
DrawGraphicText( m_canvas, aDC,
|
||||
wxPoint( ( xg - GRID_REF_W / 2 ) * aScalar,
|
||||
( ii - gxpas / 2 ) * aScalar ),
|
||||
aLineColor, Line, TEXT_ORIENT_HORIZ, size_ref,
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
}
|
||||
|
||||
int UpperLimit = VARIABLE_BLOCK_START_POSITION;
|
||||
refx = aPageSize.x - aRBmargin.x - GRID_REF_W;
|
||||
refy = aPageSize.y - aRBmargin.y - GRID_REF_W;
|
||||
|
||||
for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext )
|
||||
{
|
||||
pos.x = (refx - WsItem->m_Posx) * aScalar;
|
||||
pos.y = (refy - WsItem->m_Posy) * aScalar;
|
||||
msg.Empty();
|
||||
|
||||
switch( WsItem->m_Type )
|
||||
{
|
||||
case WS_DATE:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aTitleBlock.GetDate();
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, true );
|
||||
break;
|
||||
|
||||
case WS_REV:
|
||||
if( WsItem->m_Legende )
|
||||
{
|
||||
msg = WsItem->m_Legende;
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor, msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
GetPenSizeForBold( std::min( size.x, size.y ) ), false, true );
|
||||
pos.x += ReturnGraphicTextWidth( msg, size.x, false, false );
|
||||
}
|
||||
msg = aTitleBlock.GetRevision();
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor, msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
GetPenSizeForBold( std::min( size.x, size.y ) ), false, true );
|
||||
break;
|
||||
|
||||
case WS_KICAD_VERSION:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += g_ProductName + wxGetApp().GetAppName();
|
||||
msg += wxT( " " ) + GetBuildVersion();
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
break;
|
||||
|
||||
case WS_SIZESHEET:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aPaperFormat;
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
break;
|
||||
|
||||
|
||||
case WS_IDENTSHEET:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg << aSheetNumber << wxT( "/" ) << aSheetCount;
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
break;
|
||||
|
||||
case WS_FILENAME:
|
||||
{
|
||||
wxFileName fn( aFileName );
|
||||
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
|
||||
msg << fn.GetFullName();
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_FULLSHEETNAME:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += GetScreenDesc();
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
break;
|
||||
|
||||
|
||||
case WS_COMPANY_NAME:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aTitleBlock.GetCompany();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
GetPenSizeForBold( std::min( size.x, size.y ) ),
|
||||
false, true );
|
||||
UpperLimit = std::max( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_TITLE:
|
||||
if( WsItem->m_Legende )
|
||||
{
|
||||
msg = WsItem->m_Legende;
|
||||
DrawGraphicText( m_canvas, aDC, pos, aLineColor, msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
GetPenSizeForBold( std::min( size.x, size.y ) ), false, true );
|
||||
pos.x += ReturnGraphicTextWidth( msg, size.x, false, false );
|
||||
}
|
||||
msg = aTitleBlock.GetTitle();
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor, msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
GetPenSizeForBold( std::min( size.x, size.y ) ), false, true );
|
||||
break;
|
||||
|
||||
case WS_COMMENT1:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aTitleBlock.GetComment1();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
UpperLimit = std::max( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_COMMENT2:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aTitleBlock.GetComment2();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
UpperLimit = std::max( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_COMMENT3:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aTitleBlock.GetComment3();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
UpperLimit = std::max( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_COMMENT4:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += aTitleBlock.GetComment4();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
DrawGraphicText( m_canvas, aDC, pos, aTextColor,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||
aPenWidth, false, false );
|
||||
UpperLimit = std::max( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_UPPER_SEGMENT:
|
||||
if( UpperLimit == 0 )
|
||||
break;
|
||||
|
||||
case WS_LEFT_SEGMENT:
|
||||
WS_MostUpperLine.m_Posy =
|
||||
WS_MostUpperLine.m_Endy =
|
||||
WS_MostLeftLine.m_Posy = UpperLimit;
|
||||
pos.y = (refy - WsItem->m_Posy) * aScalar;
|
||||
|
||||
case WS_SEGMENT:
|
||||
xg = aPageSize.x - GRID_REF_W - aRBmargin.x - WsItem->m_Endx;
|
||||
yg = aPageSize.y - GRID_REF_W - aRBmargin.y - WsItem->m_Endy;
|
||||
GRLine( m_canvas->GetClipBox(), aDC, pos.x, pos.y,
|
||||
xg * aScalar, yg * aScalar, aPenWidth, aLineColor );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
1860
common/worksheet.cpp
1860
common/worksheet.cpp
File diff suppressed because it is too large
Load Diff
|
@ -60,6 +60,14 @@
|
|||
|
||||
#define TRACE_DESTRUCTOR 0
|
||||
|
||||
// the separator char between the subpart id and the reference
|
||||
// 0 (no separator) or '.' or some other character
|
||||
int LIB_COMPONENT::m_subpartIdSeparator = 0;
|
||||
// the ascii char value to calculate the subpart symbol id from the part number:
|
||||
// 'A' or '1' usually. (to print U1.A or U1.1)
|
||||
// if this a a digit, a number is used as id symbol
|
||||
int LIB_COMPONENT::m_subpartFirstId = 'A';
|
||||
|
||||
|
||||
LIB_ALIAS::LIB_ALIAS( const wxString& aName, LIB_COMPONENT* aRootComponent ):
|
||||
EDA_ITEM( LIB_ALIAS_T )
|
||||
|
@ -251,14 +259,18 @@ wxString LIB_COMPONENT::GetLibraryName()
|
|||
}
|
||||
|
||||
|
||||
wxString LIB_COMPONENT::ReturnSubReference( int aUnit )
|
||||
wxString LIB_COMPONENT::ReturnSubReference( int aUnit, bool aAddSeparator )
|
||||
{
|
||||
wxString subRef;
|
||||
#if defined(KICAD_GOST)
|
||||
subRef.Printf( wxT(".%d" ), aUnit);
|
||||
#else
|
||||
subRef.Append( wxChar(aUnit + 'A' - 1) );
|
||||
#endif
|
||||
|
||||
if( m_subpartIdSeparator != 0 && aAddSeparator )
|
||||
subRef << wxChar( m_subpartIdSeparator );
|
||||
|
||||
if( m_subpartFirstId >= '0' && m_subpartFirstId <= '9' )
|
||||
subRef << aUnit;
|
||||
else
|
||||
subRef << wxChar( m_subpartFirstId + aUnit - 1);
|
||||
|
||||
return subRef;
|
||||
}
|
||||
|
||||
|
|
|
@ -187,6 +187,9 @@ extern int LibraryEntryCompare( const LIB_ALIAS* aItem1, const LIB_ALIAS* aItem2
|
|||
*/
|
||||
class LIB_COMPONENT : public EDA_ITEM
|
||||
{
|
||||
friend class CMP_LIBRARY;
|
||||
friend class LIB_ALIAS;
|
||||
|
||||
wxString m_name;
|
||||
int m_pinNameOffset; ///< The offset in mils to draw the pin name. Set to 0
|
||||
///< to draw the pin name above the pin.
|
||||
|
@ -203,12 +206,15 @@ class LIB_COMPONENT : public EDA_ITEM
|
|||
LIB_ALIASES m_aliases; ///< List of alias object pointers associated with the
|
||||
///< component.
|
||||
CMP_LIBRARY* m_library; ///< Library the component belongs to if any.
|
||||
static int m_subpartIdSeparator; ///< the separator char between
|
||||
///< the subpart id and the reference
|
||||
///< like U1A ( m_subpartIdSeparator = 0 ) or U1.A or U1-A
|
||||
static int m_subpartFirstId; ///< the ascii char value to calculate the subpart symbol id
|
||||
///< from the part number: only 'A', 'a' or '1' can be used,
|
||||
///< other values have no sense.
|
||||
|
||||
void deleteAllFields();
|
||||
|
||||
friend class CMP_LIBRARY;
|
||||
friend class LIB_ALIAS;
|
||||
|
||||
public:
|
||||
LIB_COMPONENT( const wxString& aName, CMP_LIBRARY* aLibrary = NULL );
|
||||
LIB_COMPONENT( LIB_COMPONENT& aComponent, CMP_LIBRARY* aLibrary = NULL );
|
||||
|
@ -645,9 +651,17 @@ public:
|
|||
* @return the sub reference for component having multiple parts per package.
|
||||
* The sub reference identify the part (or unit)
|
||||
* @param aUnit = the part identifier ( 1 to max count)
|
||||
* @param aAddSeparator = true (default) to prpebd the sub ref
|
||||
* by the separator symbol (if any)
|
||||
* Note: this is a static function.
|
||||
*/
|
||||
static wxString ReturnSubReference( int aUnit );
|
||||
static wxString ReturnSubReference( int aUnit, bool aAddSeparator = true );
|
||||
|
||||
// Accessors to sub ref parameters
|
||||
static int GetSubpartIdSeparator() { return m_subpartIdSeparator; }
|
||||
static void SetSubpartIdSeparator( int aSep ) { m_subpartIdSeparator = aSep; }
|
||||
static int GetSubpartFirstId() { return m_subpartFirstId; }
|
||||
static void SetSubpartFirstId( int aFirstId ) { m_subpartFirstId = aFirstId; }
|
||||
|
||||
/**
|
||||
* Set or clear the alternate body style (DeMorgan) for the component.
|
||||
|
|
|
@ -38,6 +38,8 @@
|
|||
#include <eda_text.h>
|
||||
|
||||
#include <general.h>
|
||||
#include <class_libentry.h>
|
||||
#include <sch_junction.h>
|
||||
#include <protos.h>
|
||||
#include <hotkeys.h>
|
||||
#include <dialogs/dialog_color_config.h>
|
||||
|
@ -117,10 +119,26 @@ bool EDA_APP::OnInit()
|
|||
}
|
||||
|
||||
// Give a default colour for all layers
|
||||
// (actual color will beinitialized by config)
|
||||
// (actual color will be initialized by config)
|
||||
for( int ii = 0; ii < NB_SCH_LAYERS; ii++ )
|
||||
SetLayerColor( DARKGRAY, ii );
|
||||
|
||||
//#define KICAD_GOST
|
||||
#ifdef KICAD_GOST
|
||||
// These options will be user configurable in the future,
|
||||
// and not specific to GOST users
|
||||
// the separator char between the subpart id and the reference
|
||||
// 0 (no separator) or '.' or some other character
|
||||
LIB_COMPONENT::SetSubpartIdSeparator( '.' );
|
||||
// the ascii char value to calculate the subpart symbol id from the part number:
|
||||
// 'A' or '1' usually. (to print U1.A or U1.1)
|
||||
// if this is a digit, a number is used as id symbol
|
||||
LIB_COMPONENT::SetSubpartFirstId( '1' );
|
||||
|
||||
// Default diameter of the junction symbol
|
||||
SCH_JUNCTION::SetSymbolSize( 32 );
|
||||
#endif
|
||||
|
||||
// read current setup and reopen last directory if no filename to open in
|
||||
// command line
|
||||
bool reopenLastUsedDirectory = argc == 1;
|
||||
|
|
|
@ -186,14 +186,14 @@ const wxChar* MsgPinElectricType[] =
|
|||
LIB_PIN::LIB_PIN( LIB_COMPONENT* aParent ) :
|
||||
LIB_ITEM( LIB_PIN_T, aParent )
|
||||
{
|
||||
m_length = 300; /* default Pin len */
|
||||
m_orientation = PIN_RIGHT; /* Pin orient: Up, Down, Left, Right */
|
||||
m_shape = NONE; /* Pin shape, bitwise. */
|
||||
m_type = PIN_UNSPECIFIED; /* electrical type of pin */
|
||||
m_attributes = 0; /* bit 0 != 0: pin invisible */
|
||||
m_number = 0; /* pin number ( i.e. 4 codes ASCII ) */
|
||||
m_numTextSize = 50;
|
||||
m_nameTextSize = 50; /* Default size for pin name and num */
|
||||
m_length = DEFAULT_PIN_LENGTH; // default Pin len
|
||||
m_orientation = PIN_RIGHT; // Pin orient: Up, Down, Left, Right
|
||||
m_shape = NONE; // Pin shape, bitwise.
|
||||
m_type = PIN_UNSPECIFIED; // electrical type of pin
|
||||
m_attributes = 0; // bit 0 != 0: pin invisible
|
||||
m_number = 0; // pin number (i.e. 4 ASCII chars)
|
||||
m_numTextSize = DEFAULT_TEXT_SIZE;
|
||||
m_nameTextSize = DEFAULT_TEXT_SIZE; // Default size for pin name and num
|
||||
m_width = 0;
|
||||
m_typeName = _( "Pin" );
|
||||
}
|
||||
|
|
|
@ -32,18 +32,14 @@
|
|||
#include <lib_draw_item.h>
|
||||
|
||||
|
||||
#define TARGET_PIN_RADIUS 12 /* Circle diameter drawn at the active end of pins */
|
||||
#define PIN_LENGTH 300 /* Default Length of each pin to be drawn. */
|
||||
#define TARGET_PIN_RADIUS 12 // Circle diameter drawn at the active end of pins
|
||||
#define DEFAULT_PIN_LENGTH 300 // Default Length of a pin when it is created.
|
||||
|
||||
#if defined(KICAD_GOST)
|
||||
#define INVERT_PIN_RADIUS 30 /* Radius of inverted pin circle. */
|
||||
#else
|
||||
#define INVERT_PIN_RADIUS 35 /* Radius of inverted pin circle. */
|
||||
#endif
|
||||
|
||||
#define CLOCK_PIN_DIM 40 /* Dim of clock pin symbol. */
|
||||
#define IEEE_SYMBOL_PIN_DIM 40 /* Dim of special pin symbol. */
|
||||
#define NONLOGIC_PIN_DIM 30 /* Dim of nonlogic pin symbol (X). */
|
||||
// pins: special symbols sizes
|
||||
#define INVERT_PIN_RADIUS 30 // Radius of inverted pin circle.
|
||||
#define CLOCK_PIN_DIM 40 // Dim of clock pin symbol.
|
||||
#define IEEE_SYMBOL_PIN_DIM 40 // Dim of special pin symbol.
|
||||
#define NONLOGIC_PIN_DIM 30 // Dim of nonlogic pin symbol (X).
|
||||
|
||||
/**
|
||||
* The component library pin object electrical types used in ERC tests.
|
||||
|
|
|
@ -468,12 +468,8 @@ void LIB_EDIT_FRAME::UpdatePartSelectList()
|
|||
{
|
||||
for( int i = 0; i < m_component->GetPartCount(); i++ )
|
||||
{
|
||||
wxString msg;
|
||||
#if defined(KICAD_GOST)
|
||||
msg.Printf( _( "Part %d" ), i + 1 );
|
||||
#else
|
||||
msg.Printf( _( "Part %c" ), 'A' + i );
|
||||
#endif
|
||||
wxString msg = LIB_COMPONENT::ReturnSubReference( i+1, false );
|
||||
msg.Printf( _( "Part %s" ), GetChars( msg ) );
|
||||
m_partSelectBox->Append( msg );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,9 +59,9 @@ static wxPoint PinPreviousPos;
|
|||
static int LastPinType = PIN_INPUT;
|
||||
static int LastPinOrient = PIN_RIGHT;
|
||||
static int LastPinShape = NONE;
|
||||
static int LastPinLength = 300;
|
||||
static int LastPinNameSize = 50;
|
||||
static int LastPinNumSize = 50;
|
||||
static int LastPinLength = DEFAULT_PIN_LENGTH;
|
||||
static int LastPinNameSize = DEFAULT_TEXT_SIZE;
|
||||
static int LastPinNumSize = DEFAULT_TEXT_SIZE;
|
||||
static bool LastPinCommonConvert = false;
|
||||
static bool LastPinCommonUnit = false;
|
||||
static bool LastPinVisible = true;
|
||||
|
|
|
@ -70,15 +70,6 @@ std::string toUTFTildaText( const wxString& txt )
|
|||
{
|
||||
if( (unsigned char) *it <= ' ' )
|
||||
*it = '~';
|
||||
|
||||
/*
|
||||
#if defined(KICAD_GOST)
|
||||
if( *it == ' ' )
|
||||
#else
|
||||
if( (unsigned char) *it <= ' ' )
|
||||
#endif
|
||||
*it = '~';
|
||||
*/
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -35,24 +35,16 @@
|
|||
#include <richio.h>
|
||||
#include <plot_common.h>
|
||||
|
||||
#include <general.h>
|
||||
#include <protos.h>
|
||||
#include <sch_junction.h>
|
||||
#include <class_netlist_object.h>
|
||||
|
||||
|
||||
int SCH_JUNCTION::m_symbolSize = 50; // Default diameter of the junction symbol
|
||||
|
||||
SCH_JUNCTION::SCH_JUNCTION( const wxPoint& pos ) :
|
||||
SCH_ITEM( NULL, SCH_JUNCTION_T )
|
||||
{
|
||||
#if defined(KICAD_GOST)
|
||||
#define DRAWJUNCTION_DIAMETER 50 /* Diameter of junction symbol between wires by GOST*/
|
||||
#else
|
||||
#define DRAWJUNCTION_DIAMETER 32 /* Diameter of junction symbol between wires */
|
||||
#endif
|
||||
m_pos = pos;
|
||||
m_Layer = LAYER_JUNCTION;
|
||||
m_size.x = m_size.y = DRAWJUNCTION_DIAMETER;
|
||||
#undef DRAWJUNCTION_DIAMETER
|
||||
}
|
||||
|
||||
|
||||
|
@ -82,7 +74,6 @@ void SCH_JUNCTION::SwapData( SCH_ITEM* aItem )
|
|||
|
||||
SCH_JUNCTION* item = (SCH_JUNCTION*) aItem;
|
||||
EXCHG( m_pos, item->m_pos );
|
||||
EXCHG( m_size, item->m_size );
|
||||
}
|
||||
|
||||
|
||||
|
@ -111,7 +102,7 @@ EDA_RECT SCH_JUNCTION::GetBoundingBox() const
|
|||
EDA_RECT rect;
|
||||
|
||||
rect.SetOrigin( m_pos );
|
||||
rect.Inflate( ( GetPenSize() + m_size.x ) / 2 );
|
||||
rect.Inflate( ( GetPenSize() + GetSymbolSize() ) / 2 );
|
||||
|
||||
return rect;
|
||||
}
|
||||
|
@ -130,7 +121,7 @@ void SCH_JUNCTION::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffs
|
|||
GRSetDrawMode( aDC, aDrawMode );
|
||||
|
||||
GRFilledCircle( aPanel->GetClipBox(), aDC, m_pos.x + aOffset.x, m_pos.y + aOffset.y,
|
||||
( m_size.x / 2 ), 0, color, color );
|
||||
( GetSymbolSize() / 2 ), 0, color, color );
|
||||
}
|
||||
|
||||
|
||||
|
@ -243,5 +234,5 @@ bool SCH_JUNCTION::doIsConnected( const wxPoint& aPosition ) const
|
|||
void SCH_JUNCTION::Plot( PLOTTER* aPlotter )
|
||||
{
|
||||
aPlotter->SetColor( GetLayerColor( GetLayer() ) );
|
||||
aPlotter->Circle( m_pos, m_size.x, FILLED_SHAPE );
|
||||
aPlotter->Circle( m_pos, GetSymbolSize(), FILLED_SHAPE );
|
||||
}
|
||||
|
|
|
@ -32,11 +32,10 @@
|
|||
|
||||
#include <sch_item_struct.h>
|
||||
|
||||
|
||||
class SCH_JUNCTION : public SCH_ITEM
|
||||
{
|
||||
wxPoint m_pos; /* XY coordinates of connection. */
|
||||
wxSize m_size;
|
||||
wxPoint m_pos; // Position of the junction.
|
||||
static int m_symbolSize; // diameter of the junction graphic symbol
|
||||
|
||||
public:
|
||||
SCH_JUNCTION( const wxPoint& pos = wxPoint( 0, 0 ) );
|
||||
|
@ -50,6 +49,9 @@ public:
|
|||
return wxT( "SCH_JUNCTION" );
|
||||
}
|
||||
|
||||
static int GetSymbolSize() { return m_symbolSize; }
|
||||
static void SetSymbolSize( int aSize ) { m_symbolSize = aSize; }
|
||||
|
||||
void SwapData( SCH_ITEM* aItem );
|
||||
|
||||
EDA_RECT GetBoundingBox() const;
|
||||
|
|
|
@ -516,29 +516,35 @@ double SCH_EDIT_FRAME::BestZoom()
|
|||
}
|
||||
|
||||
|
||||
/* Build a filename that can be used in plot and print functions
|
||||
* for the current sheet path.
|
||||
* This filename is unique and must be used instead of the screen filename
|
||||
* when one must creates file for each sheet in the hierarchy,
|
||||
* because in complex hierarchies a sheet and a SCH_SCREEN is used more than once
|
||||
*/
|
||||
wxString SCH_EDIT_FRAME::GetUniqueFilenameForCurrentSheet()
|
||||
{
|
||||
wxFileName fn = GetScreen()->GetFileName();
|
||||
|
||||
#ifndef KICAD_GOST
|
||||
wxString filename = fn.GetName();
|
||||
if( ( filename.Len() + m_CurrentSheet->PathHumanReadable().Len() ) < 50 )
|
||||
#else
|
||||
/* Name is <root sheet filename>-<sheet path> and has no extension.
|
||||
* However if filename is too long name is <sheet filename>-<sheet number>
|
||||
*/
|
||||
|
||||
#define FN_LEN_MAX 100 // A reasonnable value for the full file name len
|
||||
|
||||
fn.ClearExt();
|
||||
wxString filename = fn.GetFullPath();
|
||||
if( ( filename.Len() + m_CurrentSheet->PathHumanReadable().Len() ) < 80 )
|
||||
#endif
|
||||
|
||||
if( ( filename.Len() + m_CurrentSheet->PathHumanReadable().Len() ) < FN_LEN_MAX )
|
||||
{
|
||||
filename += m_CurrentSheet->PathHumanReadable();
|
||||
filename.Replace( wxT( "/" ), wxT( "-" ) );
|
||||
filename.RemoveLast();
|
||||
#if defined(KICAD_GOST)
|
||||
// To avoid issues on unix, ensure the filename does not start
|
||||
// by '-', which has a special meaning in command lines
|
||||
#ifndef __WINDOWS__
|
||||
wxString newfn;
|
||||
if( filename.StartsWith( wxT( "-" ), &newfn ) )
|
||||
filename = newfn;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
else
|
||||
|
|
|
@ -12,44 +12,13 @@
|
|||
#define GRID_REF_W 70 // height of the band reference grid
|
||||
|
||||
#if defined(KICAD_GOST)
|
||||
#define SIZETEXT 100 // worksheet text size
|
||||
#define SIZETEXT 100 // worksheet text size
|
||||
#else
|
||||
#define SIZETEXT 60 // worksheet text size
|
||||
#endif
|
||||
|
||||
#define SIZETEXT_REF 50 // worksheet frame reference text size
|
||||
#define PAS_REF 2000 // no reference markings on worksheet frame
|
||||
|
||||
#if !defined(KICAD_GOST)
|
||||
|
||||
// The coordinates below are relative to the bottom right corner of page and
|
||||
// will be subtracted from this origin.
|
||||
#define BLOCK_OX 4200
|
||||
#define BLOCK_KICAD_VERSION_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_KICAD_VERSION_Y SIZETEXT
|
||||
#define BLOCK_REV_X 820
|
||||
#define BLOCK_REV_Y (SIZETEXT * 3)
|
||||
#define BLOCK_DATE_X BLOCK_OX - (SIZETEXT * 15)
|
||||
#define BLOCK_DATE_Y (SIZETEXT * 3)
|
||||
#define BLOCK_ID_SHEET_X 820
|
||||
#define BLOCK_ID_SHEET_Y SIZETEXT
|
||||
#define BLOCK_SIZE_SHEET_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_SIZE_SHEET_Y (SIZETEXT * 3)
|
||||
#define BLOCK_TITLE_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_TITLE_Y (SIZETEXT * 5)
|
||||
#define BLOCK_FULLSHEETNAME_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_FULLSHEETNAME_Y (SIZETEXT * 7)
|
||||
#define BLOCK_FILENAME_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_FILENAME_Y (SIZETEXT * 9)
|
||||
#define BLOCK_COMMENT_X BLOCK_OX - SIZETEXT
|
||||
#define BLOCK_COMPANY_Y (SIZETEXT * 11)
|
||||
#define BLOCK_COMMENT1_Y (SIZETEXT * 13)
|
||||
#define BLOCK_COMMENT2_Y (SIZETEXT * 15)
|
||||
#define BLOCK_COMMENT3_Y (SIZETEXT * 17)
|
||||
#define BLOCK_COMMENT4_Y (SIZETEXT * 19)
|
||||
|
||||
#endif
|
||||
|
||||
#define VARIABLE_BLOCK_START_POSITION (SIZETEXT * 10)
|
||||
|
||||
struct Ki_WorkSheetData
|
||||
|
@ -65,35 +34,16 @@ public:
|
|||
|
||||
|
||||
/// Work sheet structure type definitions.
|
||||
enum TypeKi_WorkSheetData {
|
||||
|
||||
#if defined(KICAD_GOST)
|
||||
enum TypeKi_WorkSheetData
|
||||
{
|
||||
WS_OSN,
|
||||
WS_TONK,
|
||||
WS_TEXT,
|
||||
WS_TEXTL
|
||||
#else
|
||||
WS_DATE,
|
||||
WS_REV,
|
||||
WS_KICAD_VERSION,
|
||||
WS_SIZESHEET,
|
||||
WS_IDENTSHEET,
|
||||
WS_TITLE,
|
||||
WS_FILENAME,
|
||||
WS_FULLSHEETNAME,
|
||||
WS_COMPANY_NAME,
|
||||
WS_COMMENT1,
|
||||
WS_COMMENT2,
|
||||
WS_COMMENT3,
|
||||
WS_COMMENT4,
|
||||
WS_SEGMENT,
|
||||
WS_UPPER_SEGMENT,
|
||||
WS_LEFT_SEGMENT,
|
||||
WS_CADRE
|
||||
#endif
|
||||
};
|
||||
|
||||
#if defined(KICAD_GOST)
|
||||
|
||||
extern Ki_WorkSheetData WS_Osn1_Line1;
|
||||
extern Ki_WorkSheetData WS_Osn1_Line2;
|
||||
extern Ki_WorkSheetData WS_Osn1_Line3;
|
||||
|
@ -192,6 +142,26 @@ extern Ki_WorkSheetData WS_DopTop_Line5;
|
|||
extern Ki_WorkSheetData WS_DopTop_Line6;
|
||||
|
||||
#else
|
||||
enum TypeKi_WorkSheetData
|
||||
{
|
||||
WS_DATE,
|
||||
WS_REV,
|
||||
WS_KICAD_VERSION,
|
||||
WS_SIZESHEET,
|
||||
WS_IDENTSHEET,
|
||||
WS_TITLE,
|
||||
WS_FILENAME,
|
||||
WS_FULLSHEETNAME,
|
||||
WS_COMPANY_NAME,
|
||||
WS_COMMENT1,
|
||||
WS_COMMENT2,
|
||||
WS_COMMENT3,
|
||||
WS_COMMENT4,
|
||||
WS_SEGMENT,
|
||||
WS_UPPER_SEGMENT,
|
||||
WS_LEFT_SEGMENT,
|
||||
WS_CADRE
|
||||
};
|
||||
extern Ki_WorkSheetData WS_Date;
|
||||
extern Ki_WorkSheetData WS_Revision;
|
||||
extern Ki_WorkSheetData WS_Licence;
|
||||
|
|
|
@ -703,23 +703,26 @@ public:
|
|||
* Function TraceWorkSheet is a core function for drawing of the page layout with
|
||||
* the frame and the basic inscriptions.
|
||||
* @param aDC The device context.
|
||||
* @param aSz The size of the page layout.
|
||||
* @param aLT The left top margin of the page layout.
|
||||
* @param aRB The right bottom margin of the page layout.
|
||||
* @param aType The paper size type (for basic inscriptions).
|
||||
* @param aFlNm The file name (for basic inscriptions).
|
||||
* @param aTb The block of titles (for basic inscriptions).
|
||||
* @param aNScr The number of screens (for basic inscriptions).
|
||||
* @param aScr The screen number (for basic inscriptions).
|
||||
* @param aLnW The line width for drawing.
|
||||
* @param aPageSize The size of the page layout.
|
||||
* @param aLTmargin The left top margin of the page layout.
|
||||
* @param aRBmargin The right bottom margin of the page layout.
|
||||
* @param aPaperFormat The paper size type, for basic inscriptions.
|
||||
* @param aFileName The file name, for basic inscriptions.
|
||||
* @param aTitleBlock The sheet title block, for basic inscriptions.
|
||||
* @param aSheetCount The number of sheets (for basic inscriptions).
|
||||
* @param aSheetNumber The sheet number (for basic inscriptions).
|
||||
* @param aPenWidth The line width for drawing.
|
||||
* @param aScalar Scalar to convert from mils to internal units.
|
||||
* @param aClr1 The color for drawing.
|
||||
* @param aClr2 The colr for inscriptions.
|
||||
* @param aLineColor The color for drawing.
|
||||
* @param aTextColor The color for inscriptions.
|
||||
*/
|
||||
void TraceWorkSheet( wxDC* aDC, wxSize& aSz, wxPoint& aLT, wxPoint& aRB,
|
||||
wxString& aType, wxString& aFlNm, TITLE_BLOCK& aTb,
|
||||
int aNScr, int aScr, int aLnW, double aScalar,
|
||||
EDA_COLOR_T aClr1 = RED, EDA_COLOR_T aClr2 = RED );
|
||||
void TraceWorkSheet( wxDC* aDC, wxSize& aPageSize,
|
||||
wxPoint& aLTmargin, wxPoint& aRBmargin,
|
||||
wxString& aPaperFormat, wxString& aFileName,
|
||||
TITLE_BLOCK& aTitleBlock,
|
||||
int aSheetCount, int aSheetNumber,
|
||||
int aPenWidth, double aScalar,
|
||||
EDA_COLOR_T aLineColor = RED, EDA_COLOR_T aTextColor = RED );
|
||||
|
||||
/**
|
||||
* Function GetXYSheetReferences
|
||||
|
|
|
@ -61,7 +61,7 @@ wxPoint BOARD_ITEM::ZeroOffset( 0, 0 );
|
|||
BOARD::BOARD() :
|
||||
BOARD_ITEM( (BOARD_ITEM*) NULL, PCB_T ),
|
||||
m_NetInfo( this ),
|
||||
m_paper( IsGOST() ? PAGE_INFO::A4 : PAGE_INFO::A3, IsGOST() ),
|
||||
m_paper( PAGE_INFO::A4, IsGOST() ),
|
||||
m_NetClasses( this )
|
||||
{
|
||||
// we have not loaded a board yet, assume latest until then.
|
||||
|
|
Loading…
Reference in New Issue