diff --git a/Graphics/gl2ppm.cpp b/Graphics/gl2ppm.cpp new file mode 100644 index 0000000000000000000000000000000000000000..99f29ad10fe0544cba85d8257aa964ad9cec3c66 --- /dev/null +++ b/Graphics/gl2ppm.cpp @@ -0,0 +1,37 @@ + +#include "Gmsh.h" +#include "GmshUI.h" + +void create_ppm(FILE *outfile, int width, int height){ + unsigned char *red, *green, *blue; + register int x, y; + unsigned char r, g, b; + + red = (unsigned char *)malloc(height*width*sizeof(unsigned char)); + green = (unsigned char *)malloc(height*width*sizeof(unsigned char)); + blue = (unsigned char *)malloc(height*width*sizeof(unsigned char)); + + glReadPixels(0,0,width,height,GL_RED,GL_UNSIGNED_BYTE,red); + glReadPixels(0,0,width,height,GL_GREEN,GL_UNSIGNED_BYTE,green); + glReadPixels(0,0,width,height,GL_BLUE,GL_UNSIGNED_BYTE,blue); + + fprintf(outfile, "P6\n"); + fprintf(outfile, "%d %d\n", width, height); + fprintf(outfile, "%d\n", 255); + + for ( y = height-1; y >= 0; y-- ){ + for ( x = 0; x < width; x++ ){ + r = red[y*width+x]; + g = green[y*width+x]; + b = blue[y*width+x]; + fwrite(&r, 1, 1, outfile); + fwrite(&g, 1, 1, outfile); + fwrite(&b, 1, 1, outfile); + } + } + + Free(red); + Free(green); + Free(blue); +} + diff --git a/Graphics/gl2ppm.h b/Graphics/gl2ppm.h new file mode 100644 index 0000000000000000000000000000000000000000..47b88824d186371de0c067b6af0978cae78099d1 --- /dev/null +++ b/Graphics/gl2ppm.h @@ -0,0 +1,6 @@ +#ifndef _GL2PPM_H_ +#define _GL2PPM_H_ + +void create_ppm(FILE *outfile, int width, int height); + +#endif