#include<iostream>
#include<fstream>
#define s 256
using namespace std;
void read(int data[s][s*3],int & h,int & w,int & c);
void read2(int data[s][s*3],int & h,int & w,int & c);
void save(int data[s][s*3],int & h,int & w,int & c);
void rotate90(int data[s][s*3],int h,int w,int c);
/* The image that I'm using, by orders of the assigment
is 'snail.ppm', which it is at
http://orion.math.iastate.edu/burkardt/data/ppm/ppm.html
at the bottom of the page. I'm required to make a menu
for the user selection of the type of modification
to the image that will be made.*/
void main()
{
int data[s][s*3],heigh,witdh,color,select,select2;
do
{
cout<<"Choose an option: "<<endl;
cout<<"\n1)Rotate Clockwise"<<endl;
cout<<"2)Rotate Counter-Clockwise"<<endl;
cout<<"3)Decompose"<<endl;
cout<<"4)Zoom in"<<endl;
cout<<"5)Zoom out"<<endl;
cout<<"6)Convert into Grayscale"<<endl;
cout<<"7)Exit"<<endl;
cout<<"\nGive your selection:\t";
cin>>select;
switch(select)
{
case 1:
do{
cout<<"\nRotate:"<<endl;
cout<<"1)90 degrees"<<endl;
cout<<"2)180 degrees"<<endl;
cout<<"3)270 degrees"<<endl;
cout<<"Give your selection: ";
cin>>select2;
}while((select2<1)||(select2>3));
switch(select2)
{
case 1:
read(data,heigh,witdh,color);
rotate90(data,heigh,witdh,color);
cout<<"\nYour image was sucessfully rotated.\n"<<endl;
break;
case 2:
read(data,heigh,witdh,color);
for(int i=0;i<2;i++)
{
rotate90(data,heigh,witdh,color);
read2(data,heigh,witdh,color);
}
cout<<"\nYour image was sucessfully rotated.\n"<<endl;
break;
case 3:
read(data,heigh,witdh,color);
for(int i=0;i<3;i++)
{
rotate90(data,heigh,witdh,color);
read2(data,heigh,witdh,color);
}
cout<<"\nYour image was sucessfully rotated.\n"<<endl;
break;
}
case 2:
do{
cout<<"\nRotate:"<<endl;
cout<<"1)90 degrees"<<endl;
cout<<"2)180 degrees"<<endl;
cout<<"3)270 degrees"<<endl;
cout<<"\nGive your selection: ";
cin>>select2;
}while((select2<1)||(select2>3));
switch(select2)
{
case 1:
read(data,heigh,witdh,color);
for(int i=0;i<3;i++)
{
rotate90(data,heigh,witdh,color);
read2(data,heigh,witdh,color);
}
cout<<"\nYour image was sucessfully rotated.\n"<<endl;
break;
case 2:
read(data,heigh,witdh,color);
for(int i=0;i<2;i++)
{
rotate90(data,heigh,witdh,color);
read2(data,heigh,witdh,color);
}
cout<<"\nYour image was sucessfully rotated.\n"<<endl;
break;
case 3:
read(data,heigh,witdh,color);
rotate90(data,heigh,witdh,color);
cout<<"\nYour image was sucessfully rotated.\n"<<endl;
break;
}
}
}while(select!=7);
}
void read(int data[s][s*3],int & h,int & w,int & c)
{
char buffer[s];
ifstream input;
input.open("C:\\Users\\AK's\\Downloads\\snail.ppm",ios::in);
if(input==NULL)
{
cout<<"Cannot open file"<<endl;
}
input.getline(buffer,s*3);
input.getline(buffer,s*3);
input>>w>>h>>c;
for(int i=0;i<h;i++)
{
for(int j=0;j<w*3;j++)
{
input>>data[i][j];
}
}
input.close();
}
void read2(int data[s][s*3],int & h,int & w,int & c)
{
char buffer[s];
ifstream input;
input.open("C:\\Users\\AK's\\Downloads\\snail2.ppm",ios::in);
if(input==NULL)
{
cout<<"Cannot open file"<<endl;
}
input.getline(buffer,s*3);
input.getline(buffer,s*3);
input>>w>>h>>c;
for(int i=0;i<h;i++)
{
for(int j=0;j<w*3;j++)
{
input>>data[i][j];
}
}
input.close();
}
void rotate90(int data[s][s*3],int h,int w,int c)
{
ofstream output;
output.open("C:\\Users\\AK's\\Downloads\\snail2.ppm",ios::out);
output<<"P3"<<endl;
output<<"#Title"<<endl;
output<<w<<" "<<h<<endl;
output<<c<<endl;
for(int i=0;i<h;i++)
{
output<<endl;
for(int j=0;j<w;j++)
{
output<<data [w-j-1][i*3]<<" "<<data[w-j-1][i*3+1]<<" "<<data[w-j-1][i*3+2]<<" ";
}
}
}
I will be very thankful if someone could lend me a hand with this... Thanks!!!

New Topic/Question
Reply



MultiQuote


|