#ifndef VCZH_PRESENTATION_COMPOSITION_GUIGRAPHICSCOMPOSITIONBASE
#define VCZH_PRESENTATION_COMPOSITION_GUIGRAPHICSCOMPOSITIONBASE
#include "../GraphicsElement/GuiGraphicsElementInterfaces.h"
#include "../NativeWindow/GuiNativeWindow.h"
#include "GuiGraphicsEventReceiver.h"
namespace
{
namespace
{
template
<
typename
>
using
=
<
(
const
reflection
::
description
::
&)>;
template
<
typename
>
using
=
<
(
const
reflection
::
description
::
&,
,
bool
)>;
template
<
typename
>
using
=
<
*(
const
reflection
::
description
::
&)>;
namespace
{
class
;
}
namespace
{
class
;
class
;
}
namespace
{
class
;
class
:
public
,
public
<
>
{
typedef
collections
::
<
*>
;
friend
class
controls
::
;
friend
class
;
friend
void
InvokeOnCompositionStateChanged
(
compositions
::
*
);
public
:
enum
{
,
,
LimitToElementAndChildren
,
};
protected
:
struct
{
*
=
nullptr
;
elements
::
*
=
nullptr
;
*
=
nullptr
;
};
protected
:
;
*
=
nullptr
;
<
elements
::
>
;
bool
=
true
;
bool
=
false
;
=
::
;
<
compositions
::
>
;
*
=
nullptr
;
controls
::
*
=
nullptr
;
*
=
nullptr
;
::
=
::
;
;
;
;
bool
=
false
;
virtual
void
(
controls
::
*
);
virtual
void
(
*
);
virtual
void
(
*
);
virtual
void
(
*
,
*
);
virtual
void
();
virtual
void
();
void
(
*
);
void
(
controls
::
*
);
void
InvokeOnCompositionStateChanged
();
static
bool
(
*
,
bool
);
public
:
();
();
bool
();
*
();
const
&
();
bool
(
*
);
bool
(
,
*
);
bool
(
*
);
bool
(
*
,
);
<
elements
::
>
();
void
(
<
elements
::
>
);
bool
();
void
(
bool
);
();
void
(
);
elements
::
*
();
void
(
);
compositions
::
*
();
bool
();
*
(
,
bool
);
bool
();
void
(
bool
);
();
controls
::
*
();
*
();
*
();
void
(
*
);
::
GetAssociatedHitTestResult
();
void
SetAssociatedHitTestResult
(
::
);
controls
::
*
();
*
();
controls
::
*
();
*
();
virtual
();
virtual
void
(
);
virtual
();
virtual
void
(
);
virtual
();
virtual
void
(
);
virtual
();
virtual
void
();
virtual
bool
()=
0
;
virtual
GetMinPreferredClientSize
()=
0
;
virtual
()=
0
;
virtual
()=
0
;
};
class
:
public
,
public
<
>
{
protected
:
;
virtual
(
);
void
(
);
public
:
();
();
compositions
::
;
bool
()
override
;
GetMinPreferredClientSize
()
override
;
()
override
;
};
extern
void
(
controls
::
*
);
extern
void
(
*
);
extern
void
(
controls
::
*
);
extern
void
(
*
);
}
}
}
#endif