source: other-projects/gs2-export-cdrom-installer/trunk/really-really-old-stuff/bmpUtil.cpp@ 23316

Last change on this file since 23316 was 11678, checked in by mdewsnip, 18 years ago

Moved a lot of the old Borland crap into the "really-really-old-stuff" directory.

  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1#include "bmpUtil.h"
2
3#include <stdio.h>
4#include <stdlib.h>
5
6HPALETTE bmpUtil_getDIBPalette(LPBITMAPINFO bmpInfo, unsigned int colours)
7{ LPBITMAPINFOHEADER bmpHeader;
8 LPLOGPALETTE logicalPalette;
9 HPALETTE reply = 0;
10
11 bmpHeader = (LPBITMAPINFOHEADER) bmpInfo;
12 MessageBox(0, "A", "A", MB_OK);
13
14 if (colours)
15 {
16 MessageBox(0, "A", "A", MB_OK);
17 logicalPalette = (LPLOGPALETTE) GlobalAlloc(GMEM_FIXED, sizeof (LOGPALETTE) + sizeof(PALETTEENTRY) * (colours));
18 if (logicalPalette == NULL)
19 { return reply;
20 }
21
22 logicalPalette->palVersion = 0x300;
23 logicalPalette->palNumEntries = colours;
24 MessageBox(0, "A", "A", MB_OK);
25 for (int i = 0; i < colours; i ++)
26 { logicalPalette->palPalEntry[i].peRed = bmpInfo->bmiColors[i].rgbRed;
27 logicalPalette->palPalEntry[i].peGreen = bmpInfo->bmiColors[i].rgbGreen;
28 logicalPalette->palPalEntry[i].peBlue = bmpInfo->bmiColors[i].rgbBlue;
29 logicalPalette->palPalEntry[i].peFlags = 0;
30 }
31 reply = CreatePalette(logicalPalette);
32 GlobalFree((HGLOBAL) logicalPalette);
33 }
34 return reply;
35}
36
37HBITMAP _export bmpUtil_loadBitmap(HDC device, char *filename)
38{ BYTE dummy[2];
39 BITMAPINFO bitmapInfo;
40 OFSTRUCT of;
41
42 HFILE file;
43 BITMAPFILEHEADER fileHeader;
44 LPRGBQUAD colours;
45 LPBITMAPINFO bitmapData;
46 LPBYTE image;
47 unsigned int colourCount;
48 HBITMAP reply;
49 char buffer[40];
50
51 file = OpenFile(filename, &of, OF_READ);
52 if (!file)
53 { return NULL;
54 }
55
56 if (!_lread(file, &fileHeader, sizeof(BITMAPFILEHEADER)))
57 { MessageBox(0, "M1", "M", MB_OK);
58 }
59 if (!_lread(file, &bitmapInfo.bmiHeader, 40))
60 { MessageBox(0, "M2", "M", MB_OK);
61 }
62
63 colourCount = 1 << bitmapInfo.bmiHeader.biBitCount;
64 bitmapData = (BITMAPINFO *) GlobalAlloc(GMEM_FIXED, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * colourCount);
65 if (!bitmapData)
66 { MessageBox(0, "M3", "M", MB_OK);
67 }
68
69 bitmapData->bmiHeader = bitmapInfo.bmiHeader;
70
71 colours = (RGBQUAD *) &bitmapData->bmiColors;
72 if (_lread(file, colours, sizeof(RGBQUAD) * colourCount) < colourCount)
73 { MessageBox(0, "M4", "M", MB_OK);
74 }
75
76 image = (BYTE FAR *) GlobalAlloc(GMEM_FIXED, sizeof(BYTE) * bitmapData->bmiHeader.biSizeImage);
77 if (!image)
78 { MessageBox(0, "M5", "M", MB_OK);
79 }
80 if (_lread(file, image, sizeof(BYTE) * bitmapData->bmiHeader.biSizeImage) < bitmapData->bmiHeader.biSizeImage)
81 { MessageBox(0, "M", "M6", MB_OK);
82 }
83
84 HPALETTE pal = bmpUtil_getDIBPalette(bitmapData, colourCount);
85 sprintf(buffer, "%d", (int) pal);
86 MessageBox(0, buffer, "M0", MB_OK);
87
88 reply = CreateCompatibleBitmap (device, 501, 228);
89 sprintf(buffer, "%d", reply);
90 MessageBox(0, buffer, "M1", MB_OK);
91 if (reply != NULL)
92 { int r = SetDIBits(device, reply, 0, bitmapData->bmiHeader.biHeight, image, bitmapData, DIB_RGB_COLORS);
93 sprintf(buffer, "%d", r);
94 MessageBox(0, buffer, "M2", MB_OK);
95 DeleteObject(reply);
96 }
97
98 reply = CreateDIBitmap( device, &bitmapData->bmiHeader, CBM_INIT, image, bitmapData, DIB_RGB_COLORS);
99 sprintf(buffer, "%d", reply);
100 MessageBox(0, buffer, "M", MB_OK);
101 GlobalFree((HLOCAL) bitmapData);
102 GlobalFree((HLOCAL) image);
103 _lclose(file);
104 return reply;
105}
Note: See TracBrowser for help on using the repository browser.