- •Міністерство аграрної політики та продовольства україни житомирський агротехнічний коледж
- •Оглавление
- •Лабораторна робота №1
- •Хід виконання роботи
- •Лабораторна робота №2
- •Хід виконання роботи
- •Лабораторна робота №3
- •Хід виконання роботи
- •Хід виконання роботи
- •Лабораторна робота №5
- •Хід виконання роботи
- •Лістинг програми
- •Лабораторна робота №4
- •Лабораторна робота №7
- •Хід виконання роботи
- •Лабораторна робота №8
- •Хід виконання роботи
- •Лабораторна робота №9
- •Хід виконання роботи
- •Лабораторна робота №10
- •Хід виконання роботи
- •Лабораторна робота №11
- •Хід виконання роботи
Лабораторна робота №4
Тема: Засоби редагування.
Розвиваюча мета заняття: Розвивати творчість та культуру написання програм. Розвивати логічне мислення, увагу, уяву, кмітливість.
Виховна мета заняття: Виховувати охайність, культуру спілкування, ввічливість, дисциплінованість, наполегливість у навчанні, дбайливе ставлення до програмного забезпечення та ПК.
Хід виконання роботи
Написав функції для копіювання, стирання, і переміщення примітивів.
Висновок: навчився створювати функції для керування малюнком(копіювання, переміщення, стирання.)
Лабораторна робота №5
Тема: Збереження і читання зображень.
Розвиваюча мета заняття: Розвивати творчість та культуру написання програм. Розвивати логічне мислення, увагу, уяву, кмітливість.
Виховна мета заняття: Виховувати охайність, культуру спілкування, ввічливість, дисциплінованість, наполегливість у навчанні, дбайливе ставлення до програмного забезпечення та ПК.
Хід виконання роботи
Написав функції для збереження і завантаження зображень.
Додав у програму гарячі клавіші ф3 і ф2.
Висновок: Навчився писати функції для збереження і завантаження зображень в середовищі Turbo C.
Лістинг програми
#include <graphics.h>
#include <conio.h>
#include <bios.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <dos.h>
#include <stdio.h>
int key, x, y, but, nb, nbut=0, col, xm, ym, scr, pmen, x1, y1, x2, y2;
char txh[80];
long int xn, yn, xk, yk, buf, xp, yp;
void *p;
char fname[12];
FILE *F;
void button(int x1, int y1, int x2, int y2){
setcolor(15);//zadanie cveta
line(x1,y2,x1,y1);//vertykalna liniya sleva
line(x1,y1,x2,y1);//goryzontalna liniya sverhu
setcolor(0);//zadanie cveta
line(x2,y1,x2,y2);//vertykalna linia sprava
line(x2,y2,x1,y2);//goryzontalna linia cnuzy
}
void menu(){
char *txmenu[]={"Point","Line","Rect","Circle","Text","Erase","Copy","Move"};//text nadpisej razmeschen v masive txmenu
setcolor(1);//color
for(int i=0; i<8; i++){
button(550,40+30*i,630,60+30*i);
outtextxy(560,45+30*i,txmenu[i]);
}
}
void mouse(int m){
int mode;
if (m==0) mode=2; else mode=m;
asm{
mov ax,mode
int 33h}
}
void fillbar(int x1, int y1, int x2, int y2, int col)
{
setfillstyle(1,col);//style & color
bar(x1,y1,x2,y2);//zakrashenyi prymougolnykc
}
void palette(int xp, int yp){
int i,j,cp=0;//cp color=black;
for(i=0;i<4;i++)//cykl po strokam
for(j=0;j<4;j++)//cykl po stolbikam
{fillbar(xp+2+20*j,yp+1+15*i,xp+2+20*(j+1),yp+1+15*(i+1),cp);cp++;}
setcolor(15);
outtextxy(xp+5,yp+70,"COLOR->");//vyvid napysu
fillbar(xp+67,yp+67,xp+83,yp+81,cp);
}
void initgr(){
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
}
void screen(){
fillbar(0,0,640,20,7);//verhnya panel
fillbar(0,22,538,458,7);//osnovnyi ekran
fillbar(540,22,640,458,7);//panel menu
fillbar(0,460,640,480,7);//nyzhnya panel
setcolor(4);//cvet nadpisei
outtextxy(10,5,"F2 - Save F3 - Load Esc - Exit");//vyvid napysu na ekran
}
void mStatus(){
int mbut, mx, my;
asm{
mov ax, 3h
int 33h
mov mx,cx
mov my,dx
mov mbut,bx
}
x=mx;
y=my;
but=mbut;
}
void mousemove(int xm, int ym)
{
asm{
mov ax,4
mov cx,xm
mov dx,ym
int 33h}}
void indmouse(int xind, int yind){
char str[3];
if (x!=xm||y!=ym)
{
xm=x;ym=y;
fillbar(xind, yind, xind+65, yind+15,7);
setcolor(4);
itoa(x,str,10);outtextxy(xind+5,yind+5,str);
itoa(y,str,10);outtextxy(xind+40,yind+5,str);
} }
void count(){
if (but==0) nb=0;
if ((but==1)&&(nb==0)) {nbut++;nb=1;}
}
int mousecoord(int x1, int y1, int x2, int y2){
mStatus();
if(x>=x1&&x<=x2&&y>y1&&y<=y2) return 1;
else return 0;}
void selcol(int xpal, int ypal){
if (mousecoord(xpal,ypal,xpal+85,ypal+62)&&but==1)
{mouse(0);
col=getpixel(x,y);
fillbar(xpal+68,ypal+68,xpal+82,ypal+80,col);
mouse(1);}}
void kursmenu(int pmen, int ykn){
int ykm;
if (pmen>0)
{ykm=ykn+30*(pmen-1);
setwritemode(1);
setcolor(15);
line(550,ykm,630,ykm); line(630,ykm+1,630,ykm+19);
line(550,ykm+1,550,ykm+19);line(550,ykm+20,630,ykm+20);
setwritemode(0);
}}
void help(char tx[80]){
int i;
if (strcmp(txh,tx)!=0){for (i=0;i<80;i++) txh[i]=tx[i];
fillbar(5,460,638,475,1);
setcolor(15);
outtextxy(10,463,tx);}
}
void point(){
if (nbut==0) help("Enter X,Y");//if left button never use, then show help
if (nbut==1) {mouse(0); setcolor(col); putpixel(x,y,col); mouse(1); nbut=0;}
}
void selmenu(int ymen, int np){
int i;
if(mousecoord(3,26,535,432)) scr=1; else scr=0;
for(i=0;i<np;i++)
if(mousecoord(550,ymen+30*i,630,ymen+20+30*i) &&but==1)
{pmen=i+1; mouse(0); menu(); kursmenu(pmen,ymen); mouse(1); nbut=0;break;}
}
void mark(int xm,int ym){
mouse (0);
setcolor(15);setwritemode(1);
line(xm-2,ym,xm+2,ym);
line(xm,ym-2,xm,ym+2);
setwritemode(0);
mouse(1);
}
void line_(){
if (nbut==0) help("Enter first position of line x1, y1");
if (nbut==1) {x1=x;y1=y;mark(x1,y1); nbut=2;}
if (nbut==2) help("Enter the end of line x2, y2");
if (nbut==3) {mouse(0);mark(x1,y1),setcolor(col);line(x1,y1,x,y);mouse(1);nbut=0;}
}
void rect(int xn, int yn, int xk, int yk){
mouse(0);
setcolor(12);setwritemode(1);
setlinestyle(0,0,0);
rectangle(xn,yn,xk,yk);
setwritemode(0);
mouse(1);}
void rect_(){
if (nbut==0) {mouse(1); help("Enter first position of rectangle");}
if (nbut==1) {x1=x;y1=y;x2=x;y2=y; help("Finish it!");nbut++;}
if (nbut==2) {mouse(0);rect(x1,y1,x2,y2);x2=x;y2=y;rect(x1,y1,x2,y2);}
if (nbut==3) {mouse(0);setcolor(col);rectangle(x1,y1,x2,y2);nbut++;mouse(1);}
if (nbut==4) {mouse(1);graphdefaults();nbut=0;}
}
void ramkolo(float r1,int kol){
setwritemode(1);
setcolor(kol);
setviewport(0,22,538,458,1);
circle(x1,y1-22,r1);
setwritemode(0);
graphdefaults();
}
void kolo(){
float r;
if(nbut==0) help("Vvedit zentr kola x,y");
if(nbut==1) {x1=x;y1=y;mark(x1,y1);nbut=2;}
if(nbut==2) {help("Vvedit radius kola xr,yr");
mouse(0);
r=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
ramkolo(r,0);
r=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
ramkolo(r,15);
mouse(1);}
if(nbut==3){
mouse(0);
setcolor(col);
r=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
setviewport(0,22,538,458,1);
circle(x1,y1-22,r);
mouse(1);
nbut=0;}
}
void kurs(int x,int y){
setcolor(0);
line(x,y,x+8,y);
delay(50);
setcolor(15);
line(x,y,x+8,y);
delay(50);
}
void tekst(){
char tx[2],ch;
int xs,ys,i=0;
if(nbut==0) help("Vvedit pochatok tekstu x,y");
if(nbut==1) {help("Pry zakinchenni nazmit knopku Tab");
xs=x,ys=y;
mouse(0);
while(ch!=9){
if(kbhit()) ch=getch();
else ch=0;
tx[0]=ch;
tx[1]=0;
if(ch>31 && xs+8*i<525 && ys<460){
setcolor(col);
outtextxy(xs+8*i,ys-8,tx);i++;}
if(ch==13){i=0;xs=x;ys+=10;}
if(xs+8*i>524) {i=0;xs=x;ys+=10;}
if(ch==8) {i--;fillbar(xs+8*i,ys-8,xs+8*(i+1),ys,15);}
kurs(xs+8*i,ys+1);
}
}
nbut=0;
mouse(1);
}
void sterty(){
if(nbut==0) {mouse(1); help("Vvedit zvidky udalyaty");}
if(nbut==1) {x1=x;y1=y;x2=x;y2=y; help("Vvedit po sho udalyaty");nbut=2;}
if(nbut==2) {mouse(0);rect(x1,y1,x2,y2);x2=x;y2=y;rect(x1,y1,x2,y2);}
if(nbut==3) {mouse(1);fillbar(x1,y1,x2,y2,7);}
if(nbut==0) {mouse(1);graphdefaults();nbut=0;}
}
void savebar (int xn,int yn, int xk,int yk){
int size;
if(buf==0){
size=imagesize(xn,yn,xk,yk);
p=malloc(size);
mouse(0);
getimage(xn,yn,xk,yk,p);
buf=1;
mouse(1);
}}
void move(){
if(nbut==0) {mouse(1); help ("First position");}
if(nbut==1) {xp=x;yp=y;x2=x;y2=y;help("Finish it");nbut++;}
if(nbut==2) {mouse(0);rect(xp,yp,x2,y2);x2=x;y2=y;rect(xp,yp,x2,y2);}
if(nbut==3) {mouse(0);rect(xp,yp,x2,y2);savebar(xp+1,yp+1,x-1,y-1);fillbar(xp,yp,x2,y2,15);nbut++;mouse(1);x1=x-xp;y1=y-yp;}
if(nbut==4) {help("Put the image");mouse(1);}
if(nbut==5) {mouse(0);if(x+x1<538 && y+y1<458){
fillbar(xp,yp,xp+x1,yp+y1,7);
xp=x;yp=y;putimage(x,y,p,0);}
mouse(1);graphdefaults();nbut=4;}
}
void copy(){
if(nbut==0) {mouse(1);help("Vvedit zvidky kopiyuvaty");}
if(nbut==1) {xp=x;yp=y;x2=x;y2=y;help("Vvedit po sho copiyuvaty");nbut++;}
if(nbut==2) {mouse(0);rect(xp,yp,x2,y2);x2=x;y2=y;rect(xp,yp,x2,y2);}
if(nbut==3) {mouse(0);rect(xp,yp,x2,y2);savebar(xp+1,yp+1,x-1,y-1);nbut++;mouse(1);}
if(nbut==4) {help("Vvedit kuda kopiyuvaty");mouse(1);}
if(nbut==5) {mouse(0);x1=xp-x2;y1=yp-x2;
if(x-x1<538 && y-y1<458)
putimage(x,y,p,0);mouse(1);graphdefaults();nbut=4;
}
}
//----------------------------------save&load------------------------
void obem(int X1,int Y1,int X2,int Y2){
setcolor(7);
line(X1,Y2,X1,Y1);
line(X1,Y1,X2,Y1);
setcolor(0);
line(X2,Y1,X2,Y2);
line(X2,Y2,X1,Y2);
}
void inputfname(int fl){
char num;
char str[]={46,117,115,116,0};
int i;
for(i=0;i!=12;i++) fname[i]=0;
if (fl) help("Enter name of img");
else help("Load img, enter name");
i=0;
setcolor(15);
outtextxy(500,465,"file:");
while (num!=13){
if(kbhit()) num=getch();
else num=0;
setcolor(15);
line(540+8*i,474,548+8*i,474); delay(100);
setcolor(1);
line(540+8*i,474,548+8*i,474); delay(100);
setcolor(15);
if (num>32)
{fname[i]=num;outtextxy(540,465,fname);i++;}
if (num==8)
{fname[i]=0;i--;if(i<0)i=0;fillbar(540+8*i,465,548+8*i,473,1);}
}
strcat(fname,str);
outtextxy(608,465,str);
}
void save(){
char pro[4];
int xf,yf,cf,zap=273,i=0;
double q=0;
fillbar(500,460,640,475,1);
inputfname(1);
mouse(0);
F=fopen(fname,"wb");
if (F==NULL){
help("Cant save");
fillbar(zap-2,1,540,19,1);
nbut=0;pmen=0;mouse(1);
fillbar(450,460,640,475,1);
return ;
}
fillbar(zap-2,3,538,18,9);
button(zap-2,2,540,19);
help("In process..");
for(yf=23;yf<458;yf++){
for(xf=0;xf<538;xf++){
cf=getpixel(xf,yf);
if(cf!=15) fprintf(F,"%3d %3d %2d |",xf,yf,cf);
}
if(yf%10==0){
fillbar(zap+i,5,zap+i+3,16,12);
obem(zap+i,5,zap+i+3,16);
i+=5;
gcvt(q,3,pro);
fillbar(490,4,538,17,9);
setcolor(15);
outtextxy(496,7,pro);
outtextxy(530,7,"%");
q+=2.38;
}
}
fclose(F);
nbut=0;pmen=0;mouse(1);
fillbar(zap-2,1,540,19,1);
fillbar(5,460,500,475,1);
}
void load(){
int xf,yf,cf,zap=273,i=0,toch=0;
double q=0;
char pro[4];
fillbar(500,460,640,475,1);
inputfname(0);
mouse(0);
fillbar (0,22,538,458,15);
F=fopen(fname, "rb");
if (F==NULL){
help("Sorry, cant find it");
fillbar(zap-2,1,540,19,1);
nbut=0;pmen=0;mouse(1);
fillbar(450,460,640,475,1);
return;
}
help("Please, wait");
while (!feof(F)){
fscanf(F, " %3d %3d %2d |",&xf,&yf,&cf);
putpixel(xf,yf,cf);
if (toch%6000==0) {
fillbar(zap+i,5,zap+i+3,16,12);
obem(zap+i,5,zap+i+3,16);
i+=5;
gcvt(q,3,pro);
fillbar(490,4,538,17,9);
setcolor(15);
outtextxy(496,7,pro);
outtextxy(530,7,"%");
q+=2.563;}
toch+=1;
}
fillbar(zap-2,1,540,19,1);
fclose(F);
nbut=0;pmen=0;mouse(1);
}
//----------------------------------save&load------------------------
void disp(){
switch (pmen){
case 1: point(); break;
case 2: line_(); break;
case 3: rect_(); break;
case 4: kolo(); break;
case 5: tekst(); break;
case 6: sterty(); break;
case 7: copy(); break;
case 8: move(); break;
} }
//-----------------------------VOID MAIN(){}---------------------------
void main (){
initgr();
screen();
menu();
palette(545,375);
mouse(1);//show mouse
while (key!=27)
{
if(kbhit())key=getch();
else key=0;
mStatus();
if(key==60) save();
if(key==61) load();
indmouse(545,5);
selcol(545,375);
selmenu(40,10);
if (mousecoord(0,22,538,458)) count();
disp();
delay(1);
}
closegraph();
}
//---------------------------------------------------------------------#include <graphics.h>
#include <conio.h>
#include <bios.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <dos.h>
#include <stdio.h>
int key, x, y, but, nb, nbut=0, col, xm, ym, scr, pmen, x1, y1, x2, y2, ch;
char txh[80];
long int xn, yn, xk, yk, buf, xp, yp;
void *p;
char fname[12];
FILE *F;
void button(int x1, int y1, int x2, int y2){
setcolor(15);//zadanie cveta
line(x1,y2,x1,y1);//vertykalna liniya sleva
line(x1,y1,x2,y1);//goryzontalna liniya sverhu
setcolor(0);//zadanie cveta
line(x2,y1,x2,y2);//vertykalna linia sprava
line(x2,y2,x1,y2);//goryzontalna linia cnuzy
}
void menu(){
char *txmenu[]={"Point","Line","Rect","Circle","Text","Erase","Copy","Move"};//text nadpisej razmeschen v masive txmenu
setcolor(1);//color
for(int i=0; i<8; i++){
button(550,40+30*i,630,60+30*i);
outtextxy(560,45+30*i,txmenu[i]);
}
}
void mouse(int m){
int mode;
if (m==0) mode=2; else mode=m;
asm{
mov ax,mode
int 33h}
}
void fillbar(int x1, int y1, int x2, int y2, int col)
{
setfillstyle(1,col);//style & color
bar(x1,y1,x2,y2);//zakrashenyi prymougolnykc
}
void palette(int xp, int yp){
int i,j,cp=0;//cp color=black;
for(i=0;i<4;i++)//cykl po strokam
for(j=0;j<4;j++)//cykl po stolbikam
{fillbar(xp+2+20*j,yp+1+15*i,xp+2+20*(j+1),yp+1+15*(i+1),cp);cp++;}
setcolor(15);
outtextxy(xp+5,yp+70,"COLOR->");//vyvid napysu
fillbar(xp+67,yp+67,xp+83,yp+81,cp);
}
void initgr(){
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
}
void screen(){
fillbar(0,0,640,20,7);//verhnya panel
fillbar(0,22,538,458,7);//osnovnyi ekran
fillbar(540,22,640,458,7);//panel menu
fillbar(0,460,640,480,7);//nyzhnya panel
setcolor(4);//cvet nadpisei
outtextxy(10,5,"F2 - Save F3 - Load Esc - Exit");//vyvid napysu na ekran
}
void mStatus(){
int mbut, mx, my;
asm{
mov ax, 3h
int 33h
mov mx,cx
mov my,dx
mov mbut,bx
}
x=mx;
y=my;
but=mbut;
}
void mousemove(int xm, int ym)
{
asm{
mov ax,4
mov cx,xm
mov dx,ym
int 33h}}
void indmouse(int xind, int yind){
char str[3];
if (x!=xm||y!=ym)
{
xm=x;ym=y;
fillbar(xind, yind, xind+65, yind+15,7);
setcolor(15);
itoa(x,str,10);outtextxy(xind+5,yind+5,str);
itoa(y,str,10);outtextxy(xind+40,yind+5,str);
} }
void count(){
if (but==0) nb=0;
if ((but==1)&&(nb==0)) {nbut++;nb=1;}
}
int mousecoord(int x1, int y1, int x2, int y2){
mStatus();
if(x>=x1&&x<=x2&&y>y1&&y<=y2) return 1;
else return 0;}
void selcol(int xpal, int ypal){
if (mousecoord(xpal,ypal,xpal+85,ypal+62)&&but==1)
{mouse(0);
col=getpixel(x,y);
fillbar(xpal+68,ypal+68,xpal+82,ypal+80,col);
mouse(1);}}
void kursmenu(int pmen, int ykn){
int ykm;
if (pmen>0)
{ykm=ykn+30*(pmen-1);
setwritemode(1);
setcolor(15);
line(550,ykm,630,ykm); line(630,ykm+1,630,ykm+19);
line(550,ykm+1,550,ykm+19);line(550,ykm+20,630,ykm+20);
setwritemode(0);
}}
void help(char tx[80]){
int i;
if (strcmp(txh,tx)!=0){for (i=0;i<80;i++) txh[i]=tx[i];
fillbar(5,460,638,475,7);
setcolor(15);
outtextxy(10,463,tx);}
}
void point(){
if (nbut==0) help("Enter X,Y");//if left button never use, then show help
if (nbut==1) {mouse(0); setcolor(col); putpixel(x,y,col); mouse(1); nbut=0;}
}
void selmenu(int ymen, int np){
int i;
if(mousecoord(3,26,535,432)) scr=1; else scr=0;
for(i=0;i<np;i++)
if(mousecoord(550,ymen+30*i,630,ymen+20+30*i) &&but==1)
{pmen=i+1; mouse(0); menu(); kursmenu(pmen,ymen); mouse(1); nbut=0;break;}
}
void mark(int xm,int ym){
mouse (0);
setcolor(15);setwritemode(1);
line(xm-2,ym,xm+2,ym);
line(xm,ym-2,xm,ym+2);
setwritemode(0);
mouse(1);
}
void line_(){
if (nbut==0) help("Enter first position of line x1, y1");
if (nbut==1) {x1=x;y1=y;mark(x1,y1); nbut=2;}
if (nbut==2) help("Enter the end of line x2, y2");
if (nbut==3) {mouse(0);mark(x1,y1),setcolor(col);line(x1,y1,x,y);mouse(1);nbut=0;}
}
void rect(int xn, int yn, int xk, int yk){
mouse(0);
setcolor(1);setwritemode(1);
setlinestyle(0,0,0);
rectangle(xn,yn,xk,yk);
setwritemode(0);
mouse(1);}
void rect_(){
if (nbut==0) {mouse(1); help("Enter first position of rectangle");}
if (nbut==1) {x1=x;y1=y;x2=x;y2=y; help("Finish it!");nbut++;}
if (nbut==2) {mouse(0);rect(x1,y1,x2,y2);x2=x;y2=y;rect(x1,y1,x2,y2);}
if (nbut==3) {mouse(0);setcolor(col);rectangle(x1,y1,x2,y2);nbut++;mouse(1);}
if (nbut==4) {mouse(1);graphdefaults();nbut=0;}
}
void ramkolo(float r1,int kol){
setwritemode(1);
setcolor(kol);
setviewport(0,22,538,458,1);
circle(x1,y1-22,r1);
setwritemode(0);
graphdefaults();
}
void kolo(){
float r;
if(nbut==0) help("Vvedit zentr kola x,y");
if(nbut==1) {x1=x;y1=y;mark(x1,y1);nbut=2;}
if(nbut==2) {help("Vvedit radius kola xr,yr");
mouse(0);
// r=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
ramkolo(r,15);
mouse(1);}
if(nbut==3){
mouse(0);
setcolor(col);
r=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
setviewport(0,22,538,458,1);
circle(x1,y1-22,r);
mouse(1);
nbut=0;}
}
void kurs(int x,int y){
setcolor(0);
line(x,y,x+8,y);
delay(50);
setcolor(15);
line(x,y,x+8,y);
delay(50);
}
void tekst(){
char tx[2],ch;
int xs,ys,i=0;
if(nbut==0) help("Vvedit pochatok tekstu x,y");
if(nbut==1) {help("Pry zakinchenni nazmit knopku Tab");
xs=x,ys=y;
mouse(0);
while(ch!=9){
if(kbhit()) ch=getch();
else ch=0;
tx[0]=ch;
tx[1]=0;
if(ch>31 && xs+8*i<525 && ys<460){
setcolor(col);
outtextxy(xs+8*i,ys-8,tx);i++;}
if(ch==13){i=0;xs=x;ys+=10;}
if(xs+8*i>524) {i=0;xs=x;ys+=10;}
if(ch==8) {i--;fillbar(xs+8*i,ys-8,xs+8*(i+1),ys,15);}
kurs(xs+8*i,ys+1);
}
}
nbut=0;
mouse(1);
}
void sterty(){
if(nbut==0) {mouse(1); help("Vvedit zvidky udalyaty");}
if(nbut==1) {x1=x;y1=y;x2=x;y2=y; help("Vvedit po sho udalyaty");nbut=2;}
if(nbut==2) {mouse(0);rect(x1,y1,x2,y2);x2=x;y2=y;rect(x1,y1,x2,y2);}
if(nbut==3) {mouse(1);fillbar(x1,y1,x2,y2,7);}
if(nbut==0) {mouse(1);graphdefaults();nbut=0;}
}
void savebar (int xn,int yn, int xk,int yk){
int size;
if(buf==0){
size=imagesize(xn,yn,xk,yk);
p=malloc(size);
mouse(0);
getimage(xn,yn,xk,yk,p);
buf=1;
mouse(1);
}}
void move(){
if(nbut==0) {mouse(1); help ("First position");}
if(nbut==1) {xp=x;yp=y;x2=x;y2=y;help("Finish it");nbut++;}
if(nbut==2) {mouse(0);rect(xp,yp,x2,y2);x2=x;y2=y;rect(xp,yp,x2,y2);}
if(nbut==3) {mouse(0);rect(xp,yp,x2,y2);savebar(xp+1,yp+1,x-1,y-1);fillbar(xp,yp,x2,y2,15);nbut++;mouse(1);x1=x-xp;y1=y-yp;}
if(nbut==4) {help("Put the image");mouse(1);}
if(nbut==5) {mouse(0);if(x+x1<538 && y+y1<458){
fillbar(xp,yp,xp+x1,yp+y1,7);
xp=x;yp=y;putimage(x,y,p,0);}
mouse(1);graphdefaults();nbut=4;}
}
void copy(){
if(nbut==0) {mouse(1);help("Vvedit zvidky kopiyuvaty");}
if(nbut==1) {xp=x;yp=y;x2=x;y2=y;help("Vvedit po sho copiyuvaty");nbut++;}
if(nbut==2) {mouse(0);rect(xp,yp,x2,y2);x2=x;y2=y;rect(xp,yp,x2,y2);}
if(nbut==3) {mouse(0);rect(xp,yp,x2,y2);savebar(xp+1,yp+1,x-1,y-1);nbut++;mouse(1);}
if(nbut==4) {help("Vvedit kuda kopiyuvaty");mouse(1);}
if(nbut==5) {mouse(0);x1=xp-x2;y1=yp-x2;
if(x-x1<538 && y-y1<458)
putimage(x,y,p,0);mouse(1);graphdefaults();nbut=4;
}
}
//----------------------------------save&load------------------------
void inputfname(){
char num;
int i;
for (i=0;i!=12;i++) fname[i]=0;
help("Input File Name");
i=0;
while (num!=13)
{num=getch();
if (num>32) {fname[i]=num;outtextxy(320,462,fname);i++;}
if(ch==8){i--;fillbar(320+8*i,462,328+8*i,470,15);}
}
}
void save(){
int xp, yp, cp;
inputfname();
mouse(0);
F=fopen(fname,"wb");
for (yp=25;yp<450;yp++)
{
for (xp=6;xp<534;xp++)
{
cp=getpixel(xp,yp);
if(cp!=7) fprintf(F,"%d %d %d ",xp,yp,cp);
}
fillbar(3,yp,5,yp+2,50);
}
fclose(F);
nbut=0;pmen=0;mouse(1);
fillbar(3,25,7,453,7);
}
void load()
{
int xp,yp,cp;
inputfname();
mouse(0);
if((F=fopen(fname,"rb"))==NULL) help("Cant open File");
else {
F=fopen(fname,"rb");
while (!feof(F))
{
fscanf(F,"%d %d %d ",&xp,&yp,&cp);
putpixel(xp,yp,cp);
}}
fclose(F);
nbut=0;pmen=0;mouse(1);
}
//----------------------------------save&load------------------------
void disp(){
switch (pmen){
case 1: point(); break;
case 2: line_(); break;
case 3: rect_(); break;
case 4: kolo(); break;
case 5: tekst(); break;
case 6: sterty(); break;
case 7: copy(); break;
case 8: move(); break;
} }
//-----------------------------VOID MAIN(){}---------------------------
void main (){
initgr();
screen();
menu();
palette(545,375);
mouse(1);//show mouse
while (key!=27)
{
if(kbhit())key=getch();
else key=0;
mStatus();
if(key==60) save();
if(key==61) load();
indmouse(545,5);
selcol(545,375);
selmenu(40,10);
if (mousecoord(0,22,538,458)) count();
disp();
delay(1);
}
closegraph();
}
//---------------------------------------------------------------------
