/// <summary>
		/// Initializes a new instance of the DayRenderEventArgs class with default settings
		/// </summary>
		public NuGenDayQueryInfoEventArgs(NuGenDateItem info, DateTime date, NuGenDayState state)
		{
			this.m_info = info;
			this.m_date = date;
			this.m_state = state;
		}
 /// <summary>
 /// Initializes a new instance of the DayRenderEventArgs class with default settings
 /// </summary>
 public NuGenDayQueryInfoEventArgs(NuGenDateItem info, DateTime date, NuGenDayState state)
 {
     this.m_info  = info;
     this.m_date  = date;
     this.m_state = state;
 }
Esempio n. 3
0
		internal void Draw(Graphics e)
		{

			int today = -1;
			string[] selectedDays;

			Brush bgBrush = new SolidBrush(Colors.BackColor1);
			Brush selBrush = new SolidBrush(Color.FromArgb(125, Colors.Selected.BackColor));
			Brush focusBrush = new SolidBrush(Color.FromArgb(125, Colors.Focus.BackColor));
			Pen todayPen = new Pen(Color.FromArgb(150, Calendar.TodayColor), 2);

			try
			{
				if (BackgroundImage != null)
					e.DrawImage(BackgroundImage, Rect);
				else
				{
					if (Colors.GradientMode != NuGenGradientMode.None)
						m_calendar.DrawGradient(e, m_rect, Colors.BackColor1, Colors.BackColor2, Colors.GradientMode);
					else
						e.FillRectangle(bgBrush, m_rect);
				}
				// Draw days

				for (int i = 0; i < 42; i++)
				{

					// only draw days that are visible...
					if ((m_days[i].Rectangle.Height > 0) && (m_days[i].Rectangle.Width > 0))
					{
						// Create new graphics object
						Graphics d = m_calendar.CreateGraphics();
						// Create bitmap..

						Bitmap bmp = new Bitmap(m_days[i].Rectangle.Width, m_days[i].Rectangle.Height, d);
						// link graphics object to bitmap
						d = Graphics.FromImage(bmp);
						NuGenDayRenderEventArgs args = new NuGenDayRenderEventArgs(d, m_days[i].Rectangle, m_days[i].Date, m_days[i].State);
						DayRender(this, args);
						if (!args.OwnerDraw)
						{
							// day is not user drawn
							m_days[i].UserDrawn = false;
							NuGenDateItem dayInfo = new NuGenDateItem();
							dayInfo.Calendar = m_calendar;
							NuGenDayQueryInfoEventArgs info = new NuGenDayQueryInfoEventArgs(dayInfo, m_days[i].Date, m_days[i].State);
							DayQueryInfo(this, info);
							if (!info.OwnerDraw)
								dayInfo = null;
							m_days[i].Draw(e, dayInfo);
							if (dayInfo != null)
								dayInfo.Dispose();
						}
						else
						{
							// Draw user rendered day
							m_days[i].UserDrawn = true;
							e.DrawImage(bmp, m_days[i].Rectangle);
						}

						// Check if day has focus and if focus should be drawn
						if ((m_days[i].State == NuGenDayState.Focus) && (m_calendar.ShowFocus))
						{
							e.FillRectangle(focusBrush, m_days[i].Rectangle);
							ControlPaint.DrawBorder(e, m_days[i].Rectangle, Colors.Focus.Border, BorderStyles.Focus);
						}

						if ((m_days[i].Date == DateTime.Today) && (!args.OwnerDraw))
							today = i;

						d.Dispose();
						bmp.Dispose();
					}
				}

				// check if date is "today" and if it should be marked..
				if ((m_calendar.ShowToday) && (today != -1) &&
					((m_calendar.ShowTrailingDates) || (m_days[today].Date.Month == m_calendar.ActiveMonth.Month)))
				{

					RectangleF dateRect = m_days[today].DateRegion[0].GetBounds(e);

					dateRect.Inflate(5, 5);
					e.DrawEllipse(todayPen, dateRect);


				}

				// Check if a selection exist

				selectedDays = DaysInSelection(NO_AREA);
				if (selectedDays.Length > 0)
				{
					// Check how many selection areas there are
					if (m_selArea.Count <= 1)
					{
						for (int i = 0; i < m_selArea.Count; i++)
						{
							NuGenCalendarSelectionArea area = (NuGenCalendarSelectionArea)m_selArea[i];
							if ((area.Begin != -1) && (area.End != -1))
							{
								// Get Coordinates for selection rectangle

								m_selRight = System.Math.Max(m_days[area.End].Rectangle.Right, m_days[area.Begin].Rectangle.Right);
								m_selLeft = System.Math.Min(m_days[area.End].Rectangle.Left, m_days[area.Begin].Rectangle.Left);
								m_selTop = System.Math.Min(m_days[area.End].Rectangle.Top, m_days[area.Begin].Rectangle.Top);
								m_selBottom = System.Math.Max(m_days[area.End].Rectangle.Bottom, m_days[area.Begin].Rectangle.Bottom);

								// Draw selection
								Rectangle selRect = new Rectangle(m_selLeft, m_selTop, m_selRight - m_selLeft, m_selBottom - m_selTop);
								e.FillRectangle(selBrush, selRect);
								ControlPaint.DrawBorder(e, selRect, Colors.Selected.Border, BorderStyles.Selected);
							}

						}
					}
					// Multiple selection areas, we dont use border so we 
					// draw each day individually to not overlap regions
					else
					{
						for (int i = 0; i < 42; i++)
						{
							if ((m_days[i].State == NuGenDayState.Selected) && (m_days[i].SelectionArea != -1))
							{
								e.FillRectangle(selBrush, m_days[i].Rectangle);
							}
						}
					}

				}
			}
			catch (Exception)
			{

			}

			bgBrush.Dispose();
			selBrush.Dispose();
			todayPen.Dispose();
			focusBrush.Dispose();
		}
Esempio n. 4
0
		internal void Draw(Graphics e, NuGenDateItem queryInfo)
		{
			StringFormat dateAlign = new StringFormat();
			StringFormat textAlign = new StringFormat();
			Font boldFont = new Font(m_month.DateFont.Name, m_month.DateFont.Size, m_month.DateFont.Style | FontStyle.Bold);
			Color bgColor1 = m_month.Colors.Days.BackColor1;
			Color bgColor2 = m_month.Colors.Days.BackColor2;
			NuGenGradientMode gradientMode = m_month.Colors.Days.GradientMode;
			Color textColor = m_month.Colors.Days.Text;
			Color dateColor = m_month.Colors.Days.Date;
			Brush dateBrush = new SolidBrush(dateColor);
			Brush textBrush = new SolidBrush(textColor);
			Brush bgBrush = new SolidBrush(bgColor1);

			string dateString;
			m_imageRect = new Rectangle();
			string text = "";
			bool drawDay = false;
			bool enabled = true;
			Image bgImage = null;

			int i = -1;

			bool boldedDate = false;

			NuGenDateItem[] info;
			m_dayImage = null;

			dateAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.DateAlign);
			textAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.TextAlign);

			if ((m_month.SelectedMonth.Month == m_date.Month) || (m_month.Calendar.ShowTrailingDates))
				drawDay = true;

			if (((m_date.DayOfWeek == DayOfWeek.Saturday) && (m_month.Colors.Weekend.Saturday)) ||
				 ((m_date.DayOfWeek == DayOfWeek.Sunday) && (m_month.Colors.Weekend.Sunday)))
			{
				bgColor1 = m_month.Colors.Weekend.BackColor1;
				bgColor2 = m_month.Colors.Weekend.BackColor2;
				dateColor = m_month.Colors.Weekend.Date;
				textColor = m_month.Colors.Weekend.Text;
				gradientMode = m_month.Colors.Weekend.GradientMode;
			}

			if (m_month.SelectedMonth.Month != m_date.Month)
			{
				bgColor1 = m_month.Colors.Trailing.BackColor1;
				bgColor2 = m_month.Colors.Trailing.BackColor2;
				gradientMode = m_month.Colors.Trailing.GradientMode;
				dateColor = m_month.Colors.Trailing.Date;
				textColor = m_month.Colors.Trailing.Text;
			}

			// Check if formatting should be applied
			if ((m_month.FormatTrailing) || (m_month.SelectedMonth.Month == m_date.Month))
			{
				// check of there is formatting for this day
				if (queryInfo != null)
				{
					info = new NuGenDateItem[1];
					info[0] = queryInfo;
				}
				else
					info = m_calendar.GetDateInfo(this.Date);
				if (info.Length > 0)
					i = 0;
				// go through the available dateitems
				while ((i < info.Length) && (drawDay))
				{
					if (info.Length > 0)
					{
						NuGenDateItem dateInfo = info[i];

						if (dateInfo.BackColor1 != Color.Empty)
							bgColor1 = dateInfo.BackColor1;
						if (dateInfo.BackColor2 != Color.Empty)
							bgColor2 = dateInfo.BackColor2;
						gradientMode = dateInfo.GradientMode;
						if (dateInfo.DateColor != Color.Empty)
							dateColor = dateInfo.DateColor;
						if (dateInfo.TextColor != Color.Empty)
							textColor = dateInfo.TextColor;
						text = dateInfo.Text;

						if (dateInfo.Weekend)
						{
							bgColor1 = m_month.Colors.Weekend.BackColor1;
							bgColor2 = m_month.Colors.Weekend.BackColor2;
							gradientMode = m_month.Colors.Weekend.GradientMode;
							dateColor = m_month.Colors.Weekend.Date;
							textColor = m_month.Colors.Weekend.Text;
						}
						boldedDate = dateInfo.BoldedDate;
						enabled = dateInfo.Enabled;
						if (!dateInfo.Enabled)
						{
							bgColor1 = m_month.Colors.Disabled.BackColor1;
							bgColor2 = m_month.Colors.Disabled.BackColor2;
							gradientMode = m_month.Colors.Disabled.GradientMode;
							dateColor = m_month.Colors.Disabled.Date;
							textColor = m_month.Colors.Disabled.Text;
						}

						m_dayImage = dateInfo.Image;

						if (m_dayImage != null)
							m_imageRect = ImageRect(m_month.ImageAlign);

						bgImage = dateInfo.BackgroundImage;
					}

					if (m_state == NuGenDayState.Selected)
					{
						dateColor = m_month.Colors.Selected.Date;
						textColor = m_month.Colors.Selected.Text;
					}
					if ((m_state == NuGenDayState.Focus) && (m_month.Calendar.ShowFocus))
					{
						dateColor = m_month.Colors.Focus.Date;
						textColor = m_month.Colors.Focus.Text;
					}


					if (bgImage != null)
						e.DrawImage(bgImage, m_rect);
					else
					{
						if (gradientMode == NuGenGradientMode.None)
						{
							if (bgColor1 != Color.Transparent)
							{
								bgBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Background, bgColor1));
								e.FillRectangle(bgBrush, m_rect);
							}
						}
						else
							m_calendar.DrawGradient(e, Rectangle, bgColor1, bgColor2, gradientMode);
					}


					ControlPaint.DrawBorder(e, m_rect, m_month.Colors.Days.Border, m_month.BorderStyles.Normal);
					if (m_dayImage != null)
					{
						if (enabled)
							e.DrawImageUnscaled(m_dayImage, m_imageRect);
						else
							ControlPaint.DrawImageDisabled(e, m_dayImage, m_imageRect.X, m_imageRect.Y, m_month.Colors.Disabled.BackColor1);
					}

					// Check if we should append month name to date
					if ((m_month.ShowMonthInDay) &&
						((m_date.AddDays(-1).Month != m_date.Month) ||
						(m_date.AddDays(1).Month != m_date.Month)))
						dateString = m_date.Day.ToString() + " " + m_calendar._dateTimeFormat.GetMonthName(m_date.Month);
					else
						dateString = m_date.Day.ToString();

					if (dateColor != Color.Transparent)
					{
						dateBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, dateColor));
						CharacterRange[] characterRanges = { new CharacterRange(0, dateString.Length) };
						dateAlign.SetMeasurableCharacterRanges(characterRanges);
						m_dateRgn = new Region[1];
						// Should date be bolded ?
						if (!boldedDate)
						{
							e.DrawString(dateString, m_month.DateFont, dateBrush, m_rect, dateAlign);
							m_dateRgn = e.MeasureCharacterRanges(dateString, m_month.DateFont, m_rect, dateAlign);
						}
						else
						{
							e.DrawString(dateString, boldFont, dateBrush, m_rect, dateAlign);
							m_dateRgn = e.MeasureCharacterRanges(dateString, boldFont, m_rect, dateAlign);
						}

					}
					if ((text.Length > 0) && (textColor != Color.Transparent))
					{
						textBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, textColor));
						CharacterRange[] characterRanges = { new CharacterRange(0, text.Length) };
						textAlign.SetMeasurableCharacterRanges(characterRanges);
						m_textRgn = new Region[1];
						e.DrawString(text, m_month.TextFont, textBrush, m_rect, textAlign);
						m_textRgn = e.MeasureCharacterRanges(text, m_month.TextFont, m_rect, textAlign);
					}
					i++;
				}
			}

			dateBrush.Dispose();
			bgBrush.Dispose();
			textBrush.Dispose();
			boldFont.Dispose();
			dateAlign.Dispose();
			textAlign.Dispose();
		}
