clooneljump/src/sizenotifiable.cpp
2014-03-28 10:51:48 +01:00

57 lines
1.7 KiB
C++

#include "sizenotifiable.hpp"
#include "sizeratio.hpp"
#include "sdlmain.hpp"
#include <cassert>
#include <ciso646>
namespace cloonel {
namespace implem {
} //namespace implem
namespace regbehaviuors {
///----------------------------------------------------------------------
///----------------------------------------------------------------------
void AutoRegister::Register (SizeNotifiableBase* parNotifiable) {
assert(m_sdlmain);
#if !defined(NDEBUG)
assert(not m_registered);
m_registered = true;
#endif
m_id = m_sdlmain->RegisterForResChange(parNotifiable);
}
///----------------------------------------------------------------------
///----------------------------------------------------------------------
void AutoRegister::Unregister() noexcept {
#if !defined(NDEBUG)
assert(m_registered or not m_sdlmain);
m_registered = false;
#endif
if (m_sdlmain) {
m_sdlmain->UnregisterForResChange(m_id);
}
}
///----------------------------------------------------------------------
///----------------------------------------------------------------------
AutoRegister::AutoRegister (AutoRegister&& parOther) :
m_sdlmain(nullptr),
m_id(0)
#if !defined(NDEBUG)
, m_registered(false)
#endif
{
std::swap(m_sdlmain, parOther.m_sdlmain);
std::swap(m_id, parOther.m_id);
#if !defined(NDEBUG)
std::swap(m_registered, parOther.m_registered);
#endif
}
} //namespace regbehaviuors
///--------------------------------------------------------------------------
///--------------------------------------------------------------------------
void SizeNotifiableBase::NotifyResChanged (const SizeRatio& parSize) {
m_scaleRatio = parSize.Ratio();
}
} //namespace cloonel