graph1.h (2015 vs. now)

建立於 差異永不過期
0 刪除
209 行
5 新增
214 行
/*BMPLoader - loads Microsoft .bmp format
/*BMPLoader - loads Microsoft .bmp format
Copyright (C) 2006 Chris Backhouse
Copyright (C) 2006 Chris Backhouse


This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
(at your option) any later version.


This program is distributed in the hope that it will be useful,
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
GNU General Public License for more details.


You should have received a copy of the GNU General Public License along
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.




cjbackhouse@hotmail.com www.backhouse.tk
cjbackhouse@hotmail.com www.backhouse.tk
I would appreciate it if anyone using this in something cool would tell me
I would appreciate it if anyone using this in something cool would tell me
so I can see where it ends up.
so I can see where it ends up.


Takes a filename, returns an array of RGB pixel data
Takes a filename, returns an array of RGB pixel data
Loads:
Loads:
24bit bitmaps
24bit bitmaps
256 colour bitmaps
256 colour bitmaps
16 colour bitmaps
16 colour bitmaps
2 colour bitmaps (Thanks to Charles Rabier)
2 colour bitmaps (Thanks to Charles Rabier)


This code is designed for use in openGL programs, so bitmaps not correctly padded will not
This code is designed for use in openGL programs, so bitmaps not correctly padded will not
load properly, I believe this only applies to:
load properly, I believe this only applies to:
256cols if width is not a multiple of 4
256cols if width is not a multiple of 4
16cols if width is not a multiple of 8
16cols if width is not a multiple of 8
2cols if width is not a multiple of 32
2cols if width is not a multiple of 32


Sample code:
Sample code:


BMPClass bmp;
BMPClass bmp;
BMPLoad(fname,bmp);
BMPLoad(fname,bmp);
glTexImage2D(GL_TEXTURE_2D,0,3,bmp.width,bmp.height,0,GL_RGB,GL_UNSIGNED_BYTE,bmp.bytes);
glTexImage2D(GL_TEXTURE_2D,0,3,bmp.width,bmp.height,0,GL_RGB,GL_UNSIGNED_BYTE,bmp.bytes);
*/
*/
#include <windows.h>
#include <windows.h>
#include <gl/glut.h>
#include <gl/glut.h>
#include <iostream>
#include <iostream>
#include <cstring>
#include <cstring>
#include <string>
#define endg "_endg_"
#define endg "_endg_"




#ifndef BMPLOADER_H
#ifndef BMPLOADER_H
#define BMPLOADER_H
#define BMPLOADER_H


#include <iostream>
#include <iostream>
#include <cstring>
#include <cstring>


using namespace std;
using namespace std;


typedef unsigned char BYTE;
typedef unsigned char BYTE;


class BMPClass
class BMPClass
{
{
public:
public:
BMPClass();
BMPClass();
~BMPClass();
~BMPClass();
BYTE& pixel(int x,int y,int c);
BYTE& pixel(int x,int y,int c);
void allocateMem();
void allocateMem();
int width,height;
int width,height;
BYTE* bytes; //OpenGL formatted pixels
BYTE* bytes; //OpenGL formatted pixels
};
};


#define BMPError char
#define BMPError char
#define BMPNOTABITMAP 'b' //Possible error flags
#define BMPNOTABITMAP 'b' //Possible error flags
#define BMPNOOPEN 'o'
#define BMPNOOPEN 'o'
#define BMPFILEERROR 'f'
#define BMPFILEERROR 'f'
#define BMPBADINT 'i'
#define BMPBADINT 'i'
#define BMPNOERROR '\0'
#define BMPNOERROR '\0'
#define BMPUNKNOWNFORMAT 'u'
#define BMPUNKNOWNFORMAT 'u'


//Loads the bmp in fname, and puts the data in bmp
//Loads the bmp in fname, and puts the data in bmp
BMPError BMPLoad(string fname,BMPClass& bmp);
BMPError BMPLoad(string fname,BMPClass& bmp);


//Translates my error codes into English
//Translates my error codes into English
std::string TranslateBMPError(BMPError err);
std::string TranslateBMPError(BMPError err);


//Load and select in OpenGL
//Load and select in OpenGL
BMPError BMPLoadGL(string fname);
BMPError BMPLoadGL(string fname);


struct Precision
struct Precision
{
{
int precision;
int precision;
bool precisionFlag;
bool precisionFlag;
};
};


struct GraphColor
struct GraphColor
{
{
int r;
int r;
int g;
int g;
int b;
int b;
};
};