#ifndef VCZH_PRESENTATION_ELEMENTS_GUIGRAPHICSWINDOWSGDI
#define VCZH_PRESENTATION_ELEMENTS_GUIGRAPHICSWINDOWSGDI
#include "..\GuiGraphicsElement.h"
#include "..\GuiGraphicsTextElement.h"
#include "..\..\GraphicsComposition\IncludeForward.h"
#include "..\..\NativeWindow\Windows\GDI\WinGDI.h"
#include <wincodec.h>
#include <MLang.h>
namespace
{
namespace
{
namespace
{
class
;
struct
:
compositions
::
{
public
:
*
;
windows
::
*
;
;
(
*
,
windows
::
*
,
)
:element(
)
,dc(
)
,bounds(
)
{
}
};
class
:
public
<
>
{
DEFINE_GUI_GRAPHICS_ELEMENT(GuiGDIElement, L"GDIElement")
friend
class
<
>;
public
:
static
() {
static
= -
1
;
if
(
elementType
== -
1
) {
auto
=
GetGuiGraphicsResourceManager
();
do
{
if
(!(
manager
!=
nullptr
))
throw
(
L"SetGuiGraphicsResourceManager must be called before registering element types."
);}
while
(
0
);
elementType
=
manager
->
(
(
L"GDIElement"
,
false
)); }
return
elementType
; }
protected
:
();
public
:
compositions
::
<
>
;
};
}
namespace
{
class
:
public
elements
::
{
public
:
virtual
windows
::
*
()=
0
;
};
class
IWindowsGDIResourceManager
:
public
{
public
:
virtual
<
windows
::
>
()=
0
;
virtual
<
windows
::
>
(
)=
0
;
virtual
void
(
)=
0
;
virtual
<
windows
::
>
(
)=
0
;
virtual
void
(
)=
0
;
virtual
<
windows
::
>
(
const
&
)=
0
;
virtual
void
(
const
&
)=
0
;
virtual
<
elements
::
text
::
>
(
const
&
)=
0
;
virtual
void
(
const
&
)=
0
;
virtual
<
windows
::
>
(
*
,
bool
)=
0
;
virtual
void
(
*
)=
0
;
};
extern
IWindowsGDIResourceManager
*
GetWindowsGDIResourceManager
();
class
IWindowsGDIObjectProvider
:
public
{
public
:
virtual
windows
::
*
(
*
)=
0
;
virtual
*
(
*
)=
0
;
virtual
void
(
*
,
*
)=
0
;
virtual
*
()=
0
;
virtual
*
(
*
)=
0
;
virtual
*
()=
0
;
};
extern
IWindowsGDIObjectProvider
*
GetWindowsGDIObjectProvider
();
extern
void
SetWindowsGDIObjectProvider
(
IWindowsGDIObjectProvider
*
);
}
}
}
extern
void
();
#endif