⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* * text.c * Copyright (C) 1999-2004 A.J. van Os; Released under GNU GPL * * Description: * Functions to deal with the Text format * */#include <string.h>#include "antiword.h"/* The character set */static encoding_type	eEncoding = encoding_neutral;/* Current vertical position information */static long		lYtopCurr = 0;/* Local representation of the non-breaking space */static UCHAR		ucNbsp = 0;/* * vPrologueTXT - set options and perform the Text initialization */voidvPrologueTXT(diagram_type *pDiag, const options_type *pOptions){	fail(pDiag == NULL);	fail(pOptions == NULL);	eEncoding = pOptions->eEncoding;	pDiag->lXleft = 0;	pDiag->lYtop = 0;	lYtopCurr = 0;} /* end of vPrologueTXT *//* * vEpilogueTXT - clean up after everything is done */voidvEpilogueTXT(FILE *pOutFile){	fail(pOutFile == NULL);	fprintf(pOutFile, "\n");} /* end of vEpilogueTXT *//* * vPrintTXT - print a Text string */static voidvPrintTXT(FILE *pFile, const char *szString, size_t tStringLength){	const UCHAR	*ucBytes;	size_t		tCount;	fail(szString == NULL);	if (szString == NULL || szString[0] == '\0' || tStringLength == 0) {		return;	}	if (eEncoding == encoding_utf_8) {		fprintf(pFile, "%.*s", (int)tStringLength, szString);		return;	}	if (ucNbsp == 0) {		ucNbsp = ucGetNbspCharacter();		DBG_HEX_C(ucNbsp != 0xa0, ucNbsp);	}	ucBytes = (UCHAR *)szString;	for (tCount = 0; tCount < tStringLength ; tCount++) {		if (ucBytes[tCount] == ucNbsp) {			(void)putc(' ', pFile);		} else {			(void)putc(szString[tCount], pFile);		}	}} /* end of vPrintTXT *//* * vMoveTo - move to the given X,Y coordinates * * Move the current position of the given diagram to its X,Y coordinates, * start on a new page if needed */static voidvMoveTo(diagram_type *pDiag){	int	iCount, iNbr;	fail(pDiag == NULL);	fail(pDiag->pOutFile == NULL);	if (pDiag->lYtop != lYtopCurr) {		iNbr = iDrawUnits2Char(pDiag->lXleft);		for (iCount = 0; iCount < iNbr; iCount++) {			(void)putc(FILLER_CHAR, pDiag->pOutFile);		}		lYtopCurr = pDiag->lYtop;	}} /* end of vMoveTo *//* * vMove2NextLineTXT - move to the next line */voidvMove2NextLineTXT(diagram_type *pDiag){	fail(pDiag == NULL);	fail(pDiag->pOutFile == NULL);	pDiag->lYtop++;	(void)fprintf(pDiag->pOutFile, "\n");} /* end of vMove2NextLineTXT *//* * vSubstringTXT - print a sub string */voidvSubstringTXT(diagram_type *pDiag,	const char *szString, size_t tStringLength, long lStringWidth){	fail(pDiag == NULL || szString == NULL);	fail(pDiag->pOutFile == NULL);	fail(pDiag->lXleft < 0);	fail(tStringLength != strlen(szString));	if (szString[0] == '\0' || tStringLength == 0) {		return;	}	vMoveTo(pDiag);	vPrintTXT(pDiag->pOutFile, szString, tStringLength);	pDiag->lXleft += lStringWidth;} /* end of vSubstringTXT *//* * Create an start of paragraph by moving the y-top mark */voidvStartOfParagraphTXT(diagram_type *pDiag, long lBeforeIndentation){	fail(pDiag == NULL);	fail(lBeforeIndentation < 0);	if (lBeforeIndentation >= lTwips2MilliPoints(HEADING_GAP)) {		/* A large gap is replaced by an empty line */		vMove2NextLineTXT(pDiag);	}} /* end of vStartOfParagraphTXT *//* * Create an end of paragraph by moving the y-top mark */voidvEndOfParagraphTXT(diagram_type *pDiag, long lAfterIndentation){	fail(pDiag == NULL);	fail(pDiag->pOutFile == NULL);	fail(lAfterIndentation < 0);	if (pDiag->lXleft > 0) {		/* To the start of the line */		vMove2NextLineTXT(pDiag);	}	if (lAfterIndentation >= lTwips2MilliPoints(HEADING_GAP)) {		/* A large gap is replaced by an empty line */		vMove2NextLineTXT(pDiag);	}} /* end of vEndOfParagraphTXT *//* * Create an end of page */voidvEndOfPageTXT(diagram_type *pDiag, long lAfterIndentation){	vEndOfParagraphTXT(pDiag, lAfterIndentation);} /* end of vEndOfPageTXT */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -