Exemplo n.º 1
0
		//public String WellnessPictureDirectory { get; set; }
		//public String SportPictureDirectory { get; set; }

		public void CreateActuallDynamicPictures(Dictionary<String, DateTime> DatesToRunFor,
			int FullWidth, int FullHeight)
			{
			Data.DbServer3.AEAG.BookingEntries.Load_ForTimePeriode(DatesToRunFor.Values.First(),
				DatesToRunFor.Values.Last());
			//Debug.WriteLine("Alle");
			//int AlleCounter = 0;
			//foreach (BookingEntry bookingEntry in Data.DbServer3.AEAG.BookingEntries
			//	.Collection)
			//	{
			//	Debug.WriteLine(++AlleCounter + " " + bookingEntry.BookingStatus + " " + bookingEntry.BookedFor + " - " + bookingEntry.BookableUnit.NameId);
			//	}


			foreach (String DateName in DatesToRunFor.Keys)
				{
				Debug.WriteLine(DateName + " - " + DatesToRunFor[DateName]);
				int Counter = 0;
				foreach (BookingEntry bookingEntry in Data.DbServer3.AEAG.BookingEntries
					.Collection.Where(sel => ((DateTime)sel.BookedFor).Date == DatesToRunFor[DateName]))
					{
					Debug.WriteLine(++Counter + " " + bookingEntry.BookingStatus + " " + bookingEntry.BookedFor + " - " + bookingEntry.BookableUnit.NameId);
					}
				}


			foreach (String DateName in DatesToRunFor.Keys)
				{
				foreach (Ressource ressource in Data.DbServer3.AEAG.Ressources.DistinctBy(dis => dis.DisplayOn)
							.OrderBy(ord => ord.DisplayOn))
					{
					DrawingStandards Standards = new DrawingStandards();
					Standards.FullWidth = FullWidth;
					Standards.FullHeight = FullHeight;
					List<List<DrawingValues>> DrawingsGrid = new List<List<DrawingValues>>();
					Debug.WriteLine("PictureName = " + ressource.DisplayOn + "-" + DateName);

					DrawingsGrid.Add(new List<DrawingValues>()
						{ new DrawingValues(TopHeaderText(), DrawingValues.ContentType.GlobalHeadLine) });
					List<DrawingValues> HeadLine = new List<DrawingValues>();
					DrawingsGrid.Add(HeadLine);
					HeadLine.Add(new DrawingValues(TopLeftHeaderText(DatesToRunFor[DateName]),
						DrawingValues.ContentType.RowHeadColumnHead));
					foreach (BookableUnit bookableUnit in ressource.BookableUnits
							.OrderBy(ord => ord.TimeTableEntry.DisplayInColumnOrder))
						{
						HeadLine.Add(new DrawingValues(bookableUnit.TimeTableEntry.HeadLineShortText,
							DrawingValues.ContentType.ColumnHead));
						}

					foreach (Ressource singelResource in Data.DbServer3.AEAG.Ressources
						.Where(sel => sel.DisplayOn == ressource.DisplayOn)
						.OrderBy(ord => ord.Adresse).ThenBy(then => then.NameId))
						{
						List<DrawingValues> ContentRow = new List<DrawingValues>();
						DrawingsGrid.Add(ContentRow);
						ContentRow.Add(new DrawingValues(singelResource.NameId,
							DrawingValues.ContentType.RowHead));
						foreach (BookableUnit contentUnit in Data.DbServer3.AEAG.BookableUnits
							.Where(sel => sel.Ressource == singelResource)
							.OrderBy(ord => ord.TimeTableEntry.DisplayInColumnOrder))
							{
							BookingEntry ExistingBooking = Data.DbServer3.AEAG.BookingEntries
								.Find_By_BookableUnitsIDAndBookingFor(contentUnit.Id, DatesToRunFor[DateName]);
							String BookingStatus = String.Empty;
							if (ExistingBooking != null)
								BookingStatus = ExistingBooking.BookingStatus;
							ContentRow.Add(new DrawingValues(BookingStatus,
														DrawingValues.ContentType.Content));
							}
						}
					DrawThePicture(ressource.DisplayOn, DateName, Standards, DrawingsGrid);
					}
				}
			}
