xmake.repo/packages/n/noesis/latest/Include/NsGui/Transform3D.h
2024-12-22 19:15:02 +08:00

65 lines
1.7 KiB
C++

////////////////////////////////////////////////////////////////////////////////////////////////////
// NoesisGUI - http://www.noesisengine.com
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef __GUI_TRANSFORM3D_H__
#define __GUI_TRANSFORM3D_H__
#include <NsCore/Noesis.h>
#include <NsGui/CoreApi.h>
#include <NsGui/Animatable.h>
#include <NsGui/IRenderProxyCreator.h>
#include <NsCore/BaseComponent.h>
#include <NsCore/ReflectionDeclare.h>
#include <NsCore/Ptr.h>
#include <NsCore/TypeMetaData.h>
namespace Noesis
{
class Transform3;
struct Size;
NS_WARNING_PUSH
NS_MSVC_WARNING_DISABLE(4251 4275)
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Provides a base class for all three-dimensional transformations, including translation,
/// rotation, and scale transformations.
///
/// https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.media3d.transform3d
////////////////////////////////////////////////////////////////////////////////////////////////////
class NS_GUI_CORE_API Transform3D: public Animatable, public IRenderProxyCreator
{
public:
Transform3D();
Transform3D(const Transform3D&) = delete;
Transform3D& operator=(const Transform3D&) = delete;
virtual ~Transform3D() = 0;
/// Gets the transformation matrix
virtual Transform3 GetTransform() const = 0;
// Hide Freezable methods for convenience
//@{
Ptr<Transform3D> Clone() const;
Ptr<Transform3D> CloneCurrentValue() const;
//@}
NS_IMPLEMENT_INTERFACE_FIXUP
private:
NS_DECLARE_REFLECTION(Transform3D, Animatable)
};
NS_WARNING_POP
}
#endif