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

📄 wexjpeg.c

📁 vxworks下windml的一些demo程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        UGL_DEVICE_ID devId;    /*    * Initialize UGL.  Must do this before trying to do anything    * else within UGL/WindML.    */    uglInitialize();    /* Obtain the device identifier for the display */    devId = (UGL_DEVICE_ID)uglRegistryFind (UGL_DISPLAY_TYPE,  0, 0,0)->id;    /* Obtain the font driver */    fontDrvId =  (UGL_FONT_DRIVER_ID)uglRegistryFind (UGL_FONT_ENGINE_TYPE,  0, 0,0)->id;    /* Create the font */    uglFontFindString(fontDrvId, "pixelSize=12", &fontDef);    if ((font = uglFontCreate(fontDrvId, &fontDef)) == UGL_NULL)	{	printf("WindML: Font not found. Exiting.\n");	uglDeinitialize();	return;        	}    inputServiceId = (UGL_INPUT_SERVICE_ID)uglRegistryFind (UGL_INPUT_SERVICE_TYPE,  0, 0,0)->id;    /*    * Obtain the dimensions of the display.  We will use these    * to center some of our objects.    */    uglInfo(devId, UGL_MODE_INFO_REQ, &modeInfo);    displayWidth = modeInfo.width;    displayHeight = modeInfo.height;    /*    * Create a graphics context.  Default values are set during    * the creation.    */    gc = uglGcCreate(devId);    uglFontSet(gc, font);    /*    * Initialize colors. UGL maintains a Color Look-Up Table (CLUT)    * for devices that do not represent colors directly.  Essentially    * some hardware is only able to represent a subset of colors at    * any given time.  To manage which colors will be available for    * rendering, UGL uses color allocation.  If the hardware is able    * to represent colors directly, then the uglColorAlloc() function    * still works, but it is then essentially a no-op.    *    * We have set up for 16 colors, so here we will "allocate" them    * within UGL's CLUT (sometimes referred to as a "palette").  Colors    * can also be de-allocated, or freed, with uglColorFree.    *    * Since the ARGB's are intermingled with the UGL_COLORs in    * the colorTable, we must allocate each color individually.    * If the ARGB's had a contiguous array of ARGBs, and likewise for    * the UGL_COLORs, a single uglColorAlloc call could be made.    * (see the windows example).    *    * Note that these colors will only take effect on an psuedo color system.    * Without dithering, which is not provided in this example, high color    * jpeg images loose much of their quality on pseudo color systems     * particularly when only 16 colors are allocated.    */    uglColorAlloc (devId, &colorTable[BLACK].rgbColor, UGL_NULL,                    &colorTable[BLACK].uglColor, 1);    uglColorAlloc(devId, &colorTable[BLUE].rgbColor, UGL_NULL,                  &colorTable[BLUE].uglColor, 1);    uglColorAlloc(devId, &colorTable[GREEN].rgbColor, UGL_NULL,                  &colorTable[GREEN].uglColor, 1);    uglColorAlloc(devId, &colorTable[CYAN].rgbColor, UGL_NULL,                  &colorTable[CYAN].uglColor, 1);    uglColorAlloc(devId, &colorTable[RED].rgbColor, UGL_NULL,                  &colorTable[RED].uglColor, 1);    uglColorAlloc(devId, &colorTable[MAGENTA].rgbColor, UGL_NULL,                  &colorTable[MAGENTA].uglColor, 1);    uglColorAlloc(devId, &colorTable[BROWN].rgbColor, UGL_NULL,                  &colorTable[BROWN].uglColor, 1);    uglColorAlloc(devId, &colorTable[LIGHTGRAY].rgbColor, UGL_NULL,                  &colorTable[LIGHTGRAY].uglColor, 1);    uglColorAlloc(devId, &colorTable[DARKGRAY].rgbColor, UGL_NULL,                  &colorTable[DARKGRAY].uglColor, 1);    uglColorAlloc(devId, &colorTable[LIGHTBLUE].rgbColor, UGL_NULL,                  &colorTable[LIGHTBLUE].uglColor, 1);    uglColorAlloc(devId, &colorTable[LIGHTGREEN].rgbColor, UGL_NULL,                  &colorTable[LIGHTGREEN].uglColor, 1);    uglColorAlloc(devId, &colorTable[LIGHTCYAN].rgbColor, UGL_NULL,                  &colorTable[LIGHTCYAN].uglColor, 1);    uglColorAlloc(devId, &colorTable[LIGHTRED].rgbColor, UGL_NULL,                  &colorTable[LIGHTRED].uglColor, 1);    uglColorAlloc(devId, &colorTable[LIGHTMAGENTA].rgbColor, UGL_NULL,                  &colorTable[LIGHTMAGENTA].uglColor, 1);    uglColorAlloc(devId, &colorTable[YELLOW].rgbColor,  UGL_NULL,                  &colorTable[YELLOW].uglColor, 1);    uglColorAlloc(devId, &colorTable[WHITE].rgbColor,  UGL_NULL,                  &colorTable[WHITE].uglColor, 1);    /* Initialize the Jpeg library and extension */    jpegId = uglJpegInit(devId, &jpegVersion);    /* Check to see if Jpeg is available in the driver */    if (jpegId == UGL_NULL) 	{	sprintf(errorMessage, "Jpeg not included in the driver");	uglTextSizeGet(font, &textWidth, &textHeight, -1, errorMessage);	uglBackgroundColorSet(gc, colorTable[BLACK].uglColor);	uglForegroundColorSet(gc, colorTable[LIGHTRED].uglColor);	uglTextDraw(gc, (displayWidth - textWidth) / 2, 			(displayHeight - textHeight) / 3, -1, errorMessage);	pause(mode);	uglFontDestroy(font);	uglGcDestroy (gc);	uglDeinitialize();	return;	}    /* Set the desired mode for the Jpeg engine */    jpegMode.quality = 75;    jpegMode.smooth = 0;    jpegMode.scale = 1;    uglJpegModeSet(jpegId,&jpegMode);    ClearScreen(gc);    /* Decode the first image */    /* If no path was provided, assume the current directory. */    if (path == UGL_NULL || path[0] == UGL_NULL)        sprintf(filename, "%s", JPEG_IMG_FILE1);    else        sprintf(filename, "%s/%s", path, JPEG_IMG_FILE1);    fp = fopen(filename, "rb");    if (fp == NULL)	{	sprintf(errorMessage, "Unable to open %s.", JPEG_IMG_FILE1);	uglTextSizeGet(font, &textWidth, &textHeight, -1, errorMessage);	uglBackgroundColorSet(gc, colorTable[BLACK].uglColor);	uglForegroundColorSet(gc, colorTable[LIGHTRED].uglColor);	uglTextDraw(gc, (displayWidth - textWidth) / 2, 			(displayHeight - textHeight) / 3, -1, errorMessage);	pause(mode);	}    else	{        uglJpegToDDBFromFile (jpegId, fp, &jpegDdbId, UGL_NULL, 0, 0);        fclose (fp);                  	uglBitmapSizeGet(jpegDdbId, &jpegWidth, &jpegHeight);	uglBitmapBlt(gc, jpegDdbId, 0, 0, jpegWidth - 1, jpegHeight - 1, 		     UGL_DEFAULT_ID, 0, 0);	uglBitmapDestroy(devId, jpegDdbId);	jpegDdbId = UGL_NULL;	pause(mode);	ClearScreen(gc);	}    /* Decode the second image */    if (path == UGL_NULL || path[0] == UGL_NULL)        sprintf(filename, "%s", JPEG_IMG_FILE2);    else        sprintf(filename, "%s/%s", path, JPEG_IMG_FILE2);    fp = fopen(filename, "rb");    if (fp == NULL) 	{	sprintf(errorMessage, "Unable to open %s.", JPEG_IMG_FILE2);	uglTextSizeGet(font, &textWidth, &textHeight, -1, errorMessage);	uglBackgroundColorSet(gc, colorTable[BLACK].uglColor);	uglForegroundColorSet(gc, colorTable[LIGHTRED].uglColor);	uglTextDraw(gc, (displayWidth - textWidth) / 2, 			(displayHeight - textHeight) / 3, -1, errorMessage);	pause(mode);	}    else	{	uglJpegToDDBFromFile (jpegId, fp, &jpegDdbId, UGL_NULL, 0, 0);	fclose (fp);                   	uglBitmapSizeGet(jpegDdbId, &jpegWidth, &jpegHeight);	uglBitmapBlt(gc, jpegDdbId, 0, 0, jpegWidth - 1, jpegHeight - 1, 		     UGL_DEFAULT_ID, 0, 0);	uglBitmapDestroy(devId, jpegDdbId);	jpegDdbId = UGL_NULL;	pause(mode);	ClearScreen(gc);	}    /* Decode the third image and create a jpeg from image 3 */    if (path == UGL_NULL || path[0] == UGL_NULL)        sprintf(filename, "%s", JPEG_IMG_FILE3);    else        sprintf(filename, "%s/%s", path, JPEG_IMG_FILE3);    fp = fopen(filename, "rb");    if (fp == NULL) 	{	sprintf(errorMessage, "Unable to open %s.", JPEG_IMG_FILE3);	uglTextSizeGet(font, &textWidth, &textHeight, -1, errorMessage);	uglBackgroundColorSet(gc, colorTable[BLACK].uglColor);	uglForegroundColorSet(gc, colorTable[LIGHTRED].uglColor);	uglTextDraw(gc, (displayWidth - textWidth) / 2, 			(displayHeight - textHeight) / 3, -1, errorMessage);	pause(mode);	}    else	{	uglJpegToDDBFromFile (jpegId, fp, &jpegDdbId, UGL_NULL, 0, 0);	fclose (fp);                   	uglBitmapSizeGet(jpegDdbId, &jpegWidth, &jpegHeight);	uglBitmapBlt(gc, jpegDdbId, 0, 0, jpegWidth - 1, jpegHeight - 1, 		     UGL_DEFAULT_ID, 0, 0);	uglBitmapDestroy(devId, jpegDdbId);	jpegDdbId = UGL_NULL;	/* Create Jpeg image on host */    if (path == UGL_NULL || path[0] == UGL_NULL)        sprintf(filename, "%s", JPEG_IMG_FILE4);    else        sprintf(filename, "%s/%s", path, JPEG_IMG_FILE4);    fp = fopen(filename, "wb");	if (fp == NULL)	    {	    sprintf(errorMessage, "Unable to create %s.", JPEG_IMG_FILE4);	    uglTextSizeGet(font, &textWidth, &textHeight, -1, errorMessage);	    uglBackgroundColorSet(gc, colorTable[BLACK].uglColor);	    uglForegroundColorSet(gc, colorTable[LIGHTRED].uglColor);	    uglTextDraw(gc, (displayWidth - textWidth) / 2, 			(displayHeight - textHeight) / 3, -1, errorMessage);	    }	else	    {	    uglJpegFromDDB (jpegId, UGL_DISPLAY_ID, 0, 0, jpegWidth - 1, 			    jpegHeight - 1, fp);	    fclose (fp);	    }	pause(mode);	ClearScreen(gc);	}    /* Clean Up */    uglFontDestroy(font);    uglGcDestroy (gc);    uglDeinitialize();    return;    }

⌨️ 快捷键说明

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