Exemplo n.º 2
0
		void CalculateDrawingDetails(List<List<DrawingValues>> DrawingsGrid,
			DrawingStandards Standards, String PictureName)
			{
			Standards.UsedFrame = GetDrawingFrame(PictureName);

			Standards.TargetWidth = ((double)Standards.FullWidth * ((double)Standards.UsedFrame.PositionRight
							- (double)Standards.UsedFrame.PositionLeft)) / 100;
			double FullTargetHeight = ((double)Standards.FullHeight * ((double)Standards.UsedFrame.PositionBottom
							- (double)Standards.UsedFrame.PositionTop)) / 100;
			int NumberOfLines = DrawingsGrid.Count();
			if (PictureName.Contains("Sport"))
				{
				Standards.HeightUnit = FullTargetHeight / ((double)6 + 0.2);
				Standards.TargetHeight = Standards.HeightUnit*(NumberOfLines + 0.2);
				}
			else
				{
				Standards.HeightUnit = FullTargetHeight / ((double)11 + 0.2);
				Standards.TargetHeight = Standards.HeightUnit * (NumberOfLines + 0.2);
				}
			Standards.HeightUnit = Standards.TargetHeight/((double) NumberOfLines + 0.2);
			int NumberOfColumns = DrawingsGrid.Last().Count();
			Standards.WidthUnit = Standards.TargetWidth / ((double)NumberOfColumns + 4);
			Standards.RowStartings = new List<double>();
			Standards.ColumnStartings = new List<double>();
			double MarginXValue = 4;
			double MarginYValue = 4;
			int RunningIndex = 0;
			foreach (List<DrawingValues> drawingValueses in DrawingsGrid)
				{
				if (RunningIndex == 0)
					{
					Standards.RowStartings.Add(0);
					}
				else
				if (RunningIndex == 2)
					{
					Standards.RowStartings.Add(Standards.RowStartings.Last() + (Standards.HeightUnit * 1.2));
					}
				else
					Standards.RowStartings.Add(Standards.RowStartings.Last( ) + Standards.HeightUnit);

				if (RunningIndex > 0)
					{
					SetTop(drawingValueses, Standards.RowStartings.Last(), MarginYValue);
					if (RunningIndex == 1)
						SetBottom(drawingValueses, Standards.RowStartings.Last()
													+ (Standards.HeightUnit*1.2), MarginYValue);
					else
						SetBottom(drawingValueses, Standards.RowStartings.Last()
													+ Standards.HeightUnit, MarginYValue);
					}
				RunningIndex++;
				}
			RunningIndex = 0;
			foreach (DrawingValues drawingValues in DrawingsGrid.Last())
				{
				if (RunningIndex == 0)
					{
					Standards.ColumnStartings.Add(0);
					SetLeft(GetColumnDrawingValues(DrawingsGrid, RunningIndex), 0, MarginXValue);
					SetRight(GetColumnDrawingValues(DrawingsGrid, RunningIndex), (Standards.WidthUnit * 5), MarginXValue);
					RunningIndex++;
					continue;
					}
				if (RunningIndex == 1)
					{
					Standards.ColumnStartings.Add(Standards.ColumnStartings[0] + (Standards.WidthUnit * 5));
					SetLeft(GetColumnDrawingValues(DrawingsGrid, RunningIndex),
							Standards.ColumnStartings.Last(), MarginXValue);
					SetRight(GetColumnDrawingValues(DrawingsGrid, RunningIndex),
							Standards.ColumnStartings.Last() + (Standards.WidthUnit), MarginXValue);
					RunningIndex++;
					continue;
					}
				Standards.ColumnStartings.Add(Standards.ColumnStartings[RunningIndex - 1] + Standards.WidthUnit);
				SetLeft(GetColumnDrawingValues(DrawingsGrid, RunningIndex),
							Standards.ColumnStartings.Last(), MarginXValue);
				SetRight(GetColumnDrawingValues(DrawingsGrid, RunningIndex),
							Standards.ColumnStartings.Last() + (Standards.WidthUnit), MarginXValue);
				RunningIndex++;
				}
			DrawingsGrid[0][0].OuterTop = 0;
			DrawingsGrid[0][0].OuterLeft = 0;
			DrawingsGrid[0][0].OuterBottom = Standards.HeightUnit;
			DrawingsGrid[0][0].OuterRight = Standards.TargetWidth;
			DrawingsGrid[0][0].MarginTop = DrawingsGrid[0][0].OuterTop + MarginYValue;
			DrawingsGrid[0][0].MarginLeft = DrawingsGrid[0][0].OuterLeft + MarginXValue;
			DrawingsGrid[0][0].MarginBottom = DrawingsGrid[0][0].OuterBottom - MarginYValue;
			DrawingsGrid[0][0].MarginRight = DrawingsGrid[0][0].OuterRight - MarginXValue;

			}
Exemplo n.º 3
0
		void CalculateDrawingFontSizes(List<List<DrawingValues>> DrawingsGrid,
			DrawingStandards Standards, String PictureName)
			{
			foreach (List<DrawingValues> drawingValueses in DrawingsGrid)
				{
				foreach (DrawingValues drawingValues in drawingValueses)
					{
					FormattedText formattedText = FormatText(drawingValues.Text,
								drawingValues.DrawingRect, -1);
					if (!Standards.FontSizes.Keys.Contains(drawingValues.Type))
						{
						Standards.FontSizes[drawingValues.Type] = double.MaxValue;
						}
					if (formattedText.Height < Standards.FontSizes[drawingValues.Type])
						Standards.FontSizes[drawingValues.Type] = formattedText.Height;
					}
				}
			}
