📄 uigraph.c
字号:
return;
if(x0+radius>GUI_SCREEN_WIDTH-1)
return;
if(y0-radius<0)
return;
if(y0+radius>GUI_SCREEN_HEIGHT-1)
return;
guiEnterWCS();
if(iStyle==GUI_HATCH)
step = 2;
else
step = 1;
x1 = x0-radius;
preX = x1; preDY = 0;
for(ix=x1; ix<=x0; ix+=step)
{
iy = floor(sqrt(radius*radius-(x0-ix)*(x0-ix)));
if(iy>preDY+1)
{
guiDrawLine (handle, preX, y0-preDY, ix, y0-iy, iColor, iStyle );
guiDrawLine (handle, preX, y0+preDY, ix, y0+iy, iColor, iStyle );
guiDrawLine (handle, x0+x0-preX, y0-preDY, x0+x0-ix, y0-iy, iColor, iStyle );
guiDrawLine (handle, x0+x0-preX, y0+preDY, x0+x0-ix, y0+iy, iColor, iStyle );
preX = ix; preDY = iy;
}
/*if(iy==radius)
{
guiDrawLine ( preX, y0-radius, x0+x0-preX, y0-radius, iColor, iStyle );
guiDrawLine ( preX, y0+radius, x0+x0-preX, y0+radius, iColor, iStyle );
}*/
}
if(radius>5)
{
/*guiDrawHLine (x0-1, x0+1, y0-radius, iColor, iStyle );
guiDrawHLine (x0-1, x0+1, y0+radius, iColor, iStyle );
*/
guiDrawLine (handle, x0-1, y0-radius, x0+1, y0-radius, iColor, iStyle );
guiDrawLine (handle, x0-1, y0+radius, x0+1, y0+radius, iColor, iStyle );
}
guiExitWCS();
return;
}
DLL_EXP(void) guiFillCircle (HNDL handle, int x0, int y0, int radius, int iColor, int iStyle)
{
int ix, iy, x1, y1, preX, preDY;
int i, step;
iColor &= 0x000000ff;
if(x0-radius<0)
return;
if(x0+radius>GUI_SCREEN_WIDTH-1)
return;
if(y0-radius<0)
return;
if(y0+radius>GUI_SCREEN_HEIGHT-1)
return;
guiEnterWCS();
if(iStyle==GUI_HATCH)
step = 2;
else
step = 1;
//x1 = x0-radius;
y1 = y0-radius;
preX = x1; preDY = 0;
for(iy=y1+1; iy<=y0; iy+=step)
{
ix = floor(sqrt(radius*radius-(y0-iy)*(y0-iy)));
if(iStyle==GUI_HATCH)
{
for(i=x0-ix; i<x0+ix; i++)
{
if(i%2)
{
displayDrawPixel(i, iy, iColor);
displayDrawPixel(i, y0+y0-iy, iColor);
}
}
}
else
{
/*guiDrawHLine (x0-ix, x0+ix, iy, iColor, iStyle );
guiDrawHLine (x0-ix, x0+ix, y0+y0-iy, iColor, iStyle );
*/
guiDrawLine (handle, x0-ix, iy, x0+ix, iy, iColor, iStyle );
guiDrawLine (handle, x0-ix, y0+y0-iy, x0+ix, y0+y0-iy, iColor, iStyle );
//preX = ix; preDY = iy;
}
}
if(radius>5)
{
/*
guiDrawHLine (x0-2, x0+2, y0-radius, iColor, iStyle );
guiDrawHLine (x0-2, x0+2, y0+radius, iColor, iStyle );
guiDrawVLine (x0-radius, y0-2, y0+2, iColor);
guiDrawVLine (x0+radius, y0-2, y0+2, iColor);
*/
guiDrawLine (handle, x0-2, y0-radius, x0+2, y0-radius, iColor, iStyle );
guiDrawLine (handle, x0-2, y0+radius, x0+2, y0+radius, iColor, iStyle );
guiDrawLine (handle, x0-radius, y0-2, x0-radius, y0+2, iColor, iStyle);
guiDrawLine (handle, x0+radius, y0-2, x0+radius, y0+2, iColor, iStyle);
}
guiExitWCS();
return;
}
#ifdef __WIN32__
DLL_EXP(void) guiShowImage( int x1, int y1, int x2, int y2,int s1,int s2, const BYTE *image )
{
return;
}
#endif
/* call when init system */
void guiInitialGraphMode( void )
{
int iSize;
unsigned char *pImgBuf;
displayInitial();
iSize = guiGetImageSize(0, 0, GUI_SCREEN_WIDTH-1, GUI_SCREEN_HEIGHT-1);
pImgBuf = (unsigned char *)kernelMalloc(iSize+IMAGE_HEADER_LEN);
//gGraphMode = BMP_4BIT_STYLE;
gScreenBuffer = pImgBuf;
}
DLL_EXP(int) guiGetImageWidth( const BYTE *pImage )
{
//struct pdaImage *pImageHeader;
int iWidth;
if(pImage[4])
{
//pImageHeader = (struct pdaImage *)pImage;
//iRet = (int)(pImageHeader->width[1]);
iWidth = (int)pImage[1];
}
else
iWidth = (int)pImage[3];
return iWidth;
}
DLL_EXP(int) guiGetImageHeight( const BYTE *pImage )
{
//struct pdaImage *pImageHeader;
int iHeight;
if(pImage[4])
{
//pImageHeader = (struct pdaImage *)pImage;
//iRet = (int)(pImageHeader->height[1]);
iHeight = (int)pImage[3];
}
else
iHeight = (int)pImage[7];
return iHeight;
}
DLL_EXP(BYTE) guiGetImageMode( const BYTE *pImage )
{
//struct pdaImage *pImageHeader;
unsigned char byMode;
if(pImage[4]==0)
{
// from Disassembly
/*if(pImage[11]==BMP_2BIT_STYLE)
byMode = BMP_1BIT_STYLE;
else if(pImage[11]==BMP_4BIT_STYLE)
byMode = BMP_2BIT_STYLE;
*/
byMode = pImage[11];
}
else
byMode = pImage[4];
return byMode;
}
// call displaySaveImageSize(x1, y1, x2, y2), notice header of image
DLL_EXP(int) guiGetImageSize( int x1, int y1, int x2, int y2 )
{
//pdaGetImageSize(x1, y1, x2, y2);
int iSize, width, height, count;
/*iSize = displaySaveImageSize(x1, y1, x2, y2);
#ifndef __WIN32__
iSize += 12;
#endif
*/
width = x2-x1+1;
height = y2-y1+1;
count = (((width-1) >> 2) + 1);
iSize = count*height+12;
return iSize;
}
DLL_EXP(int) guiGetImageSizeFromImage(const BYTE *pImage)
{
int iWidth, iHeight, iSize, iCount;
//BYTE byMode, byTemp;
iWidth = guiGetImageWidth(pImage);
iHeight = guiGetImageHeight(pImage);
/*byMode= *(pImage+4);
if(byMode==0)
{
iSize = guiGetImageSize(1,1, iWidth, iHeight);
return iSize;
}
*/
/* if(*(pImage+4))
byMode = *(pImage+4);
else
byMode = *(pImage+11);
byTemp = gGraphMode;
gGraphMode = byMode;
iSize = displaySaveImageSize(0, 0, iWidth-1, iHeight-1);
gGraphMode = byTemp;
#ifndef __WIN32__
iSize += 12;
#endif
*/
iCount = (((iWidth-1) >> 2) + 1);
iSize = iCount*iHeight+12;
return iSize;
}
// style unused
DLL_EXP(void) guiClearBlock(HNDL handle, int left, int top, int right, int bottom, int color, int style)
{
int ViewLeft, ViewTop, ViewRight, ViewBottom;
int x1, y1, x2, y2, iRet;
TRect ViewRect;
//int iRet;
color &= 0x000000ff;
iRet = _guiGetHandleView(handle, &ViewLeft, &ViewTop, &ViewRight, &ViewBottom);
//if(!iRet)
if(iRet!=STATUS_OK)
return;
guiEnterWCS();
ViewRect.left = ViewLeft; ViewRect.top = ViewTop;
ViewRect.right = ViewRight; ViewRect.bottom = ViewBottom;
x1 = left; y1 = top;
x2 = right; y2 = bottom;
_guiConvertXY(handle, &x1, &y1);
_guiConvertXY(handle, &x2, &y2);
#if 1
iRet = _guiGetOverlapRect(&ViewRect, &x1, &y1, &x2, &y2);
//if(!iRet)
if(iRet!=STATUS_OK)
{
guiExitWCS();
return;
}
#endif
pdaClearBlock(x1, y1, x2, y2 , color);
guiExitWCS();
return;
}
/*
#ifdef __WIN32__
unsigned int __cursorStyle;
short __cursorPosX=0, __cursorPosY=0, __cursorWidth=3, __cursorHeight=12;
unsigned char __CURSOR_BUF[1024], __cursorToggle=0;
void pdaSetCursorStyle (short format, short width, short height, unsigned char blink, unsigned char divisor)
{
// cursor off
if (!width && !height)
{
__cursorStyle = 0;
if ( __cursorToggle )
return;
}
else
{
// cursor blink
__cursorWidth = width;
__cursorHeight = height;
__cursorStyle = 0x80400000;
}
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
__cursorToggle = 0x00;
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
return;
}
void pdaSetCursorPos(short x, short y)
{
if((__cursorToggle)&&(gEnableCursor))
{
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
}
__cursorToggle = 0;
__cursorPosX = x;
__cursorPosY = y;
if(gEnableCursor)
{
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
__cursorToggle = ~__cursorToggle;
}
return;
}
#endif
DLL_EXP(void) guiDisableCursor()
{
gEnableCursor = FALSE;
if(__cursorToggle)
{
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
}
__cursorToggle = 0;
gEnableCursor = FALSE;
return;
}
DLL_EXP(void) guiEnableCursor()
{
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
__cursorToggle = ~__cursorToggle;
gEnableCursor = TRUE;
return;
}
DLL_EXP(void) guiSetCursorSize(int width, int height)
{
if((__cursorToggle)&&(gEnableCursor))
{
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
}
__cursorToggle = 0;
__cursorWidth = width;
__cursorHeight = height;
if(gEnableCursor)
{
displaySaveImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
invertImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
displayRestoreImage(__cursorPosX, __cursorPosY, __cursorPosX+__cursorWidth-1,
__cursorPosY+__cursorHeight-1, __CURSOR_BUF);
__cursorToggle = ~__cursorToggle;
}
return;
}
DLL_EXP(void) guiGetCursorPos(int *left, int *top)
{
*left = __cursorPosX;
*top = __cursorPosY;
return;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -