Files
Work/aladin/divetime.hpp
2024-08-07 09:12:07 -04:00

63 lines
1.2 KiB
C++

#ifndef _ALADIN_DIVETIME_HPP_
#define _ALADIN_DIVETIME_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_SYSTEMTIME_HPP_
#include <common/systime.hpp>
#endif
#ifndef _COMMON_MATH_HPP_
#include <common/math.hpp>
#endif
#ifndef _COMMON_SDATE_HPP_
#include <common/sdate.hpp>
#endif
class DiveTime
{
public:
DiveTime();
DiveTime(BYTE b1,BYTE b2,BYTE b3,BYTE b4);
virtual ~DiveTime();
const SystemTime &setTime(BYTE b1,BYTE b2,BYTE b3,BYTE b4);
const SystemTime &getTime(void)const;
private:
SystemTime mDiveTime;
};
inline
DiveTime::DiveTime()
{
}
inline
DiveTime::DiveTime(BYTE b1,BYTE b2,BYTE b3,BYTE b4)
{
setTime(b1,b2,b3,b4);
}
inline
DiveTime::~DiveTime()
{
}
inline
const SystemTime &DiveTime::setTime(BYTE b1,BYTE b2,BYTE b3,BYTE b4)
{
int entryTime=b1*Math::power(2,24)+b2*Math::power(2,16)+b3*Math::power(2,8)+b4;
int divisor=entryTime/172800;
int remainder=entryTime%172800;
int hours=remainder/7200;
int minutes=(remainder/120)%60;
SDate entryDate=SDate().daysAddActual(SDate(1,1,1994),divisor);
mDiveTime.makeTime(entryDate.year(),entryDate.month(),entryDate.day(),hours,minutes,0);
return mDiveTime;
}
inline
const SystemTime &DiveTime::getTime(void)const
{
return mDiveTime;
}
#endif