//--------------------------------------------------------------------------- #include #include #include #include #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "CSPIN" #pragma resource "*.dfm" using namespace std; TForm1 *Form1; int orezat(int value) { if(value < 0) value=0; else if(value > 255) value = 255; return value; } int kreslenychTahu = 0; int maxTahu = 0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(OpenDialog1->Execute()) { Edit1->Text = OpenDialog1->FileName; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = 0; Image1->Canvas->Rectangle(-1,-1,701,701); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { FILE *f,*g; //preformatovani souboru f = fopen(Edit1->Text.c_str(),"r"); g = fopen("data.txt","w"); char aa = getc(f); while( aa != EOF ) { if(aa!=' ' && aa!='\t' && aa!='\n') //ignorace bilzch znaku { if(aa == '(') { fprintf(g, " "); } else if(aa == ',') { fprintf(g, " "); } else if(aa == ')') { fprintf(g, "\n"); maxTahu++; } else { fprintf(g,"%c",aa); } } aa = getc(f); } fclose(f); fclose(g); //konec konverze f = fopen("data.txt","r"); //kresleni int X = 0; int Y = 0; int uhel = -90; Image1->Canvas->Pen->Style = psClear; char prikaz[256]; int value = 0; Image1->Canvas->MoveTo(350,350); for(int i=0, h=0; hValue && iCanvas->Pen->Style = psClear; } else { Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = value; } } else if(prikaz[0] == 'f') { fscanf(f, "%i", &value); //long double uhelRad = (long double)uhel * (M_PI/180L); long double uhelRad = (long double)uhel / 57.29577951308232087721L; //76798154814105 if(uhel == 90 || uhel == -270) { Y += value; } else if(uhel == 180 || uhel == -180) { X -= value; } else if(uhel == 270 || uhel == -90) { Y -= value; } else if(uhel == 0) { X += value; } else { X = X + value * cos(uhelRad); Y = Y + value * sin(uhelRad); } Image1->Canvas->LineTo(X+350,Y+350); if(Image1->Canvas->Pen->Width >= 0) { h++; } Application->ProcessMessages(); } else if(prikaz[0] == 'c') { int red, green, blue = 0; fscanf(f, "%i", &red); fscanf(f, "%i", &green); fscanf(f, "%i", &blue); red = orezat(red); green = orezat(green); blue = orezat(blue); Image1->Canvas->Pen->Color = RGB(red,green,blue); } } fclose(f); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { if(SavePictureDialog1->Execute()) { Image1->Picture->SaveToFile(SavePictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = 0; Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Rectangle(-1,-1,701,701); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { //clear Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = 0; Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Rectangle(-1,-1,701,701); //novy tah kreslenychTahu++; CSTahu->Value = kreslenychTahu; //kresleni tahu FILE *f; f = fopen("data.txt","r"); //kresleni int X = 0; int Y = 0; int uhel = -90; Image1->Canvas->Pen->Style = psClear; char prikaz[256]; int value = 0; Image1->Canvas->MoveTo(350,350); for(int i=0, h=0; hValue && iCanvas->Pen->Style = psClear; } else { Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = value; } } else if(prikaz[0] == 'f') { fscanf(f, "%i", &value); //long double uhelRad = (long double)uhel * (M_PI/180L); long double uhelRad = (long double)uhel / 57.29577951308232087721L; //76798154814105 if(uhel == 90 || uhel == -270) { Y += value; } else if(uhel == 180 || uhel == -180) { X -= value; } else if(uhel == 270 || uhel == -90) { Y -= value; } else if(uhel == 0) { X += value; } else { X = X + value * cos(uhelRad); Y = Y + value * sin(uhelRad); } if(h+1 == CSTahu->Value) { Image1->Canvas->Pen->Width += 2; } Image1->Canvas->LineTo(X+350,Y+350); if(h+1 == CSTahu->Value) { Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Pen->Width = 3; Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Ellipse(X+350-20,Y+350-20,X+350+20,Y+350+20); Image1->Canvas->MoveTo(X+350,Y+350); X = X + 20 * cos(uhelRad); Y = Y + 20 * sin(uhelRad); Image1->Canvas->LineTo(X+350,Y+350); } if(Image1->Canvas->Pen->Width >= 0) { h++; } Application->ProcessMessages(); } else if(prikaz[0] == 'c') { int red, green, blue = 0; fscanf(f, "%i", &red); fscanf(f, "%i", &green); fscanf(f, "%i", &blue); red = orezat(red); green = orezat(green); blue = orezat(blue); Image1->Canvas->Pen->Color = RGB(red,green,blue); } } fclose(f); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button7Click(TObject *Sender) { FILE *f,*g; //preformatovani souboru f = fopen(Edit1->Text.c_str(),"r"); g = fopen("data.txt","w"); char aa = getc(f); while( aa != EOF ) { if(aa!=' ' && aa!='\t' && aa!='\n') //ignorace bilzch znaku { if(aa == '(') { fprintf(g, " "); } else if(aa == ',') { fprintf(g, " "); } else if(aa == ')') { fprintf(g, "\n"); maxTahu++; } else { fprintf(g,"%c",aa); } } aa = getc(f); } fclose(f); fclose(g); //konec konverze f = fopen("data.txt","r"); //kresleni int X = 0; int Y = 0; int uhel = -90; Image1->Canvas->Pen->Style = psClear; char prikaz[256]; int value = 0; Image1->Canvas->MoveTo(350,350); for(int i=0, h=0; hValue && iCanvas->Pen->Style = psClear; } else { Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = value; } } else if(prikaz[0] == 'f') { fscanf(f, "%i", &value); //long double uhelRad = (long double)uhel * (M_PI/180L); long double uhelRad = (long double)uhel / 57.29577951308232087721L; //76798154814105 if(uhel == 90 || uhel == -270) { Y += value; } else if(uhel == 180 || uhel == -180) { X -= value; } else if(uhel == 270 || uhel == -90) { Y -= value; } else if(uhel == 0) { X += value; } else { X = X + value * cos(uhelRad); Y = Y + value * sin(uhelRad); } Image1->Canvas->LineTo(X+350,Y+350); if(Image1->Canvas->Pen->Width >= 0) { h++; } Application->ProcessMessages(); } else if(prikaz[0] == 'c') { int red, green, blue = 0; fscanf(f, "%i", &red); fscanf(f, "%i", &green); fscanf(f, "%i", &blue); red = orezat(red); green = orezat(green); blue = orezat(blue); Image1->Canvas->Pen->Color = RGB(red,green,blue); } } fclose(f); //clear Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = 0; Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Rectangle(-1,-1,701,701); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6Click(TObject *Sender) { //clear Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = 0; Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Rectangle(-1,-1,701,701); //novy tah kreslenychTahu--; CSTahu->Value = kreslenychTahu; //kresleni tahu FILE *f; f = fopen("data.txt","r"); //kresleni int X = 0; int Y = 0; int uhel = -90; Image1->Canvas->Pen->Style = psClear; char prikaz[256]; int value = 0; Image1->Canvas->MoveTo(350,350); for(int i=0, h=0; hValue && iCanvas->Pen->Style = psClear; } else { Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Pen->Width = value; } } else if(prikaz[0] == 'f') { fscanf(f, "%i", &value); //long double uhelRad = (long double)uhel * (M_PI/180L); long double uhelRad = (long double)uhel / 57.29577951308232087721L; //76798154814105 if(uhel == 90 || uhel == -270) { Y += value; } else if(uhel == 180 || uhel == -180) { X -= value; } else if(uhel == 270 || uhel == -90) { Y -= value; } else if(uhel == 0) { X += value; } else { X = X + value * cos(uhelRad); Y = Y + value * sin(uhelRad); } if(h+1 == CSTahu->Value) { Image1->Canvas->Pen->Width += 2; } Image1->Canvas->LineTo(X+350,Y+350); if(h+1 == CSTahu->Value) { Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Pen->Width = 3; Image1->Canvas->Pen->Style = psSolid; Image1->Canvas->Ellipse(X+350-20,Y+350-20,X+350+20,Y+350+20); Image1->Canvas->MoveTo(X+350,Y+350); X = X + 20 * cos(uhelRad); Y = Y + 20 * sin(uhelRad); Image1->Canvas->LineTo(X+350,Y+350); } if(Image1->Canvas->Pen->Width >= 0) { h++; } Application->ProcessMessages(); } else if(prikaz[0] == 'c') { int red, green, blue = 0; fscanf(f, "%i", &red); fscanf(f, "%i", &green); fscanf(f, "%i", &blue); red = orezat(red); green = orezat(green); blue = orezat(blue); Image1->Canvas->Pen->Color = RGB(red,green,blue); } } fclose(f); } //---------------------------------------------------------------------------