Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 33 / LAB 3 / CVIEW
.CPP//File Cview.cpp
//Naznachenie: Opredelenie funkcij klassa "nabor cvetnyh mnogougolnikov na planshete"
//Author: Pavel Morozov
//Redakcija: 2.0 13.04.07
#ifndef cview_cpp
#define cview_cpp
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
#include"cview.h"
#include"ctablet.cpp"
#include"cplist.h"
#include"cplist.cpp"
//--------------------Konstruktor--------------------------
CView::CView(CPolyList *ListPoly0):ID(HistNum+1)
{
ListPoly=ListPoly0;
textcolor(9);
HistNum=HistNum+1;
Counter++;
cprintf("\nKonstruktor CView sozdaet ekzempliar klassa s ID = ");
cout<<endl;
cout<<GetID();
cprintf(", HistNum= ");
cout<<GetHistNum();
cprintf(", Counter= ");
cout<<GetCounter()<<endl;
textcolor(15);
}
//-----------------Funkcii interfejsa----------------------
void CView::SetPtr( CPolyList *ListPoly0)
//Ustanovit ukazatel na element
{
ListPoly=ListPoly0;
}
void CView::OutList()
{
GetList()->OutListPoly();
CPlanshet::OutList();
float x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4;
}
void CView::Move_Set_Planshet_dx_dy(float dx,float dy)
{
int t=0;
GetList()->MovePoly(dx,dy,t);
CPlanshet::MoveFigure(dx,dy);
}
void CView::Move_Set(float dx, float dy,int t)
{
float x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4,Ax0,Ay0,Bx0,By0,Cx0,Cy0,Dx0,Dy0;
GetList()->MovePoly(dx,dy,t);
GetList()->GetXY(x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4,t);
CPlanshet::GetFigureXY(Ax0,Ay0,Bx0,By0,Cx0,Cy0,Dx0,Dy0);
if((Ax0>x_1)||(Bx0<x_1)||(Ax0>x_2)||(Bx0<x_2)||(Ax0>x_3)||(Bx0<x_3)||(Ax0>x_4)||(Bx0<x_4)||(Ay0<y_1)||(Cy0>y_1)||(Ay0<y_2)||(Cy0>y_2)||(Ay0<y_3)||(Cy0>y_3)||(Ay0<y_4)||(Cy0>y_4))
{cout<<"Figura ne lezit na planshete, povtorite popytku";GetList()->MovePoly(-dx,-dy,t);}
}
void CView::MoveFigure(float dx,float dy)
{
int i=1;
float x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4,Ax0,Ay0,Bx0,By0,Cx0,Cy0,Dx0,Dy0;
CPlanshet::MoveFigure(dx,dy);
CPlanshet::GetFigureXY(Ax0,Ay0,Bx0,By0,Cx0,Cy0,Dx0,Dy0);
while(i<GetList()->GetCounter())
{
GetList()->GetXY(x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4,i);
if((Ax0>x_1)||(Bx0<x_1)||(Ax0>x_2)||(Bx0<x_2)||(Ax0>x_3)||(Bx0<x_3)||(Ax0>x_4)||(Bx0<x_4)||(Ay0<y_1)||(Cy0>y_1)||(Ay0<y_2)||(Cy0>y_2)||(Ay0<y_3)||(Cy0>y_3)||(Ay0<y_4)||(Cy0>y_4))
{
cout<<"Figura ne lezit na planshete, povtorite popytku";
CPlanshet::MoveFigure(-dx,-dy);break;
}
i=i+1;
}
}
CPolyList *CView::GetList()
{return ListPoly;}
unsigned int CView::GetID()
//Poluchit ukazatel na predydushij element
{ return ID;}
unsigned int CView::GetHistNum()
// Poluchit kolichestvo sozdannyh objektov
{ return HistNum;}
unsigned int CView::GetCounter()
// Poluchit kolichestvo sushestvujushih objektov
{return Counter;}
//-----------------------Destruktor------------------------
CView::~CView()
{
cout<<endl;
textcolor(10);
cprintf("~CView razrushaet objekt...s ID =");
cout<<GetID()<<endl;
cout<<endl;
cprintf("Objekt unichtozen") ;
cout<<endl;
cprintf("Nazmite probel...");
cout<<endl;
getch();
textcolor(15);
if(ListPoly){delete ListPoly;}
}
#endif
Соседние файлы в папке LAB 3