2025-11-28 00:35:46 +09:00

55 lines
1.5 KiB
C++

//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//// PARTICULAR PURPOSE.
////
//// Copyright (c) Microsoft Corporation. All rights reserved
#pragma once
#include "LinearEaseInOutAnimation.h"
#include "SampleElementBase.h"
#include "SampleElementAnimation.h"
#include "SlimRWLock.h"
class CSampleEngine
{
private:
void ReleaseElementResources();
std::vector<SPSampleElementBase> m_elements;
CSlimRWLock m_elementlock;
float m_pointerCurrentX;
float m_pointerCurrentY;
protected:
std::shared_ptr<DeviceResources> m_deviceResources;
CSampleElementBase* FindElement(float x, float y);
CSampleElementBase* m_pointerOver;
public:
CSampleEngine(void);
~CSampleEngine(void);
virtual void Draw();
void Init();
void Update();
void AddElement(SPSampleElementBase);
D2D1_SIZE_F GetEffectiveSize();
float GetPointerX();
float GetPointerY();
template <class T> std::shared_ptr<T> CreateElement();
virtual void PointerDown(float x, float y);
virtual void PointerUpdate(float x, float y);
virtual void PointerUp(float x, float y);
virtual void CreateDeviceIndependentResources(const std::shared_ptr<DeviceResources>& deviceResources);
virtual void ReleaseDeviceIndependentResources();
virtual void CreateDeviceResources();
virtual void ReleaseDeviceResources();
};