📄 graph.h
字号:
/****************************************************************************
*****************************************************************************
文件名称: GRAPH.H
模块名称: 用户界面输出模块(图形界面模块之二)
模块作用:
编写者一: 蔡晓跃(AP0106338)
编写者二:
编写日期:
完成日期:
程序行数: 1000
*****************************************************************************
*****************************************************************************/
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DISPLAY_CHINESE_INSTRUTION
功 能: 在系统演示界面中显示所有汉字说明
入口参数: 无
出口参数: 无
调用关系: 被G_INIT_FACE函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DISPLAY_CHINESE_INSTRUTION()
{
int i;
/* 显示输入井 */
for(i=0;i<3;i++)
DRAWMAT(_in_+i*24,12,in_left+in_width+4,in_top+(in_height-36)/2+i*12,yellow_color);
/* 显示输出井 */
for(i=0;i<3;i++)
DRAWMAT(_out_+i*24,12,out_left-4-12,out_top+(out_height-36)/2+i*12,yellow_color);
/* 显示系统缓存 */
for(i=0;i<2;i++)
DRAWMAT(_system_buf_+i*24,12,sysbuf_left+(sysbuf_width-24)/2+i*12,sysbuf_top+(sysbuf_height-24)/2,yellow_color);
for(i=2;i<4;i++)
DRAWMAT(_system_buf_+i*24,12,sysbuf_left+(sysbuf_width-24)/2+(i-2)*12,sysbuf_top+(sysbuf_height-24)/2+12,yellow_color);
/* 显示用户存储区 */
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);
/* 显示键盘 */
for(i=0;i<2;i++)
DRAWMAT(_keyboard_+i*24,12,keyboard_left+(keyboard_width-36)/2+i*24,keyboard_top-16,yellow_color);
/* 显示就绪队列 */
for(i=0;i<4;i++)
DRAWMAT(_ready_queue_+i*24,12,ready_left+(ready_width-48)/2-30+i*12,ready_top+ready_height+4,yellow_color);
/* 显示系统进程 */
for(i=0;i<4;i++)
DRAWMAT(_system_process_+i*24,12,system_left+(system_width-48)/2+i*12,system_top-16,yellow_color);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_DRAW_MAIN_MACHINE_BOX
功 能: 模拟显示电脑的主机
入口参数: 无
出口参数: 无
调用关系: 被G_INIT_FACE函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_DRAW_MAIN_MACHINE_BOX()
{
setcolor(machine_color);
rectangle(box_left,box_top,box_left+box_width,box_top+box_height);
/* 画左顶边 */
line(box_left,box_top,box_left-box_left_off,box_top-box_top_off);
/* 画右顶边 */
line(box_left+box_width,box_top,box_left+box_width-box_left_off-3,box_top-box_top_off);
/* 画后顶边 */
line(box_left-box_left_off,box_top-box_top_off,box_left-box_left_off+box_width-3,box_top-box_top_off);
/* 画左后边 */
line(box_left-box_left_off,box_top-box_top_off,box_left-box_left_off,box_top-box_top_off+box_height-3);
/* 画左下边 */
line(box_left-box_left_off,box_top-box_top_off+box_height-3,box_left,box_top+box_height);
/* 画关机按钮 */
M_DRAW_BUTTON(0,white_color,red_color,0,0,0,0);
/* 画重新启动按钮 */
M_DRAW_BUTTON(1,white_color,red_color,0,0,0,0);
M_DRAW_MACHINE_LIGHTS(0,red_color,3);
M_DRAW_MACHINE_LIGHTS(1,green_color,2);
setcolor(line_color);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_DRAW_BUTTON
功 能: 画主机箱上的按钮
入口参数: 无
出口参数: 无
调用关系: 被M_DRAW_MAIN_MACHINE_BOX调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_DRAW_BUTTON(int index,int bcolor,int tcolor,int oldx_off,int oldy_off,int newx_off,int newy_off)
{
setfillstyle(1,0);
bar(box_left+(box_width-box_buttom_width)/2+oldx_off,box_top+box_height*2/3+(box_buttom_height+4)*index+oldy_off,box_left+(box_width-box_buttom_width)/2+box_buttom_width+oldx_off,box_top+box_height*2/3+box_buttom_height+(box_buttom_height+4)*index+oldy_off);
setfillstyle(1,bcolor);
bar(box_left+(box_width-box_buttom_width)/2+newx_off,box_top+box_height*2/3+(box_buttom_height+4)*index+newy_off,box_left+(box_width-box_buttom_width)/2+box_buttom_width+newx_off,box_top+box_height*2/3+box_buttom_height+(box_buttom_height+4)*index+newy_off);
setcolor(tcolor);
if(index == 0)
outtextxy(box_left+(box_width-box_buttom_width)/2+(box_buttom_width-8)/2+1,box_top+box_height*2/3+(box_buttom_height-8)/2+1,"X");
else
outtextxy(box_left+(box_width-box_buttom_width)/2+(box_buttom_width-8)/2+1,box_top+box_height*2/3+box_buttom_height+4+(box_buttom_height-8)/2+1,"R");
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_DRAW_MACHINE_LIGHTS
功 能: 画主机箱上的工作灯
入口参数: 无
出口参数: 无
调用关系: 被M_DRAW_MAIN_MACHINE_BOX调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_DRAW_MACHINE_LIGHTS(int index,int color,int radius)
{
M_G_SAVE_FILLSETTINGS_OR_LINESETTING();
setcolor(color);
setfillstyle(1,color);
setlinestyle(0,0,1);
if(DISPLAY_PICTURE_OK == TRUE)
/* 表示有显示电脑了图片 */
{
circle(box_left+(box_width/3*(index*1.3+1))-15,box_top+box_height/2+30,radius);
floodfill(box_left+(box_width/3*(index*1.3+1))-15,box_top+box_height/2+30,color);
}
else
{
circle(box_left+(box_width/3*(index*1.3+1)),box_top+box_height/2,radius);
floodfill(box_left+(box_width/3*(index*1.3+1)),box_top+box_height/2,color);
}
M_G_RESTORE_FILLSETTING_OR_LINESETTING();
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_CHANGE_HARDDISK_LIGHT
功 能: 改变主机箱上灯的状态
入口参数: 无
出口参数: 无
调用关系: 被M_DRAW_MAIN_MACHINE_BOX调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_CHANGE_HARDDISK_LIGHT()
{
int color,radius;
if(DISPLAY_PICTURE_OK==TRUE)
color = getpixel(box_left+(box_width/3*(1.3+1))-15,box_top+box_height/2+30);
else
color = getpixel(box_left+(box_width/3*(1.3+1)),box_top+box_height/2);
if(color == green_color)
color = 2;
else
color = green_color;
if(color != green_color)
radius = 1;
else
radius = 3;
M_DRAW_MACHINE_LIGHTS(1,black_color,3);
M_DRAW_MACHINE_LIGHTS(1,color,radius);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DRAW_KEYBOARD
功 能: 在系统演示界面中模拟显示键盘
入口参数: 无
出口参数: 无
调用关系: 被G_INIT_FACE函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DRAW_KEYBOARD()
{
int i,j;
/* 保存当前的线条和填充设置 */
M_G_SAVE_FILLSETTINGS_OR_LINESETTING();
/* 设置当前的新颜色值 */
setcolor(line_color);
/* 设置当前的新的填充模式 */
setlinestyle(0,0,1);
/* 下面采用循环的方法显示一小格一小格的小键盘 */
for(i=1;i<=5;i++)
{
line(keyboard_left,keyboard_top+i*keyboard_height/5,keyboard_left+keyboard_width,keyboard_top+i*keyboard_height/5);
for(j=0;j<9;j++)
{
line(keyboard_left+(i%2+j*2)*(keyboard_width/9)/2,keyboard_top+(i-1)*keyboard_height/5,keyboard_left+(i%2+j*2)*(keyboard_width/9)/2,keyboard_top+i*keyboard_height/5);
}
}
/* 恢复当前的线条的填充设置 */
M_G_RESTORE_FILLSETTING_OR_LINESETTING();
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_DRAW_PRINTER
功 能: 在系统演示界面中模拟显示打印机
入口参数: 无
出口参数: 无
调用关系: 被G_INIT_FACE函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_DRAW_PRINTER()
{
int i;
M_G_SAVE_FILLSETTINGS_OR_LINESETTING();
setlinestyle(0,0,1);
setcolor(print_color);
/* 显示“打印机”字样 */
for(i=0;i<3;i++)
DRAWMAT(prt+i*24,12,printer_left+printer_left_off/2+(printer_width - 36)/2+i*12,printer_mid_top+printer_top_off/2+(printer_height-12)/2,yellow_color);
/* 画前顶边 */
line(printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2);
/* 画前底边 */
line(printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
/* 变小的底边 */
line(printer_left+printer_left_off/2+3,printer_mid_top+printer_top_off/2+printer_height+3,printer_left+printer_width+printer_left_off/2-3,printer_mid_top+printer_top_off/2+printer_height+3);
line(printer_left+printer_left_off/2+3,printer_mid_top+printer_top_off/2+printer_height+3,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
line(printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height,printer_left+printer_width+printer_left_off/2-3,printer_mid_top+printer_top_off/2+printer_height+3);
/* 画左边*/
line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2);
line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2+printer_height,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2+printer_height);
line(printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
/* 画右边 */
line(printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
/* 画右斜 */
line(printer_left+printer_width-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2);
/* 画后边 */
line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left-printer_left_off/2+printer_width,printer_mid_top-printer_top_off/2);
/* 画纸张 */
setfillstyle(1,paper_color);
/* 下面的部分是显示纸张*/
bar(print_left,print_top,print_left+print_width,print_top+print_height);
setcolor(white_color);
line(print_left,print_top,print_left+print_width,print_top);
line(print_left,print_top,print_left,print_top+print_height);
line(print_left+print_width,print_top,print_left+print_width,print_top+print_height);
setcolor(line_color);
M_G_RESTORE_FILLSETTING_OR_LINESETTING();
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_MALLOC_COLOR
功 能: 申请一种指定集合的颜色值,每一个颜色值代表一个作业显示在屏幕上
入口参数: 无
出口参数: 无(以全局变量作为出口参数
调用关系: 被P1函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
M_G_MALLOC_COLOR()
{
if(blue_color==1)
{
JCBPCB_CURRENT_COLOR++;
JCBPCB_CURRENT_COLOR %= 16;
/* 每一个作业重新分配一种新的颜色 */
while(JCBPCB_CURRENT_COLOR == BLACK || JCBPCB_CURRENT_COLOR == 4 || JCBPCB_CURRENT_COLOR == 9 || JCBPCB_CURRENT_COLOR == 16 || JCBPCB_CURRENT_COLOR == 8 || JCBPCB_CURRENT_COLOR == 1)
JCBPCB_CURRENT_COLOR++;
}
else
{
JCBPCB_CURRENT_COLOR += 3;
JCBPCB_CURRENT_COLOR %= 256;
/* 每一个作业重新分配一种新的颜色 */
while(JCBPCB_CURRENT_COLOR != 2 &&
JCBPCB_CURRENT_COLOR != 3 &&
JCBPCB_CURRENT_COLOR != 6 &&
JCBPCB_CURRENT_COLOR != 7 &&
JCBPCB_CURRENT_COLOR != 8 &&
JCBPCB_CURRENT_COLOR != 9 &&
JCBPCB_CURRENT_COLOR != 15 &&
JCBPCB_CURRENT_COLOR != 23 &&
JCBPCB_CURRENT_COLOR != 39 &&
JCBPCB_CURRENT_COLOR != 48 &&
JCBPCB_CURRENT_COLOR != 55 &&
JCBPCB_CURRENT_COLOR != 56 &&
JCBPCB_CURRENT_COLOR != 71 &&
JCBPCB_CURRENT_COLOR != 87 &&
JCBPCB_CURRENT_COLOR != 103 &&
JCBPCB_CURRENT_COLOR != 119 &&
JCBPCB_CURRENT_COLOR != 120 &&
JCBPCB_CURRENT_COLOR != 135 &&
JCBPCB_CURRENT_COLOR != 151 &&
JCBPCB_CURRENT_COLOR != 167 &&
JCBPCB_CURRENT_COLOR != 184 &&
JCBPCB_CURRENT_COLOR != 199 &&
JCBPCB_CURRENT_COLOR != 249 &&
JCBPCB_CURRENT_COLOR != 250 &&
JCBPCB_CURRENT_COLOR != 251 &&
JCBPCB_CURRENT_COLOR != 253 &&
JCBPCB_CURRENT_COLOR != 254 &&
JCBPCB_CURRENT_COLOR != 255 )
JCBPCB_CURRENT_COLOR+= 3;
}
return(JCBPCB_CURRENT_COLOR);
}
/****************************************************************************
模块名称: 辅助模块
函 数 名: M_G_SAVE_FILLSETTINGS_OR_LINESETTING
功 能: 保存当前的线条的填充设置
入口参数: 无
出口参数: 无
调用关系: 被G_INIT_FACE函数调用
编 者: 蔡晓跃(AP0106338)
编写日期: 2003-10-17
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -