#include <iostream>
#include <fstream>
#include <windows.h> 

#define WORD  short int
#define DWORD long int
#define LONG  long int

using namespace std;

char *File1_Name ="0001.bmp";
BITMAPFILEHEADER  File1_F;          
BITMAPINFOHEADER  File1_I;          
RGBQUAD File1_rgb[256];             
byte *File1_pixel;                  



char *File3_Name = "0003.bmp";
byte *File3_pixel;                

//-------主程式-----------------------------------------------------------------------------
int main()
{	
	fstream file;
	int i,j,Size,Width,Height;
	char PIXEL[128][128],temp[128][128];
	////////////////////////////////////////////////////
	//1. 影像matrix讀進來: *pixel 的大小為 （I.biWidth）X（I.biHeight）
	//                請你動態的new空間出來  
	////////////////////////////////////////////////////

	
	file.open(File1_Name,std::ios::in|std::ios::binary);		
	
	if(!file) 
	{
       cout<<"open fail.\n";
       return 1;
    } 
	file.read((char*)&File1_F, sizeof(BITMAPFILEHEADER));		
	file.read((char*)&File1_I, sizeof(BITMAPINFOHEADER));		
	file.read((char*)&File1_rgb, sizeof(File1_rgb));		    
	//讀取Image data
	file.close();	                                            
				 
	////////////////////////////////////////////////////
	///2. Show 檔頭資訊: 
	//                  
	////////////////////////////////////////////////////
	
	Size=File1_F.bfSize;
	Width=File1_I.biWidth;
	Height=File1_I.biHeight;

    
    cout<<"BITMAPFILEHEADER\n\n";
	cout<<"File Size  ="<<Size<<"\n";
	cout<<"BITMAPINFOHEADER\n\n";
	cout<<"WIDTH      ="<<Width<<"\n";
	cout<<"HEIGHT     ="<<Width<<"\n";

	
	
	////////////////////////////////////////////////////
	///3. 影像處理: 改變矩陣內容 
	//                  
	////////////////////////////////////////////////////
    file.open(File3_Name,"r+b");
	
	
	for(i=0;i<=File1_I.biHeight;i++)
    {
		for(j=0;j<=File1_I.biWidth;j++)
		{
			
			if(File1_rgb[256]>0)
			     *File3_pixel= *File1_pixel;
			  
			
		}
    }
 



	////////////////////////////////////////////////////
	///4. 影像matrix檔案寫出 
	//                  
	////////////////////////////////////////////////////	
	/*fstream file3;
	file3.open(File3_Name,std::ios::out|std::ios::binary); 
	file3.write((char*)&F, sizeof(BITMAPFILEHEADER));     
	file3.write((char*)&I, sizeof(BITMAPINFOHEADER));      
	file3.write((char*)&rgb, sizeof(rgb));	               
    file3.write((char*)pixel, I.biWidth*I.biWidth);	       
	file3.close();        */                               



	system("pause");
	return 0;
}

