📄 glib.c
字号:
//
//
//==========变宽水平线===================================================
void _DrawHorizontalLine(int nStartX,int nStartY,int nLength,int nSize,COLOR c)
{
int i;
for (i=0;i<nSize;i++)
{
GHAL_put_line(nStartX,nStartY+i,nStartX + nLength,nStartY+i,c);
}
}
//==========变宽垂直线===================================================
void _DrawVerticalLine(int nStartX,int nStartY,int nLength,int nSize,COLOR c)
{
int i;
for(i=0;i<nSize;i++)
{
GHAL_put_line(nStartX+i,nStartY,nStartX+i,nStartY+nLength,c);
}
}
//=================空心矩形============================================
void RectLine(int left,int top,int right,int bottom,COLOR color)
{
DEBUG_Assert(right>left);
DEBUG_Assert(bottom>top);
GHAL_put_line(left,top,right,top,color);
GHAL_put_line(left,bottom-1,right,bottom-1,color);
GHAL_put_line(left,top,left,bottom,color);
GHAL_put_line(right,top,right,bottom,color);
}
//=================填充矩形============================================
void RectFill(int left,int top,int right,int bottom,COLOR color)
{
int i;
DEBUG_Assert(right>left);
DEBUG_Assert(bottom>top);
for(i=top;i<bottom;i++)
{
GHAL_put_line(left,i,right,i,color);
}
}
//=================填充带边矩形============================================
void Rect(int left,int top,int right,int bottom,COLOR border_color,COLOR fill_color)
{
RectFill(left,top,right,bottom,fill_color);
RectLine(left,top,right,bottom,border_color);
}
//==================大圆角矩形==========================================
unsigned char cArcSingle[4][6]={
{0x00,0x0c,0x10,0x20,0x40,0x40},
{0x00,0xc0,0x20,0x10,0x10,0x08},
{0x40,0x40,0x20,0x10,0x0c,0x00},
{0x08,0x08,0x10,0x20,0xc0,0x00},
};
unsigned char cArcDouble[4][8]={
{0x0f,0x1f,0x38,0x70,0xe0,0xc0,0xc0,0xc0},
{0xf0,0xf8,0x1c,0x0e,0x07,0x03,0x03,0x03},
{0xc0,0xc0,0xc0,0xe0,0x70,0x38,0x1f,0x0f},
{0x03,0x03,0x03,0x07,0x0e,0x1c,0xf8,0xf0},
};
void RoundRectangle_Big(int left,int top,int right,int bottom,int bThickBorder)
{
NANA_BITMAP pic;
DEBUG_Assert(right>left);
DEBUG_Assert(bottom>top);
//DEBUG_Assert((nSize == 1) || (nSize == 2));
RectFill(left,top,right,bottom,COLOR_FORGROUND);
if(!bThickBorder)
{
GHAL_put_line(left+6,top,right-6,top,COLOR_BORDER);
GHAL_put_line(left+6,bottom-1,right-6,bottom-1,COLOR_BORDER);
GHAL_put_line(left,top+6,left,bottom-6,COLOR_BORDER);
GHAL_put_line(right-1,top+6,right-1,bottom-6,COLOR_BORDER);
pic.biBitCount = 1;
pic.biColorMask = COLOR_BKGROUND;
pic.biWidth = 6;
pic.biHeight = 6;
pic.biReverseColor = 0;
pic.pData = cArcSingle[0];
GHAL_put_bmp(left,top,&pic);
pic.pData = cArcSingle[1];
GHAL_put_bmp(right-6,top,&pic);
pic.pData = cArcSingle[2];
GHAL_put_bmp(left,bottom-6,&pic);
pic.pData = cArcSingle[3];
GHAL_put_bmp(right-6,bottom-6,&pic);
}else
{
RectFill(left,top,right,bottom,COLOR_FORGROUND);
GHAL_put_line(left+8,top,right-8,top,COLOR_BORDER);
GHAL_put_line(left+8,top+1,right-8,top+1,COLOR_BORDER);
GHAL_put_line(left+8,bottom-1,right-8,bottom-1,COLOR_BORDER);
GHAL_put_line(left+8,bottom-2,right-8,bottom-2,COLOR_BORDER);
GHAL_put_line(left,top+8,left,bottom-8,COLOR_BORDER);
GHAL_put_line(left+1,top+8,left+1,bottom-8,COLOR_BORDER);
GHAL_put_line(right-1,top+8,right-1,bottom-8,COLOR_BORDER);
GHAL_put_line(right-2,top+8,right-2,bottom-8,COLOR_BORDER);
pic.biBitCount = 1;
pic.biColorMask = COLOR_BKGROUND;
pic.biWidth = 8;
pic.biHeight = 8;
pic.biReverseColor = 0;
pic.pData = cArcDouble[0];
GHAL_put_bmp(left+1,top+1,&pic);
pic.pData = cArcDouble[1];
GHAL_put_bmp(right-9,top+1,&pic);
pic.pData = cArcDouble[2];
GHAL_put_bmp(left+1,bottom-9,&pic);
pic.pData = cArcDouble[3];
GHAL_put_bmp(right-9,bottom-9,&pic);
}
}
//=============超小圆角矩形=========================================
void RoundRectangle_little(int left,int top,int right,int bottom)
{
DEBUG_Assert(right>left);
DEBUG_Assert(bottom>top);
GHAL_put_line(left+2,top,right-2,top,COLOR_BORDER);
GHAL_put_line(left+2,bottom-1,right-2,bottom-1,COLOR_BORDER);
GHAL_put_line(left,top+2,left,bottom-2,COLOR_BORDER);
GHAL_put_line(right-1,top+2,right-1,bottom-2,COLOR_BORDER);
GHAL_put_pixel(left+1,top+1,COLOR_BORDER);
GHAL_put_pixel(left+1,bottom-2,COLOR_BORDER);
GHAL_put_pixel(right-2,top+1,COLOR_BORDER);
GHAL_put_pixel(right-2,bottom-2,COLOR_BORDER);
}
//===========自定义小圆角矩形======================================
void RoundRectangle_custom(int left,int top,int right,int bottom,
int round_mode)
{
DEBUG_Assert(right>left);
DEBUG_Assert(bottom>top);
GHAL_put_line(left+2,top,right-2,top,COLOR_BORDER);
GHAL_put_line(left+2,bottom-1,right-2,bottom-1,COLOR_BORDER);
GHAL_put_line(left,top+2,left,bottom-2,COLOR_BORDER);
GHAL_put_line(right-1,top+2,right-1,bottom-2,COLOR_BORDER);
if(round_mode & ROUND_LEFTTOP)
{
GHAL_put_pixel(left+1,top+1,COLOR_BORDER);
}else{
GHAL_put_pixel(left,top+1,COLOR_BORDER);
GHAL_put_pixel(left+1,top,COLOR_BORDER);
GHAL_put_pixel(left,top,COLOR_BORDER);
}
if(round_mode & ROUND_LEFTBOTTOM)
{
GHAL_put_pixel(left+1,bottom-2,COLOR_BORDER);
}else{
GHAL_put_pixel(left,bottom-2,COLOR_BORDER);
GHAL_put_pixel(left+1,bottom-1,COLOR_BORDER);
GHAL_put_pixel(left,bottom-1,COLOR_BORDER);
}
if(round_mode & ROUND_RIGHTTOP)
{
GHAL_put_pixel(right-2,top+1,COLOR_BORDER);
}else{
GHAL_put_pixel(right-2,top,COLOR_BORDER);
GHAL_put_pixel(right-1,top+1,COLOR_BORDER);
GHAL_put_pixel(right-1,top,COLOR_BORDER);
}
if(round_mode & ROUND_RIGHTBOTOM)
{
GHAL_put_pixel(right-2,bottom-2,COLOR_BORDER);
}else{
GHAL_put_pixel(right-2,bottom-1,COLOR_BORDER);
GHAL_put_pixel(right-1,bottom-2,COLOR_BORDER);
GHAL_put_pixel(right-1,bottom-1,COLOR_BORDER);
}
}
///////////////////////////////////////////////////////////////////
//
// Window related
//
//
///////////////////////////////////////////////////////////////////
// 函数名 :void BoxFrame(int nStartX,int nStartY,int nWidth,int nHeigth,int nTitleHeight)
// 说明 :画对话框的外框
// 输入参数 :
// nStartX,nStartY该位图起始X,Y地址
// nWidth ,nHeigth 高和宽
// nTitleHeight 标题栏的高度
unsigned char cBoxFramArcSingle[4][6]={
{0x00,0x0f,0x1f,0x3f,0x7f,0x7f},
{0x00,0xc0,0xe0,0xf0,0xf0,0xf8},
{0x40,0x40,0x20,0x10,0x0c,0x00},
{0x08,0x08,0x10,0x20,0xc0,0x00},
};
unsigned char cBoxFramArcDouble[4][8]={
{0x0f,0x1f,0x3f,0x7f,0xff,0xff,0xff,0xff},
{0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff},
{0xc0,0xc0,0xc0,0xe0,0x70,0x38,0x1f,0x0f},
{0x03,0x03,0x03,0x07,0x0e,0x1c,0xf8,0xf0},
};
void RoundWindowFrame(int left,int top,int right,int bottom,int bThick,int nTitleHeight)
{
NANA_BITMAP pic;
DEBUG_Assert(right>left);
DEBUG_Assert(bottom>top);
pic.biBitCount = 1;
pic.biColorMask = 0;
pic.biReverseColor = 0;
if(!bThick)
{
RectFill(left,top,right,bottom,COLOR_BKGROUND );
DrawHorizontalLine(left+6,top,right-left-12,6);
DrawHorizontalLine(left+1,top+6,right-left-2,nTitleHeight-6);
DrawHorizontalLine(left+6,bottom-1,right-left-12,1);
DrawVerticalLine(left,top+6,bottom-top-12,1);
DrawVerticalLine(right-1,top+6,bottom-top-12,1);
pic.biHeight = 6;
pic.biWidth = 6;
pic.pData = cBoxFramArcSingle[0];
GHAL_put_bmp(left,top,&pic);
pic.pData = cBoxFramArcSingle[1];
GHAL_put_bmp(right-6,top,&pic);
pic.pData = cBoxFramArcSingle[2];
GHAL_put_bmp(left,bottom-6,&pic);
pic.pData = cBoxFramArcSingle[3];
GHAL_put_bmp(right-6,bottom-6,&pic);
}else
{
RectFill(left,top,right,bottom,COLOR_BKGROUND );
DrawHorizontalLine(left+8,top,right-left-16,8);
DrawHorizontalLine(left+2,top+8,right-left-4,nTitleHeight-8);
DrawHorizontalLine(left+8,bottom-2,right-left-16,2);
DrawVerticalLine(left,top+8,bottom-top-16,2);
DrawVerticalLine(right-2,top+8,bottom-top-16,2);
pic.biHeight = 8;
pic.biWidth = 8;
pic.pData = cBoxFramArcDouble[0];
GHAL_put_bmp(left,top,&pic);
pic.pData = cBoxFramArcDouble[1];
GHAL_put_bmp(right-8,top,&pic);
pic.pData = cBoxFramArcDouble[2];
GHAL_put_bmp(left,bottom-8,&pic);
pic.pData = cBoxFramArcDouble[3];
GHAL_put_bmp(right-8,bottom-8,&pic);
}
}
void ButtonFrame(int nStartX,int nStartY,int nWidth,int nHeigth,int nPressed)
{
int left,top,right,bottom;
DEBUG_Assert(nWidth>0);
DEBUG_Assert(nHeigth>0);
left = nStartX;
right = nStartX + nWidth;
top = nStartY;
bottom = nStartY + nHeigth;
RectFill(left,top,right,bottom,COLOR_FORGROUND);
if(nPressed == 0)
{
RoundRectangle_little(left,top,right-1,bottom-1);
//shadow
GHAL_put_line(right-1,top+3,right-1,bottom-2,COLOR_SHADOW);
//shadow edge
GHAL_put_line(left+3,bottom-1,right-2,bottom-1,COLOR_SHADOW);
//shadow point
GHAL_put_pixel(right-2,bottom-2,COLOR_BORDER);
GHAL_put_pixel(right-3,bottom-2,COLOR_BORDER);
GHAL_put_pixel(right-2,bottom-3,COLOR_BORDER);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -