#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "gl/glut.h"
#include "ReadBMP.h"
#include "DCT1.h"
#include "DCT2.h"
unsigned char *img_dst;
unsigned char *R_src;
unsigned char *G_src;
unsigned char *B_src;
unsigned char *R_tmp;
unsigned char *G_tmp;
unsigned char *B_tmp;
unsigned char *R_dst;
unsigned char *G_dst;
unsigned char *B_dst;
unsigned int Texture_XPOS = 100;
unsigned int Texture_YPOS = 100;
unsigned int Texture_Width;
unsigned int Texture_Height;
unsigned char* Texture_Data;
char *Window_Name;
void GLDisplay();
void GLInitial(int argc=0,char **argv=NULL)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE );
glutInitWindowSize(Texture_Width,Texture_Height);
glutInitWindowPosition(Texture_XPOS,Texture_YPOS);
glutCreateWindow(Window_Name);
glutDisplayFunc(GLDisplay);
glutMainLoop();
}
void GLDisplay()
{
glDrawPixels(Texture_Width,Texture_Height,GL_RGB, GL_UNSIGNED_BYTE,Texture_Data);
glutSwapBuffers();
}
void getRGB(const BYTE* img,BYTE *RF,BYTE *GF,BYTE *BF,int width,int height)
{
for(int i=0;i<height;i++)
for(int j=0;j<width;j++)
{
*(RF+i*width+j)=*(img+i*width*3+3*j);
*(GF+i*width+j)=*(img+i*width*3+3*j+1);
*(BF+i*width+j)=*(img+i*width*3+3*j+2);
}
}
void getDST(BYTE* img,BYTE *RF,BYTE *GF,BYTE *BF,int width,int height)
{
for(int i=0;i<height;i++)
for(int j=0;j<width;j++)
{
*(img+i*width*3+3*j)=*(RF+i*width+j);
*(img+i*width*3+3*j+1)=*(GF+i*width+j);
*(img+i*width*3+3*j+2)=*(BF+i*width+j);
}
}
void main(int argc,char **argv)
{
ReadBMP("241.bmp");
Window_Name = "Test";
Texture_Width = width;
Texture_Height= height;
int size = Texture_Width*Texture_Height*3;
Texture_Data=(unsigned char*)malloc(size);
img_dst=(unsigned char*)malloc(size);
R_src=(unsigned char*)malloc(size/3);
G_src=(unsigned char*)malloc(size/3);
B_src=(unsigned char*)malloc(size/3);
//R_tmp=(unsigned char*)malloc(size/3);
//G_tmp=(unsigned char*)malloc(size/3);
//B_tmp=(unsigned char*)malloc(size/3);
R_dst=(unsigned char*)malloc(size/3);
G_dst=(unsigned char*)malloc(size/3);
B_dst=(unsigned char*)malloc(size/3);
getRGB(img_src,R_src,G_src,B_src,width,height);
/*
for(int i=0;i<height;i++)
for(int j=0;j<width;j++)
{
printf("%d\t%d\t%d\n",*R_src++,*G_src++,*B_src++);
}
*/
//DCT1(R_src,R_tmp,width,height);
//DCT1(G_src,G_tmp,width,height);
//DCT1(B_src,B_tmp,width,height);
WrapperGold1(R_src,R_dst,width,height);
WrapperGold1(G_src,G_dst,width,height);
WrapperGold1(B_src,B_dst,width,height);
//IDCT1(R_tmp,R_dst,width,height);
//IDCT1(G_tmp,G_dst,width,height);
//IDCT1(B_tmp,B_dst,width,height);
getDST(img_dst,R_dst,G_dst,B_dst,width,height);
//getDST(img_dst,R_src,G_src,B_src,width,height);
memcpy(Texture_Data,img_dst,size);
GLInitial(argc,argv);
}
评论0