#ifndef VCZH_PRESENTATION_COMPOSITION_GUIGRAPHICSRESPONSIVECOMPOSITION
#define VCZH_PRESENTATION_COMPOSITION_GUIGRAPHICSRESPONSIVECOMPOSITION
#include "IncludeForward.h"
namespace
{
namespace
{
namespace
{
enum
class
{
=
1
,
=
2
,
=
3
,
};
class
GuiResponsiveCompositionBase
abstract
:
public
,
public
<
GuiResponsiveCompositionBase
>
{
protected
:
GuiResponsiveCompositionBase
*
=
nullptr
;
=
::
;
void
()
override
;
virtual
void
OnResponsiveChildInserted
(
GuiResponsiveCompositionBase
*
);
virtual
void
(
GuiResponsiveCompositionBase
*
);
virtual
void
OnResponsiveChildLevelUpdated
();
public
:
GuiResponsiveCompositionBase
();
~
GuiResponsiveCompositionBase
();
;
;
virtual
() =
0
;
virtual
() =
0
;
virtual
bool
() =
0
;
virtual
bool
() =
0
;
();
void
(
);
};
class
GuiResponsiveSharedCollection
:
public
collections
::
<
controls
::
*>
{
protected
:
GuiResponsiveViewComposition
*
=
nullptr
;
void
(
,
controls
::
*
const
&
)
override
;
void
(
,
controls
::
*
const
&
)
override
;
void
(
,
controls
::
*
const
&
)
override
;
void
(
,
)
override
;
public
:
GuiResponsiveSharedCollection
(
GuiResponsiveViewComposition
*
);
~
GuiResponsiveSharedCollection
();
};
class
GuiResponsiveViewCollection
:
public
collections
::
<
GuiResponsiveCompositionBase
*>
{
protected
:
GuiResponsiveViewComposition
*
=
nullptr
;
void
(
,
GuiResponsiveCompositionBase
*
const
&
)
override
;
void
(
,
GuiResponsiveCompositionBase
*
const
&
)
override
;
void
(
,
GuiResponsiveCompositionBase
*
const
&
)
override
;
void
(
,
)
override
;
public
:
GuiResponsiveViewCollection
(
GuiResponsiveViewComposition
*
);
~
GuiResponsiveViewCollection
();
};
class
GuiResponsiveSharedComposition
:
public
,
public
<
GuiResponsiveSharedComposition
>
{
protected
:
GuiResponsiveViewComposition
*
=
nullptr
;
controls
::
*
=
nullptr
;
void
();
void
()
override
;
public
:
GuiResponsiveSharedComposition
();
~
GuiResponsiveSharedComposition
();
controls
::
*
();
void
(
controls
::
*
);
};
class
GuiResponsiveViewComposition
:
public
GuiResponsiveCompositionBase
,
public
<
GuiResponsiveViewComposition
>
{
friend
class
GuiResponsiveSharedCollection
;
friend
class
GuiResponsiveViewCollection
;
friend
class
GuiResponsiveSharedComposition
;
using
=
collections
::
<
controls
::
*>;
protected
:
=
1
;
=
0
;
bool
=
false
;
GuiResponsiveCompositionBase
*
=
nullptr
;
;
GuiResponsiveSharedCollection
;
GuiResponsiveViewCollection
;
bool
=
false
;
bool
();
bool
();
void
OnResponsiveChildLevelUpdated
()
override
;
public
:
GuiResponsiveViewComposition
();
~
GuiResponsiveViewComposition
();
;
()
override
;
()
override
;
bool
()
override
;
bool
()
override
;
GuiResponsiveCompositionBase
*
();
collections
::
<
controls
::
*>&
();
collections
::
<
GuiResponsiveCompositionBase
*>&
();
};
class
GuiResponsiveFixedComposition
:
public
GuiResponsiveCompositionBase
,
public
<
GuiResponsiveFixedComposition
>
{
protected
:
void
OnResponsiveChildLevelUpdated
()
override
;
public
:
GuiResponsiveFixedComposition
();
~
GuiResponsiveFixedComposition
();
()
override
;
()
override
;
bool
()
override
;
bool
()
override
;
};
class
GuiResponsiveStackComposition
:
public
GuiResponsiveCompositionBase
,
public
<
GuiResponsiveStackComposition
>
{
using
=
collections
::
<
GuiResponsiveCompositionBase
*>;
protected
:
=
1
;
=
0
;
;
bool
();
bool
();
void
OnResponsiveChildInserted
(
GuiResponsiveCompositionBase
*
)
override
;
void
(
GuiResponsiveCompositionBase
*
)
override
;
void
OnResponsiveChildLevelUpdated
()
override
;
bool
(
bool
);
public
:
GuiResponsiveStackComposition
();
~
GuiResponsiveStackComposition
();
()
override
;
()
override
;
bool
()
override
;
bool
()
override
;
};
class
GuiResponsiveGroupComposition
:
public
GuiResponsiveCompositionBase
,
public
<
GuiResponsiveGroupComposition
>
{
using
=
collections
::
<
GuiResponsiveCompositionBase
*>;
protected
:
=
1
;
=
0
;
;
bool
();
bool
();
void
OnResponsiveChildInserted
(
GuiResponsiveCompositionBase
*
)
override
;
void
(
GuiResponsiveCompositionBase
*
)
override
;
void
OnResponsiveChildLevelUpdated
()
override
;
public
:
GuiResponsiveGroupComposition
();
~
GuiResponsiveGroupComposition
();
()
override
;
()
override
;
bool
()
override
;
bool
()
override
;
};
class
GuiResponsiveContainerComposition
:
public
,
public
<
GuiResponsiveContainerComposition
>
{
protected
:
GuiResponsiveCompositionBase
*
=
nullptr
;
;
void
();
void
(
*
,
&
);
public
:
GuiResponsiveContainerComposition
();
~
GuiResponsiveContainerComposition
();
GuiResponsiveCompositionBase
*
();
void
(
GuiResponsiveCompositionBase
*
);
};
}
}
}
#endif