xref: /plan9-contrib/sys/src/cmd/aux/antiword/output.c (revision 25b329d522281a8cdd35da0dcc08c3fc621059a9)
1f5736e95SDavid du Colombier /*
2f5736e95SDavid du Colombier  * output.c
3*25b329d5SDavid du Colombier  * Copyright (C) 2002-2004 A.J. van Os; Released under GNU GPL
4f5736e95SDavid du Colombier  *
5f5736e95SDavid du Colombier  * Description:
6f5736e95SDavid du Colombier  * Generic output generating functions
7f5736e95SDavid du Colombier  */
8f5736e95SDavid du Colombier 
9f5736e95SDavid du Colombier #include "antiword.h"
10f5736e95SDavid du Colombier 
11f5736e95SDavid du Colombier static conversion_type	eConversionType = conversion_unknown;
12f5736e95SDavid du Colombier static encoding_type	eEncoding = encoding_neutral;
13f5736e95SDavid du Colombier 
14f5736e95SDavid du Colombier 
15f5736e95SDavid du Colombier /*
16f5736e95SDavid du Colombier  * vPrologue1 - get options and call a specific initialization
17f5736e95SDavid du Colombier  */
18f5736e95SDavid du Colombier static void
vPrologue1(diagram_type * pDiag,const char * szTask,const char * szFilename)19f5736e95SDavid du Colombier vPrologue1(diagram_type *pDiag, const char *szTask, const char *szFilename)
20f5736e95SDavid du Colombier {
21f5736e95SDavid du Colombier 	options_type	tOptions;
22f5736e95SDavid du Colombier 
23f5736e95SDavid du Colombier 	fail(pDiag == NULL);
24f5736e95SDavid du Colombier 	fail(szTask == NULL || szTask[0] == '\0');
25f5736e95SDavid du Colombier 
26f5736e95SDavid du Colombier 	vGetOptions(&tOptions);
27f5736e95SDavid du Colombier 	eConversionType = tOptions.eConversionType;
28f5736e95SDavid du Colombier 	eEncoding = tOptions.eEncoding;
29f5736e95SDavid du Colombier 
30f5736e95SDavid du Colombier 	switch (eConversionType) {
31f5736e95SDavid du Colombier 	case conversion_text:
32f5736e95SDavid du Colombier 		vPrologueTXT(pDiag, &tOptions);
33f5736e95SDavid du Colombier 		break;
34*25b329d5SDavid du Colombier 	case conversion_fmt_text:
35*25b329d5SDavid du Colombier 		vPrologueFMT(pDiag, &tOptions);
36*25b329d5SDavid du Colombier 		break;
37f5736e95SDavid du Colombier 	case conversion_ps:
38f5736e95SDavid du Colombier 		vProloguePS(pDiag, szTask, szFilename, &tOptions);
39f5736e95SDavid du Colombier 		break;
40f5736e95SDavid du Colombier 	case conversion_xml:
41*25b329d5SDavid du Colombier 		vPrologueXML(pDiag, &tOptions);
42*25b329d5SDavid du Colombier 		break;
43*25b329d5SDavid du Colombier 	case conversion_pdf:
44*25b329d5SDavid du Colombier 		vProloguePDF(pDiag, szTask, &tOptions);
45f5736e95SDavid du Colombier 		break;
46f5736e95SDavid du Colombier 	default:
47f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
48f5736e95SDavid du Colombier 		break;
49f5736e95SDavid du Colombier 	}
50f5736e95SDavid du Colombier } /* end of vPrologue1 */
51f5736e95SDavid du Colombier 
52f5736e95SDavid du Colombier /*
53f5736e95SDavid du Colombier  * vEpilogue - clean up after everything is done
54f5736e95SDavid du Colombier  */
55f5736e95SDavid du Colombier static void
vEpilogue(diagram_type * pDiag)56f5736e95SDavid du Colombier vEpilogue(diagram_type *pDiag)
57f5736e95SDavid du Colombier {
58f5736e95SDavid du Colombier 	switch (eConversionType) {
59f5736e95SDavid du Colombier 	case conversion_text:
60*25b329d5SDavid du Colombier 	case conversion_fmt_text:
61f5736e95SDavid du Colombier 		vEpilogueTXT(pDiag->pOutFile);
62f5736e95SDavid du Colombier 		break;
63f5736e95SDavid du Colombier 	case conversion_ps:
64f5736e95SDavid du Colombier 		vEpiloguePS(pDiag);
65f5736e95SDavid du Colombier 		break;
66f5736e95SDavid du Colombier 	case conversion_xml:
67f5736e95SDavid du Colombier 		vEpilogueXML(pDiag);
68f5736e95SDavid du Colombier 		break;
69*25b329d5SDavid du Colombier 	case conversion_pdf:
70*25b329d5SDavid du Colombier 		vEpiloguePDF(pDiag);
71*25b329d5SDavid du Colombier 		break;
72f5736e95SDavid du Colombier 	default:
73f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
74f5736e95SDavid du Colombier 		break;
75f5736e95SDavid du Colombier 	}
76f5736e95SDavid du Colombier } /* end of vEpilogue */
77f5736e95SDavid du Colombier 
78f5736e95SDavid du Colombier /*
79f5736e95SDavid du Colombier  * vImagePrologue - perform image initialization
80f5736e95SDavid du Colombier  */
81f5736e95SDavid du Colombier void
vImagePrologue(diagram_type * pDiag,const imagedata_type * pImg)82f5736e95SDavid du Colombier vImagePrologue(diagram_type *pDiag, const imagedata_type *pImg)
83f5736e95SDavid du Colombier {
84f5736e95SDavid du Colombier 	switch (eConversionType) {
85f5736e95SDavid du Colombier 	case conversion_text:
86*25b329d5SDavid du Colombier 	case conversion_fmt_text:
87f5736e95SDavid du Colombier 		break;
88f5736e95SDavid du Colombier 	case conversion_ps:
89f5736e95SDavid du Colombier 		vImageProloguePS(pDiag, pImg);
90f5736e95SDavid du Colombier 		break;
91f5736e95SDavid du Colombier 	case conversion_xml:
92f5736e95SDavid du Colombier 		break;
93*25b329d5SDavid du Colombier 	case conversion_pdf:
94*25b329d5SDavid du Colombier 		vImageProloguePDF(pDiag, pImg);
95*25b329d5SDavid du Colombier 		break;
96f5736e95SDavid du Colombier 	default:
97f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
98f5736e95SDavid du Colombier 		break;
99f5736e95SDavid du Colombier 	}
100f5736e95SDavid du Colombier } /* end of vImagePrologue */
101f5736e95SDavid du Colombier 
102f5736e95SDavid du Colombier /*
103f5736e95SDavid du Colombier  * vImageEpilogue - clean up an image
104f5736e95SDavid du Colombier  */
105f5736e95SDavid du Colombier void
vImageEpilogue(diagram_type * pDiag)106f5736e95SDavid du Colombier vImageEpilogue(diagram_type *pDiag)
107f5736e95SDavid du Colombier {
108f5736e95SDavid du Colombier 	switch (eConversionType) {
109f5736e95SDavid du Colombier 	case conversion_text:
110*25b329d5SDavid du Colombier 	case conversion_fmt_text:
111f5736e95SDavid du Colombier 		break;
112f5736e95SDavid du Colombier 	case conversion_ps:
113f5736e95SDavid du Colombier 		vImageEpiloguePS(pDiag);
114f5736e95SDavid du Colombier 		break;
115f5736e95SDavid du Colombier 	case conversion_xml:
116f5736e95SDavid du Colombier 		break;
117*25b329d5SDavid du Colombier 	case conversion_pdf:
118*25b329d5SDavid du Colombier 		vImageEpiloguePDF(pDiag);
119*25b329d5SDavid du Colombier 		break;
120f5736e95SDavid du Colombier 	default:
121f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
122f5736e95SDavid du Colombier 		break;
123f5736e95SDavid du Colombier 	}
124f5736e95SDavid du Colombier } /* end of vImageEpilogue */
125f5736e95SDavid du Colombier 
126f5736e95SDavid du Colombier /*
127f5736e95SDavid du Colombier  * bAddDummyImage - add a dummy image
128f5736e95SDavid du Colombier  *
129f5736e95SDavid du Colombier  * return TRUE when successful, otherwise FALSE
130f5736e95SDavid du Colombier  */
131f5736e95SDavid du Colombier BOOL
bAddDummyImage(diagram_type * pDiag,const imagedata_type * pImg)132f5736e95SDavid du Colombier bAddDummyImage(diagram_type *pDiag, const imagedata_type *pImg)
133f5736e95SDavid du Colombier {
134f5736e95SDavid du Colombier 	switch (eConversionType) {
135f5736e95SDavid du Colombier 	case conversion_text:
136*25b329d5SDavid du Colombier 	case conversion_fmt_text:
137f5736e95SDavid du Colombier 		return FALSE;
138f5736e95SDavid du Colombier 	case conversion_ps:
139f5736e95SDavid du Colombier 		return bAddDummyImagePS(pDiag, pImg);
140f5736e95SDavid du Colombier 	case conversion_xml:
141f5736e95SDavid du Colombier 		return FALSE;
142*25b329d5SDavid du Colombier 	case conversion_pdf:
143*25b329d5SDavid du Colombier 		return bAddDummyImagePDF(pDiag, pImg);
144f5736e95SDavid du Colombier 	default:
145f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
146f5736e95SDavid du Colombier 		return FALSE;
147f5736e95SDavid du Colombier 	}
148f5736e95SDavid du Colombier } /* end of bAddDummyImage */
149f5736e95SDavid du Colombier 
150f5736e95SDavid du Colombier /*
151f5736e95SDavid du Colombier  * pCreateDiagram - create and initialize a diagram
152f5736e95SDavid du Colombier  *
153f5736e95SDavid du Colombier  * remark: does not return if the diagram can't be created
154f5736e95SDavid du Colombier  */
155f5736e95SDavid du Colombier diagram_type *
pCreateDiagram(const char * szTask,const char * szFilename)156f5736e95SDavid du Colombier pCreateDiagram(const char *szTask, const char *szFilename)
157f5736e95SDavid du Colombier {
158f5736e95SDavid du Colombier 	diagram_type	*pDiag;
159f5736e95SDavid du Colombier 
160f5736e95SDavid du Colombier 	fail(szTask == NULL || szTask[0] == '\0');
161f5736e95SDavid du Colombier 	DBG_MSG("pCreateDiagram");
162f5736e95SDavid du Colombier 
163f5736e95SDavid du Colombier 	/* Get the necessary memory */
164f5736e95SDavid du Colombier 	pDiag = xmalloc(sizeof(diagram_type));
165f5736e95SDavid du Colombier 	/* Initialization */
166f5736e95SDavid du Colombier 	pDiag->pOutFile = stdout;
167f5736e95SDavid du Colombier 	vPrologue1(pDiag, szTask, szFilename);
168f5736e95SDavid du Colombier 	/* Return success */
169f5736e95SDavid du Colombier 	return pDiag;
170f5736e95SDavid du Colombier } /* end of pCreateDiagram */
171f5736e95SDavid du Colombier 
172f5736e95SDavid du Colombier /*
173f5736e95SDavid du Colombier  * vDestroyDiagram - remove a diagram by freeing the memory it uses
174f5736e95SDavid du Colombier  */
175f5736e95SDavid du Colombier void
vDestroyDiagram(diagram_type * pDiag)176f5736e95SDavid du Colombier vDestroyDiagram(diagram_type *pDiag)
177f5736e95SDavid du Colombier {
178f5736e95SDavid du Colombier 	DBG_MSG("vDestroyDiagram");
179f5736e95SDavid du Colombier 
180f5736e95SDavid du Colombier 	fail(pDiag == NULL);
181f5736e95SDavid du Colombier 
182f5736e95SDavid du Colombier 	if (pDiag == NULL) {
183f5736e95SDavid du Colombier 		return;
184f5736e95SDavid du Colombier 	}
185f5736e95SDavid du Colombier 	vEpilogue(pDiag);
186f5736e95SDavid du Colombier 	pDiag = xfree(pDiag);
187f5736e95SDavid du Colombier } /* end of vDestroyDiagram */
188f5736e95SDavid du Colombier 
189f5736e95SDavid du Colombier /*
190f5736e95SDavid du Colombier  * vPrologue2 - call a specific initialization
191f5736e95SDavid du Colombier  */
192f5736e95SDavid du Colombier void
vPrologue2(diagram_type * pDiag,int iWordVersion)193f5736e95SDavid du Colombier vPrologue2(diagram_type *pDiag, int iWordVersion)
194f5736e95SDavid du Colombier {
195f5736e95SDavid du Colombier 	switch (eConversionType) {
196f5736e95SDavid du Colombier 	case conversion_text:
197*25b329d5SDavid du Colombier 	case conversion_fmt_text:
198f5736e95SDavid du Colombier 		break;
199f5736e95SDavid du Colombier 	case conversion_ps:
200f5736e95SDavid du Colombier 		vAddFontsPS(pDiag);
201f5736e95SDavid du Colombier 		break;
202f5736e95SDavid du Colombier 	case conversion_xml:
203*25b329d5SDavid du Colombier 		vCreateBookIntro(pDiag, iWordVersion);
204*25b329d5SDavid du Colombier 		break;
205*25b329d5SDavid du Colombier 	case conversion_pdf:
206*25b329d5SDavid du Colombier 		vCreateInfoDictionary(pDiag, iWordVersion);
207*25b329d5SDavid du Colombier 		vAddFontsPDF(pDiag);
208f5736e95SDavid du Colombier 		break;
209f5736e95SDavid du Colombier 	default:
210f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
211f5736e95SDavid du Colombier 		break;
212f5736e95SDavid du Colombier 	}
213f5736e95SDavid du Colombier } /* end of vPrologue2 */
214f5736e95SDavid du Colombier 
215f5736e95SDavid du Colombier /*
216f5736e95SDavid du Colombier  * vMove2NextLine - move to the next line
217f5736e95SDavid du Colombier  */
218f5736e95SDavid du Colombier void
vMove2NextLine(diagram_type * pDiag,drawfile_fontref tFontRef,USHORT usFontSize)219*25b329d5SDavid du Colombier vMove2NextLine(diagram_type *pDiag, drawfile_fontref tFontRef,
220*25b329d5SDavid du Colombier 	USHORT usFontSize)
221f5736e95SDavid du Colombier {
222f5736e95SDavid du Colombier 	fail(pDiag == NULL);
223f5736e95SDavid du Colombier 	fail(pDiag->pOutFile == NULL);
224f5736e95SDavid du Colombier 	fail(usFontSize < MIN_FONT_SIZE || usFontSize > MAX_FONT_SIZE);
225f5736e95SDavid du Colombier 
226f5736e95SDavid du Colombier 	switch (eConversionType) {
227f5736e95SDavid du Colombier 	case conversion_text:
228*25b329d5SDavid du Colombier 	case conversion_fmt_text:
229f5736e95SDavid du Colombier 		vMove2NextLineTXT(pDiag);
230f5736e95SDavid du Colombier 		break;
231f5736e95SDavid du Colombier 	case conversion_ps:
232f5736e95SDavid du Colombier 		vMove2NextLinePS(pDiag, usFontSize);
233f5736e95SDavid du Colombier 		break;
234f5736e95SDavid du Colombier 	case conversion_xml:
235f5736e95SDavid du Colombier 		vMove2NextLineXML(pDiag);
236f5736e95SDavid du Colombier 		break;
237*25b329d5SDavid du Colombier 	case conversion_pdf:
238*25b329d5SDavid du Colombier 		vMove2NextLinePDF(pDiag, usFontSize);
239*25b329d5SDavid du Colombier 		break;
240f5736e95SDavid du Colombier 	default:
241f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
242f5736e95SDavid du Colombier 		break;
243f5736e95SDavid du Colombier 	}
244f5736e95SDavid du Colombier } /* end of vMove2NextLine */
245f5736e95SDavid du Colombier 
246f5736e95SDavid du Colombier /*
247f5736e95SDavid du Colombier  * vSubstring2Diagram - put a sub string into a diagram
248f5736e95SDavid du Colombier  */
249f5736e95SDavid du Colombier void
vSubstring2Diagram(diagram_type * pDiag,char * szString,size_t tStringLength,long lStringWidth,UCHAR ucFontColor,USHORT usFontstyle,drawfile_fontref tFontRef,USHORT usFontSize,USHORT usMaxFontSize)250f5736e95SDavid du Colombier vSubstring2Diagram(diagram_type *pDiag,
251f5736e95SDavid du Colombier 	char *szString, size_t tStringLength, long lStringWidth,
252*25b329d5SDavid du Colombier 	UCHAR ucFontColor, USHORT usFontstyle, drawfile_fontref tFontRef,
253f5736e95SDavid du Colombier 	USHORT usFontSize, USHORT usMaxFontSize)
254f5736e95SDavid du Colombier {
255f5736e95SDavid du Colombier 	switch (eConversionType) {
256f5736e95SDavid du Colombier 	case conversion_text:
257f5736e95SDavid du Colombier 		vSubstringTXT(pDiag, szString, tStringLength, lStringWidth);
258f5736e95SDavid du Colombier 		break;
259*25b329d5SDavid du Colombier 	case conversion_fmt_text:
260*25b329d5SDavid du Colombier 		vSubstringFMT(pDiag, szString, tStringLength, lStringWidth,
261*25b329d5SDavid du Colombier 				usFontstyle);
262*25b329d5SDavid du Colombier 		break;
263f5736e95SDavid du Colombier 	case conversion_ps:
264f5736e95SDavid du Colombier 		vSubstringPS(pDiag, szString, tStringLength, lStringWidth,
265f5736e95SDavid du Colombier 				ucFontColor, usFontstyle, tFontRef,
266f5736e95SDavid du Colombier 				usFontSize, usMaxFontSize);
267f5736e95SDavid du Colombier 		break;
268f5736e95SDavid du Colombier 	case conversion_xml:
269f5736e95SDavid du Colombier 		vSubstringXML(pDiag, szString, tStringLength, lStringWidth,
270f5736e95SDavid du Colombier 				usFontstyle);
271f5736e95SDavid du Colombier 		break;
272*25b329d5SDavid du Colombier 	case conversion_pdf:
273*25b329d5SDavid du Colombier 		vSubstringPDF(pDiag, szString, tStringLength, lStringWidth,
274*25b329d5SDavid du Colombier 				ucFontColor, usFontstyle, tFontRef,
275*25b329d5SDavid du Colombier 				usFontSize, usMaxFontSize);
276*25b329d5SDavid du Colombier 		break;
277f5736e95SDavid du Colombier 	default:
278f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
279f5736e95SDavid du Colombier 		break;
280f5736e95SDavid du Colombier 	}
281f5736e95SDavid du Colombier 	pDiag->lXleft += lStringWidth;
282f5736e95SDavid du Colombier } /* end of vSubstring2Diagram */
283f5736e95SDavid du Colombier 
284f5736e95SDavid du Colombier /*
285f5736e95SDavid du Colombier  * Create a start of paragraph (phase 1)
286f5736e95SDavid du Colombier  * Before indentation, list numbering, bullets etc.
287f5736e95SDavid du Colombier  */
288f5736e95SDavid du Colombier void
vStartOfParagraph1(diagram_type * pDiag,long lBeforeIndentation)289f5736e95SDavid du Colombier vStartOfParagraph1(diagram_type *pDiag, long lBeforeIndentation)
290f5736e95SDavid du Colombier {
291f5736e95SDavid du Colombier 	fail(pDiag == NULL);
292f5736e95SDavid du Colombier 
293f5736e95SDavid du Colombier 	switch (eConversionType) {
294f5736e95SDavid du Colombier 	case conversion_text:
295*25b329d5SDavid du Colombier 	case conversion_fmt_text:
296f5736e95SDavid du Colombier 		vStartOfParagraphTXT(pDiag, lBeforeIndentation);
297f5736e95SDavid du Colombier 		break;
298f5736e95SDavid du Colombier 	case conversion_ps:
299f5736e95SDavid du Colombier 		vStartOfParagraphPS(pDiag, lBeforeIndentation);
300f5736e95SDavid du Colombier 		break;
301f5736e95SDavid du Colombier 	case conversion_xml:
302f5736e95SDavid du Colombier 		break;
303*25b329d5SDavid du Colombier 	case conversion_pdf:
304*25b329d5SDavid du Colombier 		vStartOfParagraphPDF(pDiag, lBeforeIndentation);
305*25b329d5SDavid du Colombier 		break;
306f5736e95SDavid du Colombier 	default:
307f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
308f5736e95SDavid du Colombier 		break;
309f5736e95SDavid du Colombier 	}
310f5736e95SDavid du Colombier } /* end of vStartOfParagraph1 */
311f5736e95SDavid du Colombier 
312f5736e95SDavid du Colombier /*
313f5736e95SDavid du Colombier  * Create a start of paragraph (phase 2)
314f5736e95SDavid du Colombier  * After indentation, list numbering, bullets etc.
315f5736e95SDavid du Colombier  */
316f5736e95SDavid du Colombier void
vStartOfParagraph2(diagram_type * pDiag)317f5736e95SDavid du Colombier vStartOfParagraph2(diagram_type *pDiag)
318f5736e95SDavid du Colombier {
319f5736e95SDavid du Colombier 	fail(pDiag == NULL);
320f5736e95SDavid du Colombier 
321f5736e95SDavid du Colombier 	switch (eConversionType) {
322f5736e95SDavid du Colombier 	case conversion_text:
323*25b329d5SDavid du Colombier 	case conversion_fmt_text:
324f5736e95SDavid du Colombier 		break;
325f5736e95SDavid du Colombier 	case conversion_ps:
326f5736e95SDavid du Colombier 		break;
327f5736e95SDavid du Colombier 	case conversion_xml:
328f5736e95SDavid du Colombier 		vStartOfParagraphXML(pDiag, 1);
329f5736e95SDavid du Colombier 		break;
330*25b329d5SDavid du Colombier 	case conversion_pdf:
331*25b329d5SDavid du Colombier 		break;
332f5736e95SDavid du Colombier 	default:
333f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
334f5736e95SDavid du Colombier 		break;
335f5736e95SDavid du Colombier 	}
336f5736e95SDavid du Colombier } /* end of vStartOfParagraph2 */
337f5736e95SDavid du Colombier 
338f5736e95SDavid du Colombier /*
339f5736e95SDavid du Colombier  * Create an end of paragraph
340f5736e95SDavid du Colombier  */
341f5736e95SDavid du Colombier void
vEndOfParagraph(diagram_type * pDiag,drawfile_fontref tFontRef,USHORT usFontSize,long lAfterIndentation)342f5736e95SDavid du Colombier vEndOfParagraph(diagram_type *pDiag,
343*25b329d5SDavid du Colombier 	drawfile_fontref tFontRef, USHORT usFontSize, long lAfterIndentation)
344f5736e95SDavid du Colombier {
345f5736e95SDavid du Colombier 	fail(pDiag == NULL);
346f5736e95SDavid du Colombier 	fail(pDiag->pOutFile == NULL);
347f5736e95SDavid du Colombier 	fail(usFontSize < MIN_FONT_SIZE || usFontSize > MAX_FONT_SIZE);
348f5736e95SDavid du Colombier 	fail(lAfterIndentation < 0);
349f5736e95SDavid du Colombier 
350f5736e95SDavid du Colombier 	switch (eConversionType) {
351f5736e95SDavid du Colombier 	case conversion_text:
352*25b329d5SDavid du Colombier 	case conversion_fmt_text:
353f5736e95SDavid du Colombier 		vEndOfParagraphTXT(pDiag, lAfterIndentation);
354f5736e95SDavid du Colombier 		break;
355f5736e95SDavid du Colombier 	case conversion_ps:
356*25b329d5SDavid du Colombier 		vEndOfParagraphPS(pDiag, usFontSize, lAfterIndentation);
357f5736e95SDavid du Colombier 		break;
358f5736e95SDavid du Colombier 	case conversion_xml:
359f5736e95SDavid du Colombier 		vEndOfParagraphXML(pDiag, 1);
360f5736e95SDavid du Colombier 		break;
361*25b329d5SDavid du Colombier 	case conversion_pdf:
362*25b329d5SDavid du Colombier 		vEndOfParagraphPDF(pDiag, usFontSize, lAfterIndentation);
363*25b329d5SDavid du Colombier 		break;
364f5736e95SDavid du Colombier 	default:
365f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
366f5736e95SDavid du Colombier 		break;
367f5736e95SDavid du Colombier 	}
368f5736e95SDavid du Colombier } /* end of vEndOfParagraph */
369f5736e95SDavid du Colombier 
370f5736e95SDavid du Colombier /*
371f5736e95SDavid du Colombier  * Create an end of page
372f5736e95SDavid du Colombier  */
373f5736e95SDavid du Colombier void
vEndOfPage(diagram_type * pDiag,long lAfterIndentation,BOOL bNewSection)374*25b329d5SDavid du Colombier vEndOfPage(diagram_type *pDiag, long lAfterIndentation, BOOL bNewSection)
375f5736e95SDavid du Colombier {
376f5736e95SDavid du Colombier 	switch (eConversionType) {
377f5736e95SDavid du Colombier 	case conversion_text:
378*25b329d5SDavid du Colombier 	case conversion_fmt_text:
379f5736e95SDavid du Colombier 		vEndOfPageTXT(pDiag, lAfterIndentation);
380f5736e95SDavid du Colombier 		break;
381f5736e95SDavid du Colombier 	case conversion_ps:
382*25b329d5SDavid du Colombier 		vEndOfPagePS(pDiag, bNewSection);
383f5736e95SDavid du Colombier 		break;
384f5736e95SDavid du Colombier 	case conversion_xml:
385f5736e95SDavid du Colombier 		vEndOfPageXML(pDiag);
386f5736e95SDavid du Colombier 		break;
387*25b329d5SDavid du Colombier 	case conversion_pdf:
388*25b329d5SDavid du Colombier 		vEndOfPagePDF(pDiag, bNewSection);
389*25b329d5SDavid du Colombier 		break;
390f5736e95SDavid du Colombier 	default:
391f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
392f5736e95SDavid du Colombier 		break;
393f5736e95SDavid du Colombier 	}
394f5736e95SDavid du Colombier } /* end of vEndOfPage */
395f5736e95SDavid du Colombier 
396f5736e95SDavid du Colombier /*
397f5736e95SDavid du Colombier  * vSetHeaders - set the headers
398f5736e95SDavid du Colombier  */
399f5736e95SDavid du Colombier void
vSetHeaders(diagram_type * pDiag,USHORT usIstd)400f5736e95SDavid du Colombier vSetHeaders(diagram_type *pDiag, USHORT usIstd)
401f5736e95SDavid du Colombier {
402f5736e95SDavid du Colombier 	switch (eConversionType) {
403f5736e95SDavid du Colombier 	case conversion_text:
404*25b329d5SDavid du Colombier 	case conversion_fmt_text:
405f5736e95SDavid du Colombier 		break;
406f5736e95SDavid du Colombier 	case conversion_ps:
407f5736e95SDavid du Colombier 		break;
408f5736e95SDavid du Colombier 	case conversion_xml:
409f5736e95SDavid du Colombier 		vSetHeadersXML(pDiag, usIstd);
410f5736e95SDavid du Colombier 		break;
411*25b329d5SDavid du Colombier 	case conversion_pdf:
412*25b329d5SDavid du Colombier 		break;
413f5736e95SDavid du Colombier 	default:
414f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
415f5736e95SDavid du Colombier 		break;
416f5736e95SDavid du Colombier 	}
417f5736e95SDavid du Colombier } /* end of vSetHeaders */
418f5736e95SDavid du Colombier 
419f5736e95SDavid du Colombier /*
420f5736e95SDavid du Colombier  * Create a start of list
421f5736e95SDavid du Colombier  */
422f5736e95SDavid du Colombier void
vStartOfList(diagram_type * pDiag,UCHAR ucNFC,BOOL bIsEndOfTable)423f5736e95SDavid du Colombier vStartOfList(diagram_type *pDiag, UCHAR ucNFC, BOOL bIsEndOfTable)
424f5736e95SDavid du Colombier {
425f5736e95SDavid du Colombier 	switch (eConversionType) {
426f5736e95SDavid du Colombier 	case conversion_text:
427*25b329d5SDavid du Colombier 	case conversion_fmt_text:
428f5736e95SDavid du Colombier 		break;
429f5736e95SDavid du Colombier 	case conversion_ps:
430f5736e95SDavid du Colombier 		break;
431f5736e95SDavid du Colombier 	case conversion_xml:
432f5736e95SDavid du Colombier 		vStartOfListXML(pDiag, ucNFC, bIsEndOfTable);
433f5736e95SDavid du Colombier 		break;
434*25b329d5SDavid du Colombier 	case conversion_pdf:
435*25b329d5SDavid du Colombier 		break;
436f5736e95SDavid du Colombier 	default:
437f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
438f5736e95SDavid du Colombier 		break;
439f5736e95SDavid du Colombier 	}
440f5736e95SDavid du Colombier } /* end of vStartOfList */
441f5736e95SDavid du Colombier 
442f5736e95SDavid du Colombier /*
443f5736e95SDavid du Colombier  * Create an end of list
444f5736e95SDavid du Colombier  */
445f5736e95SDavid du Colombier void
vEndOfList(diagram_type * pDiag)446f5736e95SDavid du Colombier vEndOfList(diagram_type *pDiag)
447f5736e95SDavid du Colombier {
448f5736e95SDavid du Colombier 	switch (eConversionType) {
449f5736e95SDavid du Colombier 	case conversion_text:
450*25b329d5SDavid du Colombier 	case conversion_fmt_text:
451f5736e95SDavid du Colombier 		break;
452f5736e95SDavid du Colombier 	case conversion_ps:
453f5736e95SDavid du Colombier 		break;
454f5736e95SDavid du Colombier 	case conversion_xml:
455f5736e95SDavid du Colombier 		vEndOfListXML(pDiag);
456f5736e95SDavid du Colombier 		break;
457*25b329d5SDavid du Colombier 	case conversion_pdf:
458*25b329d5SDavid du Colombier 		break;
459f5736e95SDavid du Colombier 	default:
460f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
461f5736e95SDavid du Colombier 		break;
462f5736e95SDavid du Colombier 	}
463f5736e95SDavid du Colombier } /* end of vEndOfList */
464f5736e95SDavid du Colombier 
465f5736e95SDavid du Colombier /*
466f5736e95SDavid du Colombier  * Create a start of a list item
467f5736e95SDavid du Colombier  */
468f5736e95SDavid du Colombier void
vStartOfListItem(diagram_type * pDiag,BOOL bNoMarks)469f5736e95SDavid du Colombier vStartOfListItem(diagram_type *pDiag, BOOL bNoMarks)
470f5736e95SDavid du Colombier {
471f5736e95SDavid du Colombier 	switch (eConversionType) {
472f5736e95SDavid du Colombier 	case conversion_text:
473*25b329d5SDavid du Colombier 	case conversion_fmt_text:
474f5736e95SDavid du Colombier 		break;
475f5736e95SDavid du Colombier 	case conversion_ps:
476f5736e95SDavid du Colombier 		break;
477f5736e95SDavid du Colombier 	case conversion_xml:
478f5736e95SDavid du Colombier 		vStartOfListItemXML(pDiag, bNoMarks);
479f5736e95SDavid du Colombier 		break;
480*25b329d5SDavid du Colombier 	case conversion_pdf:
481*25b329d5SDavid du Colombier 		break;
482f5736e95SDavid du Colombier 	default:
483f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
484f5736e95SDavid du Colombier 		break;
485f5736e95SDavid du Colombier 	}
486f5736e95SDavid du Colombier } /* end of vStartOfListItem */
487f5736e95SDavid du Colombier 
488f5736e95SDavid du Colombier /*
489f5736e95SDavid du Colombier  * Create an end of a table
490f5736e95SDavid du Colombier  */
491f5736e95SDavid du Colombier void
vEndOfTable(diagram_type * pDiag)492f5736e95SDavid du Colombier vEndOfTable(diagram_type *pDiag)
493f5736e95SDavid du Colombier {
494f5736e95SDavid du Colombier 	switch (eConversionType) {
495f5736e95SDavid du Colombier 	case conversion_text:
496*25b329d5SDavid du Colombier 	case conversion_fmt_text:
497f5736e95SDavid du Colombier 		break;
498f5736e95SDavid du Colombier 	case conversion_ps:
499f5736e95SDavid du Colombier 		break;
500f5736e95SDavid du Colombier 	case conversion_xml:
501f5736e95SDavid du Colombier 		vEndOfTableXML(pDiag);
502f5736e95SDavid du Colombier 		break;
503*25b329d5SDavid du Colombier 	case conversion_pdf:
504*25b329d5SDavid du Colombier 		break;
505f5736e95SDavid du Colombier 	default:
506f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
507f5736e95SDavid du Colombier 		break;
508f5736e95SDavid du Colombier 	}
509f5736e95SDavid du Colombier } /* end of vEndOfTable */
510f5736e95SDavid du Colombier 
511f5736e95SDavid du Colombier /*
512f5736e95SDavid du Colombier  * Add a table row
513f5736e95SDavid du Colombier  *
514f5736e95SDavid du Colombier  * Returns TRUE when conversion type is XML
515f5736e95SDavid du Colombier  */
516f5736e95SDavid du Colombier BOOL
bAddTableRow(diagram_type * pDiag,char ** aszColTxt,int iNbrOfColumns,const short * asColumnWidth,UCHAR ucBorderInfo)517f5736e95SDavid du Colombier bAddTableRow(diagram_type *pDiag, char **aszColTxt,
518f5736e95SDavid du Colombier 	int iNbrOfColumns, const short *asColumnWidth, UCHAR ucBorderInfo)
519f5736e95SDavid du Colombier {
520f5736e95SDavid du Colombier 	switch (eConversionType) {
521f5736e95SDavid du Colombier 	case conversion_text:
522*25b329d5SDavid du Colombier 	case conversion_fmt_text:
523f5736e95SDavid du Colombier 		break;
524f5736e95SDavid du Colombier 	case conversion_ps:
525f5736e95SDavid du Colombier 		break;
526f5736e95SDavid du Colombier 	case conversion_xml:
527f5736e95SDavid du Colombier 		vAddTableRowXML(pDiag, aszColTxt,
528f5736e95SDavid du Colombier 				iNbrOfColumns, asColumnWidth,
529f5736e95SDavid du Colombier 				ucBorderInfo);
530f5736e95SDavid du Colombier 		return TRUE;
531*25b329d5SDavid du Colombier 	case conversion_pdf:
532*25b329d5SDavid du Colombier 		break;
533f5736e95SDavid du Colombier 	default:
534f5736e95SDavid du Colombier 		DBG_DEC(eConversionType);
535f5736e95SDavid du Colombier 		break;
536f5736e95SDavid du Colombier 	}
537f5736e95SDavid du Colombier 	return FALSE;
538f5736e95SDavid du Colombier } /* end of bAddTableRow */
539