2
* @file title_block_shape_gost.h
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
void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
981
const wxString& aPaperFormat,
982
const wxString& aFileName,
983
const wxString& aSheetPathHumanReadable,
984
const TITLE_BLOCK& aTitleBlock,
985
EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor )
990
Ki_WorkSheetData* WsItem;
991
wxSize size( TEXTSIZE * m_milsToIu, TEXTSIZE * m_milsToIu );
993
WS_DRAW_ITEM_TEXT* gtext;
999
// lower right corner
1001
xg = m_pageSize.x - m_RBmargin.x;
1002
yg = m_pageSize.y - m_RBmargin.y;
1005
int lnWosn = m_penSize * 2;
1006
int lnWtonk = m_penSize;
1008
wxSize size0_8( TEXTSIZE * m_milsToIu * 0.8, TEXTSIZE * m_milsToIu * 1 );
1009
wxSize size1_5( TEXTSIZE * m_milsToIu * 1.5, TEXTSIZE * m_milsToIu * 1.5 );
1010
wxSize size2( TEXTSIZE * m_milsToIu * 2, TEXTSIZE * m_milsToIu * 2 );
1011
wxSize size3( TEXTSIZE * m_milsToIu * 3, TEXTSIZE * m_milsToIu * 3 );
1014
Append( new WS_DRAW_ITEM_RECT(
1015
wxPoint( refx * m_milsToIu, refy * m_milsToIu ),
1016
wxPoint( xg * m_milsToIu, yg * m_milsToIu ),
1017
lnWosn, aLineColor ) );
1019
// Center - right bottom corner
1020
refx = m_pageSize.x - m_RBmargin.x;
1021
refy = m_pageSize.y - m_RBmargin.y;
1024
if( m_sheetNumber == 1 )
1026
for( WsItem = &WS_Osn1_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1028
pos.x = (refx - WsItem->m_Posx) * m_milsToIu;
1029
pos.y = (refy - WsItem->m_Posy) * m_milsToIu;
1030
end.x = (refx - WsItem->m_Endx) * m_milsToIu;
1031
end.y = (refy - WsItem->m_Endy) * m_milsToIu;
1032
msg = WsItem->m_TextBase;
1034
switch( WsItem->m_Type )
1037
Append( new WS_DRAW_ITEM_LINE( pos, end,
1038
lnWosn, aLineColor ) );
1042
Append( new WS_DRAW_ITEM_LINE( pos, end,
1043
lnWtonk, aLineColor ) );
1048
if( !msg.IsEmpty() )
1050
if( WsItem == &WS_Osn1_Text1 )
1051
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1055
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1056
size, m_penSize, aLineColor ) );
1063
if( !msg.IsEmpty() )
1065
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1066
size, m_penSize, aLineColor ) );
1067
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1075
if( m_sheetCount > 1 )
1077
pos.x = ( refx - Mm2mils( 36 ) ) * m_milsToIu;
1078
pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu;
1080
msg << m_sheetNumber;
1081
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1082
size, m_penSize, aLineColor ) );
1086
pos.x = ( refx - Mm2mils( 10 ) ) * m_milsToIu;
1087
pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu;
1089
msg << m_sheetCount;
1090
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1091
size, m_penSize, aLineColor ) );
1092
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1095
msg = aTitleBlock.GetCompany();
1097
if( !msg.IsEmpty() )
1100
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1104
sz.x *= float(ln) / lnMsg;
1106
pos.x = ( refx - Mm2mils( 25 ) ) * m_milsToIu;
1107
pos.y = ( refy - Mm2mils( 7.5 ) ) * m_milsToIu;
1108
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1109
sz, m_penSize, aLineColor ) );
1113
msg = aTitleBlock.GetTitle();
1115
if( !msg.IsEmpty() )
1118
wxArrayString lines;
1120
int titleHeight = (sz.y + sz.y * 0.5) / m_milsToIu;
1121
int titleFieldWidth = Mm2mils( 69 );
1122
int titleFieldHeight = Mm2mils( 24 );
1124
wxString fullMsg = msg;
1126
while( 1 ) // Reduce the height of wrapped title until the fit
1128
while( 1 ) // Wrap the title
1130
titleWidth = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1132
if( titleWidth > titleFieldWidth )
1138
msg = msg.Left( msg.Length() - 1 );
1140
if( msg.Length() == 0 )
1151
ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1153
wxString ch = wxString( msg.Last() );
1155
if( titleWidth < titleFieldWidth && ch == wxT( " " ) )
1157
// New sentence on a new line
1158
int dot = msg.Index( wxT( ". " ) );
1160
if( dot != wxNOT_FOUND )
1162
index += msg.Length() - dot - 2;
1163
msg = msg.Left( dot + 1 );
1165
msg = fullMsg.Right( index );
1170
msg = msg.Left( msg.Length() - 1 );
1172
msg = fullMsg.Right( index );
1181
// New sentence on a new line
1182
int dot = msg.Index( wxT( ". " ) );
1184
if( dot != wxNOT_FOUND )
1186
lines.Add( msg.Left( dot + 1 ) );
1187
lines.Add( fullMsg.Right( msg.Length() - dot - 2 ) );
1196
if( titleFieldHeight < (int) ( titleHeight * lines.Count() ) )
1207
pos.x = ( refx - Mm2mils( 85 ) ) * m_milsToIu;
1209
( refy - Mm2mils( 27.5 ) - (titleHeight * (lines.Count() - 1) / 2) ) * m_milsToIu;
1211
for( unsigned curLn = 0; curLn < lines.Count(); curLn++ )
1214
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1215
sz, m_penSize, aTextColor ) );
1216
pos.y += titleHeight * m_milsToIu;
1221
msg = aTitleBlock.GetComment1();
1223
if( !msg.IsEmpty() )
1226
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1227
ln = Mm2mils( 119 );
1230
sz.x *= float(ln) / lnMsg;
1232
pos.x = ( refx - Mm2mils( 60 ) ) * m_milsToIu;
1233
pos.y = ( refy - Mm2mils( 47.5 ) ) * m_milsToIu;
1234
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1235
sz, m_penSize, aTextColor ) );
1239
msg = aTitleBlock.GetComment2();
1241
if( !msg.IsEmpty() )
1244
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1248
sz.x *= float(ln) / lnMsg;
1250
pos.x = ( refx - Mm2mils( 167.5 ) ) * m_milsToIu;
1251
pos.y = ( refy - Mm2mils( 27.5 ) ) * m_milsToIu;
1252
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1253
sz, m_penSize, aTextColor ) );
1254
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1258
msg = aTitleBlock.GetComment3();
1260
if( !msg.IsEmpty() )
1263
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1267
sz.x *= float(ln) / lnMsg;
1269
pos.x = ( refx - Mm2mils( 167 ) ) * m_milsToIu;
1270
pos.y = ( refy - Mm2mils( 22.5 ) ) * m_milsToIu;
1271
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1272
sz, m_penSize, aTextColor ) );
1273
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1277
msg = aTitleBlock.GetComment4();
1279
if( !msg.IsEmpty() )
1282
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1286
sz.x *= float(ln) / lnMsg;
1288
pos.x = ( refx - Mm2mils( 167 ) ) * m_milsToIu;
1289
pos.y = ( refy - Mm2mils( 2.5 ) ) * m_milsToIu;
1290
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1291
sz, m_penSize, aTextColor ) );
1292
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1297
for( WsItem = &WS_Osn2a_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1299
pos.x = (refx - WsItem->m_Posx) * m_milsToIu;
1300
pos.y = (refy - WsItem->m_Posy) * m_milsToIu;
1301
end.x = (refx - WsItem->m_Endx) * m_milsToIu;
1302
end.y = (refy - WsItem->m_Endy) * m_milsToIu;
1303
msg = WsItem->m_TextBase;
1305
switch( WsItem->m_Type )
1308
Append( new WS_DRAW_ITEM_LINE( pos, end,
1309
lnWosn, aLineColor ) );
1313
Append( new WS_DRAW_ITEM_LINE( pos, end,
1314
lnWtonk, aLineColor ) );
1319
if( !msg.IsEmpty() )
1321
if( WsItem == &WS_Osn2a_Text1 )
1322
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1326
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1327
size, m_penSize, aLineColor ) );
1334
if( !msg.IsEmpty() )
1336
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1339
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1347
pos.x = ( refx - Mm2mils( 5 ) ) * m_milsToIu;
1348
pos.y = ( refy - Mm2mils( 4 ) ) * m_milsToIu;
1350
msg << m_sheetNumber;
1351
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1352
size, m_penSize, aLineColor ) );
1355
msg = aTitleBlock.GetComment1();
1357
if( !msg.IsEmpty() )
1360
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1361
ln = Mm2mils( 109 );
1364
sz.x *= float(ln) / lnMsg;
1366
pos.x = ( refx - Mm2mils( 65 ) ) * m_milsToIu;
1367
pos.y = ( refy - Mm2mils( 7.5 ) ) * m_milsToIu;
1368
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
1369
sz, m_penSize, aTextColor ) );
1374
pos.x = ( refx - Mm2mils( 23 ) ) * m_milsToIu;
1375
pos.y = ( refy + Mm2mils( 2.5 ) ) * m_milsToIu;
1377
msg << aPaperFormat;
1378
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1379
size, m_penSize, aLineColor ) );
1380
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
1382
// Center - left bottom corner
1383
refx = m_LTmargin.x;
1384
refy = m_pageSize.y - m_RBmargin.y;
1386
for( WsItem = &WS_DopLeft_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1388
if( m_sheetNumber > 1 && WsItem == &WS_DopLeft_Line9 ) // Some fields for first page only
1391
pos.x = (refx - WsItem->m_Posx) * m_milsToIu;
1392
pos.y = (refy - WsItem->m_Posy) * m_milsToIu;
1393
end.x = (refx - WsItem->m_Endx) * m_milsToIu;
1394
end.y = (refy - WsItem->m_Endy) * m_milsToIu;
1395
msg = WsItem->m_TextBase;
1397
switch( WsItem->m_Type )
1400
Append( new WS_DRAW_ITEM_LINE( pos, end,
1401
lnWosn, aLineColor ) );
1406
if( !msg.IsEmpty() )
1408
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1409
size, m_penSize, aLineColor ) );
1410
gtext->SetOrientation( TEXT_ORIENT_VERT );
1417
if( aPaperFormat == PAGE_INFO::A4 || m_pageSize.x > m_pageSize.y ) // A4 or Landscape
1419
// Center - left top corner
1420
refx = m_LTmargin.x;
1421
refy = m_LTmargin.y;
1423
for( WsItem = &WS_DopTop_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1425
if( m_sheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only
1428
pos.x = (refx + WsItem->m_Posx) * m_milsToIu;
1429
pos.y = (refy + WsItem->m_Posy) * m_milsToIu;
1430
end.x = (refx + WsItem->m_Endx) * m_milsToIu;
1431
end.y = (refy + WsItem->m_Endy) * m_milsToIu;
1432
msg = WsItem->m_TextBase;
1434
switch( WsItem->m_Type )
1437
Append( new WS_DRAW_ITEM_LINE( pos, end,
1438
lnWosn, aLineColor ) );
1442
Append( new WS_DRAW_ITEM_LINE( pos, end,
1443
lnWtonk, aLineColor ) );
1449
msg = aTitleBlock.GetComment1();
1451
if( !msg.IsEmpty() )
1454
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1458
sz.x *= float(ln) / lnMsg;
1460
pos.x = ( refx + Mm2mils( 35 ) ) * m_milsToIu;
1461
pos.y = ( refy + Mm2mils( 7 ) ) * m_milsToIu;
1462
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1463
sz, m_penSize, aTextColor ) );
1464
gtext->SetOrientation( 1800.0 );
1469
// Center - right top corner
1470
// Lines are used from the upper left corner by the change of coordinates
1471
refx = m_pageSize.x - m_RBmargin.x;
1472
refy = m_LTmargin.y;
1474
for( WsItem = &WS_DopTop_Line1; WsItem != NULL; WsItem = WsItem->Pnext )
1476
if( m_sheetNumber > 1 && WsItem == &WS_DopTop_Line3 ) // Some fields for first page only
1479
pos.x = (refx - WsItem->m_Posy) * m_milsToIu;
1480
pos.y = (refy + WsItem->m_Posx) * m_milsToIu;
1481
end.x = (refx - WsItem->m_Endy) * m_milsToIu;
1482
end.y = (refy + WsItem->m_Endx) * m_milsToIu;
1483
msg = WsItem->m_TextBase;
1485
switch( WsItem->m_Type )
1488
Append( new WS_DRAW_ITEM_LINE( pos, end,
1489
lnWosn, aLineColor ) );
1493
Append( new WS_DRAW_ITEM_LINE( pos, end,
1494
lnWtonk, aLineColor ) );
1500
msg = aTitleBlock.GetComment1();
1502
if( !msg.IsEmpty() )
1505
lnMsg = ReturnGraphicTextWidth( msg, sz.x, false, false ) / m_milsToIu;
1509
sz.x *= float(ln) / lnMsg;
1511
pos.x = ( refx - Mm2mils( 7 ) ) * m_milsToIu;
1512
pos.y = ( refy + Mm2mils( 35 ) ) * m_milsToIu;
1513
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
1514
sz, m_penSize, aTextColor ) );
1515
gtext->SetOrientation( TEXT_ORIENT_VERT );