LayoutResult ILayoutManager.Measure(LayoutContext context) { var content = (CalendarContentRange)context.ContentRange; LayoutResult result; using (var calendarData = new CalendarData(_calendar)) { // the first time run if (content == null) { content = new CalendarContentRange(_calendar, calendarData.GetFirstMonth(), calendarData.GetLastMonth()); } else if ((context.LayoutDirection & LayoutDirection.Vertical) != 0) // continue vertical run { // do we have anything else to render ? if (!calendarData.HasMonthAfter(content.MonthTo)) { return(new LayoutResult(null, LayoutStatus.NoContent | LayoutStatus.Complete, new SizeF())); } var continuedRange = content.StaticContentRange.ContinueRange(context); content = new CalendarContentRange(continuedRange, _calendar, calendarData.GetNextMonth(content.MonthTo), calendarData.GetLastMonth()); } else if ((context.LayoutDirection & LayoutDirection.Horizontal) != 0) // continue horizontal run { var continuedRange = content.StaticContentRange.ContinueRange(context); content = new CalendarContentRange(continuedRange, _calendar, content.MonthFrom, content.MonthTo); } result = MeasureContentRange(content, calendarData, context.AvailableSize); } return(result); }
public void CalendarRenderWithNoDataBound() { PageDocument report = TestHelper.GetReport("Calendar-NoData.rdlx"); TestingRenderingExtension rendererExt = new TestingRenderingExtension(); report.Render(rendererExt, null); CalendarDataRegion calendar = rendererExt.GetReportItem("Calendar1") as CalendarDataRegion; Assert.IsNotNull(calendar); CalendarData calendarData = new CalendarData(calendar); CalendarContentRange content = new CalendarContentRange(calendar, calendarData.GetFirstMonth(), calendarData.GetLastMonth()); // recalibrate graphics to twips RectangleF rect = new RectangleF(0, 0, 4000f, 4000f); CalendarDesigner.ScaleToTwipsGraphicsAndBound(GetGraphics(), ref rect); // create gdi canvas wrapper to use in renderer IDrawingCanvas canvas = GraphicsCanvasFactory.Create(GetGraphics()); // render calendar to canvas CalendarRenderer.Instance.Render(content, canvas, rect); }
public void TestRenderingInMultiThreads() { var report = TestHelper.GetReport("Calendar.rdlx"); var rendererExt = new TestingRenderingExtension(); report.Render(rendererExt, null); var calendar = rendererExt.GetReportItem("Calendar1") as CalendarDataRegion; Assert.IsNotNull(calendar); var calendarData = new CalendarData(calendar); var content = new CalendarContentRange(calendar, calendarData.GetFirstMonth(), calendarData.GetLastMonth()); // recalibrate graphics to twips var rect = new RectangleF(0, 0, 4000f, 4000f); CalendarDesigner.ScaleToTwipsGraphicsAndBound(GetGraphics(), ref rect); // the action of rendering calendar to canvas System.Action render = () => { using (var graphics = Graphics.FromHwnd(IntPtr.Zero)) { var canvas = GraphicsCanvasFactory.Create(graphics); (calendar.GetRenderer <IGraphicsRenderer>() as CalendarRenderer) .Render(content, canvas, rect); } }; var isSuccess1 = false; var isSuccess2 = false; ThreadStart render1 = () => { render(); isSuccess1 = true; }; ThreadStart render2 = () => { render(); isSuccess2 = true; }; var thread1 = new Thread(render1); var thread2 = new Thread(render2); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); Assert.IsTrue(isSuccess1); Assert.IsTrue(isSuccess2); }
private SizeF GetCompleteSize(CalendarData calendarData) { if (_completeSize == null) { CalendarContentRange content = new CalendarContentRange(_calendar, calendarData.GetFirstMonth(), calendarData.GetLastMonth()); LayoutResult result = MeasureContentRange(content, calendarData, new SizeF(float.MaxValue, float.MaxValue)); _completeSize = result.ActualSize; } return(_completeSize.Value); }
public void AppointmentOrdering() { PageDocument report = TestHelper.GetReport("Calendar-AppointmentWrapping.rdlx"); TestingRenderingExtension renderer = new TestingRenderingExtension(); report.Render(renderer, null); // StartTime(string),EndTime(string),Value(string) //2007-12-07,2007-12-09,"Appt#1 Text ..." //2007-12-08,2007-12-09,"Appt#2 Text ..." //2007-12-09,2007-12-09,"Appt#3 Text ..." //2007-12-09,2007-12-11,"Appt#4 Text ..." ICalendar calendar = (ICalendar)renderer.GetReportItem("Calendar1"); Assert.IsNotNull(calendar); Assert.AreEqual(4, calendar.Appointments.Count); CalendarData calendarData = new CalendarData(calendar); Assert.IsNotNull(calendarData); MonthInfo month = calendarData.GetFirstMonth(); Assert.IsNotNull(month); Assert.AreEqual(12, month.Month); Assert.AreEqual(2007, month.Year); ICollection <Appointment> week1Appointments = calendarData.GetAppointmentsInWeek(month, 1); Assert.AreEqual(2, week1Appointments.Count); ICollection <Appointment> week2Appointments = calendarData.GetAppointmentsInWeek(month, 2); Assert.AreEqual(4, week2Appointments.Count); // first week : make sure of the ordering of appointments. int index = 1; foreach (Appointment appointment in week1Appointments) { Assert.AreEqual(string.Format("Appt#{0} Text ...", index), appointment.Value); index++; } // second week : make sure of the ordering of appointments is the same as prior week. index = 1; foreach (Appointment appointment in week1Appointments) { Assert.AreEqual(string.Format("Appt#{0} Text ...", index), appointment.Value); index++; } }
LayoutResult ILayoutManager.Layout(LayoutContext context) { CalendarContentRange content = context.ContentRange as CalendarContentRange; _continueVerticallyAttempts = 0; LayoutResult result; using (CalendarData calendarData = new CalendarData(_calendar)) { if (content == null) { content = new CalendarContentRange(_calendar, calendarData.GetFirstMonth(), calendarData.GetLastMonth()); } result = LayoutContentRange(content, calendarData, context); } return(result); }