Exemplo n.º 4
0
		private void DrawThePicture(String PictureName, String DateName, DrawingStandards Standards,
			List<List<DrawingValues>> DrawingsGrid)
			{
			double _rowNumber = 0;
			double _columnNumber = 0;
			int NumberOfContentRows = 0;
			int SummOfHeightOfContentRows = 0;
			int NumberOfContentColumns = 0;
			int SummOfWidthOfContentColumns = 0;

			CalculateDrawingDetails(DrawingsGrid, Standards, PictureName);

			CalculateDrawingFontSizes(DrawingsGrid, Standards, PictureName);

			ShowDebugPictureContent(PictureName, DrawingsGrid);



			DrawingVisual DrawingBoard = new DrawingVisual();
			DrawingContext BoardContext = DrawingBoard.RenderOpen();

			BoardContext.DrawRectangle(Brushes.AliceBlue, new Pen(Brushes.Black, 10), new Rect
				(new Size(Standards.TargetWidth, Standards.TargetHeight)));
			foreach (double rowStarting in Standards.RowStartings)
				{
				BoardContext.DrawLine(new Pen(Brushes.DarkGray,4),
							new Point ( 0, rowStarting), 
							new Point ( Standards.TargetWidth, rowStarting));
				}

			foreach (double columnStartings in Standards.ColumnStartings)
				{
				BoardContext.DrawLine(new Pen(Brushes.DarkGray, 4),
							new Point(columnStartings, Standards.RowStartings[1]),
							new Point(columnStartings, Standards.TargetHeight));
				}

			foreach (List<DrawingValues> drawingValueses in DrawingsGrid)
				{
				foreach (DrawingValues drawingValues in drawingValueses)
					{
					if (drawingValues.Text == "W")
						{
						BoardContext.DrawRectangle(Brushes.DarkGray, null, drawingValues.DrawingRect);
						//BoardContext.DrawText(FormatText(drawingValues.Text,
						//			drawingValues.DrawingRect, drawingValues.Type), drawingValues.DrawingRect.TopLeft);
						}
					else if (drawingValues.Text == "R")
						{
						BoardContext.DrawRectangle(Brushes.DarkGray, null, drawingValues.DrawingRect);
						//BoardContext.DrawText(FormatText(drawingValues.Text,
						//			drawingValues.DrawingRect, drawingValues.Type), drawingValues.DrawingRect.TopLeft);
						}
					else if (drawingValues.Text == "B")
						{
						BoardContext.DrawRectangle(Brushes.Crimson, null, drawingValues.DrawingRect);
						//BoardContext.DrawText(FormatText(drawingValues.Text,
						//			drawingValues.DrawingRect, drawingValues.Type), drawingValues.DrawingRect.TopLeft);
						}
					else if (String.IsNullOrEmpty(drawingValues.Text))
						{
						BoardContext.DrawRectangle(Brushes.ForestGreen, null, drawingValues.DrawingRect);
						//BoardContext.DrawText(FormatText(drawingValues.Text,
						//			drawingValues.DrawingRect, drawingValues.Type), drawingValues.DrawingRect.TopLeft);
						}
					else
						{
						BoardContext.DrawRectangle(Brushes.WhiteSmoke, null, drawingValues.DrawingRect);
						FormattedText formattedText = FormatText(drawingValues.Text,
							drawingValues.DrawingRect, Standards.FontSizes[ drawingValues.Type]);
						Point StartingPoint = drawingValues.DrawingRect.TopLeft;
						if (formattedText.Height < drawingValues.DrawingRect.Height)
							StartingPoint.Y += (drawingValues.DrawingRect.Height - formattedText.Height)/2;
						BoardContext.DrawText(formattedText, StartingPoint);
						}
					}
				}
			//foreach (List<DrawingValues> drawingValueses in DrawingsGrid)
			//	{
			//	foreach (DrawingValues drawingValues in drawingValueses)
			//		{
			//		BoardContext.DrawText(Brushes.Red, null, drawingValues.DrawingRect);
			//		}
			//	}


			BoardContext.Close();           // by sac
			RenderTargetBitmap DrawingBitmap = new RenderTargetBitmap
				((int)Standards.TargetWidth, (int)Standards.TargetHeight, 96, 96,
												 PixelFormats.Pbgra32);
			DrawingBitmap.Render(DrawingBoard);
			FileInfo OutputFile = null;
			if (PictureName.Contains("Sport"))
				OutputFile = new FileInfo(VisualBasics.GetSportCacheFileName(PictureName + "_" + DateName + ".jpg"));
			else
				OutputFile = new FileInfo(VisualBasics.GetWellnessCacheFileName(PictureName + "_" + DateName + ".jpg"));
			byte[] NewContent = ((BitmapSource) BitmapFrame.Create(DrawingBitmap)).ConvertTo_JpgByteArray(); // SaveAs_JpgFile(OutputFile);
			if (OutputFile.Exists)
				{
				String NewHashCode = NewContent.Sha1Hash().ConvertTo_Hex();
				String OldHashCode = OutputFile.LoadAs_ByteArray().Sha1Hash().ConvertTo_Hex();
				if (OldHashCode == NewHashCode)
					return;
				}
			NewContent.SaveTo_File(OutputFile);
			}