File: docRowProperties.h

package info (click to toggle)
ted 2.16-5
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 13,944 kB
  • ctags: 20,273
  • sloc: ansic: 167,980; makefile: 12,518; sh: 263
file content (422 lines) | stat: -rw-r--r-- 10,829 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
/************************************************************************/
/*									*/
/*  Row Properties.							*/
/*									*/
/************************************************************************/

#   ifndef	DOC_ROW_PROPS_H
#   define	DOC_ROW_PROPS_H

/************************************************************************/
/*									*/
/*  Units for table autoformatting:					*/
/*									*/
/************************************************************************/

typedef enum TableAutoFormatUnit
    {
    TRautoNONE= 0,
    TRautoAUTO,
    TRautoPERCENT_50,
    TRautoTWIPS,

    TRauto_COUNT
    } TableAutoFormatUnit;

#   define TRauto_BITS	2

typedef enum CellTextFlow
    {
    CLflowTXLRTB= 0,	/*  left to right,  top to bottom (default).	*/
    CLflowTXTBRL,	/*  right to left,  top to bottom.		*/
    CLflowTXBTLR,	/*  left to right,  bottom to top.		*/
    CLflowTXLRTBV,	/*  left to right,  top to bottom, vertical.	*/
    CLflowTXTBRLV,	/*  top to bottom,  right to left, vertical.	*/

    CLflow_COUNT
    } CellTextFlow;

/************************************************************************/
/*									*/
/*  Cell Properties.							*/
/*									*/
/*  9)  Not real properties. Only used in setter routine(s)		*/
/*									*/
/************************************************************************/

typedef struct CellProperties
    {
    int			cpRightBoundaryTwips;
    int			cpRightBoundaryPixels;

    /**/
    BorderProperties	cpTopBorder;
    BorderProperties	cpBottomBorder;
    BorderProperties	cpLeftBorder;
    BorderProperties	cpRightBorder;

    ItemShading		cpShading;

    int			cpPreferredWidth;

    short int		cpTopPadding;
    short int		cpBottomPadding;
    short int		cpLeftPadding;
    short int		cpRightPadding;

			/* TableAutoFormatUnit */
    unsigned int	cpPreferredWidthUnit:TRauto_BITS;

    unsigned int	cpTopPaddingUnit:TRauto_BITS;
    unsigned int	cpBottomPaddingUnit:TRauto_BITS;
    unsigned int	cpLeftPaddingUnit:TRauto_BITS;
    unsigned int	cpRightPaddingUnit:TRauto_BITS;

    unsigned int	cpLeftInMergedRow:1;
    unsigned int	cpMergedWithLeft:1;
    unsigned int	cpTopInMergedColumn:1;
    unsigned int	cpMergedWithAbove:1;
    unsigned int	cpNoWrap:1;

    unsigned int	cpNoShading:1; /* clshdrawnil */

    unsigned int	cpTextVerticalAlignment:3;	/*  (enum)	*/
    unsigned int	cpTextFlow:3;			/*  (enum)	*/
    } CellProperties;

#   define	docCleanCellProperties( cp ) ( ( *(cp)= *(cp) ), 0 )

typedef enum CellProperty
    {
    CLprop_NONE= -1,

    CLpropRIGHT_BOUNDARY= 0,

    CLpropTOP_BORDER,
    CLpropBOTTOM_BORDER,
    CLpropLEFT_BORDER,
    CLpropRIGHT_BORDER,

    CLpropSHADE_FORE_COLOR,
    CLpropSHADE_BACK_COLOR,
    CLpropSHADE_LEVEL,
    CLpropSHADE_PATTERN,

    CLpropCLW_WIDTH,
    CLpropCLFTS_WIDTH,

    CLpropLEFT_IN_MERGED,
    CLpropMERGED_WITH_LEFT,
    CLpropTOP_IN_MERGED,
    CLpropMERGED_WITH_ABOVE,
    CLpropNO_WRAP,

    CLpropTEXT_VERT_ALIGN,
    CLpropTEXT_FLOW,

    CLpropTOP_PADDING,
    CLpropBOTTOM_PADDING,
    CLpropLEFT_PADDING,
    CLpropRIGHT_PADDING,

    CLpropTOP_PADDING_UNIT,
    CLpropBOTTOM_PADDING_UNIT,
    CLpropLEFT_PADDING_UNIT,
    CLpropRIGHT_PADDING_UNIT,

    CLpropNO_SHADING,

    CLprop_ROWSPAN,			/*  9  */
    CLprop_COLSPAN,			/*  9  */

    CLprop_COUNT
    } CellProperty;

/************************************************************************/
/*									*/
/*  Row Properties.							*/
/*									*/
/************************************************************************/

typedef struct RowProperties
    {
    int			rpCellCount;
    CellProperties *	rpCells;

    int			rpHalfGapWidthTwips;
    int			rpHalfGapWidthPixels;

    int			rpLeftIndentTwips;
    int			rpLeftIndentPixels;

    int			rpHeightTwips;

    int			rpRowNumber;
    int			rpRowBandNumber;
    int			rpRowStyle;

			/************************************************/
			/*  Row borders are not stored in the word	*/
			/*  binary format, and seem to be irrelevant:	*/
			/************************************************/
    BorderProperties	rpTopBorder;
    BorderProperties	rpBottomBorder;
    BorderProperties	rpLeftBorder;
    BorderProperties	rpRightBorder;
    BorderProperties	rpHorizontalBorder;
    BorderProperties	rpVerticalBorder;

    ItemShading		rpShading;

    ItemAlignment	rpAlignment:3;

    unsigned int	rpIsTableHeader:1;
    unsigned int	rpKeepOnOnePage:1;
    unsigned int	rpKeepWithNext:1;
    unsigned int	rpAutofit:1;

    unsigned int	rpHasTableParagraphs:1;

    int			rpPreferredWidth;

    int			rpLeftDefaultCellSpacing;
    int			rpRightDefaultCellSpacing;
    int			rpTopDefaultCellSpacing;
    int			rpBottomDefaultCellSpacing;

    int			rpLeftDefaultCellMargin;
    int			rpRightDefaultCellMargin;
    int			rpTopDefaultCellMargin;
    int			rpBottomDefaultCellMargin;

    int			rpCellWidthBefore;
    int			rpCellWidthAfter;

			/* TableAutoFormatUnit */
    unsigned int	rpPreferredWidthUnit:TRauto_BITS;

			/* TableAutoFormatUnit */
    unsigned int	rpLeftDefaultCellSpacingUnit:TRauto_BITS;
    unsigned int	rpRightDefaultCellSpacingUnit:TRauto_BITS;
    unsigned int	rpTopDefaultCellSpacingUnit:TRauto_BITS;
    unsigned int	rpBottomDefaultCellSpacingUnit:TRauto_BITS;

			/* TableAutoFormatUnit */
    unsigned int	rpLeftDefaultCellMarginUnit:TRauto_BITS;
    unsigned int	rpRightDefaultCellMarginUnit:TRauto_BITS;
    unsigned int	rpTopDefaultCellMarginUnit:TRauto_BITS;
    unsigned int	rpBottomDefaultCellMarginUnit:TRauto_BITS;

			/* TableAutoFormatUnit */
    unsigned int	rpCellWidthBeforeUnit:TRauto_BITS;
    unsigned int	rpCellWidthAfterUnit:TRauto_BITS;

    unsigned int	rpAutoformatBorders:1;
    unsigned int	rpAutoformatShading:1;
    unsigned int	rpAutoformatFont:1;
    unsigned int	rpAutoformatColor:1;
    unsigned int	rpAutoformatApplyBestFit:1;
    unsigned int	rpAutoformatFirstRow:1;
    unsigned int	rpAutoformatLastRow:1;
    unsigned int	rpAutoformatFirstColumn:1;
    unsigned int	rpAutoformatLastColumn:1;

    unsigned int	rpIsLastRow:1;
    } RowProperties;

typedef enum RowProperty
    {
    RPprop_NONE= -1,

    RPpropCOLUMNS= 0,

    RPpropGAP_WIDTH,
    RPpropLEFT_INDENT,
    RPpropHEIGHT,

    RPpropTOP_BORDER,
    RPpropBOTTOM_BORDER,
    RPpropLEFT_BORDER,
    RPpropRIGHT_BORDER,
    RPpropHORIZ_BORDER,
    RPpropVERT_BORDER,

    RPpropSHADE_FORE_COLOR,
    RPpropSHADE_BACK_COLOR,
    RPpropSHADE_LEVEL,
    RPpropSHADE_PATTERN,

    RPpropALIGNMENT,
    RPpropIS_TABLE_HEADER,
    RPpropKEEP_ON_ONE_PAGE,
    RPpropKEEP_WITH_NEXT,
    RPpropAUTOFIT,

    /**/
    RPpropTRW_WIDTH,
    RPpropTRFTS_WIDTH,

    /**/
    RPpropTRSPDL,
    RPpropTRSPDR,
    RPpropTRSPDT,
    RPpropTRSPDB,

    RPpropTRPADDL,
    RPpropTRPADDR,
    RPpropTRPADDT,
    RPpropTRPADDB,

    /**/
    RPpropTRSPDFL,
    RPpropTRSPDFR,
    RPpropTRSPDFT,
    RPpropTRSPDFB,

    RPpropTRPADDFL,
    RPpropTRPADDFR,
    RPpropTRPADDFT,
    RPpropTRPADDFB,

    /**/
    RPpropTRW_WIDTHB,
    RPpropTRW_WIDTHA,

    RPpropTRFTS_WIDTHB,
    RPpropTRFTS_WIDTHA,

    /**/
    RPpropAUTOFORMAT_BORDERS,
    RPpropAUTOFORMAT_SHADING,
    RPpropAUTOFORMAT_FONT,
    RPpropAUTOFORMAT_COLOR,
    RPpropAUTOFORMAT_APPLY_BEST_FIT,
    RPpropAUTOFORMAT_FIRST_ROW,
    RPpropAUTOFORMAT_LAST_ROW,
    RPpropAUTOFORMAT_FIRST_COLUMN,
    RPpropAUTOFORMAT_LAST_COLUMN,

    RPpropROW_NUMBER,
    RPpropROW_BAND_NUMBER,
    RPpropROW_STYLE,

    RPpropIS_LAST_ROW,

    RPprop_COUNT
    } RowProperty;

/************************************************************************/
/*									*/
/*  Routine declarations.						*/
/*									*/
/************************************************************************/

extern void docShadingMaskToCellMask(	PropertyMask *		cpPropMask,
					const PropertyMask *	isPropMask );

extern void docShadingMaskFromCellMask(	PropertyMask *		isPropMask,
					const PropertyMask *	cpPropMask );

extern void docInitRowProperties(	RowProperties *		rp );
extern void docCleanRowProperties(	RowProperties *		rp );
extern void docCleanInitRowProperties(	RowProperties *		rp );

extern int docCopyRowProperties(	RowProperties *		to,
					const RowProperties *	from,
					const int *		colorMap );

extern int docInsertRowColumn(	RowProperties *			rp,
				int				n,
				const CellProperties *		cp,
				const int *			colorMap );

extern int docApproximatelyAlignedColumns(
				const RowProperties *	rp1,
				const RowProperties *	rp2 );

extern int docEqualRowBorders(	const RowProperties *	rp1,
				const RowProperties *	rp2 );

extern int docEqualRows(	const RowProperties *	rp1,
				const RowProperties *	rp2 );

extern void docInitCellProperties(	CellProperties *	cp );

extern int docUpdCellProperties(PropertyMask *			pCpChgPask,
				CellProperties *		cp,
				const PropertyMask *		cpUpdMask,
				const CellProperties *		cpNew,
				const int *			colorMap );

extern void docCellPropertyDifference(	
				PropertyMask *			pChgMask,
				const CellProperties *		cp1,
				const CellProperties *		cp2,
				const PropertyMask *		updMask,
				const int *			colorMap );

extern void docCopyCellProperties(	
				CellProperties *		cpTo,
				const CellProperties *		cpFrom,
				const int *			colorMap );

extern void docShadingMaskToRowMask(	PropertyMask *		rpPropMask,
					const PropertyMask *	isPropMask );

extern void docShadingMaskFromRowMask(	PropertyMask *		isPropMask,
					const PropertyMask *	rpPropMask );

extern int docUpdRowProperties(	PropertyMask *			pRpChgPask,
				RowProperties *			rp,
				const PropertyMask *		rpUpdMask,
				const RowProperties *		rpNew,
				const int *			colorMap );

extern void docRowPropertyDifference(
				PropertyMask *			pRpChgPask,
				const RowProperties *		rp1,
				const RowProperties *		rp2,
				const PropertyMask *		rpUpdMask,
				const int *			colorMap );

extern void docRowSetTopBorderInCols(	
				RowProperties *			rp,
				int				col0,
				int				col1,
				const PropertyMask *		bpSetMask,
				const BorderProperties *	bpSet );

extern void docRowSetBottomBorderInCols(	
				RowProperties *			rp,
				int				col0,
				int				col1,
				const PropertyMask *		bpSetMask,
				const BorderProperties *	bpSet );

extern void docRowSetLeftBorderInCols(	
				RowProperties *			rp,
				int				col0,
				int				col1,
				const PropertyMask *		bpSetMask,
				const BorderProperties *	bpSet );

extern void docRowSetRightBorderInCols(	
				RowProperties *			rp,
				int				col0,
				int				col1,
				const PropertyMask *		bpSetMask,
				const BorderProperties *	bpSet );

extern void docRowSetShadingInCols(
				RowProperties *			rp,
				int				col0,
				int				col1,
				const PropertyMask *		isSetMask,
				const ItemShading *		isSet );

extern int docDeleteColumnsFromRow(
				RowProperties *			rp,
				int				col0,
				int				count );

#   endif	/*  DOC_ROW_PROPS_H  */