Esempio n. 5
0
        internal void Draw(Graphics e, NuGenDateItem queryInfo)
        {
            StringFormat      dateAlign    = new StringFormat();
            StringFormat      textAlign    = new StringFormat();
            Font              boldFont     = new Font(m_month.DateFont.Name, m_month.DateFont.Size, m_month.DateFont.Style | FontStyle.Bold);
            Color             bgColor1     = m_month.Colors.Days.BackColor1;
            Color             bgColor2     = m_month.Colors.Days.BackColor2;
            NuGenGradientMode gradientMode = m_month.Colors.Days.GradientMode;
            Color             textColor    = m_month.Colors.Days.Text;
            Color             dateColor    = m_month.Colors.Days.Date;
            Brush             dateBrush    = new SolidBrush(dateColor);
            Brush             textBrush    = new SolidBrush(textColor);
            Brush             bgBrush      = new SolidBrush(bgColor1);

            string dateString;

            m_imageRect = new Rectangle();
            string text    = "";
            bool   drawDay = false;
            bool   enabled = true;
            Image  bgImage = null;

            int i = -1;

            bool boldedDate = false;

            NuGenDateItem[] info;
            m_dayImage = null;

            dateAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.DateAlign);
            textAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.TextAlign);

            if ((m_month.SelectedMonth.Month == m_date.Month) || (m_month.Calendar.ShowTrailingDates))
            {
                drawDay = true;
            }

            if (((m_date.DayOfWeek == DayOfWeek.Saturday) && (m_month.Colors.Weekend.Saturday)) ||
                ((m_date.DayOfWeek == DayOfWeek.Sunday) && (m_month.Colors.Weekend.Sunday)))
            {
                bgColor1     = m_month.Colors.Weekend.BackColor1;
                bgColor2     = m_month.Colors.Weekend.BackColor2;
                dateColor    = m_month.Colors.Weekend.Date;
                textColor    = m_month.Colors.Weekend.Text;
                gradientMode = m_month.Colors.Weekend.GradientMode;
            }

            if (m_month.SelectedMonth.Month != m_date.Month)
            {
                bgColor1     = m_month.Colors.Trailing.BackColor1;
                bgColor2     = m_month.Colors.Trailing.BackColor2;
                gradientMode = m_month.Colors.Trailing.GradientMode;
                dateColor    = m_month.Colors.Trailing.Date;
                textColor    = m_month.Colors.Trailing.Text;
            }

            // Check if formatting should be applied
            if ((m_month.FormatTrailing) || (m_month.SelectedMonth.Month == m_date.Month))
            {
                // check of there is formatting for this day
                if (queryInfo != null)
                {
                    info    = new NuGenDateItem[1];
                    info[0] = queryInfo;
                }
                else
                {
                    info = m_calendar.GetDateInfo(this.Date);
                }
                if (info.Length > 0)
                {
                    i = 0;
                }
                // go through the available dateitems
                while ((i < info.Length) && (drawDay))
                {
                    if (info.Length > 0)
                    {
                        NuGenDateItem dateInfo = info[i];

                        if (dateInfo.BackColor1 != Color.Empty)
                        {
                            bgColor1 = dateInfo.BackColor1;
                        }
                        if (dateInfo.BackColor2 != Color.Empty)
                        {
                            bgColor2 = dateInfo.BackColor2;
                        }
                        gradientMode = dateInfo.GradientMode;
                        if (dateInfo.DateColor != Color.Empty)
                        {
                            dateColor = dateInfo.DateColor;
                        }
                        if (dateInfo.TextColor != Color.Empty)
                        {
                            textColor = dateInfo.TextColor;
                        }
                        text = dateInfo.Text;

                        if (dateInfo.Weekend)
                        {
                            bgColor1     = m_month.Colors.Weekend.BackColor1;
                            bgColor2     = m_month.Colors.Weekend.BackColor2;
                            gradientMode = m_month.Colors.Weekend.GradientMode;
                            dateColor    = m_month.Colors.Weekend.Date;
                            textColor    = m_month.Colors.Weekend.Text;
                        }
                        boldedDate = dateInfo.BoldedDate;
                        enabled    = dateInfo.Enabled;
                        if (!dateInfo.Enabled)
                        {
                            bgColor1     = m_month.Colors.Disabled.BackColor1;
                            bgColor2     = m_month.Colors.Disabled.BackColor2;
                            gradientMode = m_month.Colors.Disabled.GradientMode;
                            dateColor    = m_month.Colors.Disabled.Date;
                            textColor    = m_month.Colors.Disabled.Text;
                        }

                        m_dayImage = dateInfo.Image;

                        if (m_dayImage != null)
                        {
                            m_imageRect = ImageRect(m_month.ImageAlign);
                        }

                        bgImage = dateInfo.BackgroundImage;
                    }

                    if (m_state == NuGenDayState.Selected)
                    {
                        dateColor = m_month.Colors.Selected.Date;
                        textColor = m_month.Colors.Selected.Text;
                    }
                    if ((m_state == NuGenDayState.Focus) && (m_month.Calendar.ShowFocus))
                    {
                        dateColor = m_month.Colors.Focus.Date;
                        textColor = m_month.Colors.Focus.Text;
                    }


                    if (bgImage != null)
                    {
                        e.DrawImage(bgImage, m_rect);
                    }
                    else
                    {
                        if (gradientMode == NuGenGradientMode.None)
                        {
                            if (bgColor1 != Color.Transparent)
                            {
                                bgBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Background, bgColor1));
                                e.FillRectangle(bgBrush, m_rect);
                            }
                        }
                        else
                        {
                            m_calendar.DrawGradient(e, Rectangle, bgColor1, bgColor2, gradientMode);
                        }
                    }


                    ControlPaint.DrawBorder(e, m_rect, m_month.Colors.Days.Border, m_month.BorderStyles.Normal);
                    if (m_dayImage != null)
                    {
                        if (enabled)
                        {
                            e.DrawImageUnscaled(m_dayImage, m_imageRect);
                        }
                        else
                        {
                            ControlPaint.DrawImageDisabled(e, m_dayImage, m_imageRect.X, m_imageRect.Y, m_month.Colors.Disabled.BackColor1);
                        }
                    }

                    // Check if we should append month name to date
                    if ((m_month.ShowMonthInDay) &&
                        ((m_date.AddDays(-1).Month != m_date.Month) ||
                         (m_date.AddDays(1).Month != m_date.Month)))
                    {
                        dateString = m_date.Day.ToString() + " " + m_calendar._dateTimeFormat.GetMonthName(m_date.Month);
                    }
                    else
                    {
                        dateString = m_date.Day.ToString();
                    }

                    if (dateColor != Color.Transparent)
                    {
                        dateBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, dateColor));
                        CharacterRange[] characterRanges = { new CharacterRange(0, dateString.Length) };
                        dateAlign.SetMeasurableCharacterRanges(characterRanges);
                        m_dateRgn = new Region[1];
                        // Should date be bolded ?
                        if (!boldedDate)
                        {
                            e.DrawString(dateString, m_month.DateFont, dateBrush, m_rect, dateAlign);
                            m_dateRgn = e.MeasureCharacterRanges(dateString, m_month.DateFont, m_rect, dateAlign);
                        }
                        else
                        {
                            e.DrawString(dateString, boldFont, dateBrush, m_rect, dateAlign);
                            m_dateRgn = e.MeasureCharacterRanges(dateString, boldFont, m_rect, dateAlign);
                        }
                    }
                    if ((text.Length > 0) && (textColor != Color.Transparent))
                    {
                        textBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, textColor));
                        CharacterRange[] characterRanges = { new CharacterRange(0, text.Length) };
                        textAlign.SetMeasurableCharacterRanges(characterRanges);
                        m_textRgn = new Region[1];
                        e.DrawString(text, m_month.TextFont, textBrush, m_rect, textAlign);
                        m_textRgn = e.MeasureCharacterRanges(text, m_month.TextFont, m_rect, textAlign);
                    }
                    i++;
                }
            }

            dateBrush.Dispose();
            bgBrush.Dispose();
            textBrush.Dispose();
            boldFont.Dispose();
            dateAlign.Dispose();
            textAlign.Dispose();
        }