to jest kod głowny, w zalaczniku pozostale pliki; program w bardzo duzej wersji roboczej :P
#include "GUI.h"
#include <iostream>
#include <fstream>
#include <list>
#include <cstdlib>
using namespace std;
int main() {
string x;
string y;
//struct Point {
//double x, y;
//Point(double double1, double double2) : x(double1), y(double2) {}
//};
vector <Point*> punkty;
vector < Point* >::iterator it_tab = punkty.begin();
vector <double> info;
vector <Shape> ksztalty;
Shape ksztalt(0,FL_BLACK,0);
int ekran_x=1300;
int ekran_y=650;
double ile_pkt=0;
double ile_wszystkich_pkt=0;
double xmin=0;
double xmax=0;
double ymin=0;
double ymax=0;
fstream plik; //obiekt typu fstream (uchwyt do pliku)
plik.open("ObiektyTerenowe.txt"); //otwieramy plik: plik.txt (plik - nazwa pliku, txt - rozszerzenie)
string linia;
if(plik.good() == true)
{
while(!plik.eof())
{
getline(plik, linia);
if (linia[0] == '*')
{
string l=linia.substr(1,1);
info.push_back(atof(l.c_str())); //zamiana na inta
while (plik.peek() != '*' && !plik.eof())
{
getline(plik, linia);
if (linia[0] == 'P')
{
x = linia.substr(4,13);
y = linia.substr(16,13);
double wspx=atof(x.c_str());
double wspy=atof(y.c_str());
if(xmin==0)
{
xmin=wspx;
}
if (ymin==0)
{
ymin=wspy;
}
if(wspx<xmin)
{
xmin=wspx;
}
if(wspx>xmax)
{
xmax=wspx;
}
if(wspy<ymin)
{
ymin=wspy;
}
{
ymax=wspy;
}
punkty.push_back(new Point(wspx, wspy));
ile_pkt++;
ile_wszystkich_pkt++;
}
}
info.push_back(ile_pkt);
ile_pkt=0;
info.push_back(ile_wszystkich_pkt);
}
}
plik.close();
cout.precision(13);
// for (int i=0; i<info.size(); i=i+3)
// {
// cout<< info[i] << endl;
// for(int j=0; j<info[i+1]; j++)
//{
// cout << punkty[info[i+2]-info[i+1]+j]->x << " " << punkty[info[i+2]-info[i+1]+j]->y << endl;
//}
//}
// cout<< xmax-xmin << " " << " " << ymax-ymin << " " << ymin;
}
double k;
if((ekran_x-200)/(ymax-ymin)<(ekran_y-200)/(xmax-xmin))
{
k = (ekran_x-200)/(ymax-ymin);
}
else
{
k = (ekran_y-200)/(xmax-xmin);
}
Windows window(Point(0, 0), ekran_x, ekran_y, "Part3"); //punkt gorny lewy, szerokosc, wysokosc, nazwa
cout <<info.size();
for (int i=0; i<info.size(); i=i+3)
{
if (info[i]==5)
{
Shape ksztalt(0,FL_BLACK,0);
for(int j=0; j<info[i+1]; j++)
{
ksztalt.add(Point(ekran_y-100-((punkty[info[i+2]-info[i+1]+j]->x)-xmin)*k,100+((punkty[info[i+2]-info[i+1]+j]->y)-ymin)*k));
}
ksztalty.push_back(ksztalt);
for(int d=ksztalty.size(); d<ksztalty.size()+1; d++)
{
window.attach(ksztalty[d-1]);
}
}
}
punkty.clear();
info.clear();
ksztalty.clear();
//Line line3(Point(ekran_y-100-((punkty[0]->x)-xmin)*k,100+(punkty[0]->y-ymin)*k), Point(10,10),0, FL_BLACK);
//window.attach(line3);
//Shape ksztalt(0, FL_BLACK, 0);
//ksztalt.add(Point(100,5));
//ksztalt.add(Point(30,30));
// ksztalt.add(Point(100,100));
//ksztalt.add(Point(200,300));
// window.attach(ksztalt);
//Line line1(Point(0,h/4),Point(w,h/4),3,FL_BLACK); //punkt poczatkowy, punkt koncowy, , kolor
//Line line2(Point(w/2,0),Point(w/2,h/4),3,FL_BLACK);
//window.attach(line1);
//window.attach(line2);
return Fl::run();
}