From 7080828fe2781ede996e5a0a471119c0c0e771e8 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Fri, 24 May 2013 10:59:40 +0200 Subject: [PATCH] More about worksheet code. --- common/CMakeLists.txt | 7 + common/common_plot_functions.cpp | 11 +- common/title_block_shapes.cpp | 627 ++++++++++++++++++ common/title_block_shapes.h | 584 ---------------- ...pes_gost.h => title_block_shapes_gost.cpp} | 219 +++--- common/worksheet.cpp | 18 +- eeschema/sch_junction.cpp | 2 +- include/worksheet.h | 4 +- {common => include}/worksheet_shape_builder.h | 35 +- 9 files changed, 787 insertions(+), 720 deletions(-) create mode 100644 common/title_block_shapes.cpp delete mode 100644 common/title_block_shapes.h rename common/{title_block_shapes_gost.h => title_block_shapes_gost.cpp} (91%) rename {common => include}/worksheet_shape_builder.h (86%) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 5b05d70c1a..93b8884a8d 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -26,6 +26,12 @@ set(COMMON_ABOUT_DLG_SRCS dialogs/dialog_page_settings_base.cpp ) +if(KICAD_GOST) + set( TITLE_BLOCK_SHAPES title_block_shapes_gost ) +else() + set( TITLE_BLOCK_SHAPES title_block_shapes ) +endif() + set(COMMON_SRCS ${COMMON_ABOUT_DLG_SRCS} base_struct.cpp @@ -76,6 +82,7 @@ set(COMMON_SRCS richio.cpp selcolor.cpp string.cpp + ${TITLE_BLOCK_SHAPES}.cpp trigo.cpp wildcards_and_files_ext.cpp worksheet.cpp diff --git a/common/common_plot_functions.cpp b/common/common_plot_functions.cpp index 251b1150a2..543a05d059 100644 --- a/common/common_plot_functions.cpp +++ b/common/common_plot_functions.cpp @@ -90,17 +90,16 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock, plotter->SetCurrentLineWidth( PLOTTER::DEFAULT_LINE_WIDTH ); WS_DRAW_ITEM_LIST drawList; - // Initialize plot parameters + // Prepare plot parameters drawList.SetMargins( LTmargin, RBmargin); drawList.SetPenSize(PLOTTER::DEFAULT_LINE_WIDTH ); drawList.SetMilsToIUfactor( iusPerMil ); drawList.SetPageSize( pageSize ); + drawList.SetSheetNumber( aSheetNumber ); + drawList.SetSheetCount( aNumberOfSheets ); - drawList.BuildWorkSheetGraphicList( - aPageInfo.GetType(), aFilename, - aSheetDesc, - aTitleBlock, aNumberOfSheets, aSheetNumber, - plotColor, plotColor ); + drawList.BuildWorkSheetGraphicList( aPageInfo.GetType(), aFilename, + aSheetDesc, aTitleBlock, plotColor, plotColor ); // Draw item list for( WS_DRAW_ITEM_BASE* item = drawList.GetFirst(); item; diff --git a/common/title_block_shapes.cpp b/common/title_block_shapes.cpp new file mode 100644 index 0000000000..f385080373 --- /dev/null +++ b/common/title_block_shapes.cpp @@ -0,0 +1,627 @@ +/** + * @file title_block_shape.cpp + * @brief description of graphic items and texts to build a title block + */ + +/* + * This file 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 . + * 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 + */ + +#include +#include +#include +#include +#include +#include +#include + +#define GRID_REF_W Mm2mils( 1.8 ) // height of the band reference grid +#define TEXTSIZE Mm2mils( 1.5 ) // worksheet text size +#define FRMREF_TXTSIZE Mm2mils( 1.3 ) // worksheet frame reference text size +#define VARIABLE_BLOCK_START_POSITION (TEXTSIZE * 10) + +// The coordinates below are relative to the bottom right corner of page and +// will be subtracted from this origin. +#define BLOCK_OX Mm2mils( 106 ) +#define BLOCK_KICAD_VERSION_X BLOCK_OX - TEXTSIZE +#define BLOCK_KICAD_VERSION_Y TEXTSIZE +#define BLOCK_REV_X Mm2mils( 22 ) +#define BLOCK_REV_Y (TEXTSIZE * 3) +#define BLOCK_DATE_X BLOCK_OX - (TEXTSIZE * 15) +#define BLOCK_DATE_Y (TEXTSIZE * 3) +#define BLOCK_ID_SHEET_X Mm2mils( 22 ) +#define BLOCK_ID_SHEET_Y TEXTSIZE +#define BLOCK_SIZE_SHEET_X BLOCK_OX - TEXTSIZE +#define BLOCK_SIZE_SHEET_Y (TEXTSIZE * 3) +#define BLOCK_TITLE_X BLOCK_OX - TEXTSIZE +#define BLOCK_TITLE_Y (TEXTSIZE * 5) +#define BLOCK_FULLSHEETNAME_X BLOCK_OX - TEXTSIZE +#define BLOCK_FULLSHEETNAME_Y (TEXTSIZE * 7) +#define BLOCK_FILENAME_X BLOCK_OX - TEXTSIZE +#define BLOCK_FILENAME_Y (TEXTSIZE * 9) +#define BLOCK_COMMENT_X BLOCK_OX - TEXTSIZE +#define BLOCK_COMPANY_Y (TEXTSIZE * 11) +#define BLOCK_COMMENT1_Y (TEXTSIZE * 13) +#define BLOCK_COMMENT2_Y (TEXTSIZE * 15) +#define BLOCK_COMMENT3_Y (TEXTSIZE * 17) +#define BLOCK_COMMENT4_Y (TEXTSIZE * 19) + +/* + * Basic texts in Ki_WorkSheetData struct use format "C" type to + * identify the user text which should be shown, at runtime. + * Currently formats are % and a letter , or 2 letters + * + * %% = replaced by % + * %K = Kicad version + * %Z = paper format name (A4, USLetter) + * %N = company name + * %D = date + * %R = revision + * %S = sheet number + * %N = number of sheets + * %Cx = comment (x = 0 to 9 to identify the comment) + * %F = filename + * %P = sheet path or sheet full name + * %T = title + * Other fields like Developer, Verifier, Approver could use %Cx + * and are seen as comments for format + */ + +// Text attributes set in m_Flags (ORed bits) + #define USE_BOLD 1 // has meaning for texts + #define USE_THICK_LINE 1 // equivalent to bold for lines + #define USE_ITALIC 2 // has meaning for texts + #define USE_TEXT_COLOR 4 + #define SET_UPPER_LIMIT 8 // Flag used to calculate variable position items + +// Work sheet structure type definitions. +enum TypeKi_WorkSheetData { + WS_TEXT, + WS_SEGMENT, + WS_UPPER_SEGMENT, + WS_LEFT_SEGMENT +}; + + +// superior horizontal segment: should be after comments +// to know the exact position +Ki_WorkSheetData WS_MostUpperLine = +{ + WS_UPPER_SEGMENT, + NULL, + BLOCK_OX, TEXTSIZE * 16, + 0, TEXTSIZE * 16, + NULL +}; + +// Left vertical segment: should be after comments +// to know the exact position +Ki_WorkSheetData WS_MostLeftLine = +{ + WS_LEFT_SEGMENT, + &WS_MostUpperLine, + BLOCK_OX, TEXTSIZE * 16, + BLOCK_OX, 0, + NULL +}; + +// horizontal segment between filename and comments +Ki_WorkSheetData WS_SeparatorLine = +{ + WS_SEGMENT, + &WS_MostLeftLine, + BLOCK_OX, VARIABLE_BLOCK_START_POSITION, + 0, VARIABLE_BLOCK_START_POSITION, + NULL +}; + +Ki_WorkSheetData WS_Date = +{ + WS_TEXT, + &WS_SeparatorLine, + BLOCK_DATE_X, BLOCK_DATE_Y, + 0, 0, + wxT( "Date: %D" ) +}; + +Ki_WorkSheetData WS_Licence = +{ + WS_TEXT, + &WS_Date, + BLOCK_KICAD_VERSION_X,BLOCK_KICAD_VERSION_Y, + 0, + 0, + wxT("%K") // Kicad version +}; + +Ki_WorkSheetData WS_Revision = +{ + WS_TEXT, + &WS_Licence, + BLOCK_REV_X, BLOCK_REV_Y, + 0, 0, + wxT( "Rev: %R" ), + USE_BOLD +}; + +Ki_WorkSheetData WS_SizeSheet = +{ + WS_TEXT, + &WS_Revision, + BLOCK_SIZE_SHEET_X,BLOCK_SIZE_SHEET_Y, + 0, 0, + wxT( "Size: %Z" ) // Paper format name +}; + +Ki_WorkSheetData WS_IdentSheet = +{ + WS_TEXT, + &WS_SizeSheet, + BLOCK_ID_SHEET_X,BLOCK_ID_SHEET_Y, + 0, 0, + wxT( "Id: %S/%N" ) +}; + +Ki_WorkSheetData WS_Title = +{ + WS_TEXT, + &WS_IdentSheet, + BLOCK_TITLE_X, BLOCK_TITLE_Y, + 0, 0, + wxT( "Title: %T" ), + USE_BOLD +}; + +Ki_WorkSheetData WS_SheetFilename = +{ + WS_TEXT, + &WS_Title, + BLOCK_FILENAME_X, BLOCK_FILENAME_Y, + 0, 0, + wxT( "File: %F" ) +}; + +Ki_WorkSheetData WS_FullSheetName = +{ + WS_TEXT, + &WS_SheetFilename, + BLOCK_FULLSHEETNAME_X,BLOCK_FULLSHEETNAME_Y, + 0, + 0, + wxT( "Sheet: %P" ) // Full sheet name (sheet path) +}; + +Ki_WorkSheetData WS_Company = +{ + WS_TEXT, + &WS_FullSheetName, + BLOCK_COMMENT_X,BLOCK_COMPANY_Y, + 0, 0, + wxT("%N"), // Company name + USE_BOLD | SET_UPPER_LIMIT | USE_TEXT_COLOR +}; + +Ki_WorkSheetData WS_Comment1 = +{ + WS_TEXT, + &WS_Company, + BLOCK_COMMENT_X,BLOCK_COMMENT1_Y, + 0, 0, + wxT("%C1"), // Comment 1 + SET_UPPER_LIMIT | USE_TEXT_COLOR +}; + +Ki_WorkSheetData WS_Comment2 = +{ + WS_TEXT, + &WS_Comment1, + BLOCK_COMMENT_X,BLOCK_COMMENT2_Y, + 0, 0, + wxT("%C2"), // Comment 2 + SET_UPPER_LIMIT | USE_TEXT_COLOR +}; + +Ki_WorkSheetData WS_Comment3 = +{ + WS_TEXT, + &WS_Comment2, + BLOCK_COMMENT_X,BLOCK_COMMENT3_Y, + 0, 0, + wxT("%C3"), // Comment 3 + SET_UPPER_LIMIT | USE_TEXT_COLOR +}; + +Ki_WorkSheetData WS_Comment4 = +{ + WS_TEXT, + &WS_Comment3, + BLOCK_COMMENT_X, BLOCK_COMMENT4_Y, + 0, 0, + wxT("%C4"), // Comment 4 + SET_UPPER_LIMIT | USE_TEXT_COLOR +}; + + +// horizontal segment above COMPANY NAME +Ki_WorkSheetData WS_Segm3 = +{ + WS_SEGMENT, + &WS_Comment4, + BLOCK_OX, TEXTSIZE * 6, + 0, TEXTSIZE * 6, + NULL +}; + + +// vertical segment of the left REV and SHEET +Ki_WorkSheetData WS_Segm4 = +{ + WS_SEGMENT, + &WS_Segm3, + BLOCK_REV_X + TEXTSIZE,TEXTSIZE * 4, + BLOCK_REV_X + TEXTSIZE, 0, + NULL +}; + + +Ki_WorkSheetData WS_Segm5 = +{ + WS_SEGMENT, + &WS_Segm4, + BLOCK_OX, TEXTSIZE * 2, + 0, TEXTSIZE * 2, + NULL +}; + + +Ki_WorkSheetData WS_Segm6 = +{ + WS_SEGMENT, + &WS_Segm5, + BLOCK_OX, TEXTSIZE * 4, + 0, TEXTSIZE * 4, + NULL +}; + + +Ki_WorkSheetData WS_Segm7 = +{ + WS_SEGMENT, + &WS_Segm6, + BLOCK_OX - (TEXTSIZE * 11),TEXTSIZE * 4, + BLOCK_OX - (TEXTSIZE * 11),TEXTSIZE * 2, + NULL +}; + +#include + +// Helper function which returns the text corresponding to the aIdent identifier +static wxString BuildFullText( const wxString& aTextbase, + const TITLE_BLOCK& aTitleBlock, + const wxString& aPaperFormat, + const wxString& aFileName, + const wxString& aSheetPathHumanReadable, + int aSheetCount, int aSheetNumber ); + + +void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( + const wxString& aPaperFormat, + const wxString& aFileName, + const wxString& aSheetPathHumanReadable, + const TITLE_BLOCK& aTitleBlock, + EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor ) +{ + wxSize textsize( TEXTSIZE * m_milsToIu, TEXTSIZE * m_milsToIu ); + wxSize size_ref( FRMREF_TXTSIZE * m_milsToIu, + FRMREF_TXTSIZE * m_milsToIu ); + wxString msg; + + // Left top corner position + wxPoint lt_corner; + lt_corner.x = m_LTmargin.x; + lt_corner.y = m_LTmargin.y; + + // Right bottom corner position + wxPoint rb_corner; + rb_corner.x = m_pageSize.x - m_RBmargin.x; + rb_corner.y = m_pageSize.y - m_RBmargin.y; + + // Draw the border. + int ii, jj, ipas, gxpas, gypas; + + wxPoint pos = lt_corner; + wxPoint end = rb_corner; + for( ii = 0; ii < 2; ii++ ) + { + Append( new WS_DRAW_ITEM_RECT( + wxPoint( pos.x * m_milsToIu, pos.y * m_milsToIu ), + wxPoint( end.x * m_milsToIu, end.y * m_milsToIu ), + m_penSize, aLineColor ) ); + + pos.x += GRID_REF_W; + pos.y += GRID_REF_W; + end.x -= GRID_REF_W; + end.y -= GRID_REF_W; + } + + ipas = ( rb_corner.x - lt_corner.x ) / PAS_REF; + gxpas = ( rb_corner.x - lt_corner.x ) / ipas; + + for( ii = lt_corner.x + gxpas, jj = 1; ipas > 0; ii += gxpas, jj++, ipas-- ) + { + msg.Printf( wxT( "%d" ), jj ); + + if( ii < rb_corner.x - PAS_REF / 2 ) + { + Append( new WS_DRAW_ITEM_LINE( + wxPoint( ii * m_milsToIu, lt_corner.y * m_milsToIu ), + wxPoint( ii * m_milsToIu, ( lt_corner.y + GRID_REF_W ) * m_milsToIu ), + m_penSize, aLineColor ) ); + } + + Append( new WS_DRAW_ITEM_TEXT( msg, + wxPoint( ( ii - gxpas / 2 ) * m_milsToIu, + ( lt_corner.y + GRID_REF_W / 2 ) * m_milsToIu ), + size_ref, m_penSize, aLineColor ) ); + + if( ii < rb_corner.x - PAS_REF / 2 ) + { + Append( new WS_DRAW_ITEM_LINE( + wxPoint( ii * m_milsToIu, rb_corner.y * m_milsToIu ), + wxPoint( ii * m_milsToIu, (rb_corner.y - GRID_REF_W ) * m_milsToIu ), + m_penSize, aLineColor ) ); + } + + Append( new WS_DRAW_ITEM_TEXT( msg, + wxPoint( ( ii - gxpas / 2 ) * m_milsToIu, + ( rb_corner.y - GRID_REF_W / 2) * m_milsToIu ), + size_ref, m_penSize, aLineColor ) ); + } + + ipas = ( rb_corner.y - lt_corner.y ) / PAS_REF; + gypas = ( rb_corner.y - lt_corner.y ) / ipas; + + for( ii = lt_corner.y + gypas, jj = 0; ipas > 0; ii += gypas, jj++, ipas-- ) + { + if( jj < 26 ) + msg.Printf( wxT( "%c" ), jj + 'A' ); + else // I hope 52 identifiers are enough... + msg.Printf( wxT( "%c" ), 'a' + jj - 26 ); + + if( ii < rb_corner.y - PAS_REF / 2 ) + { + Append( new WS_DRAW_ITEM_LINE( + wxPoint( lt_corner.x * m_milsToIu, ii * m_milsToIu ), + wxPoint( ( lt_corner.x + GRID_REF_W ) * m_milsToIu, ii * m_milsToIu ), + m_penSize, aLineColor ) ); + } + + Append( new WS_DRAW_ITEM_TEXT( msg, + wxPoint( ( lt_corner.x + GRID_REF_W / 2 ) * m_milsToIu, + ( ii - gypas / 2 ) * m_milsToIu ), + size_ref, m_penSize, aLineColor ) ); + + if( ii < rb_corner.y - PAS_REF / 2 ) + { + Append( new WS_DRAW_ITEM_LINE( + wxPoint( rb_corner.x * m_milsToIu, ii * m_milsToIu ), + wxPoint( ( rb_corner.x - GRID_REF_W ) * m_milsToIu, ii * m_milsToIu ), + m_penSize, aLineColor ) ); + } + + Append( new WS_DRAW_ITEM_TEXT( msg, + wxPoint( ( rb_corner.x - GRID_REF_W / 2 ) * m_milsToIu, + ( ii - gxpas / 2 ) * m_milsToIu ), + size_ref, m_penSize, aLineColor ) ); + } + + int upperLimit = VARIABLE_BLOCK_START_POSITION; + rb_corner.x -= GRID_REF_W; + rb_corner.y -= GRID_REF_W; + + WS_DRAW_ITEM_TEXT* gtext; + Ki_WorkSheetData* WsItem; + int pensize; + bool bold; + bool italic = false; + EDA_COLOR_T color; + + for( WsItem = &WS_Segm7; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (rb_corner.x - WsItem->m_Posx) * m_milsToIu; + pos.y = (rb_corner.y - WsItem->m_Posy) * m_milsToIu; + + msg.Empty(); + + if( WsItem->m_Type == WS_TEXT && WsItem->m_TextBase ) + msg = BuildFullText( WsItem->m_TextBase, aTitleBlock, aPaperFormat, aFileName, + aSheetPathHumanReadable, m_sheetCount, m_sheetNumber ); + + switch( WsItem->m_Type ) + { + case WS_TEXT: + if( msg.IsEmpty() ) + break; + bold = false; + pensize = m_penSize; + color = aLineColor; + if( WsItem->m_Flags & USE_TEXT_COLOR ) + color = aTextColor; + + if( WsItem->m_Flags & USE_BOLD ) + { + bold = true; + pensize = GetPenSizeForBold( std::min( textsize.x, textsize.y ) ); + } + Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, textsize, + pensize, color, italic, bold ) ); + gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); + + if( WsItem->m_Flags & SET_UPPER_LIMIT ) + upperLimit = std::max( upperLimit, WsItem->m_Posy + TEXTSIZE ); + break; + + case WS_UPPER_SEGMENT: + + if( upperLimit == 0 ) + break; + + case WS_LEFT_SEGMENT: + WS_MostUpperLine.m_Posy = upperLimit; + WS_MostUpperLine.m_Endy = upperLimit; + WS_MostLeftLine.m_Posy = upperLimit; + pos.y = (rb_corner.y - WsItem->m_Posy) * m_milsToIu; + + case WS_SEGMENT: + end.x = rb_corner.x - WsItem->m_Endx; + end.y = rb_corner.y - WsItem->m_Endy; + Append( new WS_DRAW_ITEM_LINE( pos, + wxPoint( end.x * m_milsToIu, end.y * m_milsToIu ), + m_penSize, aLineColor ) ); + break; + } + } +} + +// returns the full text corresponding to the aTextbase, +// after replacing format symbols by the corresponding value +wxString BuildFullText( const wxString& aTextbase, + const TITLE_BLOCK& aTitleBlock, + const wxString& aPaperFormat, + const wxString& aFileName, + const wxString& aSheetPathHumanReadable, + int aSheetCount, int aSheetNumber ) +{ + wxString msg; + + /* Known formats + * %% = replaced by % + * %K = Kicad version + * %Z = paper format name (A4, USLetter) + * %N = company name + * %D = date + * %R = revision + * %S = sheet number + * %N = number of sheets + * %Cx = comment (x = 0 to 9 to identify the comment) + * %F = filename + * %P = sheet path or sheet full name + * %T = title + */ + + for( unsigned ii = 0; ii < aTextbase.Len(); ii++ ) + { + if( aTextbase[ii] != '%' ) + { + msg << aTextbase[ii]; + continue; + } + ii++; + if( ii >= aTextbase.Len() ) + break; + + wxChar format = aTextbase[ii++]; + switch( format ) + { + case '%': + msg += '%'; + break; + + case 'D': + msg += aTitleBlock.GetDate(); + break; + + case 'R': + msg += aTitleBlock.GetRevision(); + break; + + case 'K': + msg += g_ProductName + wxGetApp().GetAppName(); + msg += wxT( " " ) + GetBuildVersion(); + break; + + case 'Z': + msg += aPaperFormat; + break; + + + case 'S': + msg << aSheetNumber; + break; + + case 'F': + { + wxFileName fn( aFileName ); + msg += fn.GetFullName(); + } + break; + + case 'P': + msg += aSheetPathHumanReadable; + break; + + case 'N': + msg = aTitleBlock.GetCompany(); + break; + + case 'T': + msg += aTitleBlock.GetTitle(); + break; + + case 'C': + format = aTextbase[ii++]; + switch( format ) + { + case '1': + msg += aTitleBlock.GetComment1(); + break; + + case '2': + msg += aTitleBlock.GetComment2(); + break; + + case '3': + msg += aTitleBlock.GetComment3(); + break; + + case '4': + msg += aTitleBlock.GetComment4(); + break; + + default: + break; + } + + default: + break; + } + } + + return msg; +} diff --git a/common/title_block_shapes.h b/common/title_block_shapes.h deleted file mode 100644 index 46b348d9a7..0000000000 --- a/common/title_block_shapes.h +++ /dev/null @@ -1,584 +0,0 @@ -/** - * @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 . - * 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 - */ - - -#define GRID_REF_W 70 // height of the band reference grid -#define TEXTSIZE 60 // worksheet text size -#define FRMREF_TXTSIZE 50 // worksheet frame reference text size -#define VARIABLE_BLOCK_START_POSITION (TEXTSIZE * 10) - -// 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 - TEXTSIZE -#define BLOCK_KICAD_VERSION_Y TEXTSIZE -#define BLOCK_REV_X 820 -#define BLOCK_REV_Y (TEXTSIZE * 3) -#define BLOCK_DATE_X BLOCK_OX - (TEXTSIZE * 15) -#define BLOCK_DATE_Y (TEXTSIZE * 3) -#define BLOCK_ID_SHEET_X 820 -#define BLOCK_ID_SHEET_Y TEXTSIZE -#define BLOCK_SIZE_SHEET_X BLOCK_OX - TEXTSIZE -#define BLOCK_SIZE_SHEET_Y (TEXTSIZE * 3) -#define BLOCK_TITLE_X BLOCK_OX - TEXTSIZE -#define BLOCK_TITLE_Y (TEXTSIZE * 5) -#define BLOCK_FULLSHEETNAME_X BLOCK_OX - TEXTSIZE -#define BLOCK_FULLSHEETNAME_Y (TEXTSIZE * 7) -#define BLOCK_FILENAME_X BLOCK_OX - TEXTSIZE -#define BLOCK_FILENAME_Y (TEXTSIZE * 9) -#define BLOCK_COMMENT_X BLOCK_OX - TEXTSIZE -#define BLOCK_COMPANY_Y (TEXTSIZE * 11) -#define BLOCK_COMMENT1_Y (TEXTSIZE * 13) -#define BLOCK_COMMENT2_Y (TEXTSIZE * 15) -#define BLOCK_COMMENT3_Y (TEXTSIZE * 17) -#define BLOCK_COMMENT4_Y (TEXTSIZE * 19) - -// Work sheet structure type definitions. -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 -}; - - -// superior horizontal segment: should be after comments -// to know the exact position -Ki_WorkSheetData WS_MostUpperLine = -{ - WS_UPPER_SEGMENT, - NULL, - BLOCK_OX, TEXTSIZE * 16, - 0, TEXTSIZE * 16, - NULL, NULL -}; - -// Left vertical segment: should be after comments -// to know the exact position -Ki_WorkSheetData WS_MostLeftLine = -{ - WS_LEFT_SEGMENT, - &WS_MostUpperLine, - BLOCK_OX, TEXTSIZE * 16, - BLOCK_OX, 0, - NULL, NULL -}; - -// horizontal segment between filename and comments -Ki_WorkSheetData WS_SeparatorLine = -{ - WS_SEGMENT, - &WS_MostLeftLine, - BLOCK_OX, VARIABLE_BLOCK_START_POSITION, - 0, VARIABLE_BLOCK_START_POSITION, - NULL, NULL -}; - -Ki_WorkSheetData WS_Date = -{ - WS_DATE, - &WS_SeparatorLine, - BLOCK_DATE_X, BLOCK_DATE_Y, - 0, 0, - wxT( "Date: " ),NULL -}; - -Ki_WorkSheetData WS_Licence = -{ - WS_KICAD_VERSION, - &WS_Date, - BLOCK_KICAD_VERSION_X,BLOCK_KICAD_VERSION_Y, - 0, - 0, - NULL, NULL -}; - -Ki_WorkSheetData WS_Revision = -{ - WS_REV, - &WS_Licence, - BLOCK_REV_X, BLOCK_REV_Y, - 0, 0, - wxT( "Rev: " ),NULL -}; - -Ki_WorkSheetData WS_SizeSheet = -{ - WS_SIZESHEET, - &WS_Revision, - BLOCK_SIZE_SHEET_X,BLOCK_SIZE_SHEET_Y, - 0, 0, - wxT( "Size: " ), NULL -}; - -Ki_WorkSheetData WS_IdentSheet = -{ - WS_IDENTSHEET, - &WS_SizeSheet, - BLOCK_ID_SHEET_X,BLOCK_ID_SHEET_Y, - 0, 0, - wxT( "Id: " ), NULL -}; - -Ki_WorkSheetData WS_Title = -{ - WS_TITLE, - &WS_IdentSheet, - BLOCK_TITLE_X, BLOCK_TITLE_Y, - 0, 0, - wxT( "Title: " ), NULL -}; - -Ki_WorkSheetData WS_SheetFilename = -{ - WS_FILENAME, - &WS_Title, - BLOCK_FILENAME_X, BLOCK_FILENAME_Y, - 0, 0, - wxT( "File: " ), NULL -}; - -Ki_WorkSheetData WS_FullSheetName = -{ - WS_FULLSHEETNAME, - &WS_SheetFilename, - BLOCK_FULLSHEETNAME_X,BLOCK_FULLSHEETNAME_Y, - 0, - 0, - wxT( "Sheet: " ), NULL -}; - -Ki_WorkSheetData WS_Company = -{ - WS_COMPANY_NAME, - &WS_FullSheetName, - BLOCK_COMMENT_X,BLOCK_COMPANY_Y, - 0, 0, - NULL, NULL -}; - -Ki_WorkSheetData WS_Comment1 = -{ - WS_COMMENT1, - &WS_Company, - BLOCK_COMMENT_X,BLOCK_COMMENT1_Y, - 0, 0, - NULL, NULL -}; - -Ki_WorkSheetData WS_Comment2 = -{ - WS_COMMENT2, - &WS_Comment1, - BLOCK_COMMENT_X,BLOCK_COMMENT2_Y, - 0, 0, - NULL, NULL -}; - -Ki_WorkSheetData WS_Comment3 = -{ - WS_COMMENT3, - &WS_Comment2, - BLOCK_COMMENT_X,BLOCK_COMMENT3_Y, - 0, 0, - NULL, NULL -}; - -Ki_WorkSheetData WS_Comment4 = -{ - WS_COMMENT4, - &WS_Comment3, - BLOCK_COMMENT_X, BLOCK_COMMENT4_Y, - 0, 0, - NULL, NULL -}; - - -// horizontal segment above COMPANY NAME -Ki_WorkSheetData WS_Segm3 = -{ - WS_SEGMENT, - &WS_Comment4, - BLOCK_OX, TEXTSIZE * 6, - 0, TEXTSIZE * 6, - NULL, NULL -}; - - -// vertical segment of the left REV and SHEET -Ki_WorkSheetData WS_Segm4 = -{ - WS_SEGMENT, - &WS_Segm3, - BLOCK_REV_X + TEXTSIZE,TEXTSIZE * 4, - BLOCK_REV_X + TEXTSIZE, 0, - NULL, NULL -}; - - -Ki_WorkSheetData WS_Segm5 = -{ - WS_SEGMENT, - &WS_Segm4, - BLOCK_OX, TEXTSIZE * 2, - 0, TEXTSIZE * 2, - NULL, NULL -}; - - -Ki_WorkSheetData WS_Segm6 = -{ - WS_SEGMENT, - &WS_Segm5, - BLOCK_OX, TEXTSIZE * 4, - 0, TEXTSIZE * 4, - NULL, NULL -}; - - -Ki_WorkSheetData WS_Segm7 = -{ - WS_SEGMENT, - &WS_Segm6, - BLOCK_OX - (TEXTSIZE * 11),TEXTSIZE * 4, - BLOCK_OX - (TEXTSIZE * 11),TEXTSIZE * 2, - NULL, NULL -}; - -#include - -// Helper function which returns the text corresponding to the aIdent identifier -static wxString FindUserText( int aIdent, const TITLE_BLOCK& aTitleBlock, - const wxString& aPaperFormat, - const wxString& aFileName, - const wxString& aSheetPathHumanReadable, - int aSheetCount, int aSheetNumber ); - - -void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( - const wxString& aPaperFormat, - const wxString& aFileName, - const wxString& aSheetPathHumanReadable, - const TITLE_BLOCK& aTitleBlock, - int aSheetCount, int aSheetNumber, - EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor ) -{ - wxPoint pos; - wxSize textsize( TEXTSIZE * m_milsToIu, TEXTSIZE * m_milsToIu ); - wxSize size_ref( FRMREF_TXTSIZE * m_milsToIu, - FRMREF_TXTSIZE * m_milsToIu ); - wxString msg; - - // Upper left corner - int refx = m_LTmargin.x; - int refy = m_LTmargin.y; - - // lower right corner - wxPoint currpos; - currpos.x = m_pageSize.x - m_RBmargin.x; - currpos.y = m_pageSize.y - m_RBmargin.y; - - // Draw the border. - int ii, jj, ipas, gxpas, gypas; - - for( ii = 0; ii < 2; ii++ ) - { - Append( new WS_DRAW_ITEM_RECT( - wxPoint( refx * m_milsToIu, refy * m_milsToIu ), - wxPoint( currpos.x * m_milsToIu, currpos.y * m_milsToIu ), - m_penSize, aLineColor ) ); - - refx += GRID_REF_W; - refy += GRID_REF_W; - currpos.x -= GRID_REF_W; - currpos.y -= GRID_REF_W; - } - - // Upper left corner - refx = m_LTmargin.x; - refy = m_LTmargin.y; - - // lower right corner - currpos.x = m_pageSize.x - m_RBmargin.x; - currpos.y = m_pageSize.y - m_RBmargin.y; - - ipas = ( currpos.x - refx ) / PAS_REF; - gxpas = ( currpos.x - refx ) / ipas; - - for( ii = refx + gxpas, jj = 1; ipas > 0; ii += gxpas, jj++, ipas-- ) - { - msg.Printf( wxT( "%d" ), jj ); - - if( ii < currpos.x - PAS_REF / 2 ) - { - Append( new WS_DRAW_ITEM_LINE( - wxPoint( ii * m_milsToIu, refy * m_milsToIu ), - wxPoint( ii * m_milsToIu, ( refy + GRID_REF_W ) * m_milsToIu ), - m_penSize, aLineColor ) ); - } - - Append( new WS_DRAW_ITEM_TEXT( msg, - wxPoint( ( ii - gxpas / 2 ) * m_milsToIu, - ( refy + GRID_REF_W / 2 ) * m_milsToIu ), - size_ref, m_penSize, aLineColor ) ); - - if( ii < currpos.x - PAS_REF / 2 ) - { - Append( new WS_DRAW_ITEM_LINE( - wxPoint( ii * m_milsToIu, currpos.y * m_milsToIu ), - wxPoint( ii * m_milsToIu, (currpos.y - GRID_REF_W ) * m_milsToIu ), - m_penSize, aLineColor ) ); - } - - Append( new WS_DRAW_ITEM_TEXT( msg, - wxPoint( ( ii - gxpas / 2 ) * m_milsToIu, - ( currpos.y - GRID_REF_W / 2) * m_milsToIu ), - size_ref, m_penSize, aLineColor ) ); - } - - ipas = ( currpos.y - refy ) / PAS_REF; - gypas = ( currpos.y - refy ) / ipas; - - for( ii = refy + gypas, jj = 0; ipas > 0; ii += gypas, jj++, ipas-- ) - { - if( jj < 26 ) - msg.Printf( wxT( "%c" ), jj + 'A' ); - else // I hope 52 identifiers are enough... - msg.Printf( wxT( "%c" ), 'a' + jj - 26 ); - - if( ii < currpos.y - PAS_REF / 2 ) - { - Append( new WS_DRAW_ITEM_LINE( - wxPoint( refx * m_milsToIu, ii * m_milsToIu ), - wxPoint( ( refx + GRID_REF_W ) * m_milsToIu, ii * m_milsToIu ), - m_penSize, aLineColor ) ); - } - - Append( new WS_DRAW_ITEM_TEXT( msg, - wxPoint( ( refx + GRID_REF_W / 2 ) * m_milsToIu, - ( ii - gypas / 2 ) * m_milsToIu ), - size_ref, m_penSize, aLineColor ) ); - - if( ii < currpos.y - PAS_REF / 2 ) - { - Append( new WS_DRAW_ITEM_LINE( - wxPoint( currpos.x * m_milsToIu, ii * m_milsToIu ), - wxPoint( ( currpos.x - GRID_REF_W ) * m_milsToIu, ii * m_milsToIu ), - m_penSize, aLineColor ) ); - } - - Append( new WS_DRAW_ITEM_TEXT( msg, - wxPoint( ( currpos.x - GRID_REF_W / 2 ) * m_milsToIu, - ( ii - gxpas / 2 ) * m_milsToIu ), - size_ref, m_penSize, aLineColor ) ); - } - - int UpperLimit = VARIABLE_BLOCK_START_POSITION; - refx = m_pageSize.x - m_RBmargin.x - GRID_REF_W; - refy = m_pageSize.y - m_RBmargin.y - GRID_REF_W; - - WS_DRAW_ITEM_TEXT* gtext; - Ki_WorkSheetData* WsItem; - int boldPenSize; - - for( WsItem = &WS_Segm7; WsItem != NULL; WsItem = WsItem->Pnext ) - { - pos.x = (refx - WsItem->m_Posx) * m_milsToIu; - pos.y = (refy - WsItem->m_Posy) * m_milsToIu; - - msg.Empty(); - - if( WsItem->m_Legende ) - msg = WsItem->m_Legende; - msg += FindUserText( WsItem->m_Type, aTitleBlock, aPaperFormat, aFileName, - aSheetPathHumanReadable, aSheetCount, aSheetNumber ); - - switch( WsItem->m_Type ) - { - case WS_REV: - case WS_TITLE: - boldPenSize = GetPenSizeForBold( std::min( textsize.x, textsize.y ) ); - Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, textsize, boldPenSize, - aTextColor, false, true ) ); - gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); - break; - - case WS_KICAD_VERSION: - case WS_SIZESHEET: - case WS_IDENTSHEET: - case WS_FILENAME: - case WS_FULLSHEETNAME: - case WS_DATE: - Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, textsize, - m_penSize, aLineColor ) ); - gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); - break; - - case WS_COMPANY_NAME: - if( !msg.IsEmpty() ) - { - boldPenSize = GetPenSizeForBold( std::min( textsize.x, textsize.y ) ); - Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, textsize ,boldPenSize, - aTextColor, false, true ) ); - gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); - UpperLimit = std::max( UpperLimit, WsItem->m_Posy + TEXTSIZE ); - } - - break; - - case WS_COMMENT1: - case WS_COMMENT2: - case WS_COMMENT3: - case WS_COMMENT4: - if( !msg.IsEmpty() ) - { - Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, textsize, - m_penSize, aTextColor ) ); - gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); - UpperLimit = std::max( UpperLimit, WsItem->m_Posy + TEXTSIZE ); - } - - 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) * m_milsToIu; - - case WS_SEGMENT: - currpos.x = m_pageSize.x - GRID_REF_W - m_RBmargin.x - WsItem->m_Endx; - currpos.y = m_pageSize.y - GRID_REF_W - m_RBmargin.y - WsItem->m_Endy; - Append( new WS_DRAW_ITEM_LINE( pos, - wxPoint( currpos.x * m_milsToIu, currpos.y * m_milsToIu ), - m_penSize, aLineColor ) ); - break; - } - } -} - -// returns the text corresponding to the aIdent identifier -wxString FindUserText( int aIdent, const TITLE_BLOCK& aTitleBlock, - const wxString& aPaperFormat, - const wxString& aFileName, - const wxString& aSheetPathHumanReadable, - int aSheetCount, int aSheetNumber ) -{ - wxString msg; - - switch( aIdent ) - { - case WS_DATE: - msg = aTitleBlock.GetDate(); - break; - - case WS_REV: - msg = aTitleBlock.GetRevision(); - break; - - case WS_KICAD_VERSION: - msg = g_ProductName + wxGetApp().GetAppName(); - msg += wxT( " " ) + GetBuildVersion(); - break; - - case WS_SIZESHEET: - msg = aPaperFormat; - break; - - - case WS_IDENTSHEET: - msg << aSheetNumber << wxT( "/" ) << aSheetCount; - break; - - case WS_FILENAME: - { - wxFileName fn( aFileName ); - msg = fn.GetFullName(); - } - break; - - case WS_FULLSHEETNAME: - msg = aSheetPathHumanReadable; - break; - - case WS_COMPANY_NAME: - msg = aTitleBlock.GetCompany(); - break; - - case WS_TITLE: - msg = aTitleBlock.GetTitle(); - break; - - case WS_COMMENT1: - msg = aTitleBlock.GetComment1(); - break; - - case WS_COMMENT2: - msg = aTitleBlock.GetComment2(); - break; - - case WS_COMMENT3: - msg = aTitleBlock.GetComment3(); - break; - - case WS_COMMENT4: - msg = aTitleBlock.GetComment4(); - break; - - default: - break; - } - - return msg; -} diff --git a/common/title_block_shapes_gost.h b/common/title_block_shapes_gost.cpp similarity index 91% rename from common/title_block_shapes_gost.h rename to common/title_block_shapes_gost.cpp index dd8629f797..2b467a5826 100644 --- a/common/title_block_shapes_gost.h +++ b/common/title_block_shapes_gost.cpp @@ -5,9 +5,7 @@ */ /* - * 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 to define the shape of a title block + * This file creates a lot of structures to define the shape of a title block * and frame references */ @@ -35,6 +33,14 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ +#include +#include +#include +#include +#include +#include +#include + #define TEXTSIZE 100 // worksheet text size // Work sheet structure type definitions. @@ -150,7 +156,7 @@ Ki_WorkSheetData WS_Osn1_Line1 = &WS_Osn1_Line2, Mm2mils( 185 ),Mm2mils( 55 ), 0, Mm2mils( 55 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line2 = @@ -159,7 +165,7 @@ Ki_WorkSheetData WS_Osn1_Line2 = &WS_Osn1_Line3, Mm2mils( 120 ),Mm2mils( 40 ), 0, Mm2mils( 40 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line3 = @@ -168,7 +174,7 @@ Ki_WorkSheetData WS_Osn1_Line3 = &WS_Osn1_Line4, Mm2mils( 185 ),Mm2mils( 35 ), Mm2mils( 120 ),Mm2mils( 35 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line4 = @@ -177,7 +183,7 @@ Ki_WorkSheetData WS_Osn1_Line4 = &WS_Osn1_Line5, Mm2mils( 50 ), Mm2mils( 35 ), 0, Mm2mils( 35 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line5 = @@ -186,7 +192,7 @@ Ki_WorkSheetData WS_Osn1_Line5 = &WS_Osn1_Line6, Mm2mils( 185 ),Mm2mils( 30 ), Mm2mils( 120 ),Mm2mils( 30 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line6 = @@ -195,7 +201,7 @@ Ki_WorkSheetData WS_Osn1_Line6 = &WS_Osn1_Line7, Mm2mils( 50 ), Mm2mils( 20 ), 0, Mm2mils( 20 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line7 = @@ -204,7 +210,7 @@ Ki_WorkSheetData WS_Osn1_Line7 = &WS_Osn1_Line8, Mm2mils( 120 ),Mm2mils( 15 ), 0, Mm2mils( 15 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line8 = @@ -213,7 +219,7 @@ Ki_WorkSheetData WS_Osn1_Line8 = &WS_Osn1_Line9, Mm2mils( 185 ),Mm2mils( 55 ), Mm2mils( 185 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line9 = @@ -222,7 +228,7 @@ Ki_WorkSheetData WS_Osn1_Line9 = &WS_Osn1_Line10, Mm2mils( 178 ), Mm2mils( 55 ), Mm2mils( 178 ), Mm2mils( 30 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line10 = @@ -231,7 +237,7 @@ Ki_WorkSheetData WS_Osn1_Line10 = &WS_Osn1_Line11, Mm2mils( 168 ), Mm2mils( 55 ), Mm2mils( 168 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line11 = @@ -240,7 +246,7 @@ Ki_WorkSheetData WS_Osn1_Line11 = &WS_Osn1_Line12, Mm2mils( 145 ), Mm2mils( 55 ), Mm2mils( 145 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line12 = @@ -249,7 +255,7 @@ Ki_WorkSheetData WS_Osn1_Line12 = &WS_Osn1_Line13, Mm2mils( 130 ), Mm2mils( 55 ), Mm2mils( 130 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line13 = @@ -258,7 +264,7 @@ Ki_WorkSheetData WS_Osn1_Line13 = &WS_Osn1_Line14, Mm2mils( 120 ), Mm2mils( 55 ), Mm2mils( 120 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line14 = @@ -267,7 +273,7 @@ Ki_WorkSheetData WS_Osn1_Line14 = &WS_Osn1_Line15, Mm2mils( 50 ), Mm2mils( 40 ), Mm2mils( 50 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line15 = @@ -276,7 +282,7 @@ Ki_WorkSheetData WS_Osn1_Line15 = &WS_Osn1_Line16, Mm2mils( 35 ), Mm2mils( 40 ), Mm2mils( 35 ), Mm2mils( 20 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line16 = @@ -285,7 +291,7 @@ Ki_WorkSheetData WS_Osn1_Line16 = &WS_Osn1_Line17, Mm2mils( 30 ), Mm2mils( 20 ), Mm2mils( 30 ), Mm2mils( 15 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line17 = @@ -294,7 +300,7 @@ Ki_WorkSheetData WS_Osn1_Line17 = &WS_Osn1_Line18, Mm2mils( 18 ), Mm2mils( 40 ), Mm2mils( 18 ), Mm2mils( 20 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line18 = @@ -303,7 +309,7 @@ Ki_WorkSheetData WS_Osn1_Line18 = &WS_Osn1_Line19, Mm2mils( 185 ), Mm2mils( 50 ), Mm2mils( 120 ), Mm2mils( 50 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line19 = @@ -312,7 +318,7 @@ Ki_WorkSheetData WS_Osn1_Line19 = &WS_Osn1_Line20, Mm2mils( 185 ), Mm2mils( 45 ), Mm2mils( 120 ), Mm2mils( 45 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line20 = @@ -321,7 +327,7 @@ Ki_WorkSheetData WS_Osn1_Line20 = &WS_Osn1_Line21, Mm2mils( 185 ), Mm2mils( 40 ), Mm2mils( 120 ), Mm2mils( 40 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line21 = @@ -330,7 +336,7 @@ Ki_WorkSheetData WS_Osn1_Line21 = &WS_Osn1_Line22, Mm2mils( 185 ), Mm2mils( 25 ), Mm2mils( 120 ), Mm2mils( 25 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line22 = @@ -339,7 +345,7 @@ Ki_WorkSheetData WS_Osn1_Line22 = &WS_Osn1_Line23, Mm2mils( 185 ), Mm2mils( 20 ), Mm2mils( 120 ), Mm2mils( 20 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line23 = @@ -348,7 +354,7 @@ Ki_WorkSheetData WS_Osn1_Line23 = &WS_Osn1_Line24, Mm2mils( 185 ), Mm2mils( 15 ), Mm2mils( 120 ), Mm2mils( 15 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line24 = @@ -357,7 +363,7 @@ Ki_WorkSheetData WS_Osn1_Line24 = &WS_Osn1_Line25, Mm2mils( 185 ), Mm2mils( 10 ), Mm2mils( 120 ), Mm2mils( 10 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line25 = @@ -366,7 +372,7 @@ Ki_WorkSheetData WS_Osn1_Line25 = &WS_Osn1_Line26, Mm2mils( 185 ), Mm2mils( 5 ), Mm2mils( 120 ), Mm2mils( 5 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line26 = @@ -375,7 +381,7 @@ Ki_WorkSheetData WS_Osn1_Line26 = &WS_Osn1_Line27, Mm2mils( 45 ), Mm2mils( 35 ), Mm2mils( 45 ), Mm2mils( 20 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Line27 = @@ -384,7 +390,7 @@ Ki_WorkSheetData WS_Osn1_Line27 = &WS_Osn1_Text1, Mm2mils( 40 ), Mm2mils( 35 ), Mm2mils( 40 ), Mm2mils( 20 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn1_Text1 = @@ -393,7 +399,7 @@ Ki_WorkSheetData WS_Osn1_Text1 = &WS_Osn1_Text2, Mm2mils( 181.5 ),Mm2mils( 32.5 ), 0, 0, - wxT( "Изм." ), NULL + wxT( "Изм." ) }; Ki_WorkSheetData WS_Osn1_Text2 = @@ -402,7 +408,7 @@ Ki_WorkSheetData WS_Osn1_Text2 = &WS_Osn1_Text3, Mm2mils( 184 ), Mm2mils( 27.5 ), 0, 0, - wxT( "Разраб." ),NULL + wxT( "Разраб." ) }; Ki_WorkSheetData WS_Osn1_Text3 = @@ -411,7 +417,7 @@ Ki_WorkSheetData WS_Osn1_Text3 = &WS_Osn1_Text4, Mm2mils( 184 ),Mm2mils( 22.5 ), 0, 0, - wxT( "Пров." ),NULL + wxT( "Пров." ) }; Ki_WorkSheetData WS_Osn1_Text4 = @@ -420,7 +426,7 @@ Ki_WorkSheetData WS_Osn1_Text4 = &WS_Osn1_Text5, Mm2mils( 184 ), Mm2mils( 17.5 ), 0, 0, - wxT( "Т.контр." ),NULL + wxT( "Т.контр." ) }; Ki_WorkSheetData WS_Osn1_Text5 = @@ -429,7 +435,7 @@ Ki_WorkSheetData WS_Osn1_Text5 = &WS_Osn1_Text6, Mm2mils( 184 ), Mm2mils( 7.5 ), 0, 0, - wxT( "Н.контр." ),NULL + wxT( "Н.контр." ) }; Ki_WorkSheetData WS_Osn1_Text6 = @@ -438,7 +444,7 @@ Ki_WorkSheetData WS_Osn1_Text6 = &WS_Osn1_Text7, Mm2mils( 184 ),Mm2mils( 2.5 ), 0, 0, - wxT( "Утв." ), NULL + wxT( "Утв." ) }; Ki_WorkSheetData WS_Osn1_Text7 = @@ -447,7 +453,7 @@ Ki_WorkSheetData WS_Osn1_Text7 = &WS_Osn1_Text8, Mm2mils( 173 ),Mm2mils( 32.5 ), 0, 0, - wxT( "Лист" ), NULL + wxT( "Лист" ) }; Ki_WorkSheetData WS_Osn1_Text8 = @@ -456,7 +462,7 @@ Ki_WorkSheetData WS_Osn1_Text8 = &WS_Osn1_Text9, Mm2mils( 156.5 ), Mm2mils( 32.5 ), 0, 0, - wxT( "N докум." ),NULL + wxT( "N докум." ) }; Ki_WorkSheetData WS_Osn1_Text9 = @@ -465,7 +471,7 @@ Ki_WorkSheetData WS_Osn1_Text9 = &WS_Osn1_Text10, Mm2mils( 137.5 ),Mm2mils( 32.5 ), 0, 0, - wxT( "Подп." ), NULL + wxT( "Подп." ) }; Ki_WorkSheetData WS_Osn1_Text10 = @@ -474,7 +480,7 @@ Ki_WorkSheetData WS_Osn1_Text10 = &WS_Osn1_Text11, Mm2mils( 125 ), Mm2mils( 32.5 ), 0, 0, - wxT( "Дата" ), NULL + wxT( "Дата" ) }; Ki_WorkSheetData WS_Osn1_Text11 = @@ -483,7 +489,7 @@ Ki_WorkSheetData WS_Osn1_Text11 = &WS_Osn1_Text12, Mm2mils( 42.5 ),Mm2mils( 37.5 ), 0, 0, - wxT( "Лит." ), NULL + wxT( "Лит." ) }; Ki_WorkSheetData WS_Osn1_Text12 = @@ -492,7 +498,7 @@ Ki_WorkSheetData WS_Osn1_Text12 = &WS_Osn1_Text13, Mm2mils( 26.5 ),Mm2mils( 37.5 ), 0, 0, - wxT( "Масса" ), NULL + wxT( "Масса" ) }; Ki_WorkSheetData WS_Osn1_Text13 = @@ -501,7 +507,7 @@ Ki_WorkSheetData WS_Osn1_Text13 = &WS_Osn1_Text14, Mm2mils( 9 ), Mm2mils( 37.5 ), 0, 0, - wxT( "Масштаб" ),NULL + wxT( "Масштаб" ) }; Ki_WorkSheetData WS_Osn1_Text14 = @@ -510,7 +516,7 @@ Ki_WorkSheetData WS_Osn1_Text14 = &WS_Osn1_Text15, Mm2mils( 49 ), Mm2mils( 17.5 ), 0, 0, - wxT( "Лист" ), NULL + wxT( "Лист" ) }; Ki_WorkSheetData WS_Osn1_Text15 = @@ -519,7 +525,7 @@ Ki_WorkSheetData WS_Osn1_Text15 = &WS_Osn1_Text16, Mm2mils( 29 ), Mm2mils( 17.5 ), 0, 0, - wxT( "Листов" ),NULL + wxT( "Листов" ) }; Ki_WorkSheetData WS_Osn1_Text16 = @@ -528,7 +534,7 @@ Ki_WorkSheetData WS_Osn1_Text16 = &WS_Osn1_Text17, Mm2mils( 40 ), -Mm2mils( 2.5 ), 0, 0, - wxT( "Формат" ),NULL + wxT( "Формат" ) }; Ki_WorkSheetData WS_Osn1_Text17 = @@ -537,7 +543,7 @@ Ki_WorkSheetData WS_Osn1_Text17 = NULL, Mm2mils( 110 ), -Mm2mils( 2.5 ), 0, 0, - wxT( "Копировал" ),NULL + wxT( "Копировал" ) }; Ki_WorkSheetData WS_Osn2a_Line1 = @@ -546,7 +552,7 @@ Ki_WorkSheetData WS_Osn2a_Line1 = &WS_Osn2a_Line2, Mm2mils( 185 ), Mm2mils( 15 ), 0, Mm2mils( 15 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line2 = @@ -555,7 +561,7 @@ Ki_WorkSheetData WS_Osn2a_Line2 = &WS_Osn2a_Line3, Mm2mils( 185 ), Mm2mils( 5 ), Mm2mils( 120 ), Mm2mils( 5 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line3 = @@ -564,7 +570,7 @@ Ki_WorkSheetData WS_Osn2a_Line3 = &WS_Osn2a_Line4, Mm2mils( 10 ), Mm2mils( 8 ), 0, Mm2mils( 8 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line4 = @@ -573,7 +579,7 @@ Ki_WorkSheetData WS_Osn2a_Line4 = &WS_Osn2a_Line5, Mm2mils( 185 ), Mm2mils( 15 ), Mm2mils( 185 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line5 = @@ -582,7 +588,7 @@ Ki_WorkSheetData WS_Osn2a_Line5 = &WS_Osn2a_Line6, Mm2mils( 178 ), Mm2mils( 15 ), Mm2mils( 178 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line6 = @@ -591,7 +597,7 @@ Ki_WorkSheetData WS_Osn2a_Line6 = &WS_Osn2a_Line7, Mm2mils( 168 ), Mm2mils( 15 ), Mm2mils( 168 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line7 = @@ -600,7 +606,7 @@ Ki_WorkSheetData WS_Osn2a_Line7 = &WS_Osn2a_Line8, Mm2mils( 145 ), Mm2mils( 15 ), Mm2mils( 145 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line8 = @@ -609,7 +615,7 @@ Ki_WorkSheetData WS_Osn2a_Line8 = &WS_Osn2a_Line9, Mm2mils( 130 ), Mm2mils( 15 ), Mm2mils( 130 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line9 = @@ -618,7 +624,7 @@ Ki_WorkSheetData WS_Osn2a_Line9 = &WS_Osn2a_Line10, Mm2mils( 120 ), Mm2mils( 15 ), Mm2mils( 120 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line10 = @@ -627,7 +633,7 @@ Ki_WorkSheetData WS_Osn2a_Line10 = &WS_Osn2a_Line11, Mm2mils( 10 ), Mm2mils( 15 ), Mm2mils( 10 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Line11 = @@ -636,7 +642,7 @@ Ki_WorkSheetData WS_Osn2a_Line11 = &WS_Osn2a_Text1, Mm2mils( 185 ), Mm2mils( 10 ), Mm2mils( 120 ), Mm2mils( 10 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_Osn2a_Text1 = @@ -645,7 +651,7 @@ Ki_WorkSheetData WS_Osn2a_Text1 = &WS_Osn2a_Text2, Mm2mils( 181.5 ),Mm2mils( 2.5 ), 0, 0, - wxT( "Изм." ), NULL + wxT( "Изм." ) }; Ki_WorkSheetData WS_Osn2a_Text2 = @@ -654,7 +660,7 @@ Ki_WorkSheetData WS_Osn2a_Text2 = &WS_Osn2a_Text3, Mm2mils( 173 ), Mm2mils( 2.5 ), 0, 0, - wxT( "Лист" ), NULL + wxT( "Лист" ) }; Ki_WorkSheetData WS_Osn2a_Text3 = @@ -663,7 +669,7 @@ Ki_WorkSheetData WS_Osn2a_Text3 = &WS_Osn2a_Text4, Mm2mils( 156.5 ), Mm2mils( 2.5 ), 0, 0, - wxT( "N докум." ),NULL + wxT( "N докум." ) }; Ki_WorkSheetData WS_Osn2a_Text4 = @@ -672,7 +678,7 @@ Ki_WorkSheetData WS_Osn2a_Text4 = &WS_Osn2a_Text5, Mm2mils( 137.5 ),Mm2mils( 2.5 ), 0, 0, - wxT( "Подп." ), NULL + wxT( "Подп." ) }; Ki_WorkSheetData WS_Osn2a_Text5 = @@ -681,7 +687,7 @@ Ki_WorkSheetData WS_Osn2a_Text5 = &WS_Osn2a_Text6, Mm2mils( 125 ), Mm2mils( 2.5 ), 0, 0, - wxT( "Дата" ), NULL + wxT( "Дата" ) }; Ki_WorkSheetData WS_Osn2a_Text6 = @@ -690,7 +696,7 @@ Ki_WorkSheetData WS_Osn2a_Text6 = &WS_Osn2a_Text7, Mm2mils( 5 ), Mm2mils( 11.5 ), 0, 0, - wxT( "Лист" ), NULL + wxT( "Лист" ) }; Ki_WorkSheetData WS_Osn2a_Text7 = @@ -699,7 +705,7 @@ Ki_WorkSheetData WS_Osn2a_Text7 = &WS_Osn2a_Text8, Mm2mils( 40 ), -Mm2mils( 2.5 ), 0, 0, - wxT( "Формат" ),NULL + wxT( "Формат" ) }; Ki_WorkSheetData WS_Osn2a_Text8 = @@ -708,7 +714,7 @@ Ki_WorkSheetData WS_Osn2a_Text8 = NULL, Mm2mils( 110 ), -Mm2mils( 2.5 ), 0, 0, - wxT( "Копировал" ),NULL + wxT( "Копировал" ) }; // Center - left bottom corner @@ -719,7 +725,7 @@ Ki_WorkSheetData WS_DopLeft_Line1 = &WS_DopLeft_Line2, Mm2mils( 12 ), Mm2mils( 145 ), 0, Mm2mils( 145 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line2 = @@ -728,7 +734,7 @@ Ki_WorkSheetData WS_DopLeft_Line2 = &WS_DopLeft_Line3, Mm2mils( 12 ), Mm2mils( 110 ), 0, Mm2mils( 110 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line3 = @@ -737,7 +743,7 @@ Ki_WorkSheetData WS_DopLeft_Line3 = &WS_DopLeft_Line4, Mm2mils( 12 ), Mm2mils( 85 ), 0, Mm2mils( 85 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line4 = @@ -746,7 +752,7 @@ Ki_WorkSheetData WS_DopLeft_Line4 = &WS_DopLeft_Line5, Mm2mils( 12 ), Mm2mils( 60 ), 0, Mm2mils( 60 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line5 = @@ -755,7 +761,7 @@ Ki_WorkSheetData WS_DopLeft_Line5 = &WS_DopLeft_Line6, Mm2mils( 12 ), Mm2mils( 25 ), 0, Mm2mils( 25 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line6 = @@ -764,7 +770,7 @@ Ki_WorkSheetData WS_DopLeft_Line6 = &WS_DopLeft_Line7, Mm2mils( 12 ), 0, 0, 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line7 = @@ -773,7 +779,7 @@ Ki_WorkSheetData WS_DopLeft_Line7 = &WS_DopLeft_Line8, Mm2mils( 12 ), Mm2mils( 145 ), Mm2mils( 12 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line8 = @@ -782,7 +788,7 @@ Ki_WorkSheetData WS_DopLeft_Line8 = &WS_DopLeft_Text1, Mm2mils( 7 ), Mm2mils( 145 ), Mm2mils( 7 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Text1 = @@ -791,7 +797,7 @@ Ki_WorkSheetData WS_DopLeft_Text1 = &WS_DopLeft_Text2, Mm2mils( 9.5 ), Mm2mils( 12.5 ), 0, 0, - wxT( "Инв.N подл." ),NULL + wxT( "Инв.N подл." ) }; Ki_WorkSheetData WS_DopLeft_Text2 = @@ -800,7 +806,7 @@ Ki_WorkSheetData WS_DopLeft_Text2 = &WS_DopLeft_Text3, Mm2mils( 9.5 ), Mm2mils( 42.5 ), 0, 0, - wxT( "Подп. и дата" ),NULL + wxT( "Подп. и дата" ) }; Ki_WorkSheetData WS_DopLeft_Text3 = @@ -809,7 +815,7 @@ Ki_WorkSheetData WS_DopLeft_Text3 = &WS_DopLeft_Text4, Mm2mils( 9.5 ), Mm2mils( 72.5 ), 0, 0, - wxT( "Взам.инв.N" ),NULL + wxT( "Взам.инв.N" ) }; Ki_WorkSheetData WS_DopLeft_Text4 = @@ -818,7 +824,7 @@ Ki_WorkSheetData WS_DopLeft_Text4 = &WS_DopLeft_Text5, Mm2mils( 9.5 ), Mm2mils( 97.5 ), 0, 0, - wxT( "Инв.N дубл." ),NULL + wxT( "Инв.N дубл." ) }; Ki_WorkSheetData WS_DopLeft_Text5 = @@ -827,7 +833,7 @@ Ki_WorkSheetData WS_DopLeft_Text5 = &WS_DopLeft_Line9, Mm2mils( 9.5 ), Mm2mils( 127.5 ), 0, 0, - wxT( "Подп. и дата" ),NULL + wxT( "Подп. и дата" ) }; Ki_WorkSheetData WS_DopLeft_Line9 = @@ -836,7 +842,7 @@ Ki_WorkSheetData WS_DopLeft_Line9 = &WS_DopLeft_Line10, Mm2mils( 7 ), Mm2mils( 287 ), Mm2mils( 7 ), Mm2mils( 167 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line10 = @@ -845,7 +851,7 @@ Ki_WorkSheetData WS_DopLeft_Line10 = &WS_DopLeft_Line11, Mm2mils( 12 ), Mm2mils( 287 ), Mm2mils( 12 ), Mm2mils( 167 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line11 = @@ -854,7 +860,7 @@ Ki_WorkSheetData WS_DopLeft_Line11 = &WS_DopLeft_Line12, Mm2mils( 12 ), Mm2mils( 287 ), Mm2mils( 12 ), Mm2mils( 167 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line12 = @@ -863,7 +869,7 @@ Ki_WorkSheetData WS_DopLeft_Line12 = &WS_DopLeft_Line13, Mm2mils( 12 ), Mm2mils( 167 ), 0, Mm2mils( 167 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line13 = @@ -872,7 +878,7 @@ Ki_WorkSheetData WS_DopLeft_Line13 = &WS_DopLeft_Line14, Mm2mils( 12 ), Mm2mils( 227 ), 0, Mm2mils( 227 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Line14 = @@ -881,7 +887,7 @@ Ki_WorkSheetData WS_DopLeft_Line14 = &WS_DopLeft_Text6, Mm2mils( 12 ), Mm2mils( 287 ), 0, Mm2mils( 287 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopLeft_Text6 = @@ -890,7 +896,7 @@ Ki_WorkSheetData WS_DopLeft_Text6 = &WS_DopLeft_Text7, Mm2mils( 9.5 ), Mm2mils( 197 ), 0, 0, - wxT( "Справ. N" ),NULL + wxT( "Справ. N" ) }; Ki_WorkSheetData WS_DopLeft_Text7 = @@ -899,7 +905,7 @@ Ki_WorkSheetData WS_DopLeft_Text7 = NULL, Mm2mils( 9.5 ), Mm2mils( 257 ), 0, 0, - wxT( "Перв. примен." ),NULL + wxT( "Перв. примен." ) }; // Center - left top corner @@ -910,7 +916,7 @@ Ki_WorkSheetData WS_DopTop_Line1 = &WS_DopTop_Line2, Mm2mils( 70 ), 0, Mm2mils( 70 ), Mm2mils( 14 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopTop_Line2 = @@ -919,7 +925,7 @@ Ki_WorkSheetData WS_DopTop_Line2 = &WS_DopTop_Line3, Mm2mils( 70 ), Mm2mils( 14 ), 0, Mm2mils( 14 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopTop_Line3 = @@ -928,7 +934,7 @@ Ki_WorkSheetData WS_DopTop_Line3 = &WS_DopTop_Line4, Mm2mils( 70 ), Mm2mils( 14 ), Mm2mils( 137 ), Mm2mils( 14 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopTop_Line4 = @@ -937,7 +943,7 @@ Ki_WorkSheetData WS_DopTop_Line4 = &WS_DopTop_Line5, Mm2mils( 84 ), Mm2mils( 7 ), Mm2mils( 137 ), Mm2mils( 7 ), - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopTop_Line5 = @@ -946,7 +952,7 @@ Ki_WorkSheetData WS_DopTop_Line5 = &WS_DopTop_Line6, Mm2mils( 84 ), Mm2mils( 14 ), Mm2mils( 84 ), 0, - NULL, NULL + NULL }; Ki_WorkSheetData WS_DopTop_Line6 = @@ -955,7 +961,7 @@ Ki_WorkSheetData WS_DopTop_Line6 = NULL, Mm2mils( 137 ),Mm2mils( 14 ), Mm2mils( 137 ), 0, - NULL, NULL + NULL }; #include @@ -965,7 +971,6 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( const wxString& aFileName, const wxString& aSheetPathHumanReadable, const TITLE_BLOCK& aTitleBlock, - int aSheetCount, int aSheetNumber, EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor ) { wxPoint pos; @@ -1005,7 +1010,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( refy = m_pageSize.y - m_RBmargin.y; // First page - if( aSheetNumber == 1 ) + if( m_sheetNumber == 1 ) { for( WsItem = &WS_Osn1_Line1; WsItem != NULL; WsItem = WsItem->Pnext ) { @@ -1013,7 +1018,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( pos.y = (refy - WsItem->m_Posy) * m_milsToIu; end.x = (refx - WsItem->m_Endx) * m_milsToIu; end.y = (refy - WsItem->m_Endy) * m_milsToIu; - msg = WsItem->m_Legende; + msg = WsItem->m_TextBase; switch( WsItem->m_Type ) { @@ -1056,12 +1061,12 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( } // Sheet number - if( aSheetCount > 1 ) + if( m_sheetCount > 1 ) { pos.x = ( refx - Mm2mils( 36 ) ) * m_milsToIu; pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu; msg.Empty(); - msg << aSheetNumber; + msg << m_sheetNumber; Append( new WS_DRAW_ITEM_TEXT( msg, pos, size, m_penSize, aLineColor ) ); } @@ -1070,7 +1075,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( pos.x = ( refx - Mm2mils( 10 ) ) * m_milsToIu; pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu; msg.Empty(); - msg << aSheetCount; + msg << m_sheetCount; Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, size, m_penSize, aLineColor ) ); gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); @@ -1284,7 +1289,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( pos.y = (refy - WsItem->m_Posy) * m_milsToIu; end.x = (refx - WsItem->m_Endx) * m_milsToIu; end.y = (refy - WsItem->m_Endy) * m_milsToIu; - msg = WsItem->m_Legende; + msg = WsItem->m_TextBase; switch( WsItem->m_Type ) { @@ -1331,7 +1336,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( pos.x = ( refx - Mm2mils( 5 ) ) * m_milsToIu; pos.y = ( refy - Mm2mils( 4 ) ) * m_milsToIu; msg.Empty(); - msg << aSheetNumber; + msg << m_sheetNumber; Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos, size, m_penSize, aLineColor ) ); @@ -1369,14 +1374,14 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( for( WsItem = &WS_DopLeft_Line1; WsItem != NULL; WsItem = WsItem->Pnext ) { - if( aSheetNumber > 1 && WsItem == &WS_DopLeft_Line9 ) // Some fields for first page only + if( m_sheetNumber > 1 && WsItem == &WS_DopLeft_Line9 ) // Some fields for first page only break; pos.x = (refx - WsItem->m_Posx) * m_milsToIu; pos.y = (refy - WsItem->m_Posy) * m_milsToIu; end.x = (refx - WsItem->m_Endx) * m_milsToIu; end.y = (refy - WsItem->m_Endy) * m_milsToIu; - msg = WsItem->m_Legende; + msg = WsItem->m_TextBase; switch( WsItem->m_Type ) { @@ -1406,14 +1411,14 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( for( WsItem = &WS_DopTop_Line1; WsItem != NULL; WsItem = WsItem->Pnext ) { - if( aSheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only + if( m_sheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only break; pos.x = (refx + WsItem->m_Posx) * m_milsToIu; pos.y = (refy + WsItem->m_Posy) * m_milsToIu; end.x = (refx + WsItem->m_Endx) * m_milsToIu; end.y = (refy + WsItem->m_Endy) * m_milsToIu; - msg = WsItem->m_Legende; + msg = WsItem->m_TextBase; switch( WsItem->m_Type ) { @@ -1457,14 +1462,14 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( for( WsItem = &WS_DopTop_Line1; WsItem != NULL; WsItem = WsItem->Pnext ) { - if( aSheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only + if( m_sheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only break; pos.x = (refx - WsItem->m_Posy) * m_milsToIu; pos.y = (refy + WsItem->m_Posx) * m_milsToIu; end.x = (refx - WsItem->m_Endy) * m_milsToIu; end.y = (refy + WsItem->m_Endx) * m_milsToIu; - msg = WsItem->m_Legende; + msg = WsItem->m_TextBase; switch( WsItem->m_Type ) { diff --git a/common/worksheet.cpp b/common/worksheet.cpp index ebc77e2036..4fe2dd0a76 100644 --- a/common/worksheet.cpp +++ b/common/worksheet.cpp @@ -33,28 +33,15 @@ #include #include #include -#include #include #include #include -#include #include -#include -#include #include #include -#include -// include data which defines the shape of a title block -// and frame references #include -#if defined(KICAD_GOST) -#include "title_block_shapes_gost.h" -#else -#include "title_block_shapes.h" -#endif - void DrawPageLayout( wxDC* aDC, EDA_DRAW_PANEL * aCanvas, const PAGE_INFO& aPageInfo, const wxString& aPaperFormat, @@ -76,11 +63,12 @@ void DrawPageLayout( wxDC* aDC, EDA_DRAW_PANEL * aCanvas, drawList.SetPenSize( aPenWidth ); drawList.SetMilsToIUfactor( aScalar ); drawList.SetPageSize( pagesize ); + drawList.SetSheetNumber( aSheetNumber ); + drawList.SetSheetCount( aSheetCount ); drawList.BuildWorkSheetGraphicList( aPaperFormat, aFullSheetName, aFileName, - aTitleBlock, aSheetCount, aSheetNumber, - aLineColor, aTextColor ); + aTitleBlock, aLineColor, aTextColor ); // Draw item list for( WS_DRAW_ITEM_BASE* item = drawList.GetFirst(); item; diff --git a/eeschema/sch_junction.cpp b/eeschema/sch_junction.cpp index 5521c23f49..7373f05337 100644 --- a/eeschema/sch_junction.cpp +++ b/eeschema/sch_junction.cpp @@ -38,7 +38,7 @@ #include -int SCH_JUNCTION::m_symbolSize = 50; // Default diameter of the junction symbol +int SCH_JUNCTION::m_symbolSize = 40; // Default diameter of the junction symbol SCH_JUNCTION::SCH_JUNCTION( const wxPoint& pos ) : SCH_ITEM( NULL, SCH_JUNCTION_T ) diff --git a/include/worksheet.h b/include/worksheet.h index 7978742db7..62d7adccfd 100644 --- a/include/worksheet.h +++ b/include/worksheet.h @@ -21,8 +21,8 @@ public: Ki_WorkSheetData* Pnext; int m_Posx, m_Posy; int m_Endx, m_Endy; - const wxChar* m_Legende; - const wxChar* m_Text; + const wxChar* m_TextBase; + int m_Flags; }; /** diff --git a/common/worksheet_shape_builder.h b/include/worksheet_shape_builder.h similarity index 86% rename from common/worksheet_shape_builder.h rename to include/worksheet_shape_builder.h index 961b27bbf0..2a6757c626 100644 --- a/common/worksheet_shape_builder.h +++ b/include/worksheet_shape_builder.h @@ -46,6 +46,7 @@ class WS_DRAW_ITEM_LINE : public WS_DRAW_ITEM_BASE wxPoint m_start; // start point of line/rect wxPoint m_end; // end point int m_penWidth; + public: WS_DRAW_ITEM_LINE( wxPoint aStart, wxPoint aEnd, int aPenWidth, EDA_COLOR_T aColor ) : @@ -118,8 +119,10 @@ public: }; /* - * this class stores the list of graphic items to draw/plot - * the title block and frame references + * this class stores the list of graphic items: + * rect, lines, polygons and texts to draw/plot + * the title block and frame references, and parameters to + * draw/plot them */ class WS_DRAW_ITEM_LIST { @@ -131,6 +134,9 @@ class WS_DRAW_ITEM_LIST double m_milsToIu; // the scalar to convert pages units ( mils) // to draw/plot units. int m_penSize; // The line width for drawings. + int m_sheetNumber; // the value of the sheet number, for basic inscriptions + int m_sheetCount; // the value of the number of sheets, in schematic + // for basic inscriptions, in schematic public: WS_DRAW_ITEM_LIST() @@ -138,6 +144,8 @@ public: m_idx = 0; m_milsToIu = 1.0; m_penSize = 1; + m_sheetNumber = 1; + m_sheetCount = 1; } ~WS_DRAW_ITEM_LIST() @@ -173,6 +181,26 @@ public: m_pageSize = aPageSize; } + /** + * Function SetSheetNumber + * Set the value of the sheet number, for basic inscriptions + * @param aSheetNumber the number to display. + */ + void SetSheetNumber( int aSheetNumber ) + { + m_sheetNumber = aSheetNumber; + } + + /** + * Function SetSheetCount + * Set the value of the count of sheets, for basic inscriptions + * @param aSheetCount the number of esheets to display. + */ + void SetSheetCount( int aSheetCount ) + { + m_sheetCount = aSheetCount; + } + /* Function SetMargins * Set the left top margin and the right bottom margin * of the page layout @@ -220,8 +248,6 @@ public: * @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 aLineColor The color for drawing and fixed text. * @param aTextColor The color for user inscriptions. */ @@ -229,7 +255,6 @@ public: const wxString& aFileName, const wxString& aSheetPathHumanReadable, const TITLE_BLOCK& aTitleBlock, - int aSheetCount, int aSheetNumber, EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor ); };