You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1459 lines
65 KiB
C++
1459 lines
65 KiB
C++
// XTPCalendarControlPaintManager.h: interface for the CXTPCalendarControlPaintManager class.
|
|
//
|
|
// This file is a part of the XTREME CALENDAR MFC class library.
|
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
|
//
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
|
//
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
|
// SINGLE COMPUTER.
|
|
//
|
|
// CONTACT INFORMATION:
|
|
// support@codejock.com
|
|
// http://www.codejock.com
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#if !defined(_XTPCALENDARPAINTMANAGER_H__)
|
|
#define _XTPCALENDARPAINTMANAGER_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
class CXTPCalendarTimeLineViewTimeScale;
|
|
class CXTPCalendarTimeLineViewGroup;
|
|
class CXTPCalendarTimeLineViewEvent;
|
|
class CXTPCalendarTimeLineView;
|
|
class CXTPResourceImage;
|
|
class CXTPCalendarControl;
|
|
class CXTPCalendarDayView;
|
|
class CXTPCalendarDayViewDay;
|
|
class CXTPCalendarDayViewGroup;
|
|
class CXTPCalendarMonthView;
|
|
class CXTPCalendarWeekView;
|
|
class CXTPCalendarDayViewEvent;
|
|
class CXTPCalendarMonthViewEvent;
|
|
class CXTPCalendarWeekViewEvent;
|
|
class CXTPCalendarViewEvent;
|
|
class CXTPCalendarDayViewTimeScale;
|
|
class CXTPCalendarFlagsSet_imp;
|
|
class CXTPCalendarViewPartBrushValue;
|
|
|
|
struct XTP_CALENDAR_DAYVIEWCELL_PARAMS;
|
|
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This helper macro is used to declare paint manager drawing parts.
|
|
// <b>theClass</b> - Part name.
|
|
// <b>parentClass</b> - Parent part name.
|
|
// There are two paint manager methods available to access declared
|
|
// part object:
|
|
// <b> CPartName* GetPartName(); </b>
|
|
// <b> void SetPartName(CPartName* pPart); </b>
|
|
// Where PartName is the name of the declared part.
|
|
//
|
|
// Example:
|
|
// <code>
|
|
// declaration in the paint manager class
|
|
// BEGIN_VIEW_PART(PartClass1, ParentPartClass1)
|
|
// ...
|
|
// END_VIEW_PART(PartClass1)
|
|
//
|
|
// // in the implementation
|
|
// CPaintManagerClassName::CPartClass1* pPart1 = pPainManObj->GetPartClass1();
|
|
// </code>
|
|
// See Also: END_VIEW_PART, CXTPCalendarPaintManager
|
|
//===========================================================================
|
|
#define BEGIN_VIEW_PART(theClass, parentClass)
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#undef BEGIN_VIEW_PART
|
|
#define BEGIN_VIEW_PART(theClass, parentClass)\
|
|
class C##theClass : public C##parentClass\
|
|
{\
|
|
public:\
|
|
typedef C##parentClass TBase; \
|
|
C##theClass(CXTPCalendarViewPart* pParentPart = NULL)\
|
|
: C##parentClass(pParentPart)\
|
|
{\
|
|
_Init(); \
|
|
}
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This helper macro is used to declare paint manager drawing parts.
|
|
// theClass - Part name.
|
|
//
|
|
// See Also: BEGIN_VIEW_PART, CXTPCalendarPaintManager
|
|
//===========================================================================
|
|
#define END_VIEW_PART(theClass)
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#undef END_VIEW_PART
|
|
#define END_VIEW_PART(theClass)\
|
|
};\
|
|
friend class C##theClass;\
|
|
protected:\
|
|
C##theClass* m_p##theClass;\
|
|
public:\
|
|
C##theClass* Get##theClass() const {\
|
|
return m_p##theClass;\
|
|
}\
|
|
void Set##theClass(C##theClass* p##theClass)\
|
|
{\
|
|
POSITION pos = m_lstViewParts.Find(m_p##theClass);\
|
|
ASSERT(pos);\
|
|
m_lstViewParts.RemoveAt(pos);\
|
|
delete m_p##theClass;\
|
|
m_p##theClass = p##theClass;\
|
|
m_lstViewParts.AddTail(p##theClass);\
|
|
p##theClass->m_pPaintManager = this;\
|
|
}
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CXTPCalendarPaintManager command target
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Utility class, handles most of the drawing activities.
|
|
// Remarks:
|
|
// It stores all settings, needed by control to perform drawing operations :
|
|
// fonts, colors, styles for all others classes of control. It also implements
|
|
// all functions for drawing typical graphical primitives, functions that
|
|
// directly work with device context.
|
|
// Can be overridden to provide another look and feel for the control.
|
|
// Thus, you have an easy way to change the "skin" of your control. Just provide
|
|
// your own implementation of CXTPCalendarControlPaintManager and don't
|
|
// touch the functionality of any of the other control classes.
|
|
//
|
|
// Create a CXTPCalendarControlPaintManager by calling its constructor.
|
|
// Furthermore, you can call get and set functions to change
|
|
// settings as needed.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPCalendarPaintManager : public CXTPCmdTarget
|
|
{
|
|
friend class CXTPCalendarViewPart;
|
|
public:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Paint manager's ControlPart is used as parent for the
|
|
// other parts of the control.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(ControlPart, XTPCalendarViewPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// Performs refreshing of graphical related parameters from
|
|
// system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics()
|
|
{
|
|
m_clrTextColor.SetStandardValue(m_pPaintManager->m_clrButtonFaceText);
|
|
m_clrBackground.SetStandardValue(m_pPaintManager->m_clrButtonFace);
|
|
|
|
LOGFONT lfIcon;
|
|
VERIFY(m_pPaintManager->GetIconLogFont(&lfIcon));
|
|
|
|
m_fntText.SetStandardValue(&lfIcon);
|
|
}
|
|
END_VIEW_PART(ControlPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
//## Day View related drawing.
|
|
//-----------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw the time scale header,
|
|
// 'Now' line, and the expand signs for the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewTimeScaleHeaderPart, XTPCalendarViewPart)
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the time scale header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pView - A CXTPCalendarDayView pointer that contains the Day
|
|
// View object.
|
|
// rc - The time scale header's bounding rectangle.
|
|
// strText - A CString object that contains the header text.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayView* pView, CRect rc, CString strText);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the 'Now' line.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pView - A CXTPCalendarDayView pointer to the Day View object.
|
|
// rc - A CRect that contains the Time scale bounding rectangle.
|
|
// y - An int that contains the 'Now' line position.
|
|
// bDrawBk - If FALSE, then draw only the line. If TRUE,
|
|
// then draw the line and the gradient fill.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawNowLine(CDC* pDC, CXTPCalendarDayView* pView, CRect rc,
|
|
int y, BOOL bDrawBk = FALSE);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw expand signs.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pView - A CXTPCalendarDayView pointer to the Day View object.
|
|
// rcTSHours - A CRect that contains the Time scale hours rectangle.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawExpandSigns(CDC* pDC, CXTPCalendarDayView* pView, const CRect& rcTSHours);
|
|
END_VIEW_PART(DayViewTimeScaleHeaderPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw time scale time cells
|
|
// for the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewTimeScaleCellPart, DayViewTimeScaleHeaderPart)
|
|
CXTPCalendarViewPartFontValue m_fntTimeText; // Time text font.
|
|
int m_nHourWidth; // Width of hour part of the text in pixels.
|
|
int m_nMinWidth; // Width of minutes (am/pm) part of the text in pixels.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to refresh the graphical
|
|
// related parameters using system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to adjust the time text font size.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rcCell - A CRect object that contains the time scale hour cell
|
|
// bounding rectangle.
|
|
//-------------------------------------------------------------------
|
|
void AdjustTimeFont(CDC* pDC, CRect rcCell);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to adjust the time text font size.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// strHour - A CString object that contains the Hour text.
|
|
// strMin - A CString object that contains the Minutes text.
|
|
// nHourHeight - A hour big text height.
|
|
// nWidth - An int that returns the width of time scale with
|
|
// provided hour and minutes texts.
|
|
//-------------------------------------------------------------------
|
|
void CalcWidth(CDC* pDC, const CString& strHour, const CString& strMin,
|
|
int nHourHeight, int& nWidth);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the hour cell.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rc - A CRect object that contains the time scale
|
|
// hour cell bounding rectangle.
|
|
// strText - A CString object that contains the time text.
|
|
// bFillBackground - A BOOL. If TRUE, then fill the background before drawing.
|
|
// If FALSE, then do not fill the background before drawing.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawHourCell(CDC* pDC, CRect rc, CString strText, BOOL bFillBackground = TRUE);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the big hour cell.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rc - A CRect object that contains the time scale
|
|
// hour cell bounding rectangle.
|
|
// strHour - A CString object that contains the Hour text.
|
|
// strMin - A CString object that contains the Minutes text.
|
|
// nRowPerHour - An int that contains the Rows per hour.
|
|
// bFillBackground - A BOOL. If TRUE, then fill the background before drawing.
|
|
// If FALSE, then do not fill the background before drawing.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawBigHourCell(CDC* pDC, CRect rc, CString strHour, CString strMin,
|
|
int nRowPerHour, BOOL bFillBackground = TRUE);
|
|
END_VIEW_PART(DayViewTimeScaleCellPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used as the base class for the parts
|
|
// which draw different kinds of no all-day-cells (work/non-work)
|
|
// for the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewCellPart, XTPCalendarViewPart)
|
|
CXTPPaintManagerColor m_clrBackgroundSlave; //Background secondary color.
|
|
CXTPPaintManagerColor m_clrShadow; // Cell background color.
|
|
CXTPPaintManagerColor m_clrHour; // Cell border color.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to fill out cell parameters with
|
|
// default values.
|
|
// Parameters:
|
|
// pViewGroup - [in] A CXTPCalendarDayViewGroup pointer to the Day View Group object.
|
|
// rCellParams - [in, out] A XTP_CALENDAR_DAYVIEWCELL_PARAMS object that contains
|
|
// the cell's parameters.
|
|
//-------------------------------------------------------------------
|
|
virtual void GetParams(CXTPCalendarDayViewGroup* pViewGroup, XTP_CALENDAR_DAYVIEWCELL_PARAMS* rCellParams);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the day view with no
|
|
// all-day-cells.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewGroup - A CXTPCalendarDayViewGroup pointer to the Day View Group object.
|
|
// rc - A CRect object that contains the cell's bounding rectangle.
|
|
// cellParams - A XTP_CALENDAR_DAYVIEWCELL_PARAMS object that contains
|
|
// the cell's parameters.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayViewGroup* pViewGroup,
|
|
CRect rc, const XTP_CALENDAR_DAYVIEWCELL_PARAMS& cellParams);
|
|
END_VIEW_PART(DayViewCellPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw a day view that contains
|
|
// no all day work time cells.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewWorkCellPart, DayViewCellPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to perform the refreshing of
|
|
// graphical related parameters from system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
END_VIEW_PART(DayViewWorkCellPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw "no all day non-work"
|
|
// time cells for the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewNonworkCellPart, DayViewCellPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to perform refreshing of
|
|
// graphical related parameters from system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
END_VIEW_PART(DayViewNonworkCellPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw days headers for
|
|
// the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayMonthViewHeaderPart, XTPCalendarViewPart)
|
|
CXTPPaintManagerColor m_clrTopLeftBorder; // Top and Left borders color.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to perform refreshing of
|
|
// graphical related parameters from system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics()
|
|
{
|
|
m_clrTopLeftBorder.SetStandardValue(RGB(255, 255, 255));
|
|
}
|
|
END_VIEW_PART(DayMonthViewHeaderPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw days headers for
|
|
// the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewHeaderPart, DayMonthViewHeaderPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the day header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewDay - A CXTPCalendarDayViewDay pointer to the Day View
|
|
// object.
|
|
// rc - A CRect object that contains the coordinates of
|
|
// the Header's bounding rectangle.
|
|
// strText - A CString object that contains the Header text.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayViewDay* pViewDay, CRect rc,
|
|
CString strText);
|
|
END_VIEW_PART(DayViewHeaderPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw Groups headers for
|
|
// the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewGroupHeaderPart, DayMonthViewHeaderPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the day header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewGroup - A CXTPCalendarDayViewGroup pointer to the Group
|
|
// object.
|
|
// rc - A CRect object that contains the coordinates of
|
|
// the Header's bounding rectangle.
|
|
// strText - A CString object that contains the Header text.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayViewGroup* pViewGroup,
|
|
CRect rc, CString strText);
|
|
END_VIEW_PART(DayViewGroupHeaderPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw all day events area for
|
|
// the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewAllDayEventsPart, XTPCalendarViewPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member functions is used to perform refreshing of graphical
|
|
// related parameters from system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics()
|
|
{
|
|
m_clrBackground.SetStandardValue(m_pPaintManager->m_clr3DShadow);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the all-day events area.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewGroup - A CXTPCalendarDayViewGroup pointer to the Group object.
|
|
// rc - A CRect object that contains the all-day events
|
|
// area bounding rectangle coordinates.
|
|
// bSelected - A BOOL. TRUE if the draw area is selected. FALSE otherwise.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayViewGroup* pViewGroup,
|
|
CRect rc, BOOL bSelected);
|
|
END_VIEW_PART(DayViewAllDayEventsPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw all day events scroll buttons if there are too many
|
|
// all day events.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewAllDayEventScrollIconsPart, XTPCalendarViewPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw scroll icons in all day events area.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewGroup - A CXTPCalendarDayViewGroup pointer to the Group object.
|
|
// bDrawUp - selects show\hide up scroll icon
|
|
// bDrawDown - selects show\hide down scroll icon
|
|
// rcIconUp - scroll up icon area
|
|
// rcIconDown - scroll down icon area
|
|
// bHighlightUp - selects if draw the icon in highlighted color
|
|
// bHighlightDown - selects if draw the icon in highlighted color
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayViewGroup* pViewGroup, BOOL bDrawUp, BOOL bDrawDown,
|
|
const CRect& rcIconUp, const CRect& rcIconDown, BOOL bHighlightUp, BOOL bHighlightDown);
|
|
END_VIEW_PART(DayViewAllDayEventScrollIconsPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw events for
|
|
// the Day View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(DayViewEventPart, XTPCalendarViewPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// Performs refreshing of graphical related parameters from
|
|
// system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics()
|
|
{
|
|
m_clrBackground.SetStandardValue(RGB(255, 255, 255));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw an event.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewEvent - A CXTPCalendarDayViewEvent pointer to the Day
|
|
// Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarDayViewEvent* pViewEvent);
|
|
END_VIEW_PART(DayViewEventPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
//## Month View related drawing
|
|
//-----------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw days grid and to fill
|
|
// days cells background for the Month View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(MonthViewGridPart, XTPCalendarViewPart)
|
|
CXTPPaintManagerColor m_clrBackground2; // Second background color which is used to fill days background.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// Performs refreshing of graphical related parameters from
|
|
// system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the days grid and to fill
|
|
// the days cells background.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pMonthView - A CXTPCalendarMonthView pointer to the Month View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDrawGrid(CDC* pDC, CXTPCalendarMonthView* pMonthView);
|
|
END_VIEW_PART(MonthViewGridPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw week days headers for
|
|
// the Month View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(MonthViewHeaderPart, DayMonthViewHeaderPart)
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the week day header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pMonthView - A CXTPCalendarMonthView pointer to the Month
|
|
// View object.
|
|
// rc - A CRect object that contains the Week Day header's
|
|
// bounding rectangle coordinates.
|
|
// nCollIndex - An int that contains the Week Day column index in the grid.
|
|
// strText - A CString object that contains the formatted Week Day name.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarMonthView* pMonthView,
|
|
CRect rc, int nCollIndex, CString strText);
|
|
END_VIEW_PART(MonthViewHeaderPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw events and day dates
|
|
// for the Month View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(MonthViewEventPart, XTPCalendarViewPart)
|
|
COLORREF m_clrTextHighLightColor; // Text color for the selected event.
|
|
COLORREF m_clrMultiDayEventFrameColor; // Multi-day event frame color.
|
|
COLORREF m_clrClassicUnderline; // Underline color for today day.
|
|
|
|
CXTPPaintManagerColorGradient m_grclrClassicSelDay;// Gradient color for today day.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// Performs refreshing of graphical related parameters from
|
|
// system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics()
|
|
{
|
|
m_clrTextHighLightColor = RGB(255, 255, 255);
|
|
m_clrMultiDayEventFrameColor = RGB(0, 0, 0);
|
|
m_clrBackground.SetStandardValue(RGB(255, 255, 213));
|
|
m_grclrClassicSelDay.SetStandardValue(m_clrBackground, RGB(217, 214, 202));
|
|
m_clrClassicUnderline = RGB(10, 36, 106);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw an event.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewEvent - A CXTPCalendarMonthViewEvent pointer to the Month Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDrawEvent(CDC* pDC, CXTPCalendarMonthViewEvent* pViewEvent);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the week day header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rc - A CRect object that contains the Day header's bounding
|
|
// rectangle coordinates.
|
|
// bToday - TRUE for today day, otherwise FALSE.
|
|
// bSelected - Is day selected.
|
|
// strText - Formatted day date string.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDrawDayDate(CDC* pDC, CRect rc, BOOL bToday,
|
|
BOOL bSelected, CString strText);
|
|
END_VIEW_PART(MonthViewEventPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
//## Week view related drawing
|
|
//-----------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw week days grid and
|
|
// headers for the Week View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(WeekViewPart, XTPCalendarViewPart)
|
|
COLORREF m_clrTextHighLightColor; // Text color for the selected day header.
|
|
COLORREF m_clrTextNormalColor; // Text color for the day header and some other elements.
|
|
COLORREF m_clrHeaderBottomLine; // Text color for the day header bottom line.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// Performs refreshing of graphical related parameters from
|
|
// system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw an event.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pWeekView - A CXTPCalendarWeekView pointer to the Week Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarWeekView* pWeekView);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the day header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rcDay - A CRect object that contains the day's bounding
|
|
// rectangle coordinates.
|
|
// nHeaderHeight - An int that contains the header height value.
|
|
// strHeader - A CString object that contains the header text.
|
|
// bIsCurrent - A BOOL. TRUE if this is the current day for today. FALSE otherwise.
|
|
// bIsSelected - A BOOL. TRUE if the day is selected. FALSE otherwise.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawDayHeader(CDC* pDC, CRect rcDay, int nHeaderHeight, CString strHeader,
|
|
BOOL bIsCurrent = FALSE, BOOL bIsSelected = FALSE);
|
|
END_VIEW_PART(WeekViewPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This paint manager part is used to draw events for the
|
|
// Week View.
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(WeekViewEventPart, XTPCalendarViewPart)
|
|
COLORREF m_clrTextHighLightColor; // Text color for the selected event.
|
|
COLORREF m_clrTextNormalColor; // Text color for the event.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to perform refreshing of
|
|
// graphical related parameters from system settings.
|
|
//-------------------------------------------------------------------
|
|
virtual void RefreshMetrics()
|
|
{
|
|
m_clrBackground.SetStandardValue(m_pPaintManager->GetWeekViewPart()->GetBackgroundColor()); // RGB(255, 255, 213));
|
|
m_clrTextColor.SetStandardValue(m_pPaintManager->m_clrButtonFaceText);
|
|
m_clrTextHighLightColor = RGB(255, 255, 255);
|
|
m_clrTextNormalColor = m_pPaintManager->m_clrButtonFaceText;
|
|
|
|
LOGFONT lfIcon;
|
|
VERIFY(m_pPaintManager->GetIconLogFont(&lfIcon));
|
|
m_fntText.SetStandardValue(&lfIcon);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the specified event.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pWeekViewEvent - A CXTPCalendarWeekViewEvent pointer to the Week Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC, CXTPCalendarWeekViewEvent* pWeekViewEvent);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member functions is used to draw the event border.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rcView - A CRect that contains the day view's bounding rectangle coordinates.
|
|
// pWeekViewEvent - A CXTPCalendarWeekViewEvent pointer to the Week Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawBorder(CDC* pDC, CRect rcView, CXTPCalendarWeekViewEvent* pWeekViewEvent);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the event's times texts or icons.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pWeekViewEvent - A CXTPCalendarWeekViewEvent pointer to the Week Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual int DrawTimes(CDC* pDC, CXTPCalendarWeekViewEvent* pWeekViewEvent);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the event subject.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pWeekViewEvent - A CXTPCalendarWeekViewEvent pointer to the Week Event View object.
|
|
//-------------------------------------------------------------------
|
|
virtual void DrawSubj(CDC* pDC, CXTPCalendarWeekViewEvent* pWeekViewEvent);
|
|
END_VIEW_PART(WeekViewEventPart)
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: This paint manager part is used to draw time scale for the
|
|
// Time Line view
|
|
//-----------------------------------------------------------------------
|
|
BEGIN_VIEW_PART(TimeLineViewTimeScalePart_Day, XTPCalendarTimeLineViewTimeScalePart)
|
|
virtual void Draw(CDC* pDC, const CRect& rcRect, CXTPCalendarTimeLineView* pView);
|
|
END_VIEW_PART(TimeLineViewTimeScalePart_Day)
|
|
|
|
BEGIN_VIEW_PART(TimeLineViewTimeScalePart_Week, XTPCalendarTimeLineViewTimeScalePart)
|
|
virtual void Draw(CDC* pDC, const CRect& rcRect, CXTPCalendarTimeLineView* pView);
|
|
END_VIEW_PART(TimeLineViewTimeScalePart_Week)
|
|
|
|
BEGIN_VIEW_PART(TimeLineViewTimeScalePart_Month, XTPCalendarTimeLineViewTimeScalePart)
|
|
virtual void Draw(CDC* pDC, const CRect& rcRect, CXTPCalendarTimeLineView* pView);
|
|
END_VIEW_PART(TimeLineViewTimeScalePart_Month)
|
|
|
|
BEGIN_VIEW_PART(TimeLineViewTimeScalePart_WorkWeek, XTPCalendarTimeLineViewTimeScalePart)
|
|
virtual void Draw(CDC* pDC, const CRect& rcRect, CXTPCalendarTimeLineView* pView);
|
|
END_VIEW_PART(TimeLineViewTimeScalePart_WorkWeek)
|
|
|
|
BEGIN_VIEW_PART(TimeLineViewPart, XTPCalendarTimeLineViewPart)
|
|
|
|
CXTPPaintManagerColor m_clrEventBar; //Event bar color.
|
|
CXTPPaintManagerColor m_clrEventBarLine; //Event bar line color.
|
|
|
|
CXTPPaintManagerColor m_clrTimeScaleBackground; //Time scale background color.
|
|
CXTPPaintManagerColor m_clrTimeScaleHightlite; //Time scale highlight color.
|
|
CXTPPaintManagerColor m_clrTimeScaleText; //The time scale text color.
|
|
|
|
CXTPPaintManagerColor m_clrSelectedBackground; //The selected background color.
|
|
CXTPPaintManagerColor m_clrSelectedText; //The selected text color.
|
|
|
|
CXTPPaintManagerColor m_clrBackground; //The background color.
|
|
CXTPPaintManagerColor m_clrText; //The text color.
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to draw the time line view group.
|
|
// Parameters:
|
|
// pDC - The device context.
|
|
// rcRect - Rectangular drawing area.
|
|
// pGroup - The calendar time line view group.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawGroup(CDC* pDC, const CRect& rcRect, CXTPCalendarTimeLineViewGroup* pGroup);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the time line view event size.
|
|
// Parameters:
|
|
// pDC - The device context.
|
|
// pEventView - The event view.
|
|
// Returns:
|
|
// A CSize object denoting the size of the time line view event.
|
|
//-----------------------------------------------------------------------
|
|
virtual CSize CalcEventSize(CDC* c, CXTPCalendarTimeLineViewEvent* pEventView);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to draw the event.
|
|
// Parameters:
|
|
// pDC - The device context.
|
|
// rcEvents - The rectangular bounds.
|
|
// pEventView - The event view.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawEvent(CDC* pDC, const CRect& rcEvents, CXTPCalendarTimeLineViewEvent* pEventView);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to refresh the metrics
|
|
//-----------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
//CBitmap m_bmpEvent;
|
|
CXTPResourceImage* m_pimgEvent; //The event image.
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to do the initializations
|
|
//-----------------------------------------------------------------------
|
|
virtual void _Init();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys the CTimeLineViewPart object, does the cleanup.
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CTimeLineViewPart();
|
|
|
|
END_VIEW_PART(TimeLineViewPart)
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Default paint manager constructor.
|
|
// Remarks:
|
|
// Handles initial initialization.
|
|
// See Also: RefreshMetrics()
|
|
//-----------------------------------------------------------------------
|
|
CXTPCalendarPaintManager();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Default paint manager destructor.
|
|
// Remarks:
|
|
// Handles member items deallocation.
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPCalendarPaintManager();
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain current paint theme.
|
|
// Returns:
|
|
// A paint theme ID from enum XTPCalendarTheme.
|
|
//-----------------------------------------------------------------------
|
|
virtual XTPCalendarTheme GetPaintTheme() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to set current paint theme.
|
|
// Parameters:
|
|
// ePaintTheme - A paint theme ID from enum XTPCalendarTheme.
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetPaintTheme(XTPCalendarTheme ePaintTheme);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to initialize all drawing defaults.
|
|
// Remarks:
|
|
// Initializes all drawings defaults (fonts, colors, etc.).
|
|
// most of defaults are system defaults.
|
|
//-----------------------------------------------------------------------
|
|
virtual void RefreshMetrics();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw an arbitrary line.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// xPos - An int that contains the Horizontal coordinate of the beginning of line.
|
|
// yPos - An int that contains the Vertical coordinate of the beginning of line.
|
|
// cx - An int that contains the Horizontal coordinate of the end of line.
|
|
// cy - An int that contains the Vertical coordinate of the end of line.
|
|
// Remarks:
|
|
// This member function is used anywhere a simple arbitrary line is needed.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawLine(CDC* pDC, int xPos, int yPos, int cx, int cy);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw a Horizontal line.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// xPos - An int that contains the Horizontal coordinate of the beginning of the line.
|
|
// yPos - An int that contains the Vertical coordinate of the beginning of the line.
|
|
// cx - An int that contains the Length of the line.
|
|
// Remarks:
|
|
// This member function is used anywhere a simple horizontal line is needed.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawHorizontalLine(CDC* pDC, int xPos, int yPos, int cx);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw a Vertical line.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// xPos - An int that contains the Horizontal coordinates of the beginning of the line.
|
|
// yPos - An int that contains the Vertical coordinates of the beginning of the line.
|
|
// cy - An int that contains the Length of the line.
|
|
// pPen - A CPen pointer to the pen object used to draw the line.
|
|
// Remarks:
|
|
// This member function is used anywhere a simple vertical line is needed.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawVerticalLine(CDC* pDC, int xPos, int yPos, int cy);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the time as clock.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// dtClockTime - A COleDateTime object that contains the time to draw.
|
|
// rcView - A CRect object that contains the bounding rectangle
|
|
// coordinates of where the clock is drawn.
|
|
// clrBackground - A COLORREF object that contains the background color of the clock.
|
|
// cafAlign - A XTPCalendarClockAlignFlags alignment flag, appropriate values are determined by
|
|
// enum XTPCalendarClockAlignFlags.
|
|
// Remarks:
|
|
// This member function is used anywhere a time clock is needed.
|
|
// Returns:
|
|
// Returns the size (width) of the square where clock icon was drawn inside.
|
|
// Zero when clock icon wasn't successfully drawn.
|
|
// See Also: enum XTPCalendarClockAlignFlags determines alignment flags.
|
|
//-----------------------------------------------------------------------
|
|
virtual int DrawClock(CDC* pDC, COleDateTime dtClockTime, CRect rcView, COLORREF clrBackground, XTPCalendarClockAlignFlags cafAlign);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw a bitmap from the provided ImageList.
|
|
// Parameters:
|
|
// pImageList - A CImageList pointer to the ImageList.
|
|
// pDC - Pointer to a valid device context.
|
|
// rcView - A CRect object that contains the bounding rectangle
|
|
// coordinates to draw the bitmap.
|
|
// iIcon - An int that contains the image index.
|
|
// uFlags - Additional drawing options. Should be 0 or DT_VCENTER.
|
|
// Remarks:
|
|
// Use this function to draw a bitmap in the view's bounding rectangle.
|
|
// If the provided bounding rectangle is too small, then the bitmap is not drawn.
|
|
// Returns:
|
|
// An int that contains the width of the drawn bitmap.
|
|
//-----------------------------------------------------------------------
|
|
virtual int DrawBitmap(CImageList* pImageList, CDC* pDC, CRect rcView,
|
|
int iIcon, UINT uFlags = 0);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the bitmap using its resource id.
|
|
// Parameters:
|
|
// nIDResource - A UINT that contains the integer resource id of the bitmap.
|
|
// pDC - Pointer to a valid device context.
|
|
// rcBitmap - A CRect that contains the bounding rectangle coordinates
|
|
// used to draw the bitmap.
|
|
// Remarks:
|
|
// Use this function to draw a bitmap in the view's bounding rectangle.
|
|
// If the provided bounding rectangle is too small, then the bitmap is not drawn.
|
|
// Returns:
|
|
// An int that contains the width of the drawn bitmap.
|
|
//-----------------------------------------------------------------------
|
|
virtual int DrawBitmap(UINT nIDResource, CDC* pDC, CRect rcBitmap);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the Glyph symbol using special
|
|
// font.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rc - A CRect that contains the bounding rectangle coordinates
|
|
// used to draw the symbol.
|
|
// ch - A char symbol (from the font) to draw.
|
|
// Remarks:
|
|
// Use this function to draw the Glyph symbol in the center
|
|
// of the provided bounding rectangle.
|
|
// Returns:
|
|
// An int that contains the width of the drawn symbol.
|
|
//-----------------------------------------------------------------------
|
|
virtual int DrawIconChar(CDC* pDC, CRect rc, TCHAR ch);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain the horizontal and vertical
|
|
// size of the bitmap.
|
|
// Parameters:
|
|
// nIDResource : A UINT that contains the integer resource id of the
|
|
// bitmap.
|
|
// Returns:
|
|
// A CSize object that contains the size of the bitmap.
|
|
// ----------------------------------------------------------------------
|
|
virtual CSize GetBitmapSize(UINT nIDResource);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain the horizontal and vertical
|
|
// size of the Expand Sign bitmap.
|
|
// Returns:
|
|
// A CSize object that contains the bitmap size.
|
|
//-----------------------------------------------------------------------
|
|
virtual const CSize GetExpandSignSize();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain the horizontal and vertical
|
|
// size of the Clock.
|
|
// Returns:
|
|
// A CSize object that contains the bitmap size.
|
|
//-----------------------------------------------------------------------
|
|
virtual CSize GetClockSize();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to set the CXTPCalendarControl object
|
|
// for the CXTPCalendarPaintManager.
|
|
// Parameters:
|
|
// pControl - A CXTPCalendarControl pointer to the CXTPCalendarControl object
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetControl(CXTPCalendarControl* pControl);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to draw the shadow regions around the
|
|
// rectangle.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rcRect - A CRect that contains the rectangle coordinates of where
|
|
// to draw the shadow regions.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawShadow(CDC* pDC, const CRect& rcRect);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to draw icons corresponding to the event
|
|
// state.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// pViewEvent - A CXTPCalendarViewEvent pointer to the event view object.
|
|
//-----------------------------------------------------------------------
|
|
virtual int DrawIcons(CDC* pDC, CXTPCalendarViewEvent* pViewEvent);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to draw the Header.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rcHeader - A CRect that contains the bounding rectangle coordinates
|
|
// used to draw the header.
|
|
// bIsSelected - A BOOL. TRUE if the header is selected. FALSE otherwise.
|
|
// bIsCurrent - A BOOL. TRUE if the header represents the current time.
|
|
// FALSE otherwise.
|
|
// grclr - A CXTPPaintManagerColorGradient object that specifies the Gradient color.
|
|
// clrUnderLineHdr - A COLORREF object that specifies the color of header's underline.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawHeader(CDC* pDC, CRect& rcHeader, BOOL bIsSelected,
|
|
BOOL bIsCurrent);
|
|
virtual void DrawHeader(CDC* pDC, CRect& rcHeader, BOOL bIsSelected,
|
|
BOOL bIsCurrent, const CXTPPaintManagerColorGradient& grclr, COLORREF clrUnderLineHdr); // <combine CXTPCalendarPaintManager::DrawHeader@CDC*@CRect&@BOOL@BOOL>
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to fill the area using the corresponding
|
|
// busy color or pattern.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// rcRect - A CRect object that contains the rectangle coordinates
|
|
// used to fill the corresponding busy color or pattern.
|
|
// eBusyStatus - An int that contains the Event Busy Status value from
|
|
// enum XTPCalendarEventBusyStatus.
|
|
// rgnBusy - A CRgn that contains the region area used to fill with the
|
|
// corresponding busy color or pattern and draw the region
|
|
// border using m_clrWindowText color.
|
|
// See Also: enum XTPCalendarEventBusyStatus determines Event Busy Status,
|
|
// CRgn.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawBusyStatus(CDC* pDC, CRect& rcRect, int eBusyStatus);
|
|
virtual void DrawBusyStatus(CDC* pDC, CRgn& rgnBusy, int eBusyStatus); // <combine CXTPCalendarPaintManager::DrawBusyStatus@CDC*@CRect&@int>
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to enable a new theme.
|
|
// Parameters:
|
|
// bEnableTheme - A BOOL. TRUE if the theme enabled. FALSE otherwise.
|
|
//-----------------------------------------------------------------------
|
|
void EnableTheme(BOOL bEnableTheme);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain the status of the theme.
|
|
// Returns:
|
|
// A BOOL. TRUE if theme is enabled. FALSE otherwise.
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsThemeEnabled();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine the current Windows XP
|
|
// theme that is in use.
|
|
// Returns:
|
|
// A XTPCurrentSystemTheme enumeration that represents the
|
|
// current Windows theme in use, can be one of the following
|
|
// values:
|
|
// xtpSystemThemeUnknown - No known theme in use, or Windows Classic theme.
|
|
// xtpSystemThemeBlue - Blue theme in use.
|
|
// xtpSystemThemeOlive - Olive theme in use.
|
|
// xtpSystemThemeSilver - Silver theme in use.
|
|
//-----------------------------------------------------------------------
|
|
XTPCurrentSystemTheme GetCurrentSystemTheme();
|
|
|
|
public:
|
|
//===========================================================================
|
|
// Summary:
|
|
// This is a helper class which handles shadows drawing (for events, etc)
|
|
//===========================================================================
|
|
class CXTPShadowDrawer
|
|
{
|
|
public:
|
|
//===========================================================================
|
|
// Summary:
|
|
// Constructs the object and initializes.
|
|
// Parameters:
|
|
// pDC - A pointer to the device context.
|
|
// dMaxAlpha - The maximum value for the alpha channel.
|
|
//===========================================================================
|
|
CXTPShadowDrawer(CDC* pDC, double dMaxAlpha);
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Destroy the CXTPShadowDrawer and does the cleanups.
|
|
//===========================================================================
|
|
virtual ~CXTPShadowDrawer();
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Call this function to get the alpha pixel.
|
|
// Parameter:
|
|
// crPixel - The color of the pixel.
|
|
// i - The alpha value.
|
|
// Returns:
|
|
// The alpha pixel value.
|
|
//===========================================================================
|
|
static COLORREF AlphaPixel(const COLORREF crPixel, const UINT i);
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Call this function to check whether the input is within the limit of
|
|
// 0 and 255.
|
|
// Parameter:
|
|
// iValue - The input.
|
|
// Returns:
|
|
// The returns 0 if the input is less than 0 and 255 if it is greater than
|
|
// 255, else returns the value.
|
|
//===========================================================================
|
|
static int CheckValue(int iValue);
|
|
|
|
enum XTPShadowPart
|
|
{
|
|
// Regular theme - Office 2003
|
|
xtpShadowLR = 0,
|
|
xtpShadowTB = 1,
|
|
xtpShadowTR = 2,
|
|
xtpShadowBR = 3,
|
|
xtpShadowBL = 4,
|
|
// Office 2007 Theme
|
|
xtpShadow2007Right = 5,
|
|
xtpShadow2007Bottom = 6,
|
|
xtpShadow2007TopRight = 7,
|
|
xtpShadow2007BottomRight= 8,
|
|
xtpShadow2007BottomLeft = 9
|
|
|
|
};
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Generic drawing of the shadow rectangle part
|
|
// Parameters:
|
|
// rcShadow - rectangle to draw
|
|
// part - XTPShadowPart
|
|
//-----------------------------------------------------------------------
|
|
void DrawShadowRectPart(const CRect& rcShadow, const XTPShadowPart part);
|
|
|
|
// Methods for Office 2003 theme
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadowLR(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadowTB(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadowTR(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadowBR(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadowBL(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
// methods for Office 2007 theme
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadow2007Right(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadow2007Bottom(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadow2007TR(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadow2007BL(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// applied shadow to bitmap
|
|
// Parameters:
|
|
// pBitmap - UINT*
|
|
// ulBitmapWidth - ULONG
|
|
// ulBitmapHeight - ULONG
|
|
//-----------------------------------------------------------------------
|
|
void ApplyShadow2007BR(UINT* pBitmap, const ULONG ulBitmapWidth, const ULONG ulBitmapHeight);
|
|
|
|
protected:
|
|
CDC* m_pDC; // drawing device context
|
|
double m_dMaxAlpha; // maximal shadow alpha grade
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
private:
|
|
CSize m_szExpandSign; // Cached size of the expand sign
|
|
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to add the specified ViewPart object
|
|
// to the parts list.
|
|
// Parameters:
|
|
// pPart - Pointer to a 'View Part' object.
|
|
// Returns:
|
|
// Pointer to a 'View Part' object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPCalendarViewPart* AddViewPart(CXTPCalendarViewPart* pPart);
|
|
|
|
public:
|
|
CXTPPaintManagerColor m_clrButtonFace; // Stores standard Button Face color.
|
|
CXTPPaintManagerColor m_clrButtonFaceText; // Stores standard color to display text.
|
|
CXTPPaintManagerColor m_clrWindow; // Stores standard windows color.
|
|
CXTPPaintManagerColor m_clrWindowText; // Stores standard color to display window text.
|
|
CXTPPaintManagerColor m_clr3DShadow; // Stores standard color to display shadow items.
|
|
CXTPPaintManagerColor m_clrHighlight; // Stores standard color to display highlighted items.
|
|
|
|
CXTPPaintManagerColorGradient m_grclrToday; // Gradient color of today's header.
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set custom brush to draw event busy status.
|
|
// Parameters:
|
|
// nBusyStatus - Busy status value.
|
|
// pBrush - Pointer to a brush object.
|
|
// bAutodeleteBrush - This parameter indicates should be a brush object
|
|
// deleted when destroy or other brush is set.
|
|
// If TRUE - brush object will be deleted automatically.
|
|
// Example:
|
|
// <code>
|
|
//
|
|
// m_wndCalendar.GetPaintManager()->SetBusyStatusBrush(
|
|
// xtpCalendarBusyStatusFree, new CBrush(RGB(240, 255, 250)), TRUE);
|
|
//
|
|
// m_wndCalendar.GetPaintManager()->SetBusyStatusBrush(
|
|
// xtpCalendarBusyStatusTentative, new CBrush(RGB(240, 120, 250)), TRUE);
|
|
//
|
|
// m_wndCalendar.GetPaintManager()->SetBusyStatusBrush(
|
|
// 100, new CBrush(RGB(240, 120, 250)), TRUE);
|
|
//
|
|
// </code>
|
|
//-----------------------------------------------------------------------
|
|
void SetBusyStatusBrush(int nBusyStatus, CBrush* pBrush, BOOL bAutodeleteBrush);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get a brush to draw event busy status.
|
|
// Parameters:
|
|
// nBusyStatus - Busy status value.
|
|
// Returns:
|
|
// Pointer to a brush object.
|
|
//-----------------------------------------------------------------------
|
|
CBrush* GetBusyStatusBrush(int nBusyStatus);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns set of flags which define calendar items
|
|
// to send XTP_NC_CALENDAR_GETITEMTEXT notification.
|
|
// Returns:
|
|
// Set of flags from enums XTPCalendarGetItemText, XTPCalendarGetItemTextEx.
|
|
// See Also:
|
|
// XTPCalendarGetItemText, XTPCalendarGetItemTextEx,
|
|
// SetAskItemTextFlags, CXTPCalendarControl::GetAskItemTextFlags,
|
|
// CXTPCalendarTheme::GetAskItemTextFlags,
|
|
// CXTPCalendarTheme::SetAskItemTextFlags, XTP_NC_CALENDAR_GETITEMTEXT
|
|
//-----------------------------------------------------------------------
|
|
DWORD GetAskItemTextFlags() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to set flags which define calendar items
|
|
// to send XTP_NC_CALENDAR_GETITEMTEXT notification.
|
|
// Parameters:
|
|
// dwFlags - Set of flags from enums XTPCalendarGetItemText,
|
|
// XTPCalendarGetItemTextEx.
|
|
// See Also:
|
|
// XTPCalendarGetItemText, XTPCalendarGetItemTextEx,
|
|
// GetAskItemTextFlags, CXTPCalendarControl::GetAskItemTextFlags,
|
|
// CXTPCalendarTheme::GetAskItemTextFlags,
|
|
// CXTPCalendarTheme::SetAskItemTextFlags, XTP_NC_CALENDAR_GETITEMTEXT
|
|
//-----------------------------------------------------------------------
|
|
void SetAskItemTextFlags(DWORD dwFlags);
|
|
|
|
BOOL GetIconLogFont(LOGFONT* plf);
|
|
|
|
CUIntArray m_arStartCol; //hold start column in each virtual page
|
|
CUIntArray m_arStartRow; //hold start row in each virtual page
|
|
int m_PrintPageWidth; //Print page width.
|
|
|
|
protected:
|
|
|
|
CList<CXTPCalendarViewPart*, CXTPCalendarViewPart*> m_lstViewParts; // Collection to store ViewParts objects.
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: Enumerates types of expand signs drawn on a day view.
|
|
//-----------------------------------------------------------------------
|
|
enum XTPEnumExpandSigns
|
|
{
|
|
idxExpandSignUp = 0, // Expand sign: arrow up
|
|
idxExpandSignDown = 1 // Expand sign: arrow down
|
|
};
|
|
|
|
CImageList m_ilExpandSigns; // Stores standard Expand Signs icons.
|
|
|
|
CImageList m_ilGlyphs; // Stores standard glyphs for displaying events. Used when glyphs font is not installed.
|
|
CFont* m_pGlyphsFont; // Stores standard glyphs font for displaying events.
|
|
|
|
CBitmap m_bmpTentativePattern; // Stores standard bitmap pattern to draw Tentative event busy status.
|
|
CBrush m_brushTentative; // Stores standard brush to draw Tentative event busy status.
|
|
|
|
CXTPCalendarTypedPtrAutoDeleteArray<CPtrArray, CXTPCalendarViewPartBrushValue*>
|
|
m_arBusyStatusBrushes; // Stores customizable brush values to draw Event Busy Status in the Day View.
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: Returns drawing brush value for a specific busy status.
|
|
// Parameters:
|
|
// eBusyStatus - Busy status enumeration.
|
|
// bGrow - Append a new brush value if needed or not.
|
|
// Returns:
|
|
// Pointer to CXTPCalendarViewPartBrushValue array member.
|
|
// See Also:
|
|
// XTPCalendarEventBusyStatus
|
|
//-----------------------------------------------------------------------
|
|
CXTPCalendarViewPartBrushValue* _GetAtGrow_BusyStatusBrushValue(int eBusyStatus, BOOL bGrow);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Set default colors/patterns to fill Busy Status area.
|
|
//-----------------------------------------------------------------------
|
|
virtual void InitBusyStatusDefaultColors();
|
|
|
|
CSize m_szClockRect; // Stores dimensions for a rectangle used to display the time as a clock glyph.
|
|
|
|
CXTPCalendarControl* m_pControl; // Stores a pointer to a CXTPCalendarControl object.
|
|
|
|
BOOL m_bEnableTheme; // True to enable Luna theme.
|
|
COLORREF m_clrUnderLineHdr; // Color of header's underline.
|
|
XTPCurrentSystemTheme m_CurrSystemTheme; // Current theme flag.
|
|
|
|
XTPCalendarTheme m_nPaintTheme; // Store the Paint Theme;
|
|
|
|
DWORD m_dwAskItemTextFlags; // Store flag set to send XTP_NC_CALENDAR_GETITEMTEXT notification.
|
|
|
|
protected:
|
|
};
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
AFX_INLINE XTPCalendarTheme CXTPCalendarPaintManager::GetPaintTheme() const
|
|
{
|
|
return m_nPaintTheme;
|
|
}
|
|
|
|
AFX_INLINE void CXTPCalendarPaintManager::SetPaintTheme(XTPCalendarTheme ePaintTheme)
|
|
{
|
|
m_nPaintTheme = min(xtpCalendarThemeOffice2003, ePaintTheme);
|
|
RefreshMetrics();
|
|
}
|
|
|
|
AFX_INLINE XTPCurrentSystemTheme CXTPCalendarPaintManager::GetCurrentSystemTheme(){
|
|
return m_CurrSystemTheme;
|
|
}
|
|
|
|
AFX_INLINE CSize CXTPCalendarPaintManager::GetClockSize(){
|
|
return m_szClockRect;
|
|
}
|
|
AFX_INLINE BOOL CXTPCalendarPaintManager::IsThemeEnabled(){
|
|
return m_bEnableTheme;
|
|
}
|
|
|
|
AFX_INLINE void CXTPCalendarPaintManager::EnableTheme(BOOL bEnableTheme){
|
|
m_bEnableTheme = bEnableTheme;
|
|
RefreshMetrics();
|
|
}
|
|
|
|
AFX_INLINE DWORD CXTPCalendarPaintManager::GetAskItemTextFlags() const
|
|
{
|
|
return m_dwAskItemTextFlags;
|
|
}
|
|
|
|
AFX_INLINE void CXTPCalendarPaintManager::SetAskItemTextFlags(DWORD dwFlags)
|
|
{
|
|
m_dwAskItemTextFlags = dwFlags;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#endif // !defined(_XTPCALENDARPAINTMANAGER_H__)
|