summaryrefslogtreecommitdiffstats
path: root/menu_demo/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'menu_demo/bitmap.c')
-rw-r--r--menu_demo/bitmap.c121
1 files changed, 69 insertions, 52 deletions
diff --git a/menu_demo/bitmap.c b/menu_demo/bitmap.c
index 1a32f68..edb981d 100644
--- a/menu_demo/bitmap.c
+++ b/menu_demo/bitmap.c
@@ -2,55 +2,72 @@
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#define GL_BGR 0x80E0
-#endif
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <stdio.h>
-
-#include "bitmap.h"
-
-#define BITMAP_FILESIZE 0x02
-#define BITMAP_OFFSET 0x0a
-#define BITMAP_HEADERSIZE 0x0e
-#define BITMAP_WIDTH 0x12
-#define BITMAP_HEIGHT 0x16
-
-void BitmapLoad(char *filename)
-{
- GLuint texture;
- FILE *bitmap;
-
- // try to open the file
- bitmap = fopen(filename, "rb");
-
- // does the bitmap exist?
- if (bitmap > 0)
- {
- unsigned int dataoffset, filesize;
- GLsizei width, height;
- unsigned char *imagedata;
-
- fseek(bitmap, BITMAP_FILESIZE, SEEK_SET);
- fread(&filesize, 4, 1, bitmap);
- fseek(bitmap, BITMAP_OFFSET, SEEK_SET);
- fread(&dataoffset, 4, 1, bitmap);
- fseek(bitmap, BITMAP_WIDTH, SEEK_SET);
- fread(&width, 4, 1, bitmap);
- fread(&height, 4, 1, bitmap);
-
- imagedata = (unsigned char *)malloc((size_t)(filesize -dataoffset));
-
- fseek(bitmap, dataoffset, SEEK_SET);
- fread(imagedata, (size_t)(filesize -dataoffset), 1, bitmap);
-
- glGenTextures(1, &texture);
- glBindTexture(GL_TEXTURE_2D, texture);
- gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, GL_BGR, GL_UNSIGNED_BYTE, imagedata);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- free(imagedata);
- fclose(bitmap);
- }
-}
+#endif
+
+#include <GL/gl.h>
+#include <GL/glu.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "bitmap.h"
+
+#define BITMAP_FILESIZE 0x02
+#define BITMAP_OFFSET 0x0a
+#define BITMAP_HEADERSIZE 0x0e
+#define BITMAP_WIDTH 0x12
+#define BITMAP_HEIGHT 0x16
+
+
+
+struct ImageStruct BitmapLoad(char *filename)
+{
+ struct ImageStruct l_sImage;
+ GLuint texture;
+ FILE *bitmap;
+
+ // try to open the file
+ bitmap = fopen(filename, "r");
+
+ // does the bitmap exist?
+ if (bitmap > 0)
+ {
+ unsigned int dataoffset, filesize;
+ GLsizei width, height;
+ unsigned char *imagedata;
+
+ fseek(bitmap, BITMAP_FILESIZE, SEEK_SET);
+ fread(&filesize, 4, 1, bitmap);
+ fseek(bitmap, BITMAP_OFFSET, SEEK_SET);
+ fread(&dataoffset, 4, 1, bitmap);
+ fseek(bitmap, BITMAP_WIDTH, SEEK_SET);
+ fread(&width, 4, 1, bitmap);
+ fread(&height, 4, 1, bitmap);
+
+ imagedata = (unsigned char *)malloc((size_t)(filesize -dataoffset));
+
+ fseek(bitmap, dataoffset, SEEK_SET);
+ fread(imagedata, (size_t)(filesize -dataoffset), 1, bitmap);
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, GL_BGR, GL_UNSIGNED_BYTE, imagedata);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ l_sImage.m_iImageId = texture;
+ l_sImage.m_iWidth = width;
+ l_sImage.m_iHeight = height;
+
+ free(imagedata);
+ fclose(bitmap);
+
+ return l_sImage;
+ }
+ else
+ {
+ // couldn't find bitmap
+ exit(0);
+ }
+}
+
+