?? graphic_loader.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 + -