2
* @file title_block_shapes_gost.cpp
3
* @brief description of graphic items and texts to build a title block
8
* This file creates a lot of structures to define the shape of a title block
13
* This program source code file is part of KiCad, a free EDA CAD application.
15
* Copyright (C) 1992-2013 KiCad Developers, see change_log.txt for contributors.
18
* This program is free software; you can redistribute it and/or
19
* modify it under the terms of the GNU General Public License
20
* as published by the Free Software Foundation; either version 2
21
* of the License, or (at your option) any later version.
23
* This program is distributed in the hope that it will be useful,
24
* but WITHOUT ANY WARRANTY; without even the implied warranty of
25
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
* GNU General Public License for more details.
28
* You should have received a copy of the GNU General Public License
29
* along with this program; if not, you may find one here:
30
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
31
* or you may search the http://www.gnu.org website for the version 2 license,
32
* or you may write to the Free Software Foundation, Inc.,
33
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
38
#include <appl_wxstruct.h>
39
#include <worksheet.h>
40
#include <class_title_block.h>
41
#include <build_version.h>
42
#include <worksheet_shape_builder.h>
44
#define TEXTSIZE 100 // worksheet text size
46
struct Ki_WorkSheetData
50
Ki_WorkSheetData* Pnext;
53
const wxChar* m_TextBase;
57
// Work sheet structure type definitions.
58
enum TypeKi_WorkSheetData {
65
extern Ki_WorkSheetData WS_Osn1_Line1;
66
extern Ki_WorkSheetData WS_Osn1_Line2;
67
extern Ki_WorkSheetData WS_Osn1_Line3;
68
extern Ki_WorkSheetData WS_Osn1_Line4;
69
extern Ki_WorkSheetData WS_Osn1_Line5;
70
extern Ki_WorkSheetData WS_Osn1_Line6;
71
extern Ki_WorkSheetData WS_Osn1_Line7;
72
extern Ki_WorkSheetData WS_Osn1_Line8;
73
extern Ki_WorkSheetData WS_Osn1_Line9;
74
extern Ki_WorkSheetData WS_Osn1_Line10;
75
extern Ki_WorkSheetData WS_Osn1_Line11;
76
extern Ki_WorkSheetData WS_Osn1_Line12;
77
extern Ki_WorkSheetData WS_Osn1_Line13;
78
extern Ki_WorkSheetData WS_Osn1_Line14;
79
extern Ki_WorkSheetData WS_Osn1_Line15;
80
extern Ki_WorkSheetData WS_Osn1_Line16;
81
extern Ki_WorkSheetData WS_Osn1_Line17;
82
extern Ki_WorkSheetData WS_Osn1_Line18;
83
extern Ki_WorkSheetData WS_Osn1_Line19;
84
extern Ki_WorkSheetData WS_Osn1_Line20;
85
extern Ki_WorkSheetData WS_Osn1_Line21;
86
extern Ki_WorkSheetData WS_Osn1_Line22;
87
extern Ki_WorkSheetData WS_Osn1_Line23;
88
extern Ki_WorkSheetData WS_Osn1_Line24;
89
extern Ki_WorkSheetData WS_Osn1_Line25;
90
extern Ki_WorkSheetData WS_Osn1_Line26;
91
extern Ki_WorkSheetData WS_Osn1_Line27;
93
extern Ki_WorkSheetData WS_Osn1_Text1;
94
extern Ki_WorkSheetData WS_Osn1_Text2;
95
extern Ki_WorkSheetData WS_Osn1_Text3;
96
extern Ki_WorkSheetData WS_Osn1_Text4;
97
extern Ki_WorkSheetData WS_Osn1_Text5;
98
extern Ki_WorkSheetData WS_Osn1_Text6;
99
extern Ki_WorkSheetData WS_Osn1_Text7;
100
extern Ki_WorkSheetData WS_Osn1_Text8;
101
extern Ki_WorkSheetData WS_Osn1_Text9;
102
extern Ki_WorkSheetData WS_Osn1_Text10;
103
extern Ki_WorkSheetData WS_Osn1_Text11;
104
extern Ki_WorkSheetData WS_Osn1_Text12;
105
extern Ki_WorkSheetData WS_Osn1_Text13;
106
extern Ki_WorkSheetData WS_Osn1_Text14;
107
extern Ki_WorkSheetData WS_Osn1_Text15;
108
extern Ki_WorkSheetData WS_Osn1_Text16;
109
extern Ki_WorkSheetData WS_Osn1_Text17;
111
extern Ki_WorkSheetData WS_Osn2a_Line1;
112
extern Ki_WorkSheetData WS_Osn2a_Line2;
113
extern Ki_WorkSheetData WS_Osn2a_Line3;
114
extern Ki_WorkSheetData WS_Osn2a_Line4;
115
extern Ki_WorkSheetData WS_Osn2a_Line5;
116
extern Ki_WorkSheetData WS_Osn2a_Line6;
117
extern Ki_WorkSheetData WS_Osn2a_Line7;
118
extern Ki_WorkSheetData WS_Osn2a_Line8;
119
extern Ki_WorkSheetData WS_Osn2a_Line9;
120
extern Ki_WorkSheetData WS_Osn2a_Line10;
121
extern Ki_WorkSheetData WS_Osn2a_Line11;
123
extern Ki_WorkSheetData WS_Osn2a_Text1;
124
extern Ki_WorkSheetData WS_Osn2a_Text2;
125
extern Ki_WorkSheetData WS_Osn2a_Text3;
126
extern Ki_WorkSheetData WS_Osn2a_Text4;
127
extern Ki_WorkSheetData WS_Osn2a_Text5;
128
extern Ki_WorkSheetData WS_Osn2a_Text6;
129
extern Ki_WorkSheetData WS_Osn2a_Text7;
130
extern Ki_WorkSheetData WS_Osn2a_Text8;
132
extern Ki_WorkSheetData WS_DopLeft_Line1;
133
extern Ki_WorkSheetData WS_DopLeft_Line2;
134
extern Ki_WorkSheetData WS_DopLeft_Line3;
135
extern Ki_WorkSheetData WS_DopLeft_Line4;
136
extern Ki_WorkSheetData WS_DopLeft_Line5;
137
extern Ki_WorkSheetData WS_DopLeft_Line6;
138
extern Ki_WorkSheetData WS_DopLeft_Line7;
139
extern Ki_WorkSheetData WS_DopLeft_Line8;
140
extern Ki_WorkSheetData WS_DopLeft_Line9;
141
extern Ki_WorkSheetData WS_DopLeft_Line10;
142
extern Ki_WorkSheetData WS_DopLeft_Line11;
143
extern Ki_WorkSheetData WS_DopLeft_Line12;
144
extern Ki_WorkSheetData WS_DopLeft_Line13;
145
extern Ki_WorkSheetData WS_DopLeft_Line14;
147
extern Ki_WorkSheetData WS_DopLeft_Text1;
148
extern Ki_WorkSheetData WS_DopLeft_Text2;
149
extern Ki_WorkSheetData WS_DopLeft_Text3;
150
extern Ki_WorkSheetData WS_DopLeft_Text4;
151
extern Ki_WorkSheetData WS_DopLeft_Text5;
152
extern Ki_WorkSheetData WS_DopLeft_Text6;
153
extern Ki_WorkSheetData WS_DopLeft_Text7;
155
extern Ki_WorkSheetData WS_DopTop_Line1;
156
extern Ki_WorkSheetData WS_DopTop_Line2;
157
extern Ki_WorkSheetData WS_DopTop_Line3;
158
extern Ki_WorkSheetData WS_DopTop_Line4;
159
extern Ki_WorkSheetData WS_DopTop_Line5;
160
extern Ki_WorkSheetData WS_DopTop_Line6;
163
// Center - right bottom corner
164
Ki_WorkSheetData WS_Osn1_Line1 =
168
Mm2mils( 185 ),Mm2mils( 55 ),
173
Ki_WorkSheetData WS_Osn1_Line2 =
177
Mm2mils( 120 ),Mm2mils( 40 ),
182
Ki_WorkSheetData WS_Osn1_Line3 =
186
Mm2mils( 185 ),Mm2mils( 35 ),
187
Mm2mils( 120 ),Mm2mils( 35 ),
191
Ki_WorkSheetData WS_Osn1_Line4 =
195
Mm2mils( 50 ), Mm2mils( 35 ),
200
Ki_WorkSheetData WS_Osn1_Line5 =
204
Mm2mils( 185 ),Mm2mils( 30 ),
205
Mm2mils( 120 ),Mm2mils( 30 ),
209
Ki_WorkSheetData WS_Osn1_Line6 =
213
Mm2mils( 50 ), Mm2mils( 20 ),
218
Ki_WorkSheetData WS_Osn1_Line7 =
222
Mm2mils( 120 ),Mm2mils( 15 ),
227
Ki_WorkSheetData WS_Osn1_Line8 =
231
Mm2mils( 185 ),Mm2mils( 55 ),
236
Ki_WorkSheetData WS_Osn1_Line9 =
240
Mm2mils( 178 ), Mm2mils( 55 ),
241
Mm2mils( 178 ), Mm2mils( 30 ),
245
Ki_WorkSheetData WS_Osn1_Line10 =
249
Mm2mils( 168 ), Mm2mils( 55 ),
254
Ki_WorkSheetData WS_Osn1_Line11 =
258
Mm2mils( 145 ), Mm2mils( 55 ),
263
Ki_WorkSheetData WS_Osn1_Line12 =
267
Mm2mils( 130 ), Mm2mils( 55 ),
272
Ki_WorkSheetData WS_Osn1_Line13 =
276
Mm2mils( 120 ), Mm2mils( 55 ),
281
Ki_WorkSheetData WS_Osn1_Line14 =
285
Mm2mils( 50 ), Mm2mils( 40 ),
290
Ki_WorkSheetData WS_Osn1_Line15 =
294
Mm2mils( 35 ), Mm2mils( 40 ),
295
Mm2mils( 35 ), Mm2mils( 20 ),
299
Ki_WorkSheetData WS_Osn1_Line16 =
303
Mm2mils( 30 ), Mm2mils( 20 ),
304
Mm2mils( 30 ), Mm2mils( 15 ),
308
Ki_WorkSheetData WS_Osn1_Line17 =
312
Mm2mils( 18 ), Mm2mils( 40 ),
313
Mm2mils( 18 ), Mm2mils( 20 ),
317
Ki_WorkSheetData WS_Osn1_Line18 =
321
Mm2mils( 185 ), Mm2mils( 50 ),
322
Mm2mils( 120 ), Mm2mils( 50 ),
326
Ki_WorkSheetData WS_Osn1_Line19 =
330
Mm2mils( 185 ), Mm2mils( 45 ),
331
Mm2mils( 120 ), Mm2mils( 45 ),
335
Ki_WorkSheetData WS_Osn1_Line20 =
339
Mm2mils( 185 ), Mm2mils( 40 ),
340
Mm2mils( 120 ), Mm2mils( 40 ),
344
Ki_WorkSheetData WS_Osn1_Line21 =
348
Mm2mils( 185 ), Mm2mils( 25 ),
349
Mm2mils( 120 ), Mm2mils( 25 ),
353
Ki_WorkSheetData WS_Osn1_Line22 =
357
Mm2mils( 185 ), Mm2mils( 20 ),
358
Mm2mils( 120 ), Mm2mils( 20 ),
362
Ki_WorkSheetData WS_Osn1_Line23 =
366
Mm2mils( 185 ), Mm2mils( 15 ),
367
Mm2mils( 120 ), Mm2mils( 15 ),
371
Ki_WorkSheetData WS_Osn1_Line24 =
375
Mm2mils( 185 ), Mm2mils( 10 ),
376
Mm2mils( 120 ), Mm2mils( 10 ),
380
Ki_WorkSheetData WS_Osn1_Line25 =
384
Mm2mils( 185 ), Mm2mils( 5 ),
385
Mm2mils( 120 ), Mm2mils( 5 ),
389
Ki_WorkSheetData WS_Osn1_Line26 =
393
Mm2mils( 45 ), Mm2mils( 35 ),
394
Mm2mils( 45 ), Mm2mils( 20 ),
398
Ki_WorkSheetData WS_Osn1_Line27 =
402
Mm2mils( 40 ), Mm2mils( 35 ),
403
Mm2mils( 40 ), Mm2mils( 20 ),
407
Ki_WorkSheetData WS_Osn1_Text1 =
411
Mm2mils( 181.5 ),Mm2mils( 32.5 ),
416
Ki_WorkSheetData WS_Osn1_Text2 =
420
Mm2mils( 184 ), Mm2mils( 27.5 ),
425
Ki_WorkSheetData WS_Osn1_Text3 =
429
Mm2mils( 184 ),Mm2mils( 22.5 ),
434
Ki_WorkSheetData WS_Osn1_Text4 =
438
Mm2mils( 184 ), Mm2mils( 17.5 ),
443
Ki_WorkSheetData WS_Osn1_Text5 =
447
Mm2mils( 184 ), Mm2mils( 7.5 ),
452
Ki_WorkSheetData WS_Osn1_Text6 =
456
Mm2mils( 184 ),Mm2mils( 2.5 ),
461
Ki_WorkSheetData WS_Osn1_Text7 =
465
Mm2mils( 173 ),Mm2mils( 32.5 ),
470
Ki_WorkSheetData WS_Osn1_Text8 =
474
Mm2mils( 156.5 ), Mm2mils( 32.5 ),
479
Ki_WorkSheetData WS_Osn1_Text9 =
483
Mm2mils( 137.5 ),Mm2mils( 32.5 ),
488
Ki_WorkSheetData WS_Osn1_Text10 =
492
Mm2mils( 125 ), Mm2mils( 32.5 ),
497
Ki_WorkSheetData WS_Osn1_Text11 =
501
Mm2mils( 42.5 ),Mm2mils( 37.5 ),
506
Ki_WorkSheetData WS_Osn1_Text12 =
510
Mm2mils( 26.5 ),Mm2mils( 37.5 ),
515
Ki_WorkSheetData WS_Osn1_Text13 =
519
Mm2mils( 9 ), Mm2mils( 37.5 ),
524
Ki_WorkSheetData WS_Osn1_Text14 =
528
Mm2mils( 49 ), Mm2mils( 17.5 ),
533
Ki_WorkSheetData WS_Osn1_Text15 =
537
Mm2mils( 29 ), Mm2mils( 17.5 ),
542
Ki_WorkSheetData WS_Osn1_Text16 =
546
Mm2mils( 40 ), -Mm2mils( 2.5 ),
551
Ki_WorkSheetData WS_Osn1_Text17 =
555
Mm2mils( 110 ), -Mm2mils( 2.5 ),
560
Ki_WorkSheetData WS_Osn2a_Line1 =
564
Mm2mils( 185 ), Mm2mils( 15 ),
569
Ki_WorkSheetData WS_Osn2a_Line2 =
573
Mm2mils( 185 ), Mm2mils( 5 ),
574
Mm2mils( 120 ), Mm2mils( 5 ),
578
Ki_WorkSheetData WS_Osn2a_Line3 =
582
Mm2mils( 10 ), Mm2mils( 8 ),
587
Ki_WorkSheetData WS_Osn2a_Line4 =
591
Mm2mils( 185 ), Mm2mils( 15 ),
596
Ki_WorkSheetData WS_Osn2a_Line5 =
600
Mm2mils( 178 ), Mm2mils( 15 ),
605
Ki_WorkSheetData WS_Osn2a_Line6 =
609
Mm2mils( 168 ), Mm2mils( 15 ),
614
Ki_WorkSheetData WS_Osn2a_Line7 =
618
Mm2mils( 145 ), Mm2mils( 15 ),
623
Ki_WorkSheetData WS_Osn2a_Line8 =
627
Mm2mils( 130 ), Mm2mils( 15 ),
632
Ki_WorkSheetData WS_Osn2a_Line9 =
636
Mm2mils( 120 ), Mm2mils( 15 ),
641
Ki_WorkSheetData WS_Osn2a_Line10 =
645
Mm2mils( 10 ), Mm2mils( 15 ),
650
Ki_WorkSheetData WS_Osn2a_Line11 =
654
Mm2mils( 185 ), Mm2mils( 10 ),
655
Mm2mils( 120 ), Mm2mils( 10 ),
659
Ki_WorkSheetData WS_Osn2a_Text1 =
663
Mm2mils( 181.5 ),Mm2mils( 2.5 ),
668
Ki_WorkSheetData WS_Osn2a_Text2 =
672
Mm2mils( 173 ), Mm2mils( 2.5 ),
677
Ki_WorkSheetData WS_Osn2a_Text3 =
681
Mm2mils( 156.5 ), Mm2mils( 2.5 ),
686
Ki_WorkSheetData WS_Osn2a_Text4 =
690
Mm2mils( 137.5 ),Mm2mils( 2.5 ),
695
Ki_WorkSheetData WS_Osn2a_Text5 =
699
Mm2mils( 125 ), Mm2mils( 2.5 ),
704
Ki_WorkSheetData WS_Osn2a_Text6 =
708
Mm2mils( 5 ), Mm2mils( 11.5 ),
713
Ki_WorkSheetData WS_Osn2a_Text7 =
717
Mm2mils( 40 ), -Mm2mils( 2.5 ),
722
Ki_WorkSheetData WS_Osn2a_Text8 =
726
Mm2mils( 110 ), -Mm2mils( 2.5 ),
731
// Center - left bottom corner
733
Ki_WorkSheetData WS_DopLeft_Line1 =
737
Mm2mils( 12 ), Mm2mils( 145 ),
742
Ki_WorkSheetData WS_DopLeft_Line2 =
746
Mm2mils( 12 ), Mm2mils( 110 ),
751
Ki_WorkSheetData WS_DopLeft_Line3 =
755
Mm2mils( 12 ), Mm2mils( 85 ),
760
Ki_WorkSheetData WS_DopLeft_Line4 =
764
Mm2mils( 12 ), Mm2mils( 60 ),
769
Ki_WorkSheetData WS_DopLeft_Line5 =
773
Mm2mils( 12 ), Mm2mils( 25 ),
778
Ki_WorkSheetData WS_DopLeft_Line6 =
787
Ki_WorkSheetData WS_DopLeft_Line7 =
791
Mm2mils( 12 ), Mm2mils( 145 ),
796
Ki_WorkSheetData WS_DopLeft_Line8 =
800
Mm2mils( 7 ), Mm2mils( 145 ),
805
Ki_WorkSheetData WS_DopLeft_Text1 =
809
Mm2mils( 9.5 ), Mm2mils( 12.5 ),
814
Ki_WorkSheetData WS_DopLeft_Text2 =
818
Mm2mils( 9.5 ), Mm2mils( 42.5 ),
820
wxT( "Подп. и дата" )
823
Ki_WorkSheetData WS_DopLeft_Text3 =
827
Mm2mils( 9.5 ), Mm2mils( 72.5 ),
832
Ki_WorkSheetData WS_DopLeft_Text4 =
836
Mm2mils( 9.5 ), Mm2mils( 97.5 ),
841
Ki_WorkSheetData WS_DopLeft_Text5 =
845
Mm2mils( 9.5 ), Mm2mils( 127.5 ),
847
wxT( "Подп. и дата" )
850
Ki_WorkSheetData WS_DopLeft_Line9 =
854
Mm2mils( 7 ), Mm2mils( 287 ),
855
Mm2mils( 7 ), Mm2mils( 167 ),
859
Ki_WorkSheetData WS_DopLeft_Line10 =
863
Mm2mils( 12 ), Mm2mils( 287 ),
864
Mm2mils( 12 ), Mm2mils( 167 ),
868
Ki_WorkSheetData WS_DopLeft_Line11 =
872
Mm2mils( 12 ), Mm2mils( 287 ),
873
Mm2mils( 12 ), Mm2mils( 167 ),
877
Ki_WorkSheetData WS_DopLeft_Line12 =
881
Mm2mils( 12 ), Mm2mils( 167 ),
886
Ki_WorkSheetData WS_DopLeft_Line13 =
890
Mm2mils( 12 ), Mm2mils( 227 ),
895
Ki_WorkSheetData WS_DopLeft_Line14 =
899
Mm2mils( 12 ), Mm2mils( 287 ),
904
Ki_WorkSheetData WS_DopLeft_Text6 =
908
Mm2mils( 9.5 ), Mm2mils( 197 ),
913
Ki_WorkSheetData WS_DopLeft_Text7 =
917
Mm2mils( 9.5 ), Mm2mils( 257 ),
919
wxT( "Перв. примен." )
922
// Center - left top corner
924
Ki_WorkSheetData WS_DopTop_Line1 =
929
Mm2mils( 70 ), Mm2mils( 14 ),
933
Ki_WorkSheetData WS_DopTop_Line2 =
937
Mm2mils( 70 ), Mm2mils( 14 ),
942
Ki_WorkSheetData WS_DopTop_Line3 =
946
Mm2mils( 70 ), Mm2mils( 14 ),
947
Mm2mils( 137 ), Mm2mils( 14 ),
951
Ki_WorkSheetData WS_DopTop_Line4 =
955
Mm2mils( 84 ), Mm2mils( 7 ),
956
Mm2mils( 137 ), Mm2mils( 7 ),
960
Ki_WorkSheetData WS_DopTop_Line5 =
964
Mm2mils( 84 ), Mm2mils( 14 ),
969
Ki_WorkSheetData WS_DopTop_Line6 =
973
Mm2mils( 137 ),Mm2mils( 14 ),
978
#include <worksheet_shape_builder.h>
980
class WS_DRAW_ITEM_LIST_GOST : public WS_DRAW_ITEM_LIST
983
void BuildWorkSheetGraphicListGOST(
984
const PAGE_INFO& aPageInfo,
985
const TITLE_BLOCK& aTitleBlock,
986
EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor );
989
void WS_DRAW_ITEM_LIST_GOST::BuildWorkSheetGraphicListGOST(
990
const PAGE_INFO& aPageInfo,
991
const TITLE_BLOCK& aTitleBlock,
992
EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor )
997
Ki_WorkSheetData* WsItem;
998
wxSize size( TEXTSIZE * m_milsToIu, TEXTSIZE * m_milsToIu );
1000
wxString paperFormat = aPageInfo.GetType();
1001
WS_DRAW_ITEM_TEXT* gtext;
1003
wxPoint LTmargin( Mm2mils( 20 ), Mm2mils( 5 ) );
1004
wxPoint RBmargin( Mm2mils( 5 ), Mm2mils( 5 ) );
1005
SetMargins( LTmargin, RBmargin );
1006
SetPageSize( aPageInfo.GetSizeMils() );
1008
// Upper left corner
1009
refx = m_LTmargin.x;
1010
refy = m_LTmargin.y;
1012
// lower right corner
1014
xg = m_pageSize.x - m_RBmargin.x;
1015
yg = m_pageSize.y - m_RBmargin.y;
1018
int lnWosn = m_penSize * 2;
1019
int lnWtonk = m_penSize;
1021
wxSize size0_8( TEXTSIZE * m_milsToIu * 0.8, TEXTSIZE * m_milsToIu * 1 );
1022
wxSize size1_5( TEXTSIZE * m_milsToIu * 1.5, TEXTSIZE * m_milsToIu * 1.5 );
1023
wxSize size2( TEXTSIZE * m_milsToIu * 2, TEXTSIZE * m_milsToIu * 2 );
1024
wxSize size3( TEXTSIZE * m_milsToIu * 3, TEXTSIZE * m_milsToIu * 3 );
1027
Append( new WS_DRAW_ITEM_RECT( NULL,
1028
wxPoint( refx * m_milsToIu, refy * m_milsToIu ),
1029
wxPoint( xg * m_milsToIu, yg * m_milsToIu ),
1030
lnWosn, aLineColor ) );
1032
// Center - right bottom corner
1033
refx = m_pageSize.x - m_RBmargin.x;
1034
refy = m_pageSize.y - m_RBmargin.y;
1037
if( m_sheetNumber == 1 )
1039
for( WsItem = &WS_Osn1_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1041
pos.x = (refx - WsItem->m_Posx) * m_milsToIu;
1042
pos.y = (refy - WsItem->m_Posy) * m_milsToIu;
1043
end.x = (refx - WsItem->m_Endx) * m_milsToIu;
1044
end.y = (refy - WsItem->m_Endy) * m_milsToIu;
1045
msg = WsItem->m_TextBase;
1047
switch( WsItem->m_Type )
1050
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1051
lnWosn, aLineColor ) );
1055
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1056
lnWtonk, aLineColor ) );
1061
if( !msg.IsEmpty() )
1063
if( WsItem == &WS_Osn1_Text1 )
1064
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1068
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1069
size, m_penSize, aLineColor ) );
1076
if( !msg.IsEmpty() )
1078
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1079
size, m_penSize, aLineColor ) );
1080
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1088
if( m_sheetCount > 1 )
1090
pos.x = ( refx - Mm2mils( 36 ) ) * m_milsToIu;
1091
pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu;
1093
msg << m_sheetNumber;
1094
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1095
size, m_penSize, aLineColor ) );
1099
pos.x = ( refx - Mm2mils( 10 ) ) * m_milsToIu;
1100
pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu;
1102
msg << m_sheetCount;
1103
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1104
size, m_penSize, aLineColor ) );
1105
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1108
msg = aTitleBlock.GetCompany();
1110
if( !msg.IsEmpty() )
1113
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1117
sz.x *= float(ln) / lnMsg;
1119
pos.x = ( refx - Mm2mils( 25 ) ) * m_milsToIu;
1120
pos.y = ( refy - Mm2mils( 7.5 ) ) * m_milsToIu;
1121
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1122
sz, m_penSize, aLineColor ) );
1126
msg = aTitleBlock.GetTitle();
1128
if( !msg.IsEmpty() )
1131
wxArrayString lines;
1133
int titleHeight = (sz.y + sz.y * 0.5) / m_milsToIu;
1134
int titleFieldWidth = Mm2mils( 69 );
1135
int titleFieldHeight = Mm2mils( 24 );
1137
wxString fullMsg = msg;
1139
while( 1 ) // Reduce the height of wrapped title until the fit
1141
while( 1 ) // Wrap the title
1143
titleWidth = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1145
if( titleWidth > titleFieldWidth )
1151
msg = msg.Left( msg.Length() - 1 );
1153
if( msg.Length() == 0 )
1164
ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1166
wxString ch = wxString( msg.Last() );
1168
if( titleWidth < titleFieldWidth && ch == wxT( " " ) )
1170
// New sentence on a new line
1171
int dot = msg.Index( wxT( ". " ) );
1173
if( dot != wxNOT_FOUND )
1175
index += msg.Length() - dot - 2;
1176
msg = msg.Left( dot + 1 );
1178
msg = fullMsg.Right( index );
1183
msg = msg.Left( msg.Length() - 1 );
1185
msg = fullMsg.Right( index );
1194
// New sentence on a new line
1195
int dot = msg.Index( wxT( ". " ) );
1197
if( dot != wxNOT_FOUND )
1199
lines.Add( msg.Left( dot + 1 ) );
1200
lines.Add( fullMsg.Right( msg.Length() - dot - 2 ) );
1209
if( titleFieldHeight < (int) ( titleHeight * lines.Count() ) )
1220
pos.x = ( refx - Mm2mils( 85 ) ) * m_milsToIu;
1222
( refy - Mm2mils( 27.5 ) - (titleHeight * (lines.Count() - 1) / 2) ) * m_milsToIu;
1224
for( unsigned curLn = 0; curLn < lines.Count(); curLn++ )
1227
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1228
sz, m_penSize, aTextColor ) );
1229
pos.y += titleHeight * m_milsToIu;
1234
msg = aTitleBlock.GetComment1();
1236
if( !msg.IsEmpty() )
1239
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1240
ln = Mm2mils( 119 );
1243
sz.x *= float(ln) / lnMsg;
1245
pos.x = ( refx - Mm2mils( 60 ) ) * m_milsToIu;
1246
pos.y = ( refy - Mm2mils( 47.5 ) ) * m_milsToIu;
1247
Append( new WS_DRAW_ITEM_TEXT(NULL, msg, pos,
1248
sz, m_penSize, aTextColor ) );
1252
msg = aTitleBlock.GetComment2();
1254
if( !msg.IsEmpty() )
1257
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1261
sz.x *= float(ln) / lnMsg;
1263
pos.x = ( refx - Mm2mils( 167.5 ) ) * m_milsToIu;
1264
pos.y = ( refy - Mm2mils( 27.5 ) ) * m_milsToIu;
1265
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1266
sz, m_penSize, aTextColor ) );
1267
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1271
msg = aTitleBlock.GetComment3();
1273
if( !msg.IsEmpty() )
1276
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1280
sz.x *= float(ln) / lnMsg;
1282
pos.x = ( refx - Mm2mils( 167 ) ) * m_milsToIu;
1283
pos.y = ( refy - Mm2mils( 22.5 ) ) * m_milsToIu;
1284
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1285
sz, m_penSize, aTextColor ) );
1286
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1290
msg = aTitleBlock.GetComment4();
1292
if( !msg.IsEmpty() )
1295
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1299
sz.x *= float(ln) / lnMsg;
1301
pos.x = ( refx - Mm2mils( 167 ) ) * m_milsToIu;
1302
pos.y = ( refy - Mm2mils( 2.5 ) ) * m_milsToIu;
1303
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1304
sz, m_penSize, aTextColor ) );
1305
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1310
for( WsItem = &WS_Osn2a_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1312
pos.x = (refx - WsItem->m_Posx) * m_milsToIu;
1313
pos.y = (refy - WsItem->m_Posy) * m_milsToIu;
1314
end.x = (refx - WsItem->m_Endx) * m_milsToIu;
1315
end.y = (refy - WsItem->m_Endy) * m_milsToIu;
1316
msg = WsItem->m_TextBase;
1318
switch( WsItem->m_Type )
1321
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1322
lnWosn, aLineColor ) );
1326
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1327
lnWtonk, aLineColor ) );
1332
if( !msg.IsEmpty() )
1334
if( WsItem == &WS_Osn2a_Text1 )
1335
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1339
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1340
size, m_penSize, aLineColor ) );
1347
if( !msg.IsEmpty() )
1349
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1352
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1360
pos.x = ( refx - Mm2mils( 5 ) ) * m_milsToIu;
1361
pos.y = ( refy - Mm2mils( 4 ) ) * m_milsToIu;
1363
msg << m_sheetNumber;
1364
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1365
size, m_penSize, aLineColor ) );
1368
msg = aTitleBlock.GetComment1();
1370
if( !msg.IsEmpty() )
1373
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1374
ln = Mm2mils( 109 );
1377
sz.x *= float(ln) / lnMsg;
1379
pos.x = ( refx - Mm2mils( 65 ) ) * m_milsToIu;
1380
pos.y = ( refy - Mm2mils( 7.5 ) ) * m_milsToIu;
1381
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1382
sz, m_penSize, aTextColor ) );
1387
pos.x = ( refx - Mm2mils( 23 ) ) * m_milsToIu;
1388
pos.y = ( refy + Mm2mils( 2.5 ) ) * m_milsToIu;
1391
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1392
size, m_penSize, aLineColor ) );
1393
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1395
// Center - left bottom corner
1396
refx = m_LTmargin.x;
1397
refy = m_pageSize.y - m_RBmargin.y;
1399
for( WsItem = &WS_DopLeft_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1401
if( m_sheetNumber > 1 && WsItem == &WS_DopLeft_Line9 ) // Some fields for first page only
1404
pos.x = (refx - WsItem->m_Posx) * m_milsToIu;
1405
pos.y = (refy - WsItem->m_Posy) * m_milsToIu;
1406
end.x = (refx - WsItem->m_Endx) * m_milsToIu;
1407
end.y = (refy - WsItem->m_Endy) * m_milsToIu;
1408
msg = WsItem->m_TextBase;
1410
switch( WsItem->m_Type )
1413
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1414
lnWosn, aLineColor ) );
1419
if( !msg.IsEmpty() )
1421
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1422
size, m_penSize, aLineColor ) );
1423
gtext->SetOrientation( TEXT_ORIENT_VERT );
1430
if( paperFormat == PAGE_INFO::A4 || m_pageSize.x > m_pageSize.y ) // A4 or Landscape
1432
// Center - left top corner
1433
refx = m_LTmargin.x;
1434
refy = m_LTmargin.y;
1436
for( WsItem = &WS_DopTop_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1438
if( m_sheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only
1441
pos.x = (refx + WsItem->m_Posx) * m_milsToIu;
1442
pos.y = (refy + WsItem->m_Posy) * m_milsToIu;
1443
end.x = (refx + WsItem->m_Endx) * m_milsToIu;
1444
end.y = (refy + WsItem->m_Endy) * m_milsToIu;
1445
msg = WsItem->m_TextBase;
1447
switch( WsItem->m_Type )
1450
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1451
lnWosn, aLineColor ) );
1455
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1456
lnWtonk, aLineColor ) );
1462
msg = aTitleBlock.GetComment1();
1464
if( !msg.IsEmpty() )
1467
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1471
sz.x *= float(ln) / lnMsg;
1473
pos.x = ( refx + Mm2mils( 35 ) ) * m_milsToIu;
1474
pos.y = ( refy + Mm2mils( 7 ) ) * m_milsToIu;
1475
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1476
sz, m_penSize, aTextColor ) );
1477
gtext->SetOrientation( 1800.0 );
1482
// Center - right top corner
1483
// Lines are used from the upper left corner by the change of coordinates
1484
refx = m_pageSize.x - m_RBmargin.x;
1485
refy = m_LTmargin.y;
1487
for( WsItem = &WS_DopTop_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1489
if( m_sheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only
1492
pos.x = (refx - WsItem->m_Posy) * m_milsToIu;
1493
pos.y = (refy + WsItem->m_Posx) * m_milsToIu;
1494
end.x = (refx - WsItem->m_Endy) * m_milsToIu;
1495
end.y = (refy + WsItem->m_Endx) * m_milsToIu;
1496
msg = WsItem->m_TextBase;
1498
switch( WsItem->m_Type )
1501
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1502
lnWosn, aLineColor ) );
1506
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
1507
lnWtonk, aLineColor ) );
1513
msg = aTitleBlock.GetComment1();
1515
if( !msg.IsEmpty() )
1518
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1522
sz.x *= float(ln) / lnMsg;
1524
pos.x = ( refx - Mm2mils( 7 ) ) * m_milsToIu;
1525
pos.y = ( refy + Mm2mils( 35 ) ) * m_milsToIu;
1526
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
1527
sz, m_penSize, aTextColor ) );
1528
gtext->SetOrientation( TEXT_ORIENT_VERT );