📄 gfxlib.c
字号:
parm.pPalette = pPalette; parm.uStart = uStart; parm.uCount = uCount; return ioctl(fdGfxDev, IOC_GFX_SET_SURFACE_PALETTE, &parm);}int gfx_get_shared_surface(int fdGfxDev){ return ioctl(fdGfxDev, IOC_GFX_GET_SHARED_SURFACE, 0);}int gfx_set_shared_surface(int fdGfxDev, int hSurface){ return ioctl(fdGfxDev, IOC_GFX_SET_SHARED_SURFACE, hSurface);}int gfx_get_surface_display_parm(int fdGfxDev, int hSurface, GFX_SURFACE_DISPLAY_T *pParm){ pParm->hSurface = hSurface; return ioctl(fdGfxDev, IOC_GFX_GET_SURFACE_DISP_PARM, pParm);}int gfx_set_surface_display_parm(int fdGfxDev, int hSurface, GFX_SURFACE_DISPLAY_T *pParm){ pParm->hSurface = hSurface; return ioctl(fdGfxDev, IOC_GFX_SET_SURFACE_DISP_PARM, pParm);}int gfx_get_screen_info(int fdGfxDev, GFX_SCREEN_INFO_T *pInfo){ return ioctl(fdGfxDev, IOC_GFX_GET_SCREEN_INFO, pInfo);}int gfx_set_screen_info(int fdGfxDev, GFX_SCREEN_INFO_T *pInfo){ return ioctl(fdGfxDev, IOC_GFX_SET_SCREEN_INFO, pInfo);}int gfx_move_cursor(int fdGfxDev, int x, int y){ GFX_COORDINATE_T parm; parm.nCursorX = x; parm.nCursorY = y; return ioctl(fdGfxDev, IOC_GFX_MOVE_CURSOR, &parm);}int gfx_report_cursor(int fdGfxDev, int *x, int *y){ GFX_COORDINATE_T parm; if(ioctl(fdGfxDev, IOC_GFX_MOVE_CURSOR, &parm) >= 0) { if(x) *x = parm.nCursorX; if(y) *y = parm.nCursorY; return 0; } else return -1;}int gfx_set_cursor_attributes(int fdGfxDev, int hCursorSurface, UINT uIndex, GFX_CURSOR_ATTRIBUTE_T attr){ GFX_CURSOR_ATTRUBUTE_PARM_T parm; parm.attr = attr; parm.hCursor = hCursorSurface; parm.uIndex = uIndex; return ioctl(fdGfxDev, IOC_GFX_SET_CURSOR_ATTRIBUTE, &parm);}int gfx_set_display_attr(int fdGfxDev, GFX_DISPLAY_CONTROL_T control, UINT uattr){ GFX_DISPLAY_CONTROL_PARM_T parm; parm.parm = control; parm.uAttr = uattr; return ioctl(fdGfxDev, IOC_GFX_SET_DISPLAY_CONTROL, &parm);}int gfx_get_display_attr(int fdGfxDev, GFX_DISPLAY_CONTROL_T control, UINT *puattr){ GFX_DISPLAY_CONTROL_PARM_T parm; parm.parm = control; if(ioctl(fdGfxDev, IOC_GFX_GET_DISPLAY_CONTROL, &parm) >= 0) { if(puattr) *puattr = parm.uAttr; return 0; } return -1;}int gfx_set_display_device_attr(int fdGfxDev, GFX_VISUAL_DEVICE_ID_T graphDev, GFX_VISUAL_DEVICE_CONTROL_T control, UINT uattr){ GFX_VISUAL_DEVICE_CONTROL_PARM_T parm; parm.graphDev = graphDev; parm.cntl = control; parm.uAttr = uattr; return ioctl(fdGfxDev, IOC_GFX_SET_VISUAL_DEVICE_CONTROL, &parm);}int gfx_get_display_device_attr(int fdGfxDev, GFX_VISUAL_DEVICE_ID_T graphDev, GFX_VISUAL_DEVICE_CONTROL_T control, UINT *puattr){ GFX_VISUAL_DEVICE_CONTROL_PARM_T parm; parm.graphDev = graphDev; parm.cntl = control; if(ioctl(fdGfxDev, IOC_GFX_GET_VISUAL_DEVICE_CONTROL, &parm) >= 0) { if(puattr) *puattr = parm.uAttr; return 0; } return -1;}int gfx_wait_for_engine(int fdGfxDev, int nTimeout){ return ioctl(fdGfxDev, IOC_GFX_WAIT_FOR_COMPLETE, nTimeout);}int gfx_reset_engine(int fdGfxDev){ return ioctl(fdGfxDev, IOC_GFX_RESET_ENGINE, 0);}int gfx_set_engine_mode(int fdGfxDev, int sync_mode){ return ioctl(fdGfxDev, IOC_GFX_SET_ENGINE_MODE, sync_mode);}int gfx_get_engine_mode(int fdGfxDev){ return ioctl(fdGfxDev, IOC_GFX_GET_ENGINE_MODE, 0);}int gfx_set_surface_clip_rect(int fdGfxDev, int hSurface, GFX_RECT_T *pClip){ GFX_SET_CLIP_PARM_T parm; parm.hSurface = hSurface; if(pClip) parm.rect = *pClip; else { parm.rect.x1 = 0; parm.rect.y1 = 0; parm.rect.x2 = 1<<(sizeof(int)*8 - 2); // large enough parm.rect.y2 = 1<<(sizeof(int)*8 - 2); // large enough } if(ioctl(fdGfxDev, IOC_GFX_SET_SURFACE_CLIP_RECT, &parm) < 0) return -1; if(pClip) *pClip = parm.rect; return 0;}INT gfx_bitBLT(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, int hSrc, INT nSrcX, INT nSrcY, ALPHA_SELECT *pAlphaSelect, char enableGammaCorrection){ GFX_BITBLT_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.hSrcSurface = hSrc; parm.uSrcX = nSrcX; parm.uSrcY = nSrcY; if(pAlphaSelect) parm.alphaSelect = *pAlphaSelect; else { parm.alphaSelect.globalAlphaValue = 0; parm.alphaSelect.storedAlphaSelect = GFX_DEST_ALPHA_FROM_SOURCE; } parm.enableGammaCorrection = enableGammaCorrection; return ioctl(fdGfxDev, IOC_GFX_BITBLT, &parm);}INT gfx_advancedBitBLT(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, int hSrc, INT nSrcX, INT nSrcY, int hMask, INT nMaskX, INT nMaskY, GFX_ROP_CODE_T ROP, char enablePixelBitMask, UINT32 uPixelBitMask, ALPHA_SELECT *pAlphaSelect){ GFX_ADV_BITBLT_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.hSrcSurface = hSrc; parm.uSrcX = nSrcX; parm.uSrcY = nSrcY; parm.hMaskSurface = hMask; parm.uMaskX = nMaskX; parm.uMaskY = nMaskY; parm.ROP = ROP; parm.enablePixelBitMask = enablePixelBitMask; parm.uPixelBitMask = uPixelBitMask; if(pAlphaSelect) parm.alphaSelect = *pAlphaSelect; else { parm.alphaSelect.globalAlphaValue = 0; parm.alphaSelect.storedAlphaSelect = GFX_DEST_ALPHA_FROM_SOURCE; } return ioctl(fdGfxDev, IOC_GFX_ADV_BITBLT, &parm);}INT gfx_fillBLT(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, UINT32 uFillColor){ GFX_FILLBLT_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.uFillColor = uFillColor; return ioctl(fdGfxDev, IOC_GFX_FILLBLT, &parm);}INT gfx_advancedFillBLT(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, UINT32 uFillColor, /* formatted in the dest format color if rgb, index if clut */ int hMask, INT nMaskX, INT nMaskY, GFX_ROP_CODE_T ROP, char transparencyEnable, // UINT32 uBackGroundColor, char enablePixelBitMask, UINT32 uPixelBitMask){ GFX_ADV_FILLBLT_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.uFillColor = uFillColor; parm.hMaskSurface = hMask; parm.uMaskX = nMaskX; parm.uMaskY = nMaskY; parm.ROP = ROP; parm.transparencyEnable = transparencyEnable; parm.uBackGroundColor = uBackGroundColor; parm.enablePixelBitMask = enablePixelBitMask; parm.uPixelBitMask = uPixelBitMask; return ioctl(fdGfxDev, IOC_GFX_ADV_FILLBLT, &parm);}INT gfx_blend(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, int hSrc, INT nSrcX, INT nSrcY, ALPHA_BLEND_SELECT *pBlendSelect){ GFX_BLEND_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.hSrcSurface = hSrc; parm.uSrcX = nSrcX; parm.uSrcY = nSrcY; if(pBlendSelect) parm.blendSelect = *pBlendSelect; else { parm.blendSelect.globalAlphaValue = 0x80; parm.blendSelect.blendInputSelect = GFX_BLEND_ALPHA_FROM_SOURCE; parm.blendSelect.storedAlphaSelect = GFX_DEST_ALPHA_FROM_DESTINATION; } return ioctl(fdGfxDev, IOC_GFX_BLEND, &parm);}INT gfx_advancedBlend(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, int hSrc, INT nSrcX, INT nSrcY, int hAlpha, INT nAlphaX, INT nAlphaY, ALPHA_BLEND_SELECT *pBlendSelect){ GFX_ADV_BLEND_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.hSrcSurface = hSrc; parm.uSrcX = nSrcX; parm.uSrcY = nSrcY; parm.hAlphaSurface = hAlpha; parm.uAlphaX = nAlphaX; parm.uAlphaY = nAlphaY; if(pBlendSelect) parm.blendSelect = *pBlendSelect; else { parm.blendSelect.globalAlphaValue = 0x80; parm.blendSelect.blendInputSelect = GFX_BLEND_ALPHA_FROM_PATTERN; parm.blendSelect.storedAlphaSelect = GFX_DEST_ALPHA_FROM_DESTINATION; } return ioctl(fdGfxDev, IOC_GFX_ADV_BLEND, &parm);}INT gfx_colorKey(int fdGfxDev, int hDes, INT nDesX, INT nDesY, UINT uWidth, UINT uHeight, int hSrc, INT nSrcX, INT nSrcY, COLOR_KEY_SELECT *pColorKeySelect, ALPHA_SELECT *pAlphaSelect){ GFX_COLORKEY_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = nDesX; parm.uDesY = nDesY; parm.uWidth = uWidth; parm.uHeight = uHeight; parm.hSrcSurface = hSrc; parm.uSrcX = nSrcX; parm.uSrcY = nSrcY; parm.colorKeySelect = *pColorKeySelect; if(pAlphaSelect) parm.alphaSelect = *pAlphaSelect; else { parm.alphaSelect.globalAlphaValue = 0; parm.alphaSelect.storedAlphaSelect = GFX_DEST_ALPHA_FROM_SOURCE; } return ioctl(fdGfxDev, IOC_GFX_COLORKEY, &parm);}INT gfx_resize(int fdGfxDev, int hDes, UINT uDesX, UINT uDesY, UINT uDesWidth, UINT uDesHeight, int hSrc, UINT uSrcX, UINT uSrcY, UINT uSrcWidth, UINT uSrcHeight, BYTE destAlpha, char enableGammaCorrection){ GFX_RESIZE_PARM_T parm; parm.hDesSurface = hDes; parm.uDesX = uDesX; parm.uDesY = uDesY; parm.uDesWidth = uDesWidth; parm.uDesHeight = uDesHeight; parm.hSrcSurface = hSrc; parm.uSrcX = uSrcX; parm.uSrcY = uSrcY; parm.uSrcWidth = uSrcWidth; parm.uSrcHeight = uSrcHeight; parm.destAlpha = destAlpha; parm.enableGammaCorrection = enableGammaCorrection; return ioctl(fdGfxDev, IOC_GFX_RESIZE, &parm);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -