示例#1
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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++;
            }
        }
示例#6
0
        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);
        }