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

📄 graphic_loader.h

📁 sigmadesign smp8623 gui source code ,bingo
💻 H
字号:
/* * * Copyright (c) Sigma Designs, Inc. 2004. All rights reserved. * *//**	@file graphic_loader.h	@brief Some routines to load graphic files	@author Raul Chirinos*/#ifndef __GRAPHIC_LOADER_H__#define __GRAPHIC_LOADER_H__#ifndef WITH_RM_FILE_JPEG#define WITH_RM_FILE_JPEG#endif#include "rmlibpng/src/libpng/png.h"#include "rmlibjpeg/src/libjpeg/jpeglib.h"#include "rmlibungif/src/libungif/gif_lib.h"#include "rua/include/rua.h"#include "SigmaFont.h"#define BMP_BPP_1		1#define BMP_BPP_4		4#define BMP_BPP_8		8#define BMP_BPP_24		24#define BMP_BYTES_TO_CHECK 3#define PNG_BYTES_TO_CHECK 4#define JPG_BYTES_TO_CHECK 2#define RMBITMAPCOREHEADER_REALSIZE 12#define RMBITMAPINFOHEADER_REALSIZE 40#define RMBITMAPFILEHEADER_REALSIZE 14#define BMP_EXT_LOG 0#define BMP_PACK_RGB      0L#define BMP_PACK_RLE8     1L#define BMP_PACK_RLE4     2L// data padded at 4 bytes#define BMP_DATA_PADDING	4#define MAX_BITMAPS	64	// number of bitmaps kept#define MAX_STR_LENGTH		256#define MAX_STR_LINES		128#define MAX_STR_BUFFERS		6#define MAX_BITMAP_STATES	3#ifdef GUI_REFID_2#define PREDEFINED_FONTS	3#else#define PREDEFINED_FONTS	2#endiftypedef RMascii RMtextitem [MAX_STR_LENGTH];typedef struct tagRMBitmapFileHeader{	RMuint16    bfType;	RMuint32   	bfSize;	RMuint16    bfReserved1;	RMuint16    bfReserved2;	RMuint32   	bfOffBits;} RMBitmapFileHeader;typedef struct tagRMBitmapInfoHeader{	RMuint32  biSize;	RMuint32  biWidth;	RMuint32  biHeight;	RMuint16  biPlanes;	RMuint16  biBitCount;	RMuint32  biCompression;	RMuint32  biSizeImage;	RMuint32  biXPelsPerMeter;	RMuint32  biYPelsPerMeter;	RMuint32  biClrUsed;	RMuint32  biClrImportant;} RMBitmapInfoHeader;typedef struct tagRMBitmapCoreHeader{	RMuint32  bcSize;	RMuint16  bcWidth;	RMuint16  bcHeight;	RMuint16  bcPlanes;	RMuint16  bcBitCount;} RMBitmapCoreHeader;enum tagBitmapType{	BMP_TYPE_INFOHEADER = 0,	BMP_TYPE_COREHEADER};struct tagRMRGBTriple{	RMuint8    rgbtBlue;	RMuint8    rgbtGreen;	RMuint8    rgbtRed;};struct tagRMRGBQuad{	RMuint8    rgbBlue;	RMuint8    rgbGreen;	RMuint8    rgbRed;	RMuint8    rgbAlpha;};struct tagRMBitmap              /* the structure for a bitmap. */{	RMuint16 		uiWidth;	RMuint16 		uiHeight;	RMuint8 		uiNbBitPerPixel;	RMuint32 		uiWidthLenInBytes;	RMuint8 		*pData;	RMuint32 		uiDataSize;	RMuint32		uiBufferSize;	struct tagRMRGBQuad 	palette[256];	RMuint32 		uiPaletteSize;};typedef struct tagBitmapData{	RMascii 	 path[MAX_STR_LENGTH];	struct tagRMBitmap bmp;	RMuint8		charwidth;		// used for bitmapped fonts, 0 otherwise	RMbool		ispredefinedfont;	// we are using a predefined font	RMuint32	transparentcolor;	RMbool		usetransparentcolor;	// FALSE by default	RMuint32	pBmpAddr;		// DRAM start address	RMbool		isBackground;} RMbitmapdata;typedef struct tagDrawBuffer{	RMuint32 baseAddr;	RMuint8* pMappedAddr;	RMuint32 size;	RMuint32 offset;	RMuint32 limit;} RMdrawBuffer;RMbool isBitmap(RMascii *path);RMstatus load_bitmap(struct RUA* pRua, RMbitmapdata *pBmpData, RMuint32 *bmpsize);RMstatus transform_data_to_match_gfxacc(struct tagRMBitmap *ptgBitmap);RMbool isPng(RMascii *path);RMstatus load_png(struct RUA* pRua, RMbitmapdata *pBmpData, RMuint32 *bmpsize);RMbool isJpeg(RMascii *path);RMstatus load_jpeg(struct RUA* pRua, RMbitmapdata *pBmpData, RMuint32 *bmpsize);RMstatus load_gif(struct RUA* pRua, RMbitmapdata *pBmpData, RMuint32 *bmpsize);RMbool isPredefinedFont(RMascii *path);RMstatus getPredefinedFontIndex(RMascii *path, RMuint8 *index);RMuint32 getTextWidth(RMascii *text, RMuint8 index);RMuint32 getModifiedTextWidth(RMascii *text, RMuint16 maxWidth, RMascii *modifiedtext, RMuint8 index);RMuint8 getTextLines(const RMascii* text, RMuint8 index, RMuint16 maxwidth, RMuint16 maxchars, RMuint8 maxlines, RMtextitem *lines);RMuint8 getFontFirstChar(RMuint8 index);RMuint8 getFontHeight(RMuint8 index);RMstatus setPredefinedFont(struct RUA*pRua, RMbitmapdata *pBmpData, RMuint32 *size);RMstatus getCharData(struct RUA *pRua, RMbitmapdata *pBmpData, RMuint8 fontindex, RMuint8 charindex, RMuint16 *width, RMuint8 scanline, RMuint16 slen, RMuint8 bufferindex);RMuint8 getCharWidth(RMuint8 index, RMuint8 charindex);RMstatus setProfile(RMuint32 background, RMuint32 other);RMstatus AllocateBaseBuffer(struct RUA* pRua, RMdrawBuffer *pBaseBuffer, RMuint32 size);RMstatus AllocateBackBuffer(struct RUA* pRua, RMdrawBuffer *pBaseBuffer, RMuint32 size);RMstatus FreeBackBuffer(struct RUA* pRua, RMdrawBuffer *pBaseBuffer);RMstatus AllocateBuffer(RMdrawBuffer *pBuffer, RMuint32 size, RMbool locked);RMstatus FreeBaseBuffer(struct RUA* pRua);RMstatus ResetBaseBuffer(RMdrawBuffer *pBaseBuffer);RMstatus ResetBuffer(RMdrawBuffer *pBaseBuffer);RMstatus ResetUsedBuffer(RMuint32 offset);RMstatus FindFreeSpace(RMuint32 size, RMuint8* newindex);void CacheFlush(void);void UpdateCache(RMuint8 i);RMbool CanReuseBuffer(RMuint32 used, RMuint32 needed);void SetOsdSurfaceSize(RMuint32 width, RMuint32 height);RMstatus convertCodepage(RMascii *text);#define LIST_HEAD(name, type)						\struct name {								\	struct type *lh_first;	/* first element */			\}#define LIST_ENTRY(type)						\struct {								\	struct type *le_next;	/* next element */			\	struct type *le_prev;	/* address of previous next element */	\}/* * List functions. */#define	LIST_INIT(head) {						\	(head)->lh_first = NULL;					\}#define LIST_INSERT_AFTER(listelm, elm, field) {			\	if (((elm)->field.le_next = (listelm)->field.le_next) != NULL)	\		(listelm)->field.le_next->field.le_prev =		\		    (elm);				\	(listelm)->field.le_next = (elm);				\	(elm)->field.le_prev = (listelm);		\}#define LIST_INSERT_HEAD(head, elm, field) {				\	if (((elm)->field.le_next = (head)->lh_first) != NULL)		\		(head)->lh_first->field.le_prev = (elm);\	(head)->lh_first = (elm);					\	(elm)->field.le_prev = NULL;			\}#define LIST_REMOVE(head, elm, field) {					\	if ((elm)->field.le_next != NULL)				\		(elm)->field.le_next->field.le_prev = 			\		    (elm)->field.le_prev;				\	if((elm) == (head)->lh_first && (elm)->field.le_next == NULL)					\		(head)->lh_first = NULL;			\	else if ((elm) == (head)->lh_first && (elm)->field.le_next != NULL)		\		(head)->lh_first = (elm)->field.le_next;		\	else											\		(elm)->field.le_prev->field.le_next = (elm)->field.le_next;					\}#endif //__GRAPHIC_LOADER_H__

⌨️ 快捷键说明

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