Commit 8bed5053 authored by faa's avatar faa

cyrillic font support, russian GOST support

parent 76467a7f
...@@ -14,6 +14,11 @@ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules) ...@@ -14,6 +14,11 @@ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
# building minizip. # building minizip.
option(KICAD_MINIZIP "enable/disable building minizip (default ON)" ON) 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. # Comment this out if you don't want to build with Python support.
# OPTION(KICAD_PYTHON "enable/disable building with Python support (default OFF)") # OPTION(KICAD_PYTHON "enable/disable building with Python support (default OFF)")
...@@ -33,6 +38,18 @@ if(CMAKE_COMPILER_IS_GNUCXX) ...@@ -33,6 +38,18 @@ if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g3 -ggdb3 -DDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g3 -ggdb3 -DDEBUG")
endif(CMAKE_COMPILER_IS_GNUCXX) 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. # Locations for install targets.
set(KICAD_BIN bin set(KICAD_BIN bin
CACHE PATH "Location of KiCad binaries.") CACHE PATH "Location of KiCad binaries.")
......
...@@ -5,6 +5,11 @@ Started 2007-June-11 ...@@ -5,6 +5,11 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2008-nov-5 UPDATE Andrey Fedorushkov <andrf@mail.ru>
================================================================================
+all:
Add cyrillic font support.
Add russian GOST worksheet support.
2008-nov-2 CLEANUP Jerry Jacobs <jerkejacobs@gmail.com> 2008-nov-2 CLEANUP Jerry Jacobs <jerkejacobs@gmail.com>
================================================================================ ================================================================================
......
...@@ -535,7 +535,15 @@ void EDA_TextStruct::CreateDrawData() ...@@ -535,7 +535,15 @@ void EDA_TextStruct::CreateDrawData()
while( kk++ < nbchar ) while( kk++ < nbchar )
{ {
x0 = 0; y0 = 0; 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 ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description
* du caractere a dessiner */ * du caractere a dessiner */
......
...@@ -82,7 +82,14 @@ Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxS ...@@ -82,7 +82,14 @@ Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxS
m_Name = name; m_Name = name;
// Adjust the default value for margins to 400 mils (0,4 inch or 10 mm) // 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
} }
......
...@@ -127,6 +127,17 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) ...@@ -127,6 +127,17 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen )
xg = (PageSize.x - Sheet->m_RightMargin) * conv_unit; xg = (PageSize.x - Sheet->m_RightMargin) * conv_unit;
yg = (PageSize.y - Sheet->m_BottomMargin) * conv_unit; /* lower right corner */ 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++ ) for( ii = 0; ii < 2; ii++ )
{ {
FctPlume( ref, 'U' ); FctPlume( ref, 'U' );
...@@ -140,6 +151,7 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) ...@@ -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; 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; xg -= GRID_REF_W * conv_unit; yg -= GRID_REF_W * conv_unit;
} }
#endif
/* trace des reperes */ /* trace des reperes */
text_size.x = WSTEXTSIZE * conv_unit; text_size.x = WSTEXTSIZE * conv_unit;
...@@ -150,6 +162,48 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) ...@@ -150,6 +162,48 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen )
xg = (PageSize.x - Sheet->m_RightMargin); xg = (PageSize.x - Sheet->m_RightMargin);
yg = (PageSize.y - Sheet->m_BottomMargin); /* lower right corner in 1/1000 inch */ 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 */ /* Trace des reperes selon l'axe X */
ipas = (xg - ref.x) / PAS_REF; ipas = (xg - ref.x) / PAS_REF;
gxpas = ( xg - ref.x) / ipas; gxpas = ( xg - ref.x) / ipas;
...@@ -214,10 +268,102 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) ...@@ -214,10 +268,102 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen )
PlotGraphicText( format_plot, pos, color, msg, TEXT_ORIENT_HORIZ, text_size, PlotGraphicText( format_plot, pos, color, msg, TEXT_ORIENT_HORIZ, text_size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER ); GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
} }
#endif
/* Trace du cartouche */ /* Trace du cartouche */
text_size.x = SIZETEXT * conv_unit; text_size.x = SIZETEXT * conv_unit;
text_size.y = 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.x = PageSize.x - GRID_REF_W - Sheet->m_RightMargin;
ref.y = PageSize.y - GRID_REF_W - Sheet->m_BottomMargin; ref.y = PageSize.y - GRID_REF_W - Sheet->m_BottomMargin;
...@@ -327,6 +473,7 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen ) ...@@ -327,6 +473,7 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen )
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER ); GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER );
} }
} }
#endif
switch( format_plot ) switch( format_plot )
{ {
......
...@@ -219,7 +219,15 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -219,7 +219,15 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
while( kk++ < nbchar ) while( kk++ < nbchar )
{ {
x0 = 0; y0 = 0; 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 ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description
* du caractere a dessiner */ * du caractere a dessiner */
...@@ -423,7 +431,15 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor, ...@@ -423,7 +431,15 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
while( kk++ < nbchar ) 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 ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description
* du caractere a dessiner */ * du caractere a dessiner */
......
...@@ -61,6 +61,11 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w ...@@ -61,6 +61,11 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w
xg = Sheet->m_Size.x - Sheet->m_RightMargin; xg = Sheet->m_Size.x - Sheet->m_RightMargin;
yg = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ 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++ ) for( ii = 0; ii < 2; ii++ )
{ {
GRRect( &DrawPanel->m_ClipBox, DC, refx * scale, refy * scale, 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 ...@@ -69,9 +74,52 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w
refx += GRID_REF_W; refy += GRID_REF_W; refx += GRID_REF_W; refy += GRID_REF_W;
xg -= GRID_REF_W; yg -= GRID_REF_W; xg -= GRID_REF_W; yg -= GRID_REF_W;
} }
#endif
/* trace des reperes */ /* trace des reperes */
refx = Sheet->m_LeftMargin; 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 */ refy = Sheet->m_TopMargin; /* Upper left corner */
xg = Sheet->m_Size.x - Sheet->m_RightMargin; xg = Sheet->m_Size.x - Sheet->m_RightMargin;
yg = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ 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 ...@@ -135,8 +183,114 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w
Line, TEXT_ORIENT_HORIZ, size_ref, Line, TEXT_ORIENT_HORIZ, size_ref,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width ); GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width );
} }
#endif
/* Trace du cartouche */ /* 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; 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 */ 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 ...@@ -312,6 +466,7 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w
break; break;
} }
} }
#endif
} }
......
...@@ -839,6 +839,16 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) ...@@ -839,6 +839,16 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
nextcmpref = CONV_FROM_UTF8( ListeCmp[ii + 1].m_TextRef ); nextcmpref = CONV_FROM_UTF8( ListeCmp[ii + 1].m_TextRef );
cmpvalue = CONV_FROM_UTF8( ListeCmp[ii].m_TextValue ); cmpvalue = CONV_FROM_UTF8( ListeCmp[ii].m_TextValue );
nextcmpvalue = CONV_FROM_UTF8( ListeCmp[ii + 1].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)" ), msg.Printf( _( "Diff values for %s%d%c (%s) and %s%d%c (%s)" ),
cmpref.GetData(), cmpref.GetData(),
ListeCmp[ii].m_NumRef, ListeCmp[ii].m_NumRef,
...@@ -847,6 +857,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) ...@@ -847,6 +857,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
ListeCmp[ii + 1].m_NumRef, ListeCmp[ii + 1].m_NumRef,
ListeCmp[ii + 1].m_Unit + 'A' - 1, ListeCmp[ii + 1].m_Unit + 'A' - 1,
nextcmpvalue.GetData() ); nextcmpvalue.GetData() );
#endif
DisplayError( frame, msg ); DisplayError( frame, msg );
error++; error++;
......
...@@ -727,7 +727,11 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByRef( FILE* f, ...@@ -727,7 +727,11 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByRef( FILE* f,
Multi = Entry->m_UnitCount; Multi = Entry->m_UnitCount;
if( ( Multi > 1 ) && aIncludeSubComponents ) if( ( Multi > 1 ) && aIncludeSubComponents )
#if defined(KICAD_GOST)
Unit = aList[ii].m_Unit + '1' - 1;
#else
Unit = aList[ii].m_Unit + 'A' - 1; Unit = aList[ii].m_Unit + 'A' - 1;
#endif
sprintf( CmpName, "%s", aList[ii].m_Ref ); sprintf( CmpName, "%s", aList[ii].m_Ref );
if( !CompactForm || Unit != ' ' ) if( !CompactForm || Unit != ' ' )
...@@ -815,10 +819,17 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByVal( FILE* f, ...@@ -815,10 +819,17 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByVal( FILE* f,
if( ( Multi > 1 ) && aIncludeSubComponents ) 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; Unit = aList[ii].m_Unit + 'A' - 1;
} }
sprintf( CmpName, "%s%c", aList[ii].m_Ref, Unit ); sprintf( CmpName, "%s%c", aList[ii].m_Ref, Unit );
#endif
fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField(VALUE)->m_Text ), CmpName ); fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField(VALUE)->m_Text ), CmpName );
// print the sheet path // print the sheet path
......
...@@ -130,7 +130,11 @@ void DrawLibEntry( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -130,7 +130,11 @@ void DrawLibEntry( WinEDA_DrawPanel* panel, wxDC* DC,
else color = Color; else color = Color;
if( LibEntry->m_UnitCount > 1 ) 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 ); Prefix.Printf( wxT( "%s?%c" ), LibEntry->m_Prefix.m_Text.GetData(), Multi + 'A' - 1 );
#endif
else else
Prefix = LibEntry->m_Prefix.m_Text + wxT( "?" ); Prefix = LibEntry->m_Prefix.m_Text + wxT( "?" );
...@@ -309,7 +313,12 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel, ...@@ -309,7 +313,12 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
{ {
/* On ajoute alors A ou B ... a la reference */ /* On ajoute alors A ou B ... a la reference */
wxString fulltext = m_Text; 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 ); fulltext.Append( 'A' - 1 + DrawLibItem->m_Multi );
#endif
DrawGraphicText( panel, DC, pos, color, fulltext.GetData(), DrawGraphicText( panel, DC, pos, color, fulltext.GetData(),
orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ,
......
...@@ -433,7 +433,12 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem, ...@@ -433,7 +433,12 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem,
/* Adding A, B ... to the reference */ /* Adding A, B ... to the reference */
wxString Text; wxString Text;
Text = field->m_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 ); Text.Append( 'A' - 1 + DrawLibItem->m_Multi );
#endif
PlotGraphicText( g_PlotFormat, textpos, color, Text, PlotGraphicText( g_PlotFormat, textpos, color, Text,
orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ,
field->m_Size, hjustify, vjustify ); field->m_Size, hjustify, vjustify );
......
...@@ -75,6 +75,13 @@ enum pseudokeys { ...@@ -75,6 +75,13 @@ enum pseudokeys {
#define MILLIMETRE 1 #define MILLIMETRE 1
#define CENTIMETRE 2 #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: */ /* forward declarations: */
class LibNameList; class LibNameList;
......
...@@ -45,6 +45,10 @@ ___ 0 ---------- ...@@ -45,6 +45,10 @@ ___ 0 ----------
#define SH_CODE signed char #define SH_CODE signed char
extern const SH_CODE *graphic_fonte_shape[256]; 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 #ifdef EDA_DRAWBASE
#define Up (SH_CODE)'U' #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 ...@@ -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_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}; 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] = const SH_CODE *graphic_fonte_shape[256] =
{ {
// codes 0..31: // codes 0..31:
...@@ -246,6 +309,24 @@ const SH_CODE *graphic_fonte_shape[256] = ...@@ -246,6 +309,24 @@ const SH_CODE *graphic_fonte_shape[256] =
noshape, noshape, noshape, noshape, //184..187 noshape, noshape, noshape, noshape, //184..187
noshape, noshape, noshape, noshape, //188..191 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, noshape, //192..195
noshape, noshape, noshape, char_shape_C_Cedille, //196..199 noshape, noshape, noshape, char_shape_C_Cedille, //196..199
noshape, noshape, noshape, noshape, // 200..203 noshape, noshape, noshape, noshape, // 200..203
...@@ -263,8 +344,22 @@ const SH_CODE *graphic_fonte_shape[256] = ...@@ -263,8 +344,22 @@ const SH_CODE *graphic_fonte_shape[256] =
char_shape_o_circ, noshape, char_shape_o_trema, noshape, //244..247 char_shape_o_circ, noshape, char_shape_o_trema, noshape, //244..247
noshape, char_shape_u_grave, noshape, char_shape_u_circ, //248..251 noshape, char_shape_u_grave, noshape, char_shape_u_circ, //248..251
char_shape_u_trema, noshape, noshape, noshape, //252..255 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
#endif // ifndef _GRFONTE_H_ #endif // ifndef _GRFONTE_H_
...@@ -14,6 +14,58 @@ ...@@ -14,6 +14,58 @@
#define PAS_REF 2000 /* pas des marquages de reference des reperes */ #define PAS_REF 2000 /* pas des marquages de reference des reperes */
#define TEXT_VTAB_HEIGHT SIZETEXT*2 #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 /* Les coord ci dessous sont relatives au coin bas - droit de la feuille, et
seront soustraires de cette origine seront soustraires de cette origine
*/ */
...@@ -59,8 +111,14 @@ enum TypeKi_WorkSheetData ...@@ -59,8 +111,14 @@ enum TypeKi_WorkSheetData
WS_DATE, WS_DATE,
WS_REV, WS_REV,
WS_KICAD_VERSION, WS_KICAD_VERSION,
#if defined(KICAD_GOST)
WS_PODPIS,
#endif
WS_SIZESHEET, WS_SIZESHEET,
WS_IDENTSHEET, WS_IDENTSHEET,
#if defined(KICAD_GOST)
WS_SHEETS,
#endif
WS_TITLE, WS_TITLE,
WS_FILENAME, WS_FILENAME,
WS_FULLSHEETNAME, WS_FULLSHEETNAME,
...@@ -72,7 +130,18 @@ enum TypeKi_WorkSheetData ...@@ -72,7 +130,18 @@ enum TypeKi_WorkSheetData
WS_SEGMENT, WS_SEGMENT,
WS_UPPER_SEGMENT, WS_UPPER_SEGMENT,
WS_LEFT_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 WS_CADRE
#endif
}; };
extern Ki_WorkSheetData WS_Date; extern Ki_WorkSheetData WS_Date;
...@@ -97,6 +166,79 @@ extern Ki_WorkSheetData WS_Segm5; ...@@ -97,6 +166,79 @@ extern Ki_WorkSheetData WS_Segm5;
extern Ki_WorkSheetData WS_Segm6; extern Ki_WorkSheetData WS_Segm6;
extern Ki_WorkSheetData WS_Segm7; 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 #ifdef EDA_BASE
Ki_WorkSheetData WS_Date = Ki_WorkSheetData WS_Date =
...@@ -105,7 +247,11 @@ Ki_WorkSheetData WS_Date = ...@@ -105,7 +247,11 @@ Ki_WorkSheetData WS_Date =
&WS_Licence, &WS_Licence,
BLOCK_DATE_X, BLOCK_DATE_Y, BLOCK_DATE_X, BLOCK_DATE_Y,
0,0, 0,0,
wxT("Date: "), NULL #if defined(KICAD_GOST)
NULL, NULL
#else
wxT("Date: "), NULL
#endif
}; };
Ki_WorkSheetData WS_Licence = Ki_WorkSheetData WS_Licence =
...@@ -121,14 +267,29 @@ Ki_WorkSheetData WS_Revision = ...@@ -121,14 +267,29 @@ Ki_WorkSheetData WS_Revision =
{ {
WS_REV, WS_REV,
&WS_SizeSheet, &WS_SizeSheet,
BLOCK_REV_X, BLOCK_REV_Y, #if defined(KICAD_GOST)
0,0, STAMP_X_185 - 30, STAMP_Y_30 + 90,
wxT("Rev: "), NULL #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 = Ki_WorkSheetData WS_SizeSheet =
{ {
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, &WS_IdentSheet,
BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y, BLOCK_SIZE_SHEET_X, BLOCK_SIZE_SHEET_Y,
0,0, 0,0,
...@@ -143,6 +304,7 @@ Ki_WorkSheetData WS_IdentSheet = ...@@ -143,6 +304,7 @@ Ki_WorkSheetData WS_IdentSheet =
0,0, 0,0,
wxT("Id: "),NULL wxT("Id: "),NULL
}; };
#endif
Ki_WorkSheetData WS_Title = Ki_WorkSheetData WS_Title =
{ {
...@@ -150,7 +312,11 @@ Ki_WorkSheetData WS_Title = ...@@ -150,7 +312,11 @@ Ki_WorkSheetData WS_Title =
&WS_SheetFilename, &WS_SheetFilename,
BLOCK_TITLE_X, BLOCK_TITLE_Y, BLOCK_TITLE_X, BLOCK_TITLE_Y,
0,0, 0,0,
#if defined(KICAD_GOST)
NULL, NULL
#else
wxT("Title: "),NULL wxT("Title: "),NULL
#endif
}; };
Ki_WorkSheetData WS_SheetFilename = Ki_WorkSheetData WS_SheetFilename =
...@@ -177,15 +343,20 @@ Ki_WorkSheetData WS_Company = ...@@ -177,15 +343,20 @@ Ki_WorkSheetData WS_Company =
&WS_Comment1, &WS_Comment1,
BLOCK_COMMENT_X, BLOCK_COMPANY_Y, BLOCK_COMMENT_X, BLOCK_COMPANY_Y,
0,0, 0,0,
NULL,NULL, NULL,NULL
}; };
Ki_WorkSheetData WS_Comment1 = Ki_WorkSheetData WS_Comment1 =
{ {
WS_COMMENT1, WS_COMMENT1,
&WS_Comment2, &WS_Comment2,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_OY,
STAMP_OX, 0,
#else
BLOCK_COMMENT_X, BLOCK_COMMENT1_Y, BLOCK_COMMENT_X, BLOCK_COMMENT1_Y,
0,0, 0,0,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -193,8 +364,13 @@ Ki_WorkSheetData WS_Comment2 = ...@@ -193,8 +364,13 @@ Ki_WorkSheetData WS_Comment2 =
{ {
WS_COMMENT2, WS_COMMENT2,
&WS_Comment3, &WS_Comment3,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_OY,
STAMP_OX, 0,
#else
BLOCK_COMMENT_X, BLOCK_COMMENT2_Y, BLOCK_COMMENT_X, BLOCK_COMMENT2_Y,
0,0, 0,0,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -202,8 +378,13 @@ Ki_WorkSheetData WS_Comment3 = ...@@ -202,8 +378,13 @@ Ki_WorkSheetData WS_Comment3 =
{ {
WS_COMMENT3, WS_COMMENT3,
&WS_Comment4, &WS_Comment4,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_OY,
STAMP_OX, 0,
#else
BLOCK_COMMENT_X, BLOCK_COMMENT3_Y, BLOCK_COMMENT_X, BLOCK_COMMENT3_Y,
0,0, 0,0,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -211,14 +392,24 @@ Ki_WorkSheetData WS_Comment4 = ...@@ -211,14 +392,24 @@ Ki_WorkSheetData WS_Comment4 =
{ {
WS_COMMENT4, WS_COMMENT4,
&WS_MostLeftLine, &WS_MostLeftLine,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_OY,
STAMP_OX, 0,
#else
BLOCK_COMMENT_X, BLOCK_COMMENT4_Y, BLOCK_COMMENT_X, BLOCK_COMMENT4_Y,
0,0, 0,0,
#endif
NULL,NULL NULL,NULL
}; };
Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */ Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */
{ {
WS_LEFT_SEGMENT, WS_LEFT_SEGMENT,
#if defined(KICAD_GOST)
&WS_MostUpperLine,
STAMP_OX, STAMP_OY,
STAMP_OX, 0,
#else
&WS_SeparatorLine, &WS_SeparatorLine,
BLOCK_OX, SIZETEXT * 16, BLOCK_OX, SIZETEXT * 16,
BLOCK_OX, 0, BLOCK_OX, 0,
...@@ -231,6 +422,7 @@ Ki_WorkSheetData WS_SeparatorLine = /* horizontal segment between filename and c ...@@ -231,6 +422,7 @@ Ki_WorkSheetData WS_SeparatorLine = /* horizontal segment between filename and c
&WS_MostUpperLine, &WS_MostUpperLine,
BLOCK_OX, VARIABLE_BLOCK_START_POSITION, BLOCK_OX, VARIABLE_BLOCK_START_POSITION,
0, VARIABLE_BLOCK_START_POSITION, 0, VARIABLE_BLOCK_START_POSITION,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -238,8 +430,13 @@ Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */ ...@@ -238,8 +430,13 @@ Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */
{ {
WS_UPPER_SEGMENT, WS_UPPER_SEGMENT,
&WS_Segm3, &WS_Segm3,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_OY,
0, STAMP_OY,
#else
BLOCK_OX, SIZETEXT * 16, BLOCK_OX, SIZETEXT * 16,
0, SIZETEXT * 16, 0, SIZETEXT * 16,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -247,8 +444,13 @@ Ki_WorkSheetData WS_Segm3 = /* segment horizontal au dessus de NAME COMPANY */ ...@@ -247,8 +444,13 @@ Ki_WorkSheetData WS_Segm3 = /* segment horizontal au dessus de NAME COMPANY */
{ {
WS_SEGMENT, WS_SEGMENT,
&WS_Segm4, &WS_Segm4,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_Y_50,
STAMP_X_120, STAMP_Y_50,
#else
BLOCK_OX, SIZETEXT * 6, BLOCK_OX, SIZETEXT * 6,
0, SIZETEXT * 6, 0, SIZETEXT * 6,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -256,8 +458,13 @@ Ki_WorkSheetData WS_Segm4 = /* segment vertical a gauche de SHEET et REV */ ...@@ -256,8 +458,13 @@ Ki_WorkSheetData WS_Segm4 = /* segment vertical a gauche de SHEET et REV */
{ {
WS_SEGMENT, WS_SEGMENT,
&WS_Segm5, &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, SIZETEXT * 4,
BLOCK_REV_X + SIZETEXT, 0, BLOCK_REV_X + SIZETEXT, 0,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -265,8 +472,13 @@ Ki_WorkSheetData WS_Segm5 = /* 1er segment horizontal */ ...@@ -265,8 +472,13 @@ Ki_WorkSheetData WS_Segm5 = /* 1er segment horizontal */
{ {
WS_SEGMENT, WS_SEGMENT,
&WS_Segm6, &WS_Segm6,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_Y_40,
0, STAMP_Y_40,
#else
BLOCK_OX, SIZETEXT * 2, BLOCK_OX, SIZETEXT * 2,
0, SIZETEXT * 2, 0, SIZETEXT * 2,
#endif
NULL,NULL NULL,NULL
}; };
...@@ -274,18 +486,658 @@ Ki_WorkSheetData WS_Segm6 = /* 2eme segment horizontal */ ...@@ -274,18 +486,658 @@ Ki_WorkSheetData WS_Segm6 = /* 2eme segment horizontal */
{ {
WS_SEGMENT, WS_SEGMENT,
&WS_Segm7, &WS_Segm7,
#if defined(KICAD_GOST)
STAMP_OX, STAMP_Y_35,
STAMP_X_120, STAMP_Y_35,
#else
BLOCK_OX, SIZETEXT * 4, BLOCK_OX, SIZETEXT * 4,
0, SIZETEXT * 4, 0, SIZETEXT * 4,
#endif
NULL,NULL NULL,NULL
}; };
Ki_WorkSheetData WS_Segm7 = /* segment vertical apres SIZE */ Ki_WorkSheetData WS_Segm7 = /* segment vertical apres SIZE */
{ {
WS_SEGMENT, 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, NULL,
BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 4, BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 4,
BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 2, BLOCK_OX - (SIZETEXT * 11), SIZETEXT * 2,
NULL,NULL #endif
NULL, NULL
}; };
#endif #endif
...@@ -158,6 +158,15 @@ Build the "minizip" executable. Use OFF to disable it building. ...@@ -158,6 +158,15 @@ Build the "minizip" executable. Use OFF to disable it building.
-DKICAD_PYTHON=ON -DKICAD_PYTHON=ON
Build the KiCad with Python support. 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=<some extra flags> -DCMAKE_CXX_FLAGS=<some extra flags>
Extra flags for the c++ compiler for your system required. Extra flags for the c++ compiler for your system required.
......
...@@ -624,7 +624,15 @@ void Plot_1_texte( int format_plot, const wxString& Text, int angle, ...@@ -624,7 +624,15 @@ void Plot_1_texte( int format_plot, const wxString& Text, int angle,
/* trace du texte */ /* trace du texte */
for( ; kk < nbcodes; kk++ ) 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 ptcar = graphic_fonte_shape[code]; /* ptcar pointe la description
* du caractere a dessiner */ * du caractere a dessiner */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment