From 8bed5053daef290ecb1bfd60b58efc35b0c0c410 Mon Sep 17 00:00:00 2001 From: faa Date: Wed, 5 Nov 2008 11:41:15 +0000 Subject: [PATCH] cyrillic font support, russian GOST support --- CMakeLists.txt | 17 + change_log.txt | 5 + common/base_struct.cpp | 10 +- common/common.cpp | 9 +- common/common_plot_functions.cpp | 147 +++++ common/drawtxt.cpp | 20 +- common/worksheet.cpp | 155 +++++ eeschema/annotate.cpp | 11 + eeschema/build_BOM.cpp | 11 + eeschema/eelibs_draw_components.cpp | 9 + eeschema/plot.cpp | 5 + include/common.h | 7 + include/grfonte.h | 95 +++ include/worksheet.h | 864 +++++++++++++++++++++++++++- install.txt | 9 + pcbnew/plot_rtn.cpp | 10 +- 16 files changed, 1373 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b8fb411732..522730b230 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,11 @@ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules) # building minizip. option(KICAD_MINIZIP "enable/disable building minizip (default ON)" ON) +# Russian GOST and CYRILLIC patch +option(KICAD_CYRILLIC "enable/disable building unicode (default OFF)") +option(wxUSE_UNICODE "enable/disable building unicode (default OFF)") +option(KICAD_GOST "enable/disable building unicode (default OFF)") + # Comment this out if you don't want to build with Python support. # OPTION(KICAD_PYTHON "enable/disable building with Python support (default OFF)") @@ -33,6 +38,18 @@ if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g3 -ggdb3 -DDEBUG") endif(CMAKE_COMPILER_IS_GNUCXX) +if(KICAD_CYRILLIC) + add_definitions(-DKICAD_CYRILLIC) +endif(KICAD_CYRILLIC) + +if(wxUSE_UNICODE) + add_definitions(-DwxUSE_UNICODE) +endif(wxUSE_UNICODE) + +if(KICAD_GOST) + add_definitions(-DKICAD_GOST) +endif(KICAD_GOST) + # Locations for install targets. set(KICAD_BIN bin CACHE PATH "Location of KiCad binaries.") diff --git a/change_log.txt b/change_log.txt index 06e3920bbb..1ddb178538 100644 --- a/change_log.txt +++ b/change_log.txt @@ -5,6 +5,11 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2008-nov-5 UPDATE Andrey Fedorushkov +================================================================================ ++all: + Add cyrillic font support. + Add russian GOST worksheet support. 2008-nov-2 CLEANUP Jerry Jacobs ================================================================================ diff --git a/common/base_struct.cpp b/common/base_struct.cpp index d6766a610b..d98ca994b7 100644 --- a/common/base_struct.cpp +++ b/common/base_struct.cpp @@ -535,7 +535,15 @@ void EDA_TextStruct::CreateDrawData() while( kk++ < nbchar ) { x0 = 0; y0 = 0; - AsciiCode = (*ptr) & 255; +#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) + AsciiCode = (*ptr) & 0x7FF; + if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr + AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF; + else + AsciiCode = AsciiCode & 0xFF; +#else + AsciiCode = (*ptr) & 255; +#endif ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description * du caractere a dessiner */ diff --git a/common/common.cpp b/common/common.cpp index 95509f6322..ad6c93df15 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -82,7 +82,14 @@ Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxS m_Name = name; // Adjust the default value for margins to 400 mils (0,4 inch or 10 mm) - m_LeftMargin = m_RightMargin = m_TopMargin = m_BottomMargin = 400; +#if defined(KICAD_GOST) + m_LeftMargin = LEFTMARGIN; + m_RightMargin = RIGHTMARGIN; + m_TopMargin = TOPMARGIN; + m_BottomMargin = BOTTOMMARGIN; +#else + m_LeftMargin = m_RightMargin = m_TopMargin = m_BottomMargin = 400; +#endif } diff --git a/common/common_plot_functions.cpp b/common/common_plot_functions.cpp index d3336e9353..10a6afed23 100644 --- a/common/common_plot_functions.cpp +++ b/common/common_plot_functions.cpp @@ -127,6 +127,17 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) xg = (PageSize.x - Sheet->m_RightMargin) * conv_unit; yg = (PageSize.y - Sheet->m_BottomMargin) * conv_unit; /* lower right corner */ +#if defined(KICAD_GOST) + FctPlume(ref,'U'); + pos.x = xg; pos.y = ref.y; + FctPlume(pos,'D'); + pos.x = xg; pos.y = yg; + FctPlume(pos,'D'); + pos.x = ref.x; pos.y = yg; + FctPlume( pos,'D' ); + FctPlume(ref,'D'); +#else + for( ii = 0; ii < 2; ii++ ) { FctPlume( ref, 'U' ); @@ -140,6 +151,7 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) ref.x += GRID_REF_W * conv_unit; ref.y += GRID_REF_W * conv_unit; xg -= GRID_REF_W * conv_unit; yg -= GRID_REF_W * conv_unit; } +#endif /* trace des reperes */ text_size.x = WSTEXTSIZE * conv_unit; @@ -150,6 +162,48 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) xg = (PageSize.x - Sheet->m_RightMargin); yg = (PageSize.y - Sheet->m_BottomMargin); /* lower right corner in 1/1000 inch */ +#if defined(KICAD_GOST) + for ( WsItem = &WS_Segm1_LU; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (ref.x - WsItem->m_Posx) * conv_unit; + pos.y = (yg - WsItem->m_Posy) * conv_unit; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_CADRE: + break; + case WS_PODPIS_LU: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + PlotGraphicText(format_plot, pos, color, + msg, TEXT_ORIENT_VERT, text_size, + GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM); + + break; + case WS_SEGMENT_LU: + FctPlume(pos, 'U'); + pos.x = (ref.x - WsItem->m_Endx) * conv_unit; + pos.y = (yg - WsItem->m_Endy) * conv_unit; + FctPlume(pos, 'D'); + break; + } + } + for ( WsItem = &WS_Segm1_LT; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (ref.x + WsItem->m_Posx) * conv_unit; + pos.y = (ref.y + WsItem->m_Posy) * conv_unit; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_SEGMENT_LT: + FctPlume(pos, 'U'); + pos.x = (ref.x + WsItem->m_Endx) * conv_unit; + pos.y = (ref.y + WsItem->m_Endy) * conv_unit; + FctPlume(pos, 'D'); + break; + } + } +#else + /* Trace des reperes selon l'axe X */ ipas = (xg - ref.x) / PAS_REF; gxpas = ( xg - ref.x) / ipas; @@ -214,10 +268,102 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) PlotGraphicText( format_plot, pos, color, msg, TEXT_ORIENT_HORIZ, text_size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER ); } +#endif /* Trace du cartouche */ text_size.x = SIZETEXT * conv_unit; text_size.y = SIZETEXT * conv_unit; +#if defined(KICAD_GOST) + ref.x = PageSize.x - Sheet->m_RightMargin; + ref.y = PageSize.y - Sheet->m_BottomMargin; + if (screen->m_ScreenNumber == 1) + { + for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (ref.x - WsItem->m_Posx) * conv_unit; + pos.y = (ref.y - WsItem->m_Posy) * conv_unit; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_DATE: + break; + case WS_REV: + break; + case WS_KICAD_VERSION: + break; + case WS_PODPIS: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + PlotGraphicText(format_plot, pos, color, msg, TEXT_ORIENT_HORIZ,text_size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); + break; + case WS_SIZESHEET: + break; + case WS_IDENTSHEET: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_ScreenNumber; + PlotGraphicText(format_plot, pos, color, msg, TEXT_ORIENT_HORIZ,text_size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); + break; + case WS_SHEETS: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_NumberOfScreen; + PlotGraphicText(format_plot, pos, color, msg, TEXT_ORIENT_HORIZ,text_size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); + break; + case WS_COMPANY_NAME: + break; + case WS_TITLE: + break; + case WS_COMMENT1: + break; + case WS_COMMENT2: + break; + case WS_COMMENT3: + break; + case WS_COMMENT4: + break; + case WS_UPPER_SEGMENT: + case WS_LEFT_SEGMENT: + case WS_SEGMENT: + FctPlume(pos, 'U'); + pos.x = (ref.x - WsItem->m_Endx) * conv_unit; + pos.y = (ref.y - WsItem->m_Endy) * conv_unit; + FctPlume(pos, 'D'); + break; + } + } + } else { + for( WsItem = &WS_CADRE_D; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (ref.x - WsItem->m_Posx) * conv_unit; + pos.y = (ref.y - WsItem->m_Posy) * conv_unit; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_CADRE: + /* Begin list number > 1 */ + case WS_PODPIS_D: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + PlotGraphicText(format_plot, pos, color, msg, TEXT_ORIENT_HORIZ,text_size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); + break; + case WS_IDENTSHEET_D: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_ScreenNumber; + PlotGraphicText(format_plot, pos, color, msg, TEXT_ORIENT_HORIZ,text_size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); + break; + case WS_LEFT_SEGMENT_D: + case WS_SEGMENT_D: + FctPlume(pos, 'U'); + pos.x = (ref.x - WsItem->m_Endx) * conv_unit; + pos.y = (ref.y - WsItem->m_Endy) * conv_unit; + FctPlume(pos, 'D'); + break; + } + } + } +#else ref.x = PageSize.x - GRID_REF_W - Sheet->m_RightMargin; ref.y = PageSize.y - GRID_REF_W - Sheet->m_BottomMargin; @@ -327,6 +473,7 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER ); } } +#endif switch( format_plot ) { diff --git a/common/drawtxt.cpp b/common/drawtxt.cpp index d2ea243d97..348a746081 100644 --- a/common/drawtxt.cpp +++ b/common/drawtxt.cpp @@ -219,7 +219,15 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC, while( kk++ < nbchar ) { x0 = 0; y0 = 0; - AsciiCode = Text.GetChar( ptr ) & 255; +#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) + AsciiCode = Text.GetChar(ptr) & 0x7FF; + if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr + AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF; + else + AsciiCode = AsciiCode & 0xFF; +#else + AsciiCode = Text.GetChar( ptr ) & 255; +#endif ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description * du caractere a dessiner */ @@ -423,7 +431,15 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor, while( kk++ < nbchar ) { - AsciiCode = Text.GetChar( ptr ) & 255; +#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) + AsciiCode = Text.GetChar(ptr) & 0x7FF; + if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr + AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF; + else + AsciiCode = AsciiCode & 0xFF; +#else + AsciiCode = Text.GetChar( ptr ) & 0xFF; +#endif ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description * du caractere a dessiner */ diff --git a/common/worksheet.cpp b/common/worksheet.cpp index b02c012cd8..858a676b17 100644 --- a/common/worksheet.cpp +++ b/common/worksheet.cpp @@ -61,6 +61,11 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w xg = Sheet->m_Size.x - Sheet->m_RightMargin; yg = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ +#if defined(KICAD_GOST) + GRRect( &DrawPanel->m_ClipBox, DC, refx * scale, refy * scale, + xg * scale, yg * scale, width, Color ); + +#else for( ii = 0; ii < 2; ii++ ) { GRRect( &DrawPanel->m_ClipBox, DC, refx * scale, refy * scale, @@ -69,9 +74,52 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w refx += GRID_REF_W; refy += GRID_REF_W; xg -= GRID_REF_W; yg -= GRID_REF_W; } +#endif /* trace des reperes */ refx = Sheet->m_LeftMargin; +#if defined(KICAD_GOST) + refy = Sheet->m_Size.y - Sheet->m_BottomMargin; /* Lower left corner */ + for( WsItem = &WS_Segm1_LU; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (refx - WsItem->m_Posx)* scale; + pos.y = (refy - WsItem->m_Posy)* scale; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_CADRE: + break; + case WS_PODPIS_LU: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_VERT, size, + GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM,width); + break; + case WS_SEGMENT_LU: + xg = Sheet->m_LeftMargin - WsItem->m_Endx; + yg = Sheet->m_Size.y - Sheet->m_BottomMargin - WsItem->m_Endy; + GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color); + break; + } + } + refy = Sheet->m_BottomMargin; /* Left Top corner */ + for( WsItem = &WS_Segm1_LT; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (refx + WsItem->m_Posx)* scale; + pos.y = (refy + WsItem->m_Posy)* scale; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_SEGMENT_LT: + xg = Sheet->m_LeftMargin + WsItem->m_Endx; + yg = Sheet->m_BottomMargin + WsItem->m_Endy; + GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color); + break; + } + } +#else refy = Sheet->m_TopMargin; /* Upper left corner */ xg = Sheet->m_Size.x - Sheet->m_RightMargin; yg = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ @@ -135,8 +183,114 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width ); } +#endif /* Trace du cartouche */ +#if defined(KICAD_GOST) + refx = Sheet->m_Size.x - Sheet->m_RightMargin; + refy = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ + if (screen->m_ScreenNumber == 1) + { + for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (refx - WsItem->m_Posx)* scale; + pos.y = (refy - WsItem->m_Posy)* scale; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_DATE: + break; + case WS_REV: + break; + case WS_KICAD_VERSION: + break; + case WS_PODPIS: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); + break; + case WS_SIZESHEET: + break; + case WS_IDENTSHEET: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_ScreenNumber; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); + break; + case WS_SHEETS: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_NumberOfScreen; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); + break; + case WS_COMPANY_NAME: + break; + case WS_TITLE: + break; + case WS_COMMENT1: + break; + case WS_COMMENT2: + break; + case WS_COMMENT3: + break; + case WS_COMMENT4: + break; + case WS_UPPER_SEGMENT: + case WS_LEFT_SEGMENT: + WS_MostUpperLine.m_Posy = + WS_MostUpperLine.m_Endy = + WS_MostLeftLine.m_Posy = STAMP_OY; + pos.y = (refy - WsItem->m_Posy)* scale; + case WS_SEGMENT: + xg = Sheet->m_Size.x - + Sheet->m_RightMargin - WsItem->m_Endx; + yg = Sheet->m_Size.y - + Sheet->m_BottomMargin - WsItem->m_Endy; + GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color); + break; + } + } + } else { + for( WsItem = &WS_CADRE_D; WsItem != NULL; WsItem = WsItem->Pnext ) + { + pos.x = (refx - WsItem->m_Posx)* scale; + pos.y = (refy - WsItem->m_Posy)* scale; + msg.Empty(); + switch( WsItem->m_Type ) + { + case WS_CADRE: + /* Begin list number > 1 */ + case WS_PODPIS_D: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,width); + break; + case WS_IDENTSHEET_D: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_ScreenNumber; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,width); + break; + case WS_LEFT_SEGMENT_D: + pos.y = (refy - WsItem->m_Posy)* scale; + case WS_SEGMENT_D: + xg = Sheet->m_Size.x - + Sheet->m_RightMargin - WsItem->m_Endx; + yg = Sheet->m_Size.y - + Sheet->m_BottomMargin - WsItem->m_Endy; + GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, + xg * scale, yg * scale, width, Color); + break; + } + } + } +#else refx = Sheet->m_Size.x - Sheet->m_RightMargin - GRID_REF_W; refy = Sheet->m_Size.y - Sheet->m_BottomMargin - GRID_REF_W; /* lower right corner */ @@ -312,6 +466,7 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w break; } } +#endif } diff --git a/eeschema/annotate.cpp b/eeschema/annotate.cpp index d78eef7eea..930792d463 100644 --- a/eeschema/annotate.cpp +++ b/eeschema/annotate.cpp @@ -839,6 +839,16 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) nextcmpref = CONV_FROM_UTF8( ListeCmp[ii + 1].m_TextRef ); cmpvalue = CONV_FROM_UTF8( ListeCmp[ii].m_TextValue ); nextcmpvalue = CONV_FROM_UTF8( ListeCmp[ii + 1].m_TextValue ); +#if defined(KICAD_GOST) + msg.Printf( _( "Diff values for %s%d.%c (%s) and %s%d.%c (%s)" ), + cmpref.GetData(), + ListeCmp[ii].m_NumRef, + ListeCmp[ii].m_Unit + '1' - 1, + cmpvalue.GetData(), nextcmpref.GetData(), + ListeCmp[ii + 1].m_NumRef, + ListeCmp[ii + 1].m_Unit + '1' - 1, + nextcmpvalue.GetData() ); +#else msg.Printf( _( "Diff values for %s%d%c (%s) and %s%d%c (%s)" ), cmpref.GetData(), ListeCmp[ii].m_NumRef, @@ -847,6 +857,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) ListeCmp[ii + 1].m_NumRef, ListeCmp[ii + 1].m_Unit + 'A' - 1, nextcmpvalue.GetData() ); +#endif DisplayError( frame, msg ); error++; diff --git a/eeschema/build_BOM.cpp b/eeschema/build_BOM.cpp index d88c0490d4..e658b7c7d7 100644 --- a/eeschema/build_BOM.cpp +++ b/eeschema/build_BOM.cpp @@ -727,7 +727,11 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByRef( FILE* f, Multi = Entry->m_UnitCount; if( ( Multi > 1 ) && aIncludeSubComponents ) +#if defined(KICAD_GOST) + Unit = aList[ii].m_Unit + '1' - 1; +#else Unit = aList[ii].m_Unit + 'A' - 1; +#endif sprintf( CmpName, "%s", aList[ii].m_Ref ); if( !CompactForm || Unit != ' ' ) @@ -815,10 +819,17 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByVal( FILE* f, if( ( Multi > 1 ) && aIncludeSubComponents ) { +#if defined(KICAD_GOST) + Unit = aList[ii].m_Unit + '1' - 1; + } + + sprintf( CmpName, "%s.%c", aList[ii].m_Ref, Unit ); +#else Unit = aList[ii].m_Unit + 'A' - 1; } sprintf( CmpName, "%s%c", aList[ii].m_Ref, Unit ); +#endif fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField(VALUE)->m_Text ), CmpName ); // print the sheet path diff --git a/eeschema/eelibs_draw_components.cpp b/eeschema/eelibs_draw_components.cpp index e22baad19e..ab166aee83 100644 --- a/eeschema/eelibs_draw_components.cpp +++ b/eeschema/eelibs_draw_components.cpp @@ -130,7 +130,11 @@ void DrawLibEntry( WinEDA_DrawPanel* panel, wxDC* DC, else color = Color; if( LibEntry->m_UnitCount > 1 ) +#if defined(KICAD_GOST) + Prefix.Printf( wxT( "%s?.%c" ), LibEntry->m_Prefix.m_Text.GetData(), Multi + '1' - 1); +#else Prefix.Printf( wxT( "%s?%c" ), LibEntry->m_Prefix.m_Text.GetData(), Multi + 'A' - 1 ); +#endif else Prefix = LibEntry->m_Prefix.m_Text + wxT( "?" ); @@ -309,7 +313,12 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel, { /* On ajoute alors A ou B ... a la reference */ wxString fulltext = m_Text; +#if defined(KICAD_GOST) + fulltext.Append( '.'); + fulltext.Append( '1' - 1 + DrawLibItem->m_Multi ); +#else fulltext.Append( 'A' - 1 + DrawLibItem->m_Multi ); +#endif DrawGraphicText( panel, DC, pos, color, fulltext.GetData(), orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, diff --git a/eeschema/plot.cpp b/eeschema/plot.cpp index c3c33796a1..b13bacddb3 100644 --- a/eeschema/plot.cpp +++ b/eeschema/plot.cpp @@ -433,7 +433,12 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem, /* Adding A, B ... to the reference */ wxString Text; Text = field->m_Text; +#if defined(KICAD_GOST) + Text.Append( '.' ); + Text.Append( '1' - 1 + DrawLibItem->m_Multi ); +#else Text.Append( 'A' - 1 + DrawLibItem->m_Multi ); +#endif PlotGraphicText( g_PlotFormat, textpos, color, Text, orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, field->m_Size, hjustify, vjustify ); diff --git a/include/common.h b/include/common.h index 979d48f919..1f6cfaa78b 100644 --- a/include/common.h +++ b/include/common.h @@ -75,6 +75,13 @@ enum pseudokeys { #define MILLIMETRE 1 #define CENTIMETRE 2 +#if defined(KICAD_GOST) +#define LEFTMARGIN 800 /* 20mm */ +#define RIGHTMARGIN 200 /* 5mm */ +#define TOPMARGIN 200 /* 5mm */ +#define BOTTOMMARGIN 200 /* 5mm */ + +#endif /* forward declarations: */ class LibNameList; diff --git a/include/grfonte.h b/include/grfonte.h index 367d974162..577994c0b5 100644 --- a/include/grfonte.h +++ b/include/grfonte.h @@ -45,6 +45,10 @@ ___ 0 ---------- #define SH_CODE signed char extern const SH_CODE *graphic_fonte_shape[256]; +#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) +extern const int utf8_to_ascii[64]; +#endif + #ifdef EDA_DRAWBASE #define Up (SH_CODE)'U' @@ -174,6 +178,65 @@ const SH_CODE char_shape_o_circ[] = {Up,0,2,Dn,1,1,5,1,6,2,6,7,5,8,1,8,0,7,0,2,U const SH_CODE char_shape_u_circ[] = {Up,6,1,Dn,2,1,0,3,0,6,2,8,6,8,Up,7,1,Dn,9,4,7,7,Up,X}; const SH_CODE char_shape_u_trema[] = {Up,6,1,Dn,2,1,0,3,0,6,2,8,6,8,Up,9,2,Dn,9,3,Up,9,5,Dn,9,6,Up,X}; +#if defined(KICAD_CYRILLIC) +const SH_CODE char_shape_yu[] = {Up,6,0,Dn,0,0,Up,3,0,Dn,3,2,Up,0,3,Dn,1,2,5,2,6,3,6,7,5,8,1,8,0,7,0,3,Up,X}; // ю +const SH_CODE char_shape_YU[] = {Up,9,0,Dn,0,0,Up,4,0,Dn,4,2,Up,0,3,Dn,1,2,8,2,9,3,9,7,8,8,1,8,0,7,0,3,Up,X}; // Ю +const SH_CODE char_shape_be[] = {Up,6,7,Dn,6,2,5,1,1,1,0,2,0,7,1,8,5,8,6,7,9,1,9,8,Up,X}; // б +const SH_CODE char_shape_BE[] = {Up,9,8,Dn,9,1,0,1,0,7,1,8,4,8,5,7,5,1,Up,X}; // Б +const SH_CODE char_shape_tse[] = {Up,6,1,Dn,1,1,0,2,0,8,6,8,Up,0,8,Dn,0,9,-2,9,Up,X}; // ц +const SH_CODE char_shape_TSE[] = {Up,9,1,Dn,0,1,0,9,-2,9,Up,9,8,Dn,0,8,Up,X}; // Ц +const SH_CODE char_shape_de[] = {Up,9,3,Dn,9,7,8,8,1,8,0,7,0,2,1,1,5,1,6,2,6,8,Up,X}; // д +const SH_CODE char_shape_DE[] = {Up,0,2,Dn,9,3,9,7,0,7,Up,-1,1,Dn,0,1,0,8,-1,8,Up,X}; // Д +const SH_CODE char_shape_ee[] = {Up,3,1,Dn,3,8,5,8,6,7,6,2,5,1,1,1,0,2,0,8,Up,X}; //e +const SH_CODE char_shape_EE[] = {Up,9,8,Dn,9,1,0,1,0,8,Up,5,1,Dn,5,7,Up,X}; //E +const SH_CODE char_shape_ef[] = {Up,7,4,Dn,-3,4,Up,5,1,Dn,6,2,6,6,5,7,1,7,0,6,0,2,1,1,5,1,Up,X}; // ф +const SH_CODE char_shape_EF[] = {Up,9,4,Dn,0,4,Up,7,0,Dn,8,1,8,7,7,8,3,8,2,7,2,1,3,0,7,0,Up,X}; // Ф +const SH_CODE char_shape_ghe[] = {Up,5,1,Dn,6,2,6,7,5,8,4,8,3,7,3,2,2,1,1,1,0,2,0,7,1,8,Up,X}; // г +const SH_CODE char_shape_GHE[] = {Up,0,1,Dn,9,1,9,8,Up,X}; // Г +const SH_CODE char_shape_xe[] = {Up,0,1,Dn,6,8,Up,6,1,Dn,0,8,Up,X}; // x +const SH_CODE char_shape_XE[] = {Up,0,1,Dn,9,8,Up,9,1,Dn,0,8,Up,X}; // X +const SH_CODE char_shape_ii[] = {Up,6,1,Dn,1,1,0,2,0,3,1,8,Up,0,8,Dn,6,8,Up,X}; // и +const SH_CODE char_shape_II[] = {Up,0,1,Dn,9,1,Up,1,1,Dn,8,8,Up,9,8,Dn,0,8,Up,X}; // И +const SH_CODE char_shape_shorti[] = {Up,6,1,Dn,1,1,0,2,0,3,1,8,Up,0,8,Dn,6,8,Up,8,3,Dn,8,6,Up,X}; // й +const SH_CODE char_shape_SHORTI[] = {Up,9,1,Dn,0,1,Up,1,1,Dn,8,8,Up,9,8,Dn,0,8,Up,9,3,Dn,9,6,Up,X}; // Й +const SH_CODE char_shape_ka[] = {Up,6,1,Dn,0,1,Up,3,1,Dn,6,8,Up,4,3,Dn,0,8,Up,X}; //к +const SH_CODE char_shape_KA[] = {Up,9,1,Dn,0,1,Up,4,1,Dn,9,8,Up,5,3,Dn,0,8,Up,X}; //K +const SH_CODE char_shape_letterel[] = {Up,0,1,Dn,6,5,6,8,0,8,Up,X}; // л +const SH_CODE char_shape_EL[] = {Up,0,1,Dn,9,5,9,8,0,8,Up,X}; // Л +const SH_CODE char_shape_em[] = {Up,0,0,Dn,6,0,3,4,6,8,0,8,Up,X}; // м +//const SH_CODE char_shape_M[] = {X}; // М +const SH_CODE char_shape_en[] = {Up,6,1,Dn,0,1,Up,6,8,Dn,0,8,Up,3,1,Dn,3,8,Up,X}; // н +const SH_CODE char_shape_EN[] = {Up,9,1,Dn,0,1,Up,9,8,Dn,0,8,Up,5,1,Dn,5,8,Up,X}; // H +const SH_CODE char_shape_pe[] = {Up,0,1,Dn,6,1,6,7,5,8,0,8,Up,X}; // п +const SH_CODE char_shape_PE[] = {Up,0,1,Dn,9,1,9,8,0,8,Up,X}; // П +const SH_CODE char_shape_ya[] = {Up,0,8,Dn,6,8,6,2,5,1,4,1,3,2,3,8,Up,3,3,Dn,0,1,Up,X}; // я +const SH_CODE char_shape_YA[] = {Up,0,8,Dn,9,8,9,2,8,1,5,1,4,2,4,8,Up,4,3,Dn,0,1,Up,X}; // Я +const SH_CODE char_shape_te[] = {Up,0,1,Dn,6,1,6,6,5,7,0,7,Up,6,4,Dn,0,4,Up,X}; // т == m +const SH_CODE char_shape_TE[] = {Up,0,4,Dn,9,4,Up,9,1,Dn,9,7,Up,X}; // Т +const SH_CODE char_shape_uu[] = {Up,6,1,Dn,1,1,0,2,0,8,6,8,Up,0,8,Dn,-2,8,-3,7,-3,1,Up,X}; // у - latin y +const SH_CODE char_shape_UU[] = {Up,9,1,Dn,5,1,4,2,4,8,Up,9,8,Dn,1,8,0,7,0,1,Up,X}; // У +const SH_CODE char_shape_zhe[] = {Up,0,0,Dn,6,8,Up,6,0,Dn,0,8,Up,6,4,Dn,0,4,Up,X}; // ж +const SH_CODE char_shape_ZHE[] = {Up,0,0,Dn,9,8,Up,9,0,Dn,0,8,Up,9,4,Dn,0,4,Up,X}; // Ж +const SH_CODE char_shape_ve[] = {Up,5,1,Dn,6,2,6,7,5,8,1,8,0,7,0,2,1,1,8,1,9,2,9,4,8,5,7,5,6,4,Up,X}; // в +const SH_CODE char_shape_VE[] = {Up,5,1,Dn,5,7,4,8,1,8,0,7,0,1,9,1,9,7,8,8,6,8,5,7,Up,X}; // В +const SH_CODE char_shape_softsign[] = {Up,6,1,Dn,0,1,0,7,1,8,2,8,3,7,3,1,Up,X}; // ь +const SH_CODE char_shape_SOFTSIGN[] = {Up,9,1,Dn,0,1,0,7,1,8,4,8,5,7,5,1,Up,X}; // Ь +const SH_CODE char_shape_yeru[] = {Up,6,1,Dn,0,1,0,6,1,7,2,7,3,6,3,1,Up,6,8,Dn,0,8,Up,X}; // ы +const SH_CODE char_shape_YERU[] = {Up,9,1,Dn,0,1,0,6,1,7,3,7,4,6,4,1,Up,9,8,Dn,0,8,Up,X}; // Ы +const SH_CODE char_shape_ze[] = {Up,5,1,Dn,6,2,6,7,5,8,4,8,3,7,3,5,Up,3,7,Dn,2,8,1,8,0,7,0,2,1,1,Up,X}; // з +const SH_CODE char_shape_ZE[] = {Up,8,1,Dn,9,2,9,7,8,8,6,8,5,7,5,4,Up,5,7,Dn,4,8,1,8,0,7,0,2,1,1,Up,X}; // З +const SH_CODE char_shape_sha[] = {Up,6,0,Dn,1,0,0,1,0,8,6,8,Up,6,4,Dn,0,4,Up,X}; // ш +const SH_CODE char_shape_SHA[] = {Up,9,0,Dn,0,0,0,8,9,8,Up,9,4,Dn,0,4,Up,X}; // Ш +const SH_CODE char_shape_ye[] = {Up,0,1,Dn,0,7,1,8,5,8,6,7,6,1,Up,3,4,Dn,3,8,Up,X}; // э +const SH_CODE char_shape_YE[] = {Up,0,1,Dn,0,7,1,8,8,8,9,7,9,1,Up,5,4,Dn,5,8,Up,X}; // Э +const SH_CODE char_shape_shcha[] = {Up,6,0,Dn,1,0,0,1,0,8,6,8,Up,6,4,Dn,0,4,Up,0,8,Dn,0,9,-2,9,Up,X}; // щ +const SH_CODE char_shape_SHCHA[] = {Up,9,0,Dn,0,0,0,8,9,8,Up,9,4,Dn,0,4,Up,0,8,Dn,0,9,-2,9,Up,X}; // Щ +const SH_CODE char_shape_che[] = {Up,6,1,Dn,4,1,3,2,3,8,Up,6,8,Dn,0,8,Up,X}; // ч +const SH_CODE char_shape_CHE[] = {Up,9,1,Dn,5,1,4,2,4,8,Up,9,8,Dn,0,8,Up,X}; // Ч +const SH_CODE char_shape_hardsign[] = {Up,6,0,Dn,6,1,0,1,0,7,1,8,2,8,3,7,3,1,Up,X}; // ъ +const SH_CODE char_shape_HARDSIGN[] = {Up,9,0,Dn,9,1,0,1,0,7,1,8,4,8,5,7,5,1,Up,X}; // Ъ +#endif + const SH_CODE *graphic_fonte_shape[256] = { // codes 0..31: @@ -246,6 +309,24 @@ const SH_CODE *graphic_fonte_shape[256] = noshape, noshape, noshape, noshape, //184..187 noshape, noshape, noshape, noshape, //188..191 +#if defined(KICAD_CYRILLIC) + char_shape_yu, char_shape_a, char_shape_be, char_shape_tse, + char_shape_de, char_shape_ee, char_shape_ef, char_shape_ghe, //196..199 + char_shape_xe, char_shape_ii, char_shape_shorti, char_shape_ka, // 200..203 + char_shape_letterel, char_shape_em, char_shape_en, char_shape_o, //204..207 + char_shape_pe, char_shape_ya, char_shape_p, char_shape_c, //208..211 + char_shape_te, char_shape_uu, char_shape_zhe, char_shape_ve, //212..215 + char_shape_softsign, char_shape_yeru, char_shape_ze, char_shape_sha, //216..219 + char_shape_ye, char_shape_shcha, char_shape_che, char_shape_hardsign, //220..223 + char_shape_YU, char_shape_A, char_shape_BE, char_shape_TSE, //0xE0..0xE3 224..227 + char_shape_DE, char_shape_EE, char_shape_EF, char_shape_GHE, //228..231 + char_shape_XE, char_shape_II, char_shape_SHORTI, char_shape_KA, //232..235 + char_shape_EL, char_shape_M, char_shape_EN, char_shape_O, //236..239 + char_shape_PE, char_shape_YA, char_shape_P, char_shape_C, //240..243 + char_shape_TE, char_shape_UU, char_shape_ZHE, char_shape_VE, //244..247 + char_shape_SOFTSIGN, char_shape_YERU, char_shape_ZE, char_shape_SHA, //248..251 + char_shape_YE, char_shape_SHCHA, char_shape_CHE, char_shape_HARDSIGN, //252..255 +#else noshape, noshape, noshape, noshape, //192..195 noshape, noshape, noshape, char_shape_C_Cedille, //196..199 noshape, noshape, noshape, noshape, // 200..203 @@ -263,8 +344,22 @@ const SH_CODE *graphic_fonte_shape[256] = char_shape_o_circ, noshape, char_shape_o_trema, noshape, //244..247 noshape, char_shape_u_grave, noshape, char_shape_u_circ, //248..251 char_shape_u_trema, noshape, noshape, noshape, //252..255 +#endif } ; +#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) +const int utf8_to_ascii[] = + { + 0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, + 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, + 0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, + 0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, + 0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, + 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, + 0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, + 0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1 + }; +#endif #endif #endif // ifndef _GRFONTE_H_ diff --git a/include/worksheet.h b/include/worksheet.h index c7b17c649c..1192c0e4f7 100644 --- a/include/worksheet.h +++ b/include/worksheet.h @@ -14,6 +14,58 @@ #define PAS_REF 2000 /* pas des marquages de reference des reperes */ #define TEXT_VTAB_HEIGHT SIZETEXT*2 +#if defined(KICAD_GOST) +/* Shtamp */ +#define STAMP_OX 185 * 10000 / 254 +#define STAMP_OY 55 * 10000 / 254 + +#define STAMP_Y_0 0 +#define STAMP_Y_5 5 * 10000 / 254 +#define STAMP_Y_8 8 * 10000 / 254 +#define STAMP_Y_7 7 * 10000 / 254 +#define STAMP_Y_10 10 * 10000 / 254 +#define STAMP_Y_14 14 * 10000 / 254 +#define STAMP_Y_15 15 * 10000 / 254 +#define STAMP_Y_20 20 * 10000 / 254 +#define STAMP_Y_25 25 * 10000 / 254 +#define STAMP_Y_30 30 * 10000 / 254 +#define STAMP_Y_35 35 * 10000 / 254 +#define STAMP_Y_40 40 * 10000 / 254 +#define STAMP_Y_45 45 * 10000 / 254 +#define STAMP_Y_50 50 * 10000 / 254 +#define STAMP_Y_55 55 * 10000 / 254 + +#define STAMP_X_0 0 +#define STAMP_X_10 10 * 10000 / 254 +#define STAMP_X_14 14 * 10000 / 254 +#define STAMP_X_18 18 * 10000 / 254 +#define STAMP_X_30 30 * 10000 / 254 +#define STAMP_X_35 35 * 10000 / 254 +#define STAMP_X_40 40 * 10000 / 254 +#define STAMP_X_45 45 * 10000 / 254 +#define STAMP_X_50 50 * 10000 / 254 +#define STAMP_X_53 53 * 10000 / 254 +#define STAMP_X_70 70 * 10000 / 254 +#define STAMP_X_84 84 * 10000 / 254 +#define STAMP_X_120 120 * 10000 / 254 +#define STAMP_X_130 130 * 10000 / 254 +#define STAMP_X_137 137 * 10000 / 254 +#define STAMP_X_145 145 * 10000 / 254 +#define STAMP_X_168 168 * 10000 / 254 +#define STAMP_X_178 178 * 10000 / 254 +#define STAMP_X_185 185 * 10000 / 254 + +#define STAMP_5 5 * 10000 / 254 +#define STAMP_7 7 * 10000 / 254 +#define STAMP_12 12 * 10000 / 254 + +#define STAMP_145 145 * 10000 / 254 +#define STAMP_110 110 * 10000 / 254 +#define STAMP_85 85 * 10000 / 254 +#define STAMP_60 60 * 10000 / 254 +#define STAMP_25 25 * 10000 / 254 +#endif + /* Les coord ci dessous sont relatives au coin bas - droit de la feuille, et seront soustraires de cette origine */ @@ -59,8 +111,14 @@ enum TypeKi_WorkSheetData WS_DATE, WS_REV, WS_KICAD_VERSION, +#if defined(KICAD_GOST) + WS_PODPIS, +#endif WS_SIZESHEET, WS_IDENTSHEET, +#if defined(KICAD_GOST) + WS_SHEETS, +#endif WS_TITLE, WS_FILENAME, WS_FULLSHEETNAME, @@ -72,7 +130,18 @@ enum TypeKi_WorkSheetData WS_SEGMENT, WS_UPPER_SEGMENT, WS_LEFT_SEGMENT, +#if defined(KICAD_GOST) + WS_CADRE, + WS_LEFT_SEGMENT_D, + WS_SEGMENT_D, + WS_PODPIS_D, + WS_IDENTSHEET_D, + WS_SEGMENT_LU, + WS_SEGMENT_LT, + WS_PODPIS_LU +#else WS_CADRE +#endif }; extern Ki_WorkSheetData WS_Date; @@ -97,6 +166,79 @@ extern Ki_WorkSheetData WS_Segm5; extern Ki_WorkSheetData WS_Segm6; extern Ki_WorkSheetData WS_Segm7; +#if defined(KICAD_GOST) +extern Ki_WorkSheetData WS_Izm; +extern Ki_WorkSheetData WS_Razr; +extern Ki_WorkSheetData WS_Prov; +extern Ki_WorkSheetData WS_TKon; +extern Ki_WorkSheetData WS_NKon; +extern Ki_WorkSheetData WS_Utv; +extern Ki_WorkSheetData WS_List; +extern Ki_WorkSheetData WS_NDoc; +extern Ki_WorkSheetData WS_Podp; +extern Ki_WorkSheetData WS_Data; +extern Ki_WorkSheetData WS_Art; +extern Ki_WorkSheetData WS_Mass; +extern Ki_WorkSheetData WS_Msht; +extern Ki_WorkSheetData WS_List1; +extern Ki_WorkSheetData WS_List2; +extern Ki_WorkSheetData WS_Segm8; +extern Ki_WorkSheetData WS_Segm9; +extern Ki_WorkSheetData WS_Segm10; +extern Ki_WorkSheetData WS_Segm11; +extern Ki_WorkSheetData WS_Segm12; +extern Ki_WorkSheetData WS_Segm13; +extern Ki_WorkSheetData WS_Segm14; +extern Ki_WorkSheetData WS_Segm15; +extern Ki_WorkSheetData WS_Segm16; +extern Ki_WorkSheetData WS_Segm17; +extern Ki_WorkSheetData WS_Segm18; +extern Ki_WorkSheetData WS_Segm19; +extern Ki_WorkSheetData WS_Segm20; +extern Ki_WorkSheetData WS_Segm21; +extern Ki_WorkSheetData WS_Segm22; +extern Ki_WorkSheetData WS_Segm23; +extern Ki_WorkSheetData WS_Segm24; +extern Ki_WorkSheetData WS_Segm25; +extern Ki_WorkSheetData WS_CADRE_D; +extern Ki_WorkSheetData WS_Segm1_D; +extern Ki_WorkSheetData WS_Segm2_D; +extern Ki_WorkSheetData WS_Segm3_D; +extern Ki_WorkSheetData WS_Segm4_D; +extern Ki_WorkSheetData WS_Segm5_D; +extern Ki_WorkSheetData WS_Segm6_D; +extern Ki_WorkSheetData WS_Segm7_D; +extern Ki_WorkSheetData WS_Segm8_D; +extern Ki_WorkSheetData WS_Segm9_D; +extern Ki_WorkSheetData WS_Segm10_D; +extern Ki_WorkSheetData WS_Segm11_D; +extern Ki_WorkSheetData WS_Izm_D; +extern Ki_WorkSheetData WS_List_D; +extern Ki_WorkSheetData WS_NDoc_D; +extern Ki_WorkSheetData WS_Podp_D; +extern Ki_WorkSheetData WS_Date_D; +extern Ki_WorkSheetData WS_List1_D; +extern Ki_WorkSheetData WS_ListN_D; +extern Ki_WorkSheetData WS_Segm1_LU; +extern Ki_WorkSheetData WS_Segm2_LU; +extern Ki_WorkSheetData WS_Segm3_LU; +extern Ki_WorkSheetData WS_Segm4_LU; +extern Ki_WorkSheetData WS_Segm5_LU; +extern Ki_WorkSheetData WS_Segm6_LU; +extern Ki_WorkSheetData WS_Segm7_LU; +extern Ki_WorkSheetData WS_Segm8_LU; +extern Ki_WorkSheetData WS_Podp1_LU; +extern Ki_WorkSheetData WS_Podp2_LU; +extern Ki_WorkSheetData WS_Podp3_LU; +extern Ki_WorkSheetData WS_Podp4_LU; +extern Ki_WorkSheetData WS_Podp5_LU; +extern Ki_WorkSheetData WS_Segm1_LT; +extern Ki_WorkSheetData WS_Segm2_LT; +extern Ki_WorkSheetData WS_Segm3_LT; +extern Ki_WorkSheetData WS_Segm4_LT; +extern Ki_WorkSheetData WS_Segm5_LT; +#endif + #ifdef EDA_BASE Ki_WorkSheetData WS_Date = @@ -105,7 +247,11 @@ Ki_WorkSheetData WS_Date = &WS_Licence, BLOCK_DATE_X, BLOCK_DATE_Y, 0,0, - wxT("Date: "), NULL +#if defined(KICAD_GOST) + NULL, NULL +#else + wxT("Date: "), NULL +#endif }; Ki_WorkSheetData WS_Licence = @@ -121,14 +267,29 @@ Ki_WorkSheetData WS_Revision = { WS_REV, &WS_SizeSheet, - BLOCK_REV_X, BLOCK_REV_Y, - 0,0, - wxT("Rev: "), NULL +#if defined(KICAD_GOST) + STAMP_X_185 - 30, STAMP_Y_30 + 90, +#else + BLOCK_REV_X, BLOCK_REV_Y, +#endif + 0,0, +#if defined(KICAD_GOST) + NULL, NULL +#else + wxT("Rev: "), NULL +#endif }; Ki_WorkSheetData WS_SizeSheet = { WS_SIZESHEET, +#if defined(KICAD_GOST) + &WS_Title, + BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y, + 0,0, + NULL, NULL + }; +#else &WS_IdentSheet, BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y, 0,0, @@ -143,6 +304,7 @@ Ki_WorkSheetData WS_IdentSheet = 0,0, wxT("Id: "),NULL }; +#endif Ki_WorkSheetData WS_Title = { @@ -150,7 +312,11 @@ Ki_WorkSheetData WS_Title = &WS_SheetFilename, BLOCK_TITLE_X, BLOCK_TITLE_Y, 0,0, +#if defined(KICAD_GOST) + NULL, NULL +#else wxT("Title: "),NULL +#endif }; Ki_WorkSheetData WS_SheetFilename = @@ -177,15 +343,20 @@ Ki_WorkSheetData WS_Company = &WS_Comment1, BLOCK_COMMENT_X, BLOCK_COMPANY_Y, 0,0, - NULL,NULL, + NULL,NULL }; Ki_WorkSheetData WS_Comment1 = { WS_COMMENT1, &WS_Comment2, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_OY, + STAMP_OX, 0, +#else BLOCK_COMMENT_X, BLOCK_COMMENT1_Y, 0,0, +#endif NULL,NULL }; @@ -193,8 +364,13 @@ Ki_WorkSheetData WS_Comment2 = { WS_COMMENT2, &WS_Comment3, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_OY, + STAMP_OX, 0, +#else BLOCK_COMMENT_X, BLOCK_COMMENT2_Y, 0,0, +#endif NULL,NULL }; @@ -202,8 +378,13 @@ Ki_WorkSheetData WS_Comment3 = { WS_COMMENT3, &WS_Comment4, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_OY, + STAMP_OX, 0, +#else BLOCK_COMMENT_X, BLOCK_COMMENT3_Y, 0,0, +#endif NULL,NULL }; @@ -211,14 +392,24 @@ Ki_WorkSheetData WS_Comment4 = { WS_COMMENT4, &WS_MostLeftLine, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_OY, + STAMP_OX, 0, +#else BLOCK_COMMENT_X, BLOCK_COMMENT4_Y, 0,0, +#endif NULL,NULL }; Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */ { WS_LEFT_SEGMENT, +#if defined(KICAD_GOST) + &WS_MostUpperLine, + STAMP_OX, STAMP_OY, + STAMP_OX, 0, +#else &WS_SeparatorLine, BLOCK_OX, SIZETEXT * 16, BLOCK_OX, 0, @@ -231,6 +422,7 @@ Ki_WorkSheetData WS_SeparatorLine = /* horizontal segment between filename and c &WS_MostUpperLine, BLOCK_OX, VARIABLE_BLOCK_START_POSITION, 0, VARIABLE_BLOCK_START_POSITION, +#endif NULL,NULL }; @@ -238,8 +430,13 @@ Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */ { WS_UPPER_SEGMENT, &WS_Segm3, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_OY, + 0, STAMP_OY, +#else BLOCK_OX, SIZETEXT * 16, 0, SIZETEXT * 16, +#endif NULL,NULL }; @@ -247,8 +444,13 @@ Ki_WorkSheetData WS_Segm3 = /* segment horizontal au dessus de NAME COMPANY */ { WS_SEGMENT, &WS_Segm4, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_Y_50, + STAMP_X_120, STAMP_Y_50, +#else BLOCK_OX, SIZETEXT * 6, 0, SIZETEXT * 6, +#endif NULL,NULL }; @@ -256,8 +458,13 @@ Ki_WorkSheetData WS_Segm4 = /* segment vertical a gauche de SHEET et REV */ { WS_SEGMENT, &WS_Segm5, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_Y_45, + STAMP_X_120, STAMP_Y_45, +#else BLOCK_REV_X + SIZETEXT, SIZETEXT * 4, BLOCK_REV_X + SIZETEXT, 0, +#endif NULL,NULL }; @@ -265,8 +472,13 @@ Ki_WorkSheetData WS_Segm5 = /* 1er segment horizontal */ { WS_SEGMENT, &WS_Segm6, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_Y_40, + 0, STAMP_Y_40, +#else BLOCK_OX, SIZETEXT * 2, 0, SIZETEXT * 2, +#endif NULL,NULL }; @@ -274,18 +486,658 @@ Ki_WorkSheetData WS_Segm6 = /* 2eme segment horizontal */ { WS_SEGMENT, &WS_Segm7, +#if defined(KICAD_GOST) + STAMP_OX, STAMP_Y_35, + STAMP_X_120, STAMP_Y_35, +#else BLOCK_OX, SIZETEXT * 4, 0, SIZETEXT * 4, +#endif NULL,NULL }; Ki_WorkSheetData WS_Segm7 = /* segment vertical apres SIZE */ { WS_SEGMENT, +#if defined(KICAD_GOST) + &WS_Segm8, + STAMP_X_50, STAMP_Y_35, + 0, STAMP_Y_35, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm8 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm9, + STAMP_OX, STAMP_Y_30, + STAMP_X_120, STAMP_Y_30, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm9 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm10, + STAMP_OX, STAMP_Y_25, + STAMP_X_120, STAMP_Y_25, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm10 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm11, + STAMP_OX, STAMP_Y_20, + STAMP_X_120, STAMP_Y_20, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm11 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm12, + STAMP_X_50, STAMP_Y_20, + 0, STAMP_Y_20, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm12 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm13, + STAMP_OX, STAMP_Y_15, + 0, STAMP_Y_15, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm13 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm14, + STAMP_OX, STAMP_Y_10, + STAMP_X_120, STAMP_Y_10, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm14 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm15, + STAMP_OX, STAMP_Y_5, + STAMP_X_120, STAMP_Y_5, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm15 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm16, + STAMP_X_178, STAMP_OY, + STAMP_X_178, STAMP_Y_30, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm16 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm17, + STAMP_X_168, STAMP_OY, + STAMP_X_168, 0, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm17 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm18, + STAMP_X_145, STAMP_OY, + STAMP_X_145, 0, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm18 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm19, + STAMP_X_130, STAMP_OY, + STAMP_X_130, 0, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm19 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm20, + STAMP_X_120, STAMP_OY, + STAMP_X_120, 0, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm20 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm21, + STAMP_X_50, STAMP_Y_40, + STAMP_X_50, 0, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm21 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm22, + STAMP_X_45, STAMP_Y_35, + STAMP_X_45, STAMP_Y_20, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm22 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm23, + STAMP_X_40, STAMP_Y_35, + STAMP_X_40, STAMP_Y_20, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm23 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm24, + STAMP_X_35, STAMP_Y_40, + STAMP_X_35, STAMP_Y_20, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm24 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Segm25, + STAMP_X_30, STAMP_Y_20, + STAMP_X_30, STAMP_Y_15, + NULL,NULL + }; + +Ki_WorkSheetData WS_Segm25 = /* segment vertical apres SIZE */ + { + WS_SEGMENT, + &WS_Izm, + STAMP_X_18, STAMP_Y_40, + STAMP_X_18, STAMP_Y_20, + NULL,NULL + }; + +Ki_WorkSheetData WS_Izm = + { + WS_PODPIS, + &WS_Razr, + STAMP_X_185 - 30,STAMP_Y_30 + 90, + 0,0, + wxT("Изм."), NULL + }; + +Ki_WorkSheetData WS_Razr = + { + WS_PODPIS, + &WS_Prov, + STAMP_X_185 - 30,STAMP_Y_25 + 90, + 0,0, + wxT("Разраб."), NULL + }; + +Ki_WorkSheetData WS_Prov = + { + WS_PODPIS, + &WS_TKon, + STAMP_X_185 - 30,STAMP_Y_20 + 90, + 0,0, + wxT("Пров."), NULL + }; + +Ki_WorkSheetData WS_TKon = + { + WS_PODPIS, + &WS_NKon, + STAMP_X_185 - 30,STAMP_Y_15 + 90, + 0,0, + wxT("Т.контр."), NULL + }; + +Ki_WorkSheetData WS_NKon = + { + WS_PODPIS, + &WS_Utv, + STAMP_X_185 - 30,STAMP_Y_5 + 90, + 0,0, + wxT("Н.контр."), NULL + }; + +Ki_WorkSheetData WS_Utv = + { + WS_PODPIS, + &WS_List, + STAMP_X_185 - 30,STAMP_Y_0 + 90, + 0,0, + wxT("Утв."), NULL + }; + +Ki_WorkSheetData WS_List = + { + WS_PODPIS, + &WS_NDoc, + STAMP_X_178 - 30,STAMP_Y_30 + 90, + 0,0, + wxT("Лист"), NULL + }; + +Ki_WorkSheetData WS_NDoc = + { + WS_PODPIS, + &WS_Podp, + STAMP_X_168 - 30,STAMP_Y_30 + 90, + 0,0, + wxT("N докум."), NULL + }; + +Ki_WorkSheetData WS_Podp = + { + WS_PODPIS, + &WS_Data, + STAMP_X_145 - 30,STAMP_Y_30 + 90, + 0,0, + wxT("Подп."), NULL + }; + +Ki_WorkSheetData WS_Data = + { + WS_PODPIS, + &WS_Art, + STAMP_X_130 - 30,STAMP_Y_30 + 90, + 0,0, + wxT("Дата"), NULL + }; + +Ki_WorkSheetData WS_Art = + { + WS_PODPIS, + &WS_Mass, + STAMP_X_50 - 30,STAMP_Y_35 + 90, + 0,0, + wxT("Арт."), NULL + }; + +Ki_WorkSheetData WS_Mass = + { + WS_PODPIS, + &WS_Msht, + STAMP_X_35 - 30,STAMP_Y_35 + 90, + 0,0, + wxT("Масса"), NULL + }; + +Ki_WorkSheetData WS_Msht = + { + WS_PODPIS, + &WS_List1, + STAMP_X_18 - 30,STAMP_Y_35 + 90, + 0,0, + wxT("Масштаб"), NULL + }; + +Ki_WorkSheetData WS_List1 = + { + WS_IDENTSHEET, + &WS_List2, + STAMP_X_50 - 30,STAMP_Y_15 + 90, + 0,0, + wxT("Лист "), NULL + }; + +Ki_WorkSheetData WS_List2 = + { + WS_SHEETS, + NULL, + STAMP_X_30 - 30,STAMP_Y_15 + 90, + 0,0, + wxT("Листов "), NULL + }; + +Ki_WorkSheetData WS_CADRE_D = + { + WS_CADRE, + &WS_Segm1_D, + STAMP_OX, 0, + 0,0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm1_D = + { + WS_LEFT_SEGMENT_D, + &WS_Segm2_D, + STAMP_OX, STAMP_Y_15, + STAMP_OX, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm2_D = + { + WS_SEGMENT_D, + &WS_Segm3_D, + STAMP_X_178, STAMP_Y_15, + STAMP_X_178, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm3_D = + { + WS_SEGMENT_D, + &WS_Segm4_D, + STAMP_X_168, STAMP_Y_15, + STAMP_X_168, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm4_D = + { + WS_SEGMENT_D, + &WS_Segm5_D, + STAMP_X_145, STAMP_Y_15, + STAMP_X_145, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm5_D = + { + WS_SEGMENT_D, + &WS_Segm6_D, + STAMP_X_130, STAMP_Y_15, + STAMP_X_130, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm6_D = + { + WS_SEGMENT_D, + &WS_Segm7_D, + STAMP_X_120, STAMP_Y_15, + STAMP_X_120, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm7_D = + { + WS_SEGMENT_D, + &WS_Segm8_D, + STAMP_X_10, STAMP_Y_15, + STAMP_X_10, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm8_D = + { + WS_SEGMENT_D, + &WS_Segm9_D, + STAMP_X_185, STAMP_Y_10, + STAMP_X_120, STAMP_Y_10, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm9_D = + { + WS_SEGMENT_D, + &WS_Segm10_D, + STAMP_X_185, STAMP_Y_5, + STAMP_X_120, STAMP_Y_5, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm10_D = + { + WS_SEGMENT_D, + &WS_Segm11_D, + STAMP_X_10, STAMP_Y_8, + 0, STAMP_Y_8, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm11_D = + { + WS_SEGMENT_D, + &WS_Izm_D, + STAMP_X_185, STAMP_Y_15, + 0, STAMP_Y_15, + NULL, NULL + }; + +Ki_WorkSheetData WS_Izm_D = + { + WS_PODPIS_D, + &WS_List_D, + STAMP_X_185 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT("Изм."), NULL + }; + +Ki_WorkSheetData WS_List_D = + { + WS_PODPIS_D, + &WS_NDoc_D, + STAMP_X_178 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT("Лист"), NULL + }; + +Ki_WorkSheetData WS_NDoc_D = + { + WS_PODPIS_D, + &WS_Podp_D, + STAMP_X_168 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT("N докум."), NULL + }; + +Ki_WorkSheetData WS_Podp_D = + { + WS_PODPIS_D, + &WS_Date_D, + STAMP_X_145 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT("Подп."), NULL + }; + +Ki_WorkSheetData WS_Date_D = + { + WS_PODPIS_D, + &WS_List1_D, + STAMP_X_130 - 30, STAMP_Y_0 + 90, + 0, 0, + wxT("Дата"), NULL + }; + +Ki_WorkSheetData WS_List1_D = + { + WS_PODPIS_D, + &WS_ListN_D, + STAMP_X_10 - 30, STAMP_Y_8 + 90, + 0, 0, + wxT("Лист"), NULL + }; + +Ki_WorkSheetData WS_ListN_D = + { + WS_IDENTSHEET_D, + NULL, + STAMP_Y_0 + 196, STAMP_Y_0 + 90, + 0, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm1_LU = + { + WS_SEGMENT_LU, + &WS_Segm2_LU, + STAMP_12, STAMP_145, + STAMP_12, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm2_LU = + { + WS_SEGMENT_LU, + &WS_Segm3_LU, + STAMP_7, STAMP_145, + STAMP_7, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm3_LU = + { + WS_SEGMENT_LU, + &WS_Segm4_LU, + STAMP_12, STAMP_145, + 0, STAMP_145, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm4_LU = + { + WS_SEGMENT_LU, + &WS_Segm5_LU, + STAMP_12, STAMP_110, + 0, STAMP_110, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm5_LU = + { + WS_SEGMENT_LU, + &WS_Segm6_LU, + STAMP_12, STAMP_85, + 0, STAMP_85, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm6_LU = + { + WS_SEGMENT_LU, + &WS_Segm7_LU, + STAMP_12, STAMP_60, + 0, STAMP_60, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm7_LU = + { + WS_SEGMENT_LU, + &WS_Segm8_LU, + STAMP_12, STAMP_25, + 0, STAMP_25, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm8_LU = + { + WS_SEGMENT_LU, + &WS_Podp1_LU, + STAMP_12, 0, + 0, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Podp1_LU = + { + WS_PODPIS_LU, + &WS_Podp2_LU, + STAMP_7 + 90, 0 + 30, + 0, 0, + wxT("Инв.N подл."), NULL + }; + +Ki_WorkSheetData WS_Podp2_LU = + { + WS_PODPIS_LU, + &WS_Podp3_LU, + STAMP_7 + 90, STAMP_25 + 30, + 0, 0, + wxT("Подп. и дата"), NULL + }; + +Ki_WorkSheetData WS_Podp3_LU = + { + WS_PODPIS_LU, + &WS_Podp4_LU, + STAMP_7 + 90, STAMP_60 + 30, + 0, 0, + wxT("Взам.инв.N"), NULL + }; + +Ki_WorkSheetData WS_Podp4_LU = + { + WS_PODPIS_LU, + &WS_Podp5_LU, + STAMP_7 + 90, STAMP_85 + 30, + 0, 0, + wxT("Инв.N дубл."), NULL + }; + +Ki_WorkSheetData WS_Podp5_LU = + { + WS_PODPIS_LU, + NULL, + STAMP_7 + 90, STAMP_110 + 30, + 0, 0, + wxT("Подп. и дата"), NULL + }; + +Ki_WorkSheetData WS_Segm1_LT = + { + WS_SEGMENT_LT, + &WS_Segm2_LT, + STAMP_X_0, STAMP_Y_14, + STAMP_X_137, STAMP_Y_14, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm2_LT = + { + WS_SEGMENT_LT, + &WS_Segm3_LT, + STAMP_X_137, STAMP_Y_14, + STAMP_X_137, 0, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm3_LT = + { + WS_SEGMENT_LT, + &WS_Segm4_LT, + STAMP_X_137, STAMP_Y_7, + STAMP_X_84, STAMP_Y_7, + NULL, NULL + }; + +Ki_WorkSheetData WS_Segm4_LT = + { + WS_SEGMENT_LT, + &WS_Segm5_LT, + STAMP_X_84, STAMP_Y_14, + STAMP_X_84, 0, + NULL, NULL + }; +Ki_WorkSheetData WS_Segm5_LT = + { + WS_SEGMENT_LT, + NULL, + STAMP_X_70, STAMP_Y_14, + STAMP_X_70, 0, +#else NULL, BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 4, BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 2, - NULL,NULL +#endif + NULL, NULL }; #endif diff --git a/install.txt b/install.txt index 4e872b97b4..4d6d7e762c 100644 --- a/install.txt +++ b/install.txt @@ -158,6 +158,15 @@ Build the "minizip" executable. Use OFF to disable it building. -DKICAD_PYTHON=ON Build the KiCad with Python support. +-DKICAD_CYRILLIC=ON +Build the KiCad with cyrillic fonts support. + +-DwxUSE_UNICODE=ON +Require on locale utf8 for build the KiCad with cyrillic fonts support. + +-DKICAD_GOST=ON +Build the KiCad with russian GOST support. + -DCMAKE_CXX_FLAGS= Extra flags for the c++ compiler for your system required. diff --git a/pcbnew/plot_rtn.cpp b/pcbnew/plot_rtn.cpp index 57e1051055..5790f59ec6 100644 --- a/pcbnew/plot_rtn.cpp +++ b/pcbnew/plot_rtn.cpp @@ -624,7 +624,15 @@ void Plot_1_texte( int format_plot, const wxString& Text, int angle, /* trace du texte */ for( ; kk < nbcodes; kk++ ) { - int code = Text.GetChar( kk ) & 0xFF; +#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) + int code = Text.GetChar(kk) & 0x7FF; + if ( code > 0x40F && code < 0x450 ) // big small Cyr + code = utf8_to_ascii[code - 0x410] & 0xFF; + else + code = code & 0xFF; +#else + int code = Text.GetChar( kk ) & 0xFF; +#endif ptcar = graphic_fonte_shape[code]; /* ptcar pointe la description * du caractere a dessiner */