Beispiel #1
0
CFSLockFreeFixAlloc::~CFSLockFreeFixAlloc(){
	while (m_pFreeHandle){
		CFSFixAllocHandle *pNext=m_pFreeHandle->m_pNext;
		FSFree(m_pFreeHandle);
		m_pFreeHandle=pNext;
	}
}
Beispiel #2
0
void CFSLockFreeFixAlloc::Free(void *pBlock){
	if (m_lCacheSpace<=0) {
		FSFree(pBlock);
	}
	else{
		CFSFixAllocHandle *pHandle=(CFSFixAllocHandle *)pBlock;
		pHandle->m_pNext=m_pFreeHandle;
		m_pFreeHandle=pHandle;
		m_lCacheSpace--;
	}
}
Beispiel #3
0
static void
get_list(const char *pattern)
{
    int         available = nnames + 1,
                i;
    char      **fonts;
    FSXFontInfoHeader **info;
    FSPropInfo **props;
    FSPropOffset **offsets;
    unsigned char **pdata;

    /* Get list of fonts matching pattern */
    for (;;) {

	if (long_list >= L_MEDIUM)
	    fonts = FSListFontsWithXInfo(svr,
	       pattern, nnames, &available, &info, &props, &offsets, &pdata);
	else
	    fonts = FSListFonts(svr, pattern, nnames, &available);
	if (fonts == NULL || available < nnames)
	    break;

	if (long_list >= L_MEDIUM) {
	    for (i = 0; i < available; i++) {
		FSFree((char *) fonts[i]);
		FSFree((char *) info[i]);
		FSFree((char *) props[i]);
		FSFree((char *) offsets[i]);
		FSFree((char *) pdata[i]);
	    }
	    FSFree((char *) fonts);
	    FSFree((char *) info);
	    FSFree((char *) props);
	    FSFree((char *) offsets);
	    FSFree((char *) pdata);
	} else {
	    FSFreeFontNames(fonts);
	}
	nnames = available * 2;
    }

    if (fonts == NULL) {
	fprintf(stderr, "%s: pattern \"%s\" unmatched\n",
		program_name, pattern);
	return;
    }
    if (font_list)
	font_list = (FontList *) realloc(font_list,
				  (font_cnt + available) * sizeof(FontList));
    else
	font_list = (FontList *) malloc((unsigned)
				  (font_cnt + available) * sizeof(FontList));
    for (i = 0; i < available; i++) {
	font_list[font_cnt].name = fonts[i];

	if (long_list >= L_MEDIUM) {
	    font_list[font_cnt].info = info[i];
	    font_list[font_cnt].pi = props[i];
	    font_list[font_cnt].po = offsets[i];
	    font_list[font_cnt].pd = pdata[i];
	} else
	    font_list[font_cnt].info = NULL;
	font_cnt++;
    }
}
Beispiel #4
0
void operator delete(void* pBuf)
{
	FSFree(pBuf);
}
Beispiel #5
0
Datei: chars.c Projekt: aosm/X11
Bool
EmitCharacters(FILE *outFile, 
	       FSServer *fontServer, 
	       FSXFontInfoHeader *fontHeader, 
	       Font fontID)
{
    FSXCharInfo *extents;
    FSXCharInfo *charInfo;
    int         encoding;
    FSOffset   *offsets;
    unsigned char *glyph;
    unsigned char *glyphs;
    unsigned int nChars;
    int         firstCharLow;
    int         firstCharHigh;
    int         lastCharLow;
    int         lastCharHigh;
    int         chLow;
    int         chHigh;
    FSBitmapFormat format;

    nChars = 0;

    format = BYTE_ORDER | BIT_ORDER | SCANLINE_UNIT |
	SCANLINE_PAD | EXTENTS;
    firstCharLow = fontHeader->char_range.min_char.low; 
    firstCharHigh = fontHeader->char_range.min_char.high; 
    lastCharLow = fontHeader->char_range.max_char.low;
    lastCharHigh = fontHeader->char_range.max_char.high;

    (void) FSQueryXExtents16(fontServer, fontID, True, (FSChar2b *) 0, 0,
			     &extents);
    (void) FSQueryXBitmaps16(fontServer, fontID, format, True, (FSChar2b *) 0,
			     0, &offsets, &glyphs);

    charInfo = extents;
    /* calculate the actual number of chars */
    for (chHigh = 0; chHigh <= (lastCharHigh-firstCharHigh); chHigh++) {
      for (chLow = 0; chLow <= (lastCharLow-firstCharLow); chLow++) {
	if ((charInfo->width != 0) || (charInfo->left != charInfo->right))
	    nChars++;
	charInfo++;
      }
    }

    fprintf(outFile, "CHARS %u\n", nChars);

    /*
     * actually emit the characters
     */
    charInfo = extents;
    glyph = glyphs;
    for (chHigh = firstCharHigh; chHigh <= lastCharHigh; chHigh++) {
      for (chLow = firstCharLow; chLow <= lastCharLow; chLow++) {
	int         bpr;

	bpr = GLWIDTHBYTESPADDED((charInfo->right - charInfo->left),
				 SCANLINE_PAD_BYTES);
  	  encoding=(chHigh << 8)+chLow;
	if ((charInfo->width != 0) || (charInfo->right != charInfo->left))
	    EmitBitmap(outFile, fontHeader, charInfo, encoding, bpr, glyph);
	glyph += (charInfo->descent + charInfo->ascent) * bpr;
	charInfo++;
      }
    }
    FSFree((char *) extents);
    FSFree((char *) glyphs);
    FSFree((char *) offsets);
    return (True);
}
Beispiel #6
0
int
main(int argc, char *argv[])
{
    FSServer   *fontServer;
    Font        fontID,
                dummy;
    FSBitmapFormat bitmapFormat;
    FSXFontInfoHeader fontHeader;
    FSPropInfo  propInfo;
    FSPropOffset *propOffsets;
    unsigned char *propData;

    FILE       *outFile;
    char       *fontName;
    char       *serverName;
    int         i;

    fontName = NULL;
    serverName = NULL;
    outFile = stdout;

    for (i = 1; i < argc; i++) {
	if (!strncmp(argv[i], "-s", 2)) {
	    if (argv[++i])
		serverName = argv[i];
	    else
		usage(argv[0]);
	} else if (!strncmp(argv[i], "-fn", 3)) {
	    if (argv[++i])
		fontName = argv[i];
	    else
		usage(argv[0]);
	}
    }

    if (fontName == NULL)
	usage(argv[0]);

    fontServer = FSOpenServer(serverName);
    if (!fontServer) {
	const char *sn = FSServerName(serverName);
	if (sn)
	    fprintf(stderr, "%s: can't open font server \"%s\"\n",
	      	    argv[0], sn);
	else
	    fprintf(stderr, "%s:  No font server specified.\n",
		    argv[0]);
	exit(0);
    }
    bitmapFormat = 0;
    fontID = FSOpenBitmapFont(fontServer, bitmapFormat, (FSBitmapFormatMask) 0,
			      fontName, &dummy);
    if (!fontID) {
	printf("can't open font \"%s\"\n", fontName);
	exit(0);
    }
    FSQueryXInfo(fontServer, fontID, &fontHeader, &propInfo, &propOffsets,
		 &propData);

    if (!EmitHeader(outFile, &fontHeader, &propInfo, propOffsets, propData))
	Fail(argv[0]);
    if (!EmitProperties(outFile, &fontHeader, &propInfo, propOffsets, propData))
	Fail(argv[0]);
    if (!EmitCharacters(outFile, fontServer, &fontHeader, fontID))
	Fail(argv[0]);
    fprintf(outFile, "ENDFONT\n");

    FSFree((char *) propOffsets);
    FSFree((char *) propData);
    exit (0);
}
Beispiel #7
0
void operator delete(void* pBuf) noexcept
{
	FSFree(pBuf);
}