Guiliani  Version 2.6 revision 7293 (documentation build 12)
GfxEnvWin.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef __GFX_ENV_WIN__H__
11#define __GFX_ENV_WIN__H__
12
13#include "GfxEnv.h"
14
15#include "GUIRect.h"
16#include <windows.h>
17
19
24class CGfxEnvWin : public CGfxEnv
25{
26public:
37 static eC_Bool CreateInstance(
38 const HINSTANCE& hInstance,
39 const SurfaceMode_t& eSurfaceMode,
40 const CGUICommonEnums::ImageType_t& eScreenFormat,
41 const eC_UInt& uiWidth,
42 const eC_UInt& uiHeight,
43 const eC_UInt& uiBufferCount = 1,
44 const eC_Bool& bResizable = false);
45
49 virtual void* GetWindowHandle() const
50 {
51 return m_hWnd;
52 }
53
54protected:
65 const HINSTANCE& hInstance,
66 const SurfaceMode_t& eSurfaceMode,
67 const CGUICommonEnums::ImageType_t& eScreenFormat,
68 const eC_UInt& uiWidth,
69 const eC_UInt& uiHeight,
70 const eC_UInt& uiBufferCount = 1,
71 const eC_Bool& bResizable = false);
72
75 virtual ~CGfxEnvWin();
76
77protected:
78 virtual void SetScreenPosition(const eC_UInt& uiX, const eC_UInt& uiY);
79 virtual void SetScreenSize(const eC_UInt& uiWidth, const eC_UInt& uiHeight);
80
81 virtual eC_UInt GetXPos() const;
82 virtual eC_UInt GetYPos() const;
83 virtual eC_UInt GetWidth() const;
84 virtual eC_UInt GetHeight() const;
85
86 virtual eC_Bool RefreshScreen(const CGUIRect& rkInvalidatedArea);
87
88 virtual void** GetFrameBuffers() const;
89
90 virtual void SetWindowCaption(const eC_String& kCaption);
91
92 virtual void InitLayer(const LayerConfiguration_t& kLayerInfo);
93
94 virtual eC_Bool UpdateLayerBuffers(
95 const eC_UInt& uiLayerID,
96 void* pkRenderBuffer,
97 void* pkDisplayBuffer,
98 const eC_UInt& uiWidth,
99 const eC_UInt& uiHeight);
100
101 virtual void UpdateLayer(const LayerConfiguration_t& rkLayerConfig, const LayerUpdate_t& eUpdateReason);
102
103 virtual void EndOfRefresh();
104
105 virtual eC_Bool SwapBuffers();
106
107private:
108 struct LayerData
109 {
110 LayerData() :
111 BufferCount(0),
112 RenderIndex(0),
113 DisplayIndex(0),
114 MemoryDC(NULL),
115 DCBitmap(NULL),
116 OriginalDCBitmap(NULL),
117 Buffers(NULL)
118 {
119 }
120
121 eC_UInt BufferCount;
122 eC_UInt RenderIndex;
123 eC_UInt DisplayIndex;
124 HDC* MemoryDC;
125 HBITMAP* DCBitmap;
126 HBITMAP* OriginalDCBitmap;
127 BYTE** Buffers;
128 };
129
130private:
131 void CreateScreens();
132 void DeleteScreens();
133
134 LPBITMAPINFO CreateBitmapInfoHeader(
135 USHORT nBitsPerPixel,
136 DWORD dwCompression,
137 eC_UInt uiWidth,
138 eC_UInt uiHeight);
139
140 void CreateMemoryDC(
141 LayerData*& kLayerData,
142 const eC_UInt& uiWidth,
143 const eC_UInt& uiHeight,
144 const eC_UByte& ubBitsPerPixel,
145 const eC_UInt& uiBufferCount);
146
147 void RefreshLayer(const eC_UInt& uiLayerIndex);
148
149 void RefreshLayers();
150
151 CGfxEnvWin(const CGfxEnvWin& kSource);
152
153 CGfxEnvWin& operator=(const CGfxEnvWin& kSource);
154
155 BOOL OpenWindow(int nCmdShow);
156 ATOM MyRegisterClass();
157 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
158
159private:
160 HINSTANCE m_hInstance;
161
163 HWND m_hWnd;
164
166 HDC m_hFrontBufferDC;
167
168 HGLRC m_hOpenGLContext;
169
170 eC_UInt m_uiDrawBufferIndex;
171 eC_UInt m_uiDisplayBufferIndex;
172
173 //LayerData m_kMainScreen;
174
175 eC_UInt m_uiScreenCount;
176 eC_TArray<LayerData*> m_akScreens;
177};
178#endif
ImageType_t
Definition: GUICommonEnums.h:80
Helper class to supply a platform independent rectangle implementation.
Definition: GUIRect.h:63
Definition: GfxEnv.h:53
SurfaceMode_t
Definition: GfxEnv.h:60
Implements windows GDI specific features.
Definition: GfxEnvWin.h:25
virtual eC_Bool RefreshScreen(const CGUIRect &rkInvalidatedArea)
static eC_Bool CreateInstance(const HINSTANCE &hInstance, const SurfaceMode_t &eSurfaceMode, const CGUICommonEnums::ImageType_t &eScreenFormat, const eC_UInt &uiWidth, const eC_UInt &uiHeight, const eC_UInt &uiBufferCount=1, const eC_Bool &bResizable=false)
virtual void SetScreenPosition(const eC_UInt &uiX, const eC_UInt &uiY)
virtual eC_UInt GetHeight() const
virtual void ** GetFrameBuffers() const
virtual void InitLayer(const LayerConfiguration_t &kLayerInfo)
virtual void SetWindowCaption(const eC_String &kCaption)
virtual ~CGfxEnvWin()
virtual void * GetWindowHandle() const
Definition: GfxEnvWin.h:49
virtual eC_UInt GetXPos() const
virtual eC_Bool UpdateLayerBuffers(const eC_UInt &uiLayerID, void *pkRenderBuffer, void *pkDisplayBuffer, const eC_UInt &uiWidth, const eC_UInt &uiHeight)
virtual eC_UInt GetWidth() const
virtual void UpdateLayer(const LayerConfiguration_t &rkLayerConfig, const LayerUpdate_t &eUpdateReason)
virtual void SetScreenSize(const eC_UInt &uiWidth, const eC_UInt &uiHeight)
virtual eC_UInt GetYPos() const
virtual eC_Bool SwapBuffers()
virtual void EndOfRefresh()
CGfxEnvWin(const HINSTANCE &hInstance, const SurfaceMode_t &eSurfaceMode, const CGUICommonEnums::ImageType_t &eScreenFormat, const eC_UInt &uiWidth, const eC_UInt &uiHeight, const eC_UInt &uiBufferCount=1, const eC_Bool &bResizable=false)
Definition: GUILayerConfig.h:37