Exemplo n.º 1
0
void EScale::run()
{
    bool ret;

    isRun = true;
    Dev = new QSerialPort;

INIT:
    if (!isRun)
        goto EXIT;

    if (!devInit("COM9"))
    {
        msleep(200);
        goto INIT;
    }

    while (isRun)
    {
        ReadWeight();

        msleep(500);
    }

EXIT:
    Dev->close();
    delete Dev;
    Dev = NULL;
}
Exemplo n.º 2
0
/*******************************************************************************
 *  ReadFontMetrics
 *
 *  Allocates space for the AFM on the driver heap and reads basic font metrics.
 *  Returns FALSE for memory allocation failure; sets *p_afm to NULL if AFM file
 *  is unusable.
 *
 */
static BOOL ReadFontMetrics(FILE *file, CHAR buffer[], INT bufsize, AFM **p_afm)
{
    AFM     *afm;
    BOOL    retval, found;

    *p_afm = afm = HeapAlloc(PSDRV_Heap, 0, sizeof(*afm));
    if (afm == NULL)
    	return FALSE;

    retval = ReadWeight(file, buffer, bufsize, afm, &found);
    if (retval == FALSE || found == FALSE)
    	goto cleanup_afm;

    retval = ReadFloat(file, buffer, bufsize, "ItalicAngle",
    	    &(afm->ItalicAngle), &found);
    if (retval == FALSE || found == FALSE)
    	goto cleanup_afm;

    retval = ReadFixedPitch(file, buffer, bufsize, afm, &found);
    if (retval == FALSE || found == FALSE)
    	goto cleanup_afm;

    retval = ReadBBox(file, buffer, bufsize, afm, &found);
    if (retval == FALSE || found == FALSE)
    	goto cleanup_afm;

    retval = ReadFloat(file, buffer, bufsize, "UnderlinePosition",
    	    &(afm->UnderlinePosition), &found);
    if (retval == FALSE || found == FALSE)
    	goto cleanup_afm;

    retval = ReadFloat(file, buffer, bufsize, "UnderlineThickness",
    	    &(afm->UnderlineThickness), &found);
    if (retval == FALSE || found == FALSE)
    	goto cleanup_afm;

    retval = ReadFloat(file, buffer, bufsize, "Ascender",    	/* optional */
    	    &(afm->Ascender), &found);
    if (retval == FALSE)
    	goto cleanup_afm;

    retval = ReadFloat(file, buffer, bufsize, "Descender",   	/* optional */
    	    &(afm->Descender), &found);
    if (retval == FALSE)
    	goto cleanup_afm;

    afm->WinMetrics.usUnitsPerEm = 1000;
    afm->WinMetrics.sTypoAscender = (SHORT)Round(afm->Ascender);
    afm->WinMetrics.sTypoDescender = (SHORT)Round(afm->Descender);

    if (afm->WinMetrics.sTypoAscender == 0)
    	afm->WinMetrics.sTypoAscender = (SHORT)Round(afm->FontBBox.ury);

    if (afm->WinMetrics.sTypoDescender == 0)
    	afm->WinMetrics.sTypoDescender = (SHORT)Round(afm->FontBBox.lly);

    afm->WinMetrics.sTypoLineGap = 1200 -
    	    (afm->WinMetrics.sTypoAscender - afm->WinMetrics.sTypoDescender);
    if (afm->WinMetrics.sTypoLineGap < 0)
    	afm->WinMetrics.sTypoLineGap = 0;

    return TRUE;

    cleanup_afm:    	    	    	/* handle fatal or non-fatal errors */
    	HeapFree(PSDRV_Heap, 0, afm);
	*p_afm = NULL;
	return retval;
}