/********************************************************************
*
* File: fsCCalendarComponent.h
*
* Purpose: Display a given month calendar
*
*********************************************************************/
#ifndef fsCCalendarComponenthdr
#define fsCCalendarComponenthdr
#include <vector>
#include <fsCore/fsPoint.h>
#include <fsCore/fsSColour.h>
#include <fsCore/src/fsCUniqueId.h>
#include "fsIComponent.h"
class fsCEntity;
class fsIFont;
class fsCCalendarComponent : public fsIComponent
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
static fsStr currentDateTime();
protected:
void initialiseFromVariableTableDo(const fsCVariableTable& pVars) override;
static fsIComponent* create(fsCEntity* pParent);
fsCCalendarComponent(fsCEntity* pParent);
virtual ~fsCCalendarComponent();<--- Destructor in derived class
private:
fsPoint dateOfMonthPosGet(fsS32 pDay) const;
fsBool leapYearGet(fsS32 pYear) const;
fsS32 daysInMonthGet(fsS32 pMonth, fsS32 pYear) const;
fsS32 firstDayOfMonthGet(fsS32 pMonth, fsS32 pYear) const;
void thisMonthPrint() const;
void datesOfMonthPrint(const fsPoint& pPos, fsS32 pFirstDayOfMonth, fsS32 pDaysInMonth) const;
void daysOfWeekHeadingsPrint(const fsPoint& pPos) const;
void monthHeadingPrint(const fsPoint& pPos, fsS32 pMonth) const;
void textEntryCreate(const fsStr& pStr, const fsPoint& pPos) const;
std::vector<fsCEntity*> mDayHeadings;
fsPoint mPos;
fsPoint mStride;
fsIFont* mFont;
fsSColour4B mFontColour;
};
#endif