/***********************************************************************
!!!!!! DO NOT MODIFY !!!!!!

GacGen.exe Resource.xml

This file is generated by Workflow compiler
https://github.com/vczh-libraries
***********************************************************************/

#include "DemoReflection.h"

#if defined( _MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#elif defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wparentheses-equality"
#elif defined(__GNUC__)
#pragma GCC diagnostic push
#endif

/***********************************************************************
Reflection
***********************************************************************/

namespace vl
{
	namespace reflection
	{
		namespace description
		{
#ifndef VCZH_DEBUG_NO_REFLECTION
			IMPL_CPP_TYPE_INFO(demo::ColorAnimation)
			IMPL_CPP_TYPE_INFO(demo::ColorDef)
			IMPL_CPP_TYPE_INFO(demo::MainWindow)
			IMPL_CPP_TYPE_INFO(demo::MainWindowConstructor)

#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
#define _ ,
			BEGIN_CLASS_MEMBER(::demo::ColorAnimation)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorAnimation>(::vl::Ptr<::demo::ColorDef>), { L"__vwsn_ani_current" })
				CLASS_MEMBER_METHOD(CreateAnimation, { L"__vwsn_ani_target" _ L"__vwsn_ani_time" })
				CLASS_MEMBER_METHOD(GetBegin, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetCurrent, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetEnd, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetTimeScale, { L"__vwsn_ani_begin" _ L"__vwsn_ani_end" _ L"__vwsn_ani_current" })
				CLASS_MEMBER_METHOD_OVERLOAD(Interpolate, { L"__vwsn_ani_begin" _ L"__vwsn_ani_end" _ L"__vwsn_ani_current" _ L"__vwsn_ani_ratio" }, void(::demo::ColorAnimation::*)(::vl::Ptr<::demo::ColorDef>, ::vl::Ptr<::demo::ColorDef>, ::vl::Ptr<::demo::ColorDef>, double))
				CLASS_MEMBER_METHOD_OVERLOAD(Interpolate, { L"__vwsn_ani_ratio" }, void(::demo::ColorAnimation::*)(double))
				CLASS_MEMBER_METHOD(SetBegin, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetCurrent, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetEnd, { L"__vwsn_value_" })
				CLASS_MEMBER_EVENT(BeginChanged)
				CLASS_MEMBER_EVENT(CurrentChanged)
				CLASS_MEMBER_EVENT(EndChanged)
				CLASS_MEMBER_FIELD(__vwsn_ani_int_)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_ani_int_Thickness)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Begin)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Current)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_End)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Begin, GetBegin, SetBegin, BeginChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Current, GetCurrent, SetCurrent, CurrentChanged)
				CLASS_MEMBER_PROPERTY_EVENT(End, GetEnd, SetEnd, EndChanged)
			END_CLASS_MEMBER(::demo::ColorAnimation)

			BEGIN_CLASS_MEMBER(::demo::ColorDef)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorDef>(), NO_PARAMETER)
				CLASS_MEMBER_STATIC_METHOD(Dark, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetBottom, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetShadow, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetThickness, NO_PARAMETER)
				CLASS_MEMBER_METHOD(GetTop, NO_PARAMETER)
				CLASS_MEMBER_STATIC_METHOD(Light, NO_PARAMETER)
				CLASS_MEMBER_METHOD(SetBottom, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetShadow, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetThickness, { L"__vwsn_value_" })
				CLASS_MEMBER_METHOD(SetTop, { L"__vwsn_value_" })
				CLASS_MEMBER_STATIC_METHOD(Sink, NO_PARAMETER)
				CLASS_MEMBER_EVENT(BottomChanged)
				CLASS_MEMBER_EVENT(ShadowChanged)
				CLASS_MEMBER_EVENT(ThicknessChanged)
				CLASS_MEMBER_EVENT(TopChanged)
				CLASS_MEMBER_FIELD(__vwsn_prop_Bottom)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Shadow)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Thickness)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(__vwsn_prop_Top)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_PROPERTY_EVENT(Bottom, GetBottom, SetBottom, BottomChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Shadow, GetShadow, SetShadow, ShadowChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Thickness, GetThickness, SetThickness, ThicknessChanged)
				CLASS_MEMBER_PROPERTY_EVENT(Top, GetTop, SetTop, TopChanged)
			END_CLASS_MEMBER(::demo::ColorDef)

			BEGIN_CLASS_MEMBER(::demo::MainWindow)
				ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor")))
				CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow)
				CLASS_MEMBER_BASE(::demo::MainWindowConstructor)
				CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
				CLASS_MEMBER_STATIC_METHOD(BallAnimation, { L"container" _ L"ball" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_STATIC_METHOD(BallAnimationWithDelay, { L"container" _ L"ball" _ L"delay" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_METHOD(PerformGradientAnimation, { L"target" })
				CLASS_MEMBER_STATIC_METHOD(WaitingAnimation, { L"container" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(counter)
				CLASS_MEMBER_FIELD(gradientColorDef)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
				CLASS_MEMBER_FIELD(lastGradientAnimation)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private)
			END_CLASS_MEMBER(::demo::MainWindow)

			BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor)
				CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
				CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER)
				CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" })
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_0)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_1)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_10)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_11)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_12)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_13)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_14)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_15)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_16)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_17)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_18)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_19)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_2)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_20)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_3)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_4)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_5)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_6)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_7)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_8)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(__vwsn_precompile_9)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(animationBackground)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
				CLASS_MEMBER_FIELD(self)
				ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected)
			END_CLASS_MEMBER(::demo::MainWindowConstructor)

#undef _
			class DemoTypeLoader : public Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					ADD_TYPE_INFO(::demo::ColorAnimation)
					ADD_TYPE_INFO(::demo::ColorDef)
					ADD_TYPE_INFO(::demo::MainWindow)
					ADD_TYPE_INFO(::demo::MainWindowConstructor)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};
#endif
#endif

			bool LoadDemoTypes()
			{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
				if (auto manager = GetGlobalTypeManager())
				{
					return manager->AddTypeLoader(Ptr(new DemoTypeLoader));
				}
#endif
				return false;
			}
		}
	}
}

#if defined( _MSC_VER)
#pragma warning(pop)
#elif defined(__clang__)
#pragma clang diagnostic pop
#elif defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
