📄 graph.h
字号:
M_G_SAVE_FILLSETTINGS_OR_LINESETTING()
{
getlinesettings(&lineinfo);
getfillsettings(&fillinfo);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_RESTORE_FILLSETTING_OR_LINESETTING
功 能: 恢复当前的线条的填充设置
入口参数: 无
出口参数: 无
调用关系: 被G_INIT_FACE函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_RESTORE_FILLSETTING_OR_LINESETTING()
{
setlinestyle(lineinfo.linestyle,lineinfo.upattern,lineinfo.thickness);
setfillstyle(fillinfo.pattern,fillinfo.color);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_INPUT_FROM_KEYBOARD_TO_SYSTEM_MEMORY
功 能: 显示从键盘中键入数据到系统存储区
入口参数: 无
出口参数: 无
调用关系: 被P1函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_INPUT_FROM_KEYBOARD_TO_SYSTEM_MEMORY()
{
G_POINT s,e;
int i;
for(i=0;i<2;i++)
{
/* 采用闪烁的方式来显示键盘正在输入数据 */
M_G_DISPLAY_OR_CLEAN_KEYBOARD(FALSE);
delay(DELAY_TIME*5);
M_G_DISPLAY_OR_CLEAN_KEYBOARD(TRUE);
delay(DELAY_TIME*5);
}
/* 画线条,从键盘画到系统存储区 */
s.x = keyboard_left+keyboard_width*1/2;
s.y = keyboard_top-1;
e.x = s.x;
e.y = sysbuf_top+sysbuf_height+1;
setlinestyle(0,0,3);
G_DRAW_LINE_BY_INCREASE(s,e,COLOR1);
/* 显示数据已到达存储区 */
M_G_DISPLAY_OR_CLEAN_SYSTEM_MEMORY(3,yellow_color);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_OR_CLEAN_KEYBOARD
功 能: 显示或清除用户键盘
入口参数: int display 表示是否要显示,真时显示,假时不显示
出口参数: 无
调用关系: 被P1函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_OR_CLEAN_KEYBOARD(int display)
{
if(display == FALSE)
{
/* 如果display == FALSE ,表示不显示*/
setfillstyle(1,0);
}
else
{
/* 如果display == TRUE , 表示显示 */
setfillstyle(11,yellow_color);
}
bar(keyboard_left+1,keyboard_top+1,keyboard_left+keyboard_width-1,keyboard_top+keyboard_height-1);
M_G_DRAW_KEYBOARD();
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_OR_CLEAN_SYSTEM_MEMORY
功 能: 显示或清除系统存储区
入口参数: int index 要显示的是系统存储区中的哪一部分(共分为四个部分)
int c 显示时采用的颜色值
出口参数: 无
调用关系: 被P1,P3函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_OR_CLEAN_SYSTEM_MEMORY(int index,int c)
{
/* index 表示系统内存的哪一个分区 ,下标从 0 开始*/
setfillstyle(1,c);
bar(sysbuf_left+1,sysbuf_top+index*(sysbuf_height/4)+1,sysbuf_left+sysbuf_width-1,sysbuf_top+(index+1)*(sysbuf_height/4)-1);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_KEYBOARD_INPUT_FINISH
功 能: 清除从键盘到系统存储区的连线
入口参数:
出口参数: 无
调用关系: 被P1函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_KEYBOARD_INPUT_FINISH()
{
G_POINT s,e;
/* 先计算出要画线条的始终两坐标点 */
s.x = keyboard_left+keyboard_width*1/2;
s.y = keyboard_top-1;
e.x = s.x;
e.y = sysbuf_top+sysbuf_height+1;
setlinestyle(0,0,3);
/* 关闭显示键盘正在输入数据 */
M_G_DISPLAY_OR_CLEAN_KEYBOARD(FALSE);
/* 调用自定义的画线函数 */
G_DRAW_LINE_BY_INCREASE(s,e,0);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_OR_CLEAN_INPUT_BUF
功 能: 显示或清除输入井
入口参数: int index 要显示的输入井道号(硬盘按道管理)
int c 采用的颜色值
出口参数: 无
调用关系: 被P1函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_OR_CLEAN_INPUT_BUF(int index,int c)
{
setfillstyle(1,c);
bar(in_left+1+index*(in_width/100),in_top+1,in_left+(index+1)*(in_width/100),in_top+in_height-1);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_DATA_FROM_SYSTEM_BUF_TO_INPUT_BUF
功 能: 显示数据从系统输入井的存储区传送到输入井中
入口参数: int index 要显示的输入井道号(硬盘按道管理)
int c 采用的颜色值
出口参数: 无
调用关系: 被P1函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_DATA_FROM_SYSTEM_BUF_TO_INPUT_BUF(int index,int c)
{
G_POINT s,m1,m2,m3,e;
/* 先计算画线条时各个关键点的坐标*/
s.x = sysbuf_left+sysbuf_width+1;
s.y = sysbuf_top+(3+0.5)*(sysbuf_height/4);
m1.x = (s.x + userbuf_left)/2;
m1.y = s.y;
m2.x = m1.x;
m2.y = (userbuf_top+userbuf_height+in_top)/2;
m3.x = in_left+(index)*(in_width/100)+1;
m3.y = m2.y;
e.x = m3.x;
e.y = in_top-1;
/* 再调用自定义的画线函数显示数据的流动过程 */
G_DRAW_LINE_BY_INCREASE(s,m1,c);
G_DRAW_LINE_BY_INCREASE(m1,m2,c);
G_DRAW_LINE_BY_INCREASE(m2,m3,c);
setlinestyle(0,0,1);
G_DRAW_LINE_BY_INCREASE(m3,e,c);
setlinestyle(0,0,3);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_DATA_FROM_INPUT_BUF_TO_USER_MEMORY
功 能: 显示数据从输入井到用户存储区
入口参数: int hdindex 数据从输入井的哪一道流出(硬盘按道管理)
int mmindex 数据最终流入用户存储区的哪一页面(内存按页管理)
int c 要显示的颜色值
出口参数: 无
调用关系: 被P2函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_DATA_FROM_INPUT_BUF_TO_USER_MEMORY(int hdindex,int mmindex,int c)
{
G_POINT s,m1,m2,m3,e;
/* 先计算画线时的各关键点的坐标*/
s.x = in_left+hdindex*(in_width/100)+1;
s.y = in_top-1;
m1.x = s.x;
m1.y = (userbuf_top+userbuf_height+in_top)/2;
m2.x = (sysbuf_left+sysbuf_width+userbuf_left)/2;
m2.y = m1.y;
m3.x = m2.x;
m3.y = userbuf_top+(userbuf_height/30)*mmindex+1;
e.x = userbuf_left-1;
e.y = m3.y;
setlinestyle(0,0,1);
/* 画出数据的流动过程 */
G_DRAW_LINE_BY_INCREASE(s,m1,c);
setlinestyle(0,0,3);
G_DRAW_LINE_BY_INCREASE(m1,m2,c);
G_DRAW_LINE_BY_INCREASE(m2,m3,c);
setlinestyle(0,0,1);
G_DRAW_LINE_BY_INCREASE(m3,e,c);
setlinestyle(0,0,3);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_OR_CLEAN_DATA_TAKEN_USERBUF
功 能: 显示数据占用用户内存区
入口参数: int index 数据占用输入井的哪一道(硬盘按道管理)
int color 要显示的颜色值
出口参数: 无
调用关系: 被P2函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_OR_CLEAN_DATA_TAKEN_USERBUF(int index,int color)
{
G_POINT s,e;
/* 先计算矩形的左上角坐标和右下角坐标*/
s.x = userbuf_left+1;
s.y = userbuf_top + (userbuf_height/30)*index+1;
e.x = userbuf_left+userbuf_width-1;
e.y = userbuf_top + (userbuf_height/30)*(index+1);
setfillstyle(1,color);
/* 画出要显示的区域 */
bar(s.x,s.y,e.x,e.y);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_BUILD_PCB_AND_JOIN_IN_READY_QUEUE
功 能: 为作业创建进程控制块并将其插入就绪队列中
入口参数: int mmindex 在创建进程控制块的作业位于用户存储区的哪一页面(内存按页管理)
int c 要显示的颜色值
出口参数: 无
调用关系: 被P2函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_BUILD_PCB_AND_JOIN_IN_READY_QUEUE(int mmindex,int color)
{
char *buf;
int size,i;
G_POINT ps,pe,s,m1,m2,e,ms,mm1,me;
ps.x = userbuf_left+userbuf_width+20;
ps.y = ready_top+ready_height+1;
pe.x = ps.x + ready_width/15;
pe.y = ps.y + ready_height-1;
s.x = userbuf_left+userbuf_width + 1;
s.y = userbuf_top+(userbuf_height/30)*mmindex+1;
m1.x = s.x + 10;
m1.y = s.y;
m2.x = m1.x;
m2.y = (ps.y+pe.y)/2;
e.x = ps.x-1;
e.y = m2.y;
ms.x = ps.x + (pe.x - ps.x)/2;
ms.y = e.y;
mm1.x = ready_left+(READY_QUEUE->p_tick+0.5)*ready_width/15;
mm1.y = ms.y;
me.x = mm1.x;
me.y = ready_top+ready_height/2;
G_DRAW_LINE_BY_INCREASE(s,m1,white_color);
G_DRAW_LINE_BY_INCREASE(m1,m2,white_color);
G_DRAW_LINE_BY_INCREASE(m2,e,white_color);
setfillstyle(1,color);
bar(ps.x,ps.y,pe.x,pe.y);
delay(DELAY_TIME*5);
setfillstyle(1,0);
bar(ps.x,ps.y,pe.x,pe.y);
delay(DELAY_TIME*5);
setfillstyle(1,color);
bar(ps.x,ps.y,pe.x,pe.y);
delay(DELAY_TIME*5);
/* 计算保存图形的缓冲区的大小 */
size = imagesize(ps.x,ps.y,pe.x,pe.y);
/* 申请缓冲区 */
buf = malloc(size);
/* 保存屏幕内容 */
getimage(ps.x,ps.y,pe.x,pe.y,buf);
setfillstyle(1,0);
bar(ps.x,ps.y,pe.x,pe.y);
G_DRAW_LINE_BY_INCREASE(s,m1,0);
G_DRAW_LINE_BY_INCREASE(m1,m2,0);
G_DRAW_LINE_BY_INCREASE(m2,e,0);
/* 重新显示"用户存储区"这五个字*/
for(i=0;i<5;i++)
DRAWMAT(_user_buf_+i*24,12,userbuf_left+userbuf_width+4,userbuf_top+userbuf_height+12*(i-5),yellow_color);
G_MOVE_RECTANGLE_BASE_MIDDLE_POINT(ps,pe,ms,mm1,buf);
G_MOVE_RECTANGLE_BASE_MIDDLE_POINT(ps,pe,mm1,me,buf);
free(buf);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_READY_QUEUE
功 能: 刷新显示就绪队列
入口参数: 无
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -