Exemple #1
0
/*
 * vAddHdrFtr - add a header or footer
 */
static void
vAddHdrFtr(diagram_type *pDiag, const hdrftr_block_type *pHdrFtrInfo)
{
	output_type	*pStart, *pPrev, *pNext;

	fail(pDiag == NULL);
	fail(pHdrFtrInfo == NULL);

	vStartOfParagraphPDF(pDiag, 0);
	pStart = pHdrFtrInfo->pText;
	while (pStart != NULL) {
		pNext = pStart;
		while (pNext != NULL &&
		       (pNext->tNextFree != 1 ||
		        (pNext->szStorage[0] != PAR_END &&
		         pNext->szStorage[0] != HARD_RETURN))) {
			pNext = pNext->pNext;
		}
		if (pNext == NULL) {
			if (bOutputContainsText(pStart)) {
				vAlign2Window(pDiag, pStart,
					lChar2MilliPoints(DEFAULT_SCREEN_WIDTH),
					ALIGNMENT_LEFT);
			} else {
				vMove2NextLinePDF(pDiag, pStart->usFontSize);
			}
			break;
		}
		fail(pNext->tNextFree != 1);
		fail(pNext->szStorage[0] != PAR_END &&
			pNext->szStorage[0] != HARD_RETURN);

		if (pStart != pNext) {
			/* There is something to print */
			pPrev = pNext->pPrev;
			fail(pPrev->pNext != pNext);
			/* Cut the chain */
			pPrev->pNext = NULL;
			if (bOutputContainsText(pStart)) {
				/* Print it */
				vAlign2Window(pDiag, pStart,
					lChar2MilliPoints(DEFAULT_SCREEN_WIDTH),
					ALIGNMENT_LEFT);
			} else {
				/* Just an empty line */
				vMove2NextLinePDF(pDiag, pStart->usFontSize);
			}
			/* Repair the chain */
			pPrev->pNext = pNext;
		}
		if (pNext->szStorage[0] == PAR_END) {
			vEndOfParagraphPDF(pDiag, pNext->usFontSize,
					(long)pNext->usFontSize * 200);
		}
		pStart = pNext->pNext;
	}
} /* end of vAddHdrFtr */
Exemple #2
0
/*
 * Create a start of paragraph (phase 1)
 * Before indentation, list numbering, bullets etc.
 */
void
vStartOfParagraph1(diagram_type *pDiag, long lBeforeIndentation)
{
    fail(pDiag == NULL);

    switch (eConversionType) {
    case conversion_text:
    case conversion_fmt_text:
        vStartOfParagraphTXT(pDiag, lBeforeIndentation);
        break;
    case conversion_ps:
        vStartOfParagraphPS(pDiag, lBeforeIndentation);
        break;
    case conversion_xml:
        break;
    case conversion_pdf:
        vStartOfParagraphPDF(pDiag, lBeforeIndentation);
        break;
    default:
        DBG_DEC(eConversionType);
        break;
    }
} /* end of vStartOfParagraph1 */