1 | /**********************************************************************
|
---|
2 | *<
|
---|
3 | FILE: fbwin.h
|
---|
4 |
|
---|
5 | DESCRIPTION: framebuffer window include file.
|
---|
6 |
|
---|
7 | CREATED BY: Don Brittain
|
---|
8 |
|
---|
9 | HISTORY:
|
---|
10 |
|
---|
11 | *> Copyright (c) 1995, All Rights Reserved.
|
---|
12 | **********************************************************************/
|
---|
13 |
|
---|
14 | #if !defined(_FBWIN_H_)
|
---|
15 |
|
---|
16 | #define _FBWIN_H_
|
---|
17 |
|
---|
18 | #ifdef WIN95STUFF
|
---|
19 | #include <vfw.h>
|
---|
20 | #endif
|
---|
21 |
|
---|
22 | #define FBW_MSG_OFFSET (WM_USER + 1000)
|
---|
23 |
|
---|
24 | #define FBW_LBUTTONDOWN (WM_LBUTTONDOWN + FBW_MSG_OFFSET)
|
---|
25 | #define FBW_LBUTTONUP (WM_LBUTTONUP + FBW_MSG_OFFSET)
|
---|
26 | #define FBW_LBUTTONDBLCLK (WM_LBUTTONDBLCLK + FBW_MSG_OFFSET)
|
---|
27 | #define FBW_RBUTTONDOWN (WM_RBUTTONDOWN + FBW_MSG_OFFSET)
|
---|
28 | #define FBW_RBUTTONUP (WM_RBUTTONUP + FBW_MSG_OFFSET)
|
---|
29 | #define FBW_RBUTTONDBLCLK (WM_RBUTTONDBLCLK + FBW_MSG_OFFSET)
|
---|
30 | #define FBW_MOUSEMOVE (WM_MOUSEMOVE + FBW_MSG_OFFSET)
|
---|
31 |
|
---|
32 |
|
---|
33 | class FB_RGBA_Pixel {
|
---|
34 | union {
|
---|
35 | struct {
|
---|
36 | BYTE red;
|
---|
37 | BYTE green;
|
---|
38 | BYTE blue;
|
---|
39 | BYTE alpha;
|
---|
40 | } rgba;
|
---|
41 | DWORD pix;
|
---|
42 | };
|
---|
43 | };
|
---|
44 |
|
---|
45 | // framebuffer window setup structure
|
---|
46 | class FBWinSetup {
|
---|
47 | public:
|
---|
48 | DllExport FBWinSetup();
|
---|
49 | DWORD winStyle;
|
---|
50 | POINT winSize;
|
---|
51 | POINT winPlace;
|
---|
52 | POINT fbSize;
|
---|
53 | };
|
---|
54 |
|
---|
55 | class FrameBufferWindow {
|
---|
56 | public:
|
---|
57 | DllExport FrameBufferWindow(HWND hParent, FBWinSetup &fbw);
|
---|
58 | DllExport ~FrameBufferWindow();
|
---|
59 |
|
---|
60 | HWND getHWnd() { return hWnd; }
|
---|
61 | int getBitsPerPixel() { return bpp; }
|
---|
62 |
|
---|
63 | void setNotify(int n) { notify = n; }
|
---|
64 | int getNotify() { return notify; }
|
---|
65 |
|
---|
66 | int getOriginX() { return origin.x; }
|
---|
67 | int getOriginY() { return origin.y; }
|
---|
68 | void setOrigin(int x, int y) { origin.x = x; origin.y = y; }
|
---|
69 |
|
---|
70 | int getFbSizeX() { return fbSize.x; }
|
---|
71 | int getFbSizeY() { return fbSize.y; }
|
---|
72 | #if 0
|
---|
73 | DllExport void setFbSize(int x, int y);
|
---|
74 |
|
---|
75 | DllExport void loadDIB(LPBITMAPINFOHEADER dib);
|
---|
76 | #endif
|
---|
77 |
|
---|
78 | DllExport void startScanlineLoad();
|
---|
79 | DllExport void scanline(int line, int start, int count, FB_RGBA_Pixel *pixels);
|
---|
80 | DllExport void scanline(int line, int start, int count, BYTE *red, BYTE *green, BYTE *blue);
|
---|
81 | DllExport void endScanlineLoad();
|
---|
82 |
|
---|
83 | friend LRESULT CALLBACK FBWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
---|
84 |
|
---|
85 | private:
|
---|
86 | void onPaint(HWND hWnd, WPARAM wParam, LPARAM lParam);
|
---|
87 | void onSize(HWND hWnd, WPARAM wParam, LPARAM lParam);
|
---|
88 | void setupPalette();
|
---|
89 | void setupDIB();
|
---|
90 |
|
---|
91 | static int refCount;
|
---|
92 | HWND hWnd;
|
---|
93 | HWND hParent;
|
---|
94 |
|
---|
95 | int notify;
|
---|
96 |
|
---|
97 | #ifdef WIN95STUFF
|
---|
98 | HDRAWDIB hDrawDC;
|
---|
99 | #endif
|
---|
100 | int bpp;
|
---|
101 | int paletted;
|
---|
102 |
|
---|
103 | POINT winSize;
|
---|
104 | POINT fbSize;
|
---|
105 | POINT origin;
|
---|
106 |
|
---|
107 | int dibLoaded;
|
---|
108 | LOGPALETTE * logPal;
|
---|
109 | LPBITMAPINFOHEADER pbih;
|
---|
110 | BYTE * pixBuf;
|
---|
111 | int pixBufSize;
|
---|
112 | };
|
---|
113 |
|
---|
114 |
|
---|
115 | #endif // _FBWIN_H_
|
---|