コード例 #1
0
            private KeyValuePair <int, int> GetMouseLocalCoordinates()
            {
                System.Drawing.Point coords = RenderArea.PointToClient(Control.MousePosition);

                return(new KeyValuePair <int, int>(Math.Min(Math.Max(0, coords.X), RenderArea.Width - 1),
                                                   Math.Min(Math.Max(0, coords.Y), RenderArea.Height - 1)));
            }
コード例 #2
0
        /// <summary>
        /// Creates a RenderArea representing a tree node in a grid.
        /// The tree node includes the passed cell content, plus tree-related stuff
        /// such as offset, expand/collapse glyphs etc.
        /// </summary>
        /// <param name="cellContent">The cell's content (text, image or both).</param>
        /// <param name="gridRow">The grid row index.</param>
        /// <returns>The RenderArea representing the tree node.</returns>
        private RenderArea MakeTreeRO(RenderObject cellContent, int gridRow)
        {
            // TODO: add tree lines.

            int        indent = _grid.Tree.Indent;
            RenderArea ra     = new RenderArea();

            ra.Stacking = StackingRulesEnum.BlockLeftToRight;
            ra.Style.FlowAlignChildren = FlowAlignEnum.Center;

            Node        node      = _grid.Rows[gridRow].Node;
            bool        collapsed = node != null ? node.Collapsed : false;
            RenderEmpty re        = new RenderEmpty(PixelsToUnit(indent * node.Level), Unit.Empty);

            ra.Children.Add(re);
            RenderImage plusminus = MakeGlyphRO(collapsed ? GlyphEnum.Collapsed : GlyphEnum.Expanded);

            if (!_grid.Rows[gridRow].IsNode || _grid.Rows[gridRow].Node.Children == 0)
            {
                plusminus.Visibility = VisibilityEnum.Hidden; // just a spacer
            }
            plusminus.Style.Parent = _styleTreeGlyph;
            ra.Children.Add(plusminus);
            if (cellContent != null)
            {
                ra.Children.Add(cellContent);
            }
            return(ra);
        }
コード例 #3
0
        private void ListDir(string dir, int level)
        {
            if (string.IsNullOrEmpty(dir))
            {
                return;
            }

            // get files first:
            string[] files = Directory.GetFiles(dir, _mask, SearchOption.TopDirectoryOnly);

            // if there are no matching files - we skip the directory as well:
            if (files.Length > 0)
            {
                C1PrintDocument doc;
                if (_sdoc != null)
                {
                    doc = _sdoc;
                }
                else
                {
                    doc = new C1PrintDocument();
                    SetupDoc(doc);
                }

                // directory header:
                RenderText dirHeader = new RenderText(string.Format("Files in {0}", dir));
                dirHeader.Style.FontSize       = 12;
                dirHeader.Style.FontBold       = true;
                dirHeader.Style.Spacing.Bottom = "3mm";
                dirHeader.Style.BackColor      = Color.LemonChiffon;
                // Add a dir TOC/outline entry, keep outline as files' parent:
                OutlineNode dirOutlineNode = this.DirAdded(doc, dirHeader, dir, level);

                // add files:
                for (int nfile = 0; nfile < files.Length; ++nfile)
                {
                    RenderArea file = ListFile(files[nfile], nfile == 0 ? dirHeader : null);
                    doc.Body.Children.Add(file);
                    // Add a file TOC entry:
                    this.FileAdded(doc, dirOutlineNode, file, files[nfile], level + 1);
                }

                if (_mdoc != null)
                {
                    _mdoc.Items.Add(doc);
                    // Make sure all memory used by the added document is released:
                    doc = null;
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }

            // recurse into sub-dirs:
            string[] dirs = Directory.GetDirectories(dir, "*", SearchOption.TopDirectoryOnly);
            for (int ndir = 0; ndir < dirs.Length; ++ndir)
            {
                ListDir(dirs[ndir], level + 1);
            }
        }
コード例 #4
0
        //TODO: Change this to bind straight to the view model
        private void RenderArea_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            Point renderAreaPoint = RenderArea.TransformToAncestor(Application.Current.MainWindow).Transform(new Point(0, 0));

            ((EditorWindowViewModel)DataContext).RenderAreaSizeChanged(
                (int)renderAreaPoint.X + 2, (int)renderAreaPoint.Y + 1,
                (int)RenderArea.ActualWidth - 2, (int)RenderArea.ActualHeight - 2);
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: c-whiskey/MyBoidsProject
        private void RenderArea_Click(object sender, EventArgs e)
        {
            MouseEventArgs mevent = e as MouseEventArgs;

            if (mevent.Button == MouseButtons.Left)
            {
                image.SetPixel(mevent.X, mevent.Y, Color.White);
            }

            RenderArea.Refresh();
        }
コード例 #6
0
        private void StartEngine()
        {
            IntPtr hWnd = FindWindow(null, this.Title);

            Point renderAreaPoint = RenderArea.TransformToAncestor(Application.Current.MainWindow).Transform(new Point(0, 0));

            ((EditorWindowViewModel)DataContext).StartEngine(
                hWnd,
                (int)renderAreaPoint.X + 2, (int)renderAreaPoint.Y + 1,
                (int)RenderArea.ActualWidth - 2, (int)RenderArea.ActualHeight - 2
                );
        }
コード例 #7
0
        private RenderObject CreateButton(string caption)
        {
            RenderArea        ra = new RenderArea();
            RenderInputButton rb = new RenderInputButton(caption);

            rb.Style.Font = new Font("Tahoma", 14);
            rb.X          = LengthExp.Predefined.HorzCenterAlign;
            rb.Y          = LengthExp.Predefined.VertCenterAlign;
            rb.Width      = "35mm";
            rb.Height     = "20mm";
            ra.Children.Add(rb);
            return(ra);
        }
コード例 #8
0
        private RenderArea ListFile(string fileName, RenderObject dirHeader)
        {
            RenderArea  file       = new RenderArea();
            PageLayout  pl         = new PageLayout();
            RenderTable pageHeader = new RenderTable();

            pageHeader.Cells[0, 0].Text      = "Dir:";
            pageHeader.Cells[0, 1].Text      = Path.GetDirectoryName(fileName);
            pageHeader.Cells[1, 0].Text      = "File:";
            pageHeader.Cells[1, 1].Text      = Path.GetFileName(fileName);
            pageHeader.Cols[0].SizingMode    = TableSizingModeEnum.Auto;
            pageHeader.Cols[1].Stretch       = StretchColumnEnum.Yes;
            pageHeader.Style.GridLines.All   = new LineDef("1pt", Color.LightGray);
            pageHeader.CellStyle.Padding.All = "1mm";
            pageHeader.Style.Spacing.Bottom  = "3mm";
            pl.PageHeader           = pageHeader;
            file.LayoutChangeBefore = new LayoutChangeNewPage(pl);

            if (dirHeader != null)
            {
                file.Children.Add(dirHeader);
            }

            RenderText fileHeader = new RenderText(Path.GetFileName(fileName));

            fileHeader.Style.BackColor      = Color.AliceBlue;
            fileHeader.Style.FontSize       = 12;
            fileHeader.Style.FontItalic     = true;
            fileHeader.Style.Spacing.Bottom = "2mm";
            fileHeader.Style.TextAlignHorz  = AlignHorzEnum.Right;
            file.Children.Add(fileHeader);

            using (StreamReader sr = new StreamReader(fileName))
            {
                int curLine = 1;
                while (!sr.EndOfStream)
                {
                    string     line = sr.ReadLine();
                    RenderText rt   = new RenderText(line);
                    // doc.Body.Children.Add(rt);
                    file.Children.Add(rt);
                    this.LineAdded(rt, fileName, line, curLine);
                    curLine++;
                }
                // show total lines in page header:
                pageHeader.Cells[1, 2].Text     = string.Format("{0} lines", curLine - 1);
                pageHeader.Cells[0, 1].SpanCols = 2;
                pageHeader.Cols[2].SizingMode   = TableSizingModeEnum.Auto;
            }
            return(file);
        }
コード例 #9
0
        /// <summary>
        /// Adds the DBCursor glyph to the passed table cell.
        /// </summary>
        /// <param name="tc">The table cell to add the glyph to.</param>
        private void PrintDBCursor(TableCell tc)
        {
            Debug.Assert(PrintInfo.PrintDBCursor && _grid.Cols.Fixed > 0);
            RenderObject ro = tc.RenderObject;

            tc.RenderObject = null;
            RenderArea ra = new RenderArea();

            ra.Stacking = StackingRulesEnum.BlockLeftToRight;
            ra.Style.FlowAlignChildren = FlowAlignEnum.Center;
            ra.Children.Add(MakeGlyphRO(GlyphEnum.DBCursor));
            if (ro != null)
            {
                ra.Children.Add(ro);
            }
            tc.RenderObject = ra;
        }
コード例 #10
0
ファイル: Target.cs プロジェクト: kuviman/Q
        public static void BeginArea(Vec2i pos, Vec2i size)
        {
            Vec2i curPos = Vec2i.Zero;

            if (areaStack.Count != 0 && areaStack.Peek() != null)
            {
                curPos = areaStack.Peek().Value.pos;
            }
            pos += curPos;

            size.X = Math.Max(size.X, 1);
            size.Y = Math.Max(size.Y, 1);

            var area = new RenderArea();

            area.pos  = pos;
            area.size = size;
            areaStack.Push(area);
            SetupViewport();
        }
コード例 #11
0
ファイル: Button.cs プロジェクト: ChrisJamesSadler/Kernel
        public override void OnDraw(Bitmap target)
        {
            RenderArea.Width  = Bounds.Width;
            RenderArea.Height = Bounds.Height;
            if (RenderArea.Contains(Input.MousePosition))
            {
                target.DrawRectangle(RenderArea.X, RenderArea.Y, Bounds.Width, Bounds.Height, PrimaryColour + 0x090909, true);
            }
            else
            {
                target.DrawRectangle(RenderArea.X, RenderArea.Y, Bounds.Width, Bounds.Height, PrimaryColour, true);
            }
            target.DrawRectangle(RenderArea.X, RenderArea.Y, Bounds.Width, Bounds.Height, SecondaryColour, false);
            int posX = RenderArea.X + (Bounds.Width / 2);
            int posY = RenderArea.Y + (Bounds.Height / 2);

            posX -= ((Content.Length * GL.fontSize) / 2) + 3;
            posY -= (GL.fontSize / 2);
            target.DrawString(posX, posY, Content, Theme.ButtonText);
        }
コード例 #12
0
ファイル: Form1.cs プロジェクト: c-whiskey/MyBoidsProject
        private void timer1_Tick(object sender, EventArgs e)
        {
            stopwatch.Restart();


            switch (flavor)
            {
            case Flavors.CPUpar:
                BoidCalculations.CalcBoidsCPUPAR();     // this is the CPU parallel version
                break;

            case Flavors.CPUseq:
            default:
                BoidCalculations.CalcBoidsCPUSEQ();     // this is the CPU sequential version // comment this out if you want to validate parallel calculations
                // BoidCalculations.ValidateParCPU(); // uncomment this if you want to validate parallel calculations
                break;
            }

            foreach (BoidObject Boid in BoidCalculations.BoidArray)
            {
                image.SetPixel(Boid.OldIntPosX, Boid.OldIntPosY, Color.Black);
                image.SetPixel(Boid.IntPosX, Boid.IntPosY, Color.White);
            }

            RenderArea.Refresh();
            double fps = (double)stopwatch.ElapsedTicks / Stopwatch.Frequency;

            FPSLabel.Text = $"FPS: {1 / fps:0.00} ";

            BoidCountLabel.Text = $"Boids on screen: {BoidCalculations.BoidArray.Length:0}";

            if (Recording)
            {
                file.WriteLine($"{flavor}, {fps}, {1/fps}, {BoidCalculations.BoidArray.Length}"); // Flavour, Time since last tick, Framerate, Boids on screen
            }
        }
コード例 #13
0
        /// <summary>
        /// Creates a document where almost all RenderObject types provided by C1Preview
        /// are used/demonstrated.
        /// </summary>
        /// <param name="doc">The document to add render objects to.</param>
        private void MakeDoc1(C1PrintDocument doc)
        {
            // clear the document
            doc.Clear();

            // Set up basic page headers and footers:
            doc.PageLayout.PageHeader = new RenderText("RenderObjects sample");
            doc.PageLayout.PageHeader.Style.TextAlignHorz  = AlignHorzEnum.Right;
            doc.PageLayout.PageHeader.Style.Spacing.Bottom = "0.5cm";
            doc.PageLayout.PageHeader.Style.Borders.Bottom = LineDef.Default;

            doc.PageLayout.PageFooter = new RenderText("Page [PageNo] of [PageCount]");
            doc.PageLayout.PageFooter.Style.TextAlignHorz = AlignHorzEnum.Right;
            doc.PageLayout.PageFooter.Style.Spacing.Top   = "0.5cm";
            doc.PageLayout.PageFooter.Style.Borders.Top   = LineDef.Default;


            //-------------
            // RenderArea
            //-------------
            // The general purpose container for other render objects
            // We create an area for a few RenderText objects,
            // and add it to another are which is a container for all elements in the document:
            RenderArea ra1 = new RenderArea();

            RenderArea ra2 = new RenderArea();

            // set the back color for the area so its bounds are visible
            ra2.Style.BackColor = Color.AntiqueWhite;
            // keep the area to 60% of its parent's width
            ra2.Width = "60%";

            // Add the area which will hold the render texts, to
            // the bigger area which will hold all else
            ra1.Children.Add(ra2);

            //-------------
            // RenderText
            //-------------
            // Allows to output a block of text in a single style
            // we also create an outline entry for each RenderText

            // plain text using the default style
            RenderText rt1 = new RenderText(strings.APOLOGIZE);

            doc.Outlines.Add("APOLOGIZE", rt1);

            // different font and color
            RenderText rt2 = new RenderText(strings.APPEAL, new Font("Arial", 16), Color.BlueViolet);

            doc.Outlines.Add("APPEAL", rt2);

            // right-alignged text
            RenderText rt3 = new RenderText(strings.BAROMETER, AlignHorzEnum.Right);

            doc.Outlines.Add("BAROMETER", rt3);

            // justified text in a different font
            RenderText rt4 = new RenderText(strings.BOTANY, new Font("Times New Roman", 14), AlignHorzEnum.Justify);

            doc.Outlines.Add("BOTANY", rt4);

            // text with a different style
            // styles can only exist on an object or as child styles of another style
            Style s1 = doc.Style.Children.Add();

            s1.BackColor   = Color.Chartreuse;
            s1.Padding.All = new Unit("3mm");
            s1.LineSpacing = 120;
            RenderText rt5 = new RenderText(strings.CALAMITY, s1);

            doc.Outlines.Add("CALAMITY", rt5);

            // add RenderText's to the nested area
            ra2.Children.Add(rt1);
            ra2.Children.Add(rt2);
            ra2.Children.Add(rt3);
            ra2.Children.Add(rt4);
            ra2.Children.Add(rt5);

            //---------------
            // RenderGraphics
            //---------------
            // Allows to insert arbitrary GDI+ drawings in the document
            // Note that RenderGraphics' size is by default automatically adjusted
            // to the actual size of the drawing.
            RenderGraphics rg1 = new RenderGraphics();

            rg1.Graphics.DrawArc(Pens.Red,
                                 new Rectangle(0, 0, 30, 40), 0, 135);
            rg1.Graphics.DrawEllipse(Pens.Blue, new Rectangle(20, 20, 90, 45));
            rg1.Style.Borders.All = new LineDef("1mm", Color.CornflowerBlue);
            ra1.Children.Add(rg1);
            // provide an outline entry for the RenderGraphics
            doc.Outlines.Add("RenderGraphics", rg1);

            //-------------
            // RenderEmpty
            //-------------
            // Allows to insert breaks in arbitrary locations w/out affecting other render objects
            RenderEmpty re1 = new RenderEmpty();

            re1.BreakAfter = BreakEnum.Column;
            ra1.Children.Add(re1);

            //---------------
            // RenderImage
            //---------------
            // Allows to insert images in the document. Again, by default the size
            // is determined by the size of the image
            RenderImage ri1 = new RenderImage(Image.FromStream(
                                                  GetType().Assembly.GetManifestResourceStream("RenderObjects.tn_img70.jpg")));

            ra1.Children.Add(ri1);
            doc.Outlines.Add("RenderImage", ri1);

            //---------------
            // RenderRichText
            //---------------
            // Allows to insert RTF in the document
            TextReader tr = new StreamReader(
                GetType().Assembly.GetManifestResourceStream("RenderObjects.Rich_Text_Format.rtf"));
            RenderRichText rrt1 = new RenderRichText(tr.ReadToEnd());

            tr.Close();
            ra1.Children.Add(rrt1);
            doc.Outlines.Add("RenderRichText", rrt1);

            //--------------
            // RenderPolygon
            //--------------
            // A bunch of classes derived from RenderShapeBase provide shapes -
            // lines, polygons and rectangles. Here we draw a polygon:
            RenderPolygon rpoly1 = new RenderPolygon();

            rpoly1.Line.Points = new UnitPoint[] {
                new UnitPoint("0.5cm", "0.5cm"),
                new UnitPoint("2.0cm", "1cm"),
                new UnitPoint("3.5cm", "0cm"),
                new UnitPoint("6cm", "4cm"),
                new UnitPoint("3cm", "5cm")
            };
            rpoly1.Line.Closed = true;
            // set the fill color
            rpoly1.Style.ShapeFillColor = Color.Gainsboro;
            // pad on all sides, otherwise corners may end up outside of the
            // RenderPolygon area and get clipped:
            rpoly1.Style.Padding.All = "0.5cm";
            rpoly1.Style.BackColor   = Color.Cornsilk;
            ra1.Children.Add(rpoly1);
            doc.Outlines.Add("RenderPolygon", rpoly1);

            //------------
            // RenderTable
            //------------
            // Allows to draw tables. Tables are very powerful and can be used
            // both for data presentation and as layout tools. Here we show
            // some very basic tables functionality:
            RenderTable rtbl1 = new RenderTable();

            // tables are logically infinte, just touching a cell creates it:
            for (int row = 0; row < 100; ++row)
            {
                for (int col = 0; col < 4; ++col)
                {
                    rtbl1.Cells[row, col].Text = string.Format("Cell ({0}, {1})", row, col);
                }
            }
            // column (see below, in headers) and row spans are supported,
            // as alignment within cells, borders around cells and more:
            rtbl1.Cells[8, 1].SpanRows            = 6;
            rtbl1.Cells[8, 1].Style.BackColor     = Color.Gold;
            rtbl1.Cells[8, 1].Style.TextAlignVert = AlignVertEnum.Center;
            rtbl1.Cells[8, 1].Style.TextAlignHorz = AlignHorzEnum.Center;
            rtbl1.Cells[8, 1].Style.Borders.All   = LineDef.DefaultBold;

            // table header is just a flag on some rows:
            rtbl1.Rows.Insert(0, 1);
            rtbl1.RowGroups[0, 1].PageHeader      = true;
            rtbl1.Cells[0, 0].SpanCols            = rtbl1.Cols.Count;
            rtbl1.Cells[0, 0].Text                = "This is table header";
            rtbl1.Cells[0, 0].Style.TextAlignHorz = AlignHorzEnum.Center;
            rtbl1.Cells[0, 0].Style.BackColor     = Color.LemonChiffon;
            // ditto for the table footer:
            // (again, just touching a row adds it):
            int n = rtbl1.Rows.Count;

            rtbl1.RowGroups[n, 1].PageFooter      = true;
            rtbl1.Cells[n, 0].SpanCols            = rtbl1.Cols.Count;
            rtbl1.Cells[n, 0].Text                = "This is table footer";
            rtbl1.Cells[n, 0].Style.TextAlignHorz = AlignHorzEnum.Center;
            rtbl1.Cells[n, 0].Style.BackColor     = Color.LemonChiffon;
            // by default, tables have no grid lines. add some:
            rtbl1.Style.GridLines.All = LineDef.Default;

            // Using RenderEmpty, we can add outline nodes to start and end of table:
            RenderEmpty rtbl1Beg = new RenderEmpty();
            RenderEmpty rtbl1End = new RenderEmpty();

            ra1.Children.Add(rtbl1Beg);
            ra1.Children.Add(rtbl1);
            ra1.Children.Add(rtbl1End);
            doc.Outlines.Add("Table - first row", rtbl1Beg);
            doc.Outlines.Add("Table - last row", rtbl1End);

            //---------------
            // RenderParagraph
            //---------------
            // Allows to render milti-line text, inline images, and hyperlinks within text
            // Create paragraph
            RenderParagraph rpar1 = new RenderParagraph();
            Font            f     = new Font(rpar1.Style.Font, FontStyle.Bold);

            rpar1.Content.AddText("This is a paragraph. This is normal text. ");
            rpar1.Content.AddText("This text is bold. ", f);
            rpar1.Content.AddText("This text is red. ", Color.Red);
            rpar1.Content.AddText("This text is superscript. ",
                                  TextPositionEnum.Superscript);
            rpar1.Content.AddText("This text is bold and red. ", f, Color.Red);
            rpar1.Content.AddText("This text is bold and red and subscript. ",
                                  f, Color.Red, TextPositionEnum.Subscript);
            rpar1.Content.AddText("This is normal text again. ");
            rpar1.Content.AddHyperlink(
                "This is a link to the start of the document.",
                ra1);
            rpar1.Content.AddText("Finally, here is an inline image: ");
            rpar1.Content.AddImage(this.Icon.ToBitmap());
            rpar1.Content.AddText(".");
            // Add paragraph to the area
            ra1.Children.Add(rpar1);
            // and an outline entry to point to it:
            doc.Outlines.Add("RenderParagraph", rpar1);

            // we're done. Add the outer RenderArea to the document:
            doc.Body.Children.Add(ra1);
        }
コード例 #14
0
        public override void OnDraw(Bitmap target)
        {
            formRendering = this;
            if (!initialized)
            {
                initialized = true;
                InitializeComponents();
            }

            BeforeRedraw();

            if (WindowState == FormWindowState.Minimized)
            {
                skipChildren = true;
            }
            else if (WindowState == FormWindowState.Normal)
            {
                Banner.X      = RenderArea.X;
                Banner.Y      = RenderArea.Y - 20;
                Banner.Width  = Bounds.Width;
                Banner.Height = 20;
                target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowBarPrimary, true);
                target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowShadow, false);
                target.DrawString(Banner.X + 5, Banner.Y + 6, Content, Theme.WindowBarText);
                target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, PrimaryColour, true);
                target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, SecondaryColour, false);
            }
            else if (WindowState == FormWindowState.Maximized)
            {
                RenderArea.X  = 0;
                RenderArea.Y  = 20;
                Bounds.X      = 0;
                Bounds.Y      = 20;
                Bounds.Width  = target.Width;
                Bounds.Height = target.Height;
                Banner.X      = 0;
                Banner.Y      = 0;
                Banner.Width  = Bounds.Width;
                Banner.Height = 20;
                target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowBarPrimary, true);
                target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowShadow, false);
                target.DrawString(Banner.X + 5, Banner.Y + 6, Content, Theme.WindowBarText);
                target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, PrimaryColour, true);
                target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, SecondaryColour, false);
            }
            else if (WindowState == FormWindowState.FullScreen)
            {
                RenderArea.X  = 0;
                RenderArea.Y  = 0;
                Bounds.X      = 0;
                Bounds.Y      = 0;
                Bounds.Width  = target.Width;
                Bounds.Height = target.Height;
                Banner.X      = 0;
                Banner.Y      = 0;
                Banner.Width  = Bounds.Width;
                Banner.Height = 20;
                target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, PrimaryColour, true);
            }

            if (BackgroundImage != null)
            {
                if (BackgroundImage.Width != Bounds.Width || BackgroundImage.Height != Bounds.Height)
                {
                    BackgroundImage.ResizeImage(Bounds.Width, Bounds.Height);
                }
                target.DrawImage(Bounds.X, Bounds.Y, BackgroundImage);
            }

            AfterRedraw();

            if (Input.GetMouseButton(0) && (RenderArea.Contains(Input.MousePosition) || Banner.Contains(Input.MousePosition)))
            {
                SGI.CurrentForm = this;
            }
        }
コード例 #15
0
        private void MakeDoc1(C1PrintDocument doc)
        {
            // create the document title
            RenderParagraph docTitle = new RenderParagraph();

            docTitle.Content.AddText("This document demonstates the use of ");
            docTitle.Content.AddText("RenderToc", Color.Blue);
            docTitle.Content.AddText(" object to create the table of content.");
            doc.Body.Children.Add(docTitle);

            // in this cycle we generate the document chapters, each chapter
            // has some parts, each chapter and part has an entry in the RenderToc object
            const int chapterCount = 10; // chapter count
            const int partCount    = 5;  // parts count

            // generate sample text that will serve as introduction to chapter
            StringBuilder chapterIntroduction = new StringBuilder("Introduction");

            for (int i = 0; i < 40; i++)
            {
                chapterIntroduction.Append(" introduction");
            }
            chapterIntroduction.Append(".\r\n");

            // generate sample text that will be displayed as content of part of chapter
            StringBuilder partContent = new StringBuilder("Content of part");

            for (int i = 0; i < 80; i++)
            {
                partContent.Append(" content of part");
            }
            partContent.Append(".\r\n");

            // create an instance of RenderToc object
            RenderToc toc = new RenderToc();

            toc.BreakAfter = BreakEnum.Page;

            // Create styles for chaprters and parts
            Style chapterTitleStyle = doc.Style.Children.Add();

            chapterTitleStyle.Font           = new Font("Verdana", 15, FontStyle.Bold);
            chapterTitleStyle.BackColor      = Color.LightSteelBlue;
            chapterTitleStyle.Spacing.Bottom = "5mm";
            Style partTitleStyle = doc.Style.Children.Add();

            partTitleStyle.Font           = new Font("Tahoma", 13);
            partTitleStyle.Spacing.Top    = "3mm";
            partTitleStyle.Spacing.Bottom = "1mm";

            // loop over chapters
            for (int c = 1; c < chapterCount; c++)
            {
                // each chapter will be represented as a RenderArea object
                RenderArea chapter = new RenderArea();
                if (c < chapterCount - 1)
                {
                    chapter.BreakAfter = BreakEnum.Page;
                }

                RenderText chapterTitle = new RenderText(string.Format("Chapter {0}", c), chapterTitleStyle);
                chapter.Children.Add(chapterTitle);
                chapter.Children.Add(new RenderText(chapterIntroduction.ToString(), AlignHorzEnum.Justify));

                // add item for the chapter to the RenderToc
                toc.AddItem(chapterTitle.Text, chapterTitle, 1);

                // loop over the current chapter's parts
                for (int p = 1; p < partCount; p++)
                {
                    RenderText partTitle = new RenderText(string.Format("Chapter {0} part {1}", c, p), partTitleStyle);
                    chapter.Children.Add(partTitle);
                    chapter.Children.Add(new RenderText(partContent.ToString(), AlignHorzEnum.Justify));

                    // add item for the chapter part to the RenderToc
                    toc.AddItem(string.Format("Part {0}", p), partTitle, 2);
                }

                // add the chapter to the document
                doc.Body.Children.Add(chapter);
            }

            // insert the RenderToc into the document immediatedly after the title
            doc.Body.Children.Insert(1, toc);
        }
コード例 #16
0
 /// <summary>
 /// Handle event
 /// </summary>
 /// <param name="e"> Event to handle</param>
 public override void HandleEvent(Event e)
 {
     if (e.type == EventType.KeyDown)
     {
         if (e.keyCode == KeyCode.F)
         {
             if (RenderArea.Contains(e.mousePosition))
             {
                 FrameAll();
                 e.Use();
             }
         }
     }
     else if (_IsMouseDown && Parent != null && e != null)
     {
         if (e.type == EventType.MouseDrag)
         {
             if (e.button == 2) // middle
             {
                 if (e.modifiers == EventModifiers.Control && e.delta.x != 0)
                 {
                     PanX(e.delta.x);
                 }
                 else if (e.modifiers == EventModifiers.Shift && e.delta.y != 0)
                 {
                     PanY(e.delta.y);
                 }
                 else
                 {
                     if (e.delta.x != 0)
                     {
                         PanX(e.delta.x);
                     }
                     if (e.delta.y != 0)
                     {
                         PanY(e.delta.y);
                     }
                 }
                 e.Use();
             }
             else if (e.alt && e.button == 1) // right
             {
                 if (e.delta.x != 0)
                 {
                     ZoomX(e.delta.x);
                 }
                 if (e.delta.y != 0)
                 {
                     ZoomY(e.delta.y);
                 }
                 e.Use();
             }
         }
         else if ((e.type == EventType.MouseUp || e.rawType == EventType.MouseUp) && e.button == _MouseButton)
         {
             Frame of = OwnerFrame;
             if (of != null)
             {
                 of.UnregisterPrecedenceEvent(this);
                 _IsMouseDown = false;
                 _MouseButton = -1;
                 e.Use();
             }
         }
         else
         {
             base.HandleEvent(e);
         }
     }
     else
     {
         base.HandleEvent(e);
     }
 }
コード例 #17
0
 /// <summary>
 /// Invalidate the render area
 /// </summary>
 public void Refresh()
 {
     RenderArea.Invalidate();
 }
コード例 #18
0
        private void RenderMeasurings(RenderArea arg1, DrawingVisual arg2, System.Windows.Media.DrawingContext arg3)
        {
            const double TH_DEFAULT = 1; const double RADIUS_ELLIPSE_DEFAULT = 3;
            double       stroke         = TH_DEFAULT;
            double       radius_ellipse = RADIUS_ELLIPSE_DEFAULT;

            var d = context;

            if (arg1 == renderAreaMagnifier)
            {
                if (!GetIsZoomEnabled())
                {
                    return;
                }

                arg3.PushTransform(GetMagnfierRenderAreaTransform());

                stroke         = TH_DEFAULT / MagnifierZoom;
                radius_ellipse = RADIUS_ELLIPSE_DEFAULT / MagnifierZoom;
            }



            foreach (var l in d.Lines)
            {
                arg3.DrawLine(new Pen(new SolidColorBrush(l.Color), stroke), l.P0, l.P1);
            }
            if (d.LinesUnderMouse.Length > 0)
            {
                var nl = d.LinesUnderMouse[0].Line;

                drawPointHighlighted(nl.P0, nl.Color, arg3, radius_ellipse, stroke);
                drawPointHighlighted(nl.P1, nl.Color, arg3, radius_ellipse, stroke);

                mouseOverLine_info.LineInfo   = nl;
                mouseOverLine_info.Foreground = new SolidColorBrush(nl.Color);
                mouseOverLine_info.Visibility = Visibility.Visible;
            }
            else
            {
                mouseOverLine_info.Visibility = Visibility.Hidden;
            }

            if (d.MousePosition.HasValue && d.TempPoint.HasValue)
            {
                var tempLine = new MeasureLine(d.MousePosition.Value, d.TempPoint.Value, d.CurrentColor);
                //drawLineText(1, tempLine, arg3);

                arg3.DrawLine(new Pen(new SolidColorBrush(tempLine.Color), stroke), tempLine.P0, tempLine.P1);
                currentLine_info.LineInfo   = tempLine;
                currentLine_info.Foreground = new SolidColorBrush(tempLine.Color);
                currentLine_info.Visibility = Visibility.Visible;
            }
            else
            {
                currentLine_info.Visibility = Visibility.Hidden;
            }

            if (d.MousePosition.HasValue)
            {
                drawPointHighlighted(d.MousePosition.Value, d.CurrentColor, arg3, radius_ellipse, stroke);
            }

            if (d.TempPoint.HasValue)
            {
                drawPointHighlighted(d.TempPoint.Value, d.CurrentColor, arg3, radius_ellipse, stroke);
            }
        }
コード例 #19
0
        private void MakeDoc1(C1PrintDocument doc)
        {
            // title of document
            RenderText rt = new RenderText("Stacking and positioning of objects");

            rt.Style.Borders.Bottom = new LineDef("1mm", Color.Black);
            doc.Body.Children.Add(rt);

            // document will contains the TOC
            RenderToc toc = new RenderToc();

            // 1. Demonstrate StackingRulesEnum.BlockTopToBottom
            RenderText title = new RenderText("Demonstrates StackingRulesEnum.BlockTopToBottom stacking");

            title.BreakBefore = BreakEnum.Page;
            doc.Body.Children.Add(title);
            RenderArea area = new RenderArea();

            area.Stacking = StackingRulesEnum.BlockTopToBottom;
            for (int i = 1; i <= 10; i++)
            {
                area.Children.Add(CreateObj(string.Format("OBJECT {0}", i)));
            }
            doc.Body.Children.Add(area);

            toc.AddItem("Stacking", title, 1);
            toc.AddItem("StackingRulesEnum.BlockTopToBottom", title, 2);

            // 2. Demonstrate the StackingRulesEnum.BlockLeftToRight
            title             = new RenderText("Demonstrates StackingRulesEnum.BlockLeftToRight stacking");
            title.BreakBefore = BreakEnum.Page;
            doc.Body.Children.Add(title);
            area = new RenderArea();
            // by default the RenderArea has a width = "parent.width" so we set it to
            // auto to show all child objects
            area.Width = Unit.Auto;
            // by default the RenderArea does not split by horizontally...
            area.SplitHorzBehavior = SplitBehaviorEnum.SplitIfNeeded;
            area.Stacking          = StackingRulesEnum.BlockLeftToRight;
            for (int i = 1; i <= 4; i++)
            {
                area.Children.Add(CreateObj(string.Format("OBJECT {0}", i)));
            }
            doc.Body.Children.Add(area);

            toc.AddItem("StackingRulesEnum.BlockLeftToRight", title, 2);

            // 3. Demonstrate the StackingRulesEnum.InlineLeftToRight
            title             = new RenderText("Demonstrates StackingRulesEnum.InlineLeftToRight stacking");
            title.BreakBefore = BreakEnum.Page;
            doc.Body.Children.Add(title);
            area          = new RenderArea();
            area.Stacking = StackingRulesEnum.InlineLeftToRight;
            for (int i = 1; i <= 10; i++)
            {
                area.Children.Add(CreateObj(string.Format("OBJECT {0}", i)));
            }
            doc.Body.Children.Add(area);

            toc.AddItem("StackingRulesEnum.InlineLeftToRight", title, 2);

            // 4. The positioning of objects
            title             = new RenderText("Each object starting with the second one is positioned relative to the previous object.");
            title.BreakBefore = BreakEnum.Page;
            doc.Body.Children.Add(title);

            doc.Body.Children.Add(CreateObj("FIRST OBJECT"));
            for (int i = 2; i <= 5; i++)
            {
                RenderObject ro = CreateObj(string.Format("OBJECT {0}", i));
                ro.X = "prev.Left + 1cm";
                ro.Y = "prev.Top + 1cm";
                doc.Body.Children.Add(ro);
            }

            toc.AddItem("Positioning", title, 1);

            doc.Body.Children.Insert(1, toc);
        }
コード例 #20
0
ファイル: Utils.cs プロジェクト: mdjabirov/C1Decompiled
        /// <summary>
        /// Fills specified control with a Day style.
        /// </summary>
        /// <param name="doc"></param>
        public static void MakeDay(C1PrintDocument doc)
        {
            doc.Clear();

            doc.DocumentInfo.Title = "Daily style";
            doc.DocumentInfo.Subject = "Day";
            AddNamespaces(doc);

            AddHeadersFooters(doc);
            doc.Tags["FooterRight"].Value = "[GeneratedDateTime]";
            doc.Tags["DateHeadingsFont"].Value = new Font("Segoe UI", 24, FontStyle.Bold);

            doc.DocumentStartingScript +=
                "Dim tasksNumber As Integer = 0 \r\n" +
                "If Document.Tags!IncludeTasks.Value Then\r\n" +
                "   tasksNumber = tasksNumber + 1 \r\n" +
                "End If\r\n" +
                "If Document.Tags!IncludeBlankNotes.Value Then\r\n" +
                "   tasksNumber = tasksNumber + 1 \r\n" +
                "End If\r\n" +
                "If Document.Tags!IncludeLinedNotes.Value Then\r\n" +
                "   tasksNumber = tasksNumber + 1 \r\n" +
                "End If\r\n" +
                "If tasksNumber = 1 Then\r\n" +
                "   Document.Tags!TaskHeight.Value = New Unit(\"100%\")\r\n" +
                "ElseIf tasksNumber = 2 Then\r\n" +
                "   Document.Tags!TaskHeight.Value = New Unit(\"50%\")\r\n" +
                "Else\r\n" +
                "   Document.Tags!TaskHeight.Value = New Unit(\"33.3%\")\r\n" +
                "End If\r\n" +
                "Dim dateAppointments As New DateAppointmentsCollection(Tags!StartDate.Value, Tags!EndDate.Value, Tags!Appointments.Value, Tags!CalendarInfo.Value, True, True)\r\n" +
                "If Tags.IndexByName(\"DateAppointments\") = -1 Then\r\n" +
                "   Dim tagApps As Tag\r\n" +
                "   tagApps = New Tag(\"DateAppointments\", dateAppointments)\r\n" +
                "   tagApps.SerializeValue = False\r\n" +
                "   Tags.Add(tagApps)\r\n" +
                "Else\r\n" +
                "   Tags!DateAppointments.Value = dateAppointments\r\n" +
                "End If\r\n" +
                "Dim startT As Date = Tags!StartTime.Value  \r\n" +
                "Dim endT As Date = Tags!EndTime.Value  \r\n" +
                "If startT > endT Then\r\n" +
                "   Tags!StartTime.Value = endT \r\n" +
                "   Tags!EndTime.Value = startT \r\n" +
                "End If";

            // RenderArea representing the single page
            RenderArea raPage = new RenderArea();
            raPage.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value");
            raPage.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            raPage.BreakBefore = BreakEnum.Page;
            raPage.Width = "100%";
            raPage.Height = "100%";
            raPage.Stacking = StackingRulesEnum.InlineLeftToRight;

            #region ** day header
            // day header
            RenderArea raDayHeader = new RenderArea();
            raDayHeader.Style.Borders.All = LineDef.Default;
            raDayHeader.Width = "100%";
            raDayHeader.Height = "28mm";
            raDayHeader.Stacking = StackingRulesEnum.InlineLeftToRight;

            RenderText rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"D\", Document.Tags!CalendarInfo.Value.CultureInfo)]");
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Style.Font = Document.Tags!DateHeadingsFont.Value\r\n" +
                "Dim startDate As Date = RenderObject.Original.Parent.Parent.DataBinding.Fields!Date.Value\r\n" +
                "Document.Tags!StartTime.Value = startDate.Add(Document.Tags!StartTime.Value.TimeOfDay)\r\n" +
                "Document.Tags!EndTime.Value = startDate.Add(Document.Tags!EndTime.Value.TimeOfDay)\r\n" +
                "Document.Tags!MonthCalendar.Value = New Date(startDate.Year, startDate.Month, 1) \r\n" +
                "startDate = Document.Tags!StartTime.Value\r\n" +
                "Document.Tags!DayHours.Value = New Dictionary(of Date, Date)\r\n" +
                "While startDate < Document.Tags!EndTime.Value\r\n" +
                "	Document.Tags!DayHours.Value.Add(startDate, startDate)\r\n" +
                "	startDate = startDate.AddMinutes(30)\r\n" +
                "End While";
            rt.Style.TextAlignVert = AlignVertEnum.Center;
            rt.Style.Spacing.Left = "2mm";
            rt.Height = "100%";
            rt.Width = "parent.Width - 38mm";

            raDayHeader.Children.Add(rt);

            RenderArea monthCalendar = new RenderArea();
            monthCalendar.Stacking = StackingRulesEnum.InlineLeftToRight;
            monthCalendar.Style.Spacing.Left = "1mm";
            monthCalendar.Style.Spacing.Right = "3mm";
            monthCalendar.Style.Spacing.Top = "0.5mm";
            monthCalendar.Width = "36mm";

            rt = new RenderText("[CDate(Document.Tags!MonthCalendar.Value).ToString(\"MMMM yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)]");
            rt.FormatDataBindingInstanceScript =
                "Dim startDate As Date = Document.Tags!MonthCalendar.Value\r\n" +
                "Dim endDate As Date = startDate.AddMonths(1).AddDays(-1)\r\n" +
                "While startDate.DayOfWeek <> Document.Tags!CalendarInfo.Value.WeekStart \r\n" +
                "    startDate = startDate.AddDays(-1)\r\n" +
                "End While\r\n" +
                "Document.Tags!WeekNumber.Value = New List(of Date)\r\n" +
                "While startDate <= endDate\r\n" +
                "	Document.Tags!WeekNumber.Value.Add(startDate)\r\n" +
                "	startDate = startDate.AddDays(7)\r\n" +
                "End While";
            rt.Style.TextAlignHorz = AlignHorzEnum.Center;
            rt.Style.Font = new Font("Segoe UI", 8);
            rt.Width = "100%";
            monthCalendar.Children.Add(rt);

            rt = new RenderText(" ");
            rt.Style.Font = new Font("Arial", 7f);
            rt.Style.WordWrap = false;
            rt.Width = "12.5%";
            monthCalendar.Children.Add(rt);

            rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.GetShortestDayName(CDate(Fields!Date.Value).DayOfWeek)]");
            rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Document.Tags!WeekNumber.Value(0), Document.Tags!WeekNumber.Value(0).AddDays(6), Document.Tags!Appointments.Value, True)");
            rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            rt.Style.Borders.Bottom = LineDef.Default;
            rt.Style.Font = new Font("Arial", 7f);
            rt.Style.TextAlignHorz = AlignHorzEnum.Center;
            rt.Style.WordWrap = false;
            rt.Width = "12.5%";
            monthCalendar.Children.Add(rt);

            RenderArea raWeek = new RenderArea();
            raWeek.DataBinding.DataSource = new Expression("Document.Tags!WeekNumber.Value");
            raWeek.Style.Font = new Font("Arial", 7f);
            raWeek.Width = "100%";
            raWeek.Stacking = StackingRulesEnum.InlineLeftToRight;

            rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.Calendar.GetWeekOfYear(CDate(Fields!Date.Value), System.Globalization.CalendarWeekRule.FirstDay, Document.Tags!CalendarInfo.Value.WeekStart)]");
            rt.Style.Borders.Right = LineDef.Default;
            rt.Style.TextAlignHorz = AlignHorzEnum.Right;
            rt.Style.WordWrap = false;
            rt.Width = "12.5%";
            raWeek.Children.Add(rt);

            rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"%d\", Document.Tags!CalendarInfo.Value.CultureInfo)]");
            rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6), Document.Tags!Appointments.Value, True)");
            rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            rt.FormatDataBindingInstanceScript =
                "If RenderObject.Original.DataBinding.Fields!Date.Value.Month <> Document.Tags!MonthCalendar.Value.Month Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Hidden\r\n" +
                "Else If RenderObject.Original.DataBinding.Fields!HasAppointments.Value Then\r\n" +
                "    RenderObject.Style.FontBold = true\r\n" +
                "End If";
            rt.Style.TextAlignHorz = AlignHorzEnum.Right;
            rt.Width = "12.5%";
            raWeek.Children.Add(rt);
            monthCalendar.Children.Add(raWeek);

            raDayHeader.Children.Add(monthCalendar);

            raPage.Children.Add(raDayHeader);
            #endregion

            #region ** day
            // day
            RenderArea raDayBody = new RenderArea();
            raDayBody.FormatDataBindingInstanceScript =
                "If Not (Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value) Then\r\n" +
                "    RenderObject.Width = \"100%\" \r\n" +
                "End If";
            raDayBody.Style.Spacing.Top = "0.5mm";
            raDayBody.Style.Borders.All = LineDef.Default;
            raDayBody.Width = "75%";
            raDayBody.Height = "parent.Height - 28mm";
            raDayBody.Stacking = StackingRulesEnum.BlockTopToBottom;

            #region ** all-day events
            // RenderArea representing the single day
            RenderArea raDay = new RenderArea();
            raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value))");
            raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            raDay.Stacking = StackingRulesEnum.InlineLeftToRight;
            raDay.Height = "Auto";

            RenderText status = new RenderText(" ");
            status.FormatDataBindingInstanceScript =
                "If IsNothing(RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value) Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse\r\n" +
                "Else \r\n" +
                "    RenderObject.Style.Brush = RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value.Brush.Brush \r\n" +
                "End If";
            status.Width = "100%";
            status.Height = "1.5mm";
            raDay.Children.Add(status);

            // RenderArea representing the single appointment
            RenderArea raApp = new RenderArea();
            raApp.Style.Spacing.All = "0.5mm";
            raApp.Style.Spacing.Left = "1.25cm";
            raApp.FormatDataBindingInstanceScript =
                "If RenderObject.Original.DataBinding.Fields!AllDayEvent.Value Then\r\n" +
                "    RenderObject.Style.Borders.All = LineDef.Default\r\n" +
                "ElseIf DateDiff(DateInterval.Second, CDate(Document.Tags!StartTime.Value), CDate(RenderObject.Original.DataBinding.Fields!Start.Value)) >= 0 Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse\r\n" +
                "End If\r\n" +
                "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" +
                "    RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" +
                "End If";
            raApp.Stacking = StackingRulesEnum.InlineLeftToRight;
            // Set the text's data source to the data source of the containing  RenderArea - this indicates that the render object is bound to the current group in the specified object:
            raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value");

            rt = new RenderText();
            rt.Text = "[IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, \"> \", String.Empty) & " +
                "IIf(Fields!AllDayEvent.Value, \"\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t} {1:t}\", " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value), " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value.AddDays(1)), CDate(Fields!End.Value)) > 0, DataBinding.Parent.Fields!Date.Value.AddDays(1), Fields!End.Value)))]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.Text = " [Fields!Subject.Value] ";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[\" (\" & Fields!Location.Value & \")\"]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            raDay.Children.Add(raApp);

            raDayBody.Children.Add(raDay);
            #endregion

            #region ** slots
            raDay = new RenderArea();
            raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value))");
            raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            raDay.Stacking = StackingRulesEnum.InlineLeftToRight;
            raDay.Height = "parent - prev.height - next.height";

            RenderArea raTimeSlot = new RenderArea();
            raTimeSlot.FormatDataBindingInstanceScript =
                "RenderObject.Height = New Unit((100/CLng(Document.Tags!DayHours.Value.Count) - 0.005).ToString(\"#.###\", System.Globalization.CultureInfo.InvariantCulture) & \"%\")";
            raTimeSlot.DataBinding.DataSource = new Expression("Document.Tags!DayHours.Value");
            raTimeSlot.Width = "100%";
            raTimeSlot.Height = "0.5cm";
            raTimeSlot.Stacking = StackingRulesEnum.InlineLeftToRight;

            RenderParagraph rp = new RenderParagraph();
            rp.FormatDataBindingInstanceScript =
                "Document.Tags!SlotAppointments.Value = Document.Tags!DateAppointments.Value.GetIntervalAppointments(RenderObject.Original.DataBinding.Parent.Fields!Key.Value, RenderObject.Original.DataBinding.PArent.Fields!Key.Value.AddMinutes(30), False)\r\n" +
                "RenderObject.Visibility = IIf(RenderObject.Original.DataBinding.Parent.Fields!Key.Value.Minute = 0, VisibilityEnum.Visible, VisibilityEnum.Hidden)\r\n" +
                "Dim headerFont As Font = Document.Tags!DateHeadingsFont.Value\r\n" +
                "RenderObject.Style.Font = New Font(headerFont.FontFamily, headerFont.Size * 2 / 3)";
            rp.Width = "1.65cm";
            rp.Style.TextAlignHorz = AlignHorzEnum.Right;
            rp.Style.Borders.Top = LineDef.Default;
            rp.Style.Padding.Right = "1mm";
            rp.Height = "100%";
            ParagraphText pt = new ParagraphText("[IIf(String.IsNullOrEmpty(Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.AMDesignator), CDate(Fields!Key.Value).ToString(\"%H\"), CDate(Fields!Key.Value).ToString(\"%h\"))]");
            pt.Style.FontBold = true;
            pt.Style.Padding.Right = "1mm";
            rp.Content.Add(pt);
            rp.Content.Add(new ParagraphText("[IIf(String.IsNullOrEmpty(Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.AMDesignator), \"00\", CDate(Fields!Key.Value).ToString(\"tt\", Document.Tags!CalendarInfo.Value.CultureInfo).ToLower())]", TextPositionEnum.Superscript));
            raTimeSlot.Children.Add(rp);

            RenderArea slot = new RenderArea();
            slot.Width = "parent.width - prev.width - prev.left";
            slot.Height = "100%";
            slot.Style.Borders.Top = LineDef.Default;
            slot.Style.Borders.Left = LineDef.Default;
            slot.Stacking = StackingRulesEnum.InlineLeftToRight;

            // RenderArea representing the single appointment
            raApp = new RenderArea();
            // Set the text's data source to the data source of the containing  RenderArea - this indicates that the render object is bound to the current group in the specified object:
            raApp.DataBinding.DataSource = new Expression("Document.Tags!SlotAppointments.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value");
            raApp.Style.Spacing.All = "0.5mm";
            raApp.FormatDataBindingInstanceScript =
                "RenderObject.Width = New Unit((100/CLng(Document.Tags!SlotAppointments.Value.Count) - 0.005).ToString(\"#.###\", System.Globalization.CultureInfo.InvariantCulture) & \"%\")\r\n" +
                "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" +
                "    RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" +
                "End If";
            raApp.Width = "10%";
            raApp.Height = "100%";
            raApp.Stacking = StackingRulesEnum.InlineLeftToRight;

            rt = new RenderText();
            rt.Text = "[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t}-{1:t}\", Fields!Start.Value, Fields!End.Value).ToLower()]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.Text = " [Fields!Subject.Value] ";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[\" (\" & Fields!Location.Value & \")\"]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            slot.Children.Add(raApp);

            raTimeSlot.Children.Add(slot);

            raDay.Children.Add(raTimeSlot);
            raDayBody.Children.Add(raDay);
            #endregion

            #region ** late appointments
            raDay = new RenderArea();
            raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value))");
            raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            raDay.Style.Borders.Top = LineDef.Default;
            raDay.Stacking = StackingRulesEnum.InlineLeftToRight;
            raDay.Height = "Auto";

            // RenderArea representing the single appointment
            raApp = new RenderArea();
            raApp.Style.Spacing.All = "0.5mm";
            raApp.Style.Spacing.Left = "1.25cm";
            raApp.FormatDataBindingInstanceScript =
                "If DateDiff(DateInterval.Second, CDate(Document.Tags!EndTime.Value), CDate(RenderObject.Original.DataBinding.Fields!Start.Value)) >= 0 Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Visible\r\n" +
                "Else\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse\r\n" +
                "End If\r\n" +
                "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" +
                "    RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" +
                "End If";
            raApp.Stacking = StackingRulesEnum.InlineLeftToRight;
            // Set the text's data source to the data source of the containing  RenderArea - this indicates that the render object is bound to the current group in the specified object:
            raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value");

            rt = new RenderText();
            rt.Text = "[IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, \"> \", String.Empty) & " +
                "IIf(Fields!AllDayEvent.Value, \"\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t} {1:t}\", " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value), " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value.AddDays(1)), CDate(Fields!End.Value)) > 0, DataBinding.Parent.Fields!Date.Value.AddDays(1), Fields!End.Value)))]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.Text = " [Fields!Subject.Value] ";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[\" (\" & Fields!Location.Value & \")\"]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            raDay.Children.Add(raApp);

            raDayBody.Children.Add(raDay);
            #endregion

            raPage.Children.Add(raDayBody);
            #endregion

            #region ** tasks
            // tasks
            RenderArea include = new RenderArea();
            include.FormatDataBindingInstanceScript =
                "If Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Visible \r\n" +
                "Else\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If";
            include.Width = "25%";
            include.Height = "parent.Height - 28mm";

            RenderArea raTasks = new RenderArea();
            raTasks.FormatDataBindingInstanceScript =
                "If Not Document.Tags!IncludeTasks.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If\r\n" +
                "RenderObject.Height = Document.Tags!TaskHeight.Value";
            raTasks.Style.Borders.All = LineDef.Default;
            raTasks.Style.Spacing.Top = "0.5mm";
            raTasks.Style.Spacing.Left = "0.5mm";
            raTasks.Width = "100%";

            rt = new RenderText();
            rt.Text = "Tasks";
            rt.Style.Padding.Left = "2mm";
            rt.Style.Borders.Bottom = LineDef.Default;
            raTasks.Children.Add(rt);
            include.Children.Add(raTasks);

            RenderArea raNotes = new RenderArea();
            raNotes.FormatDataBindingInstanceScript =
                "If Not Document.Tags!IncludeBlankNotes.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If\r\n" +
                "RenderObject.Height = Document.Tags!TaskHeight.Value";
            raNotes.Style.Borders.All = LineDef.Default;
            raNotes.Style.Spacing.Top = "0.5mm";
            raNotes.Style.Spacing.Left = "0.5mm";
            raNotes.Width = "100%";

            rt = new RenderText();
            rt.Text = "Notes";
            rt.Style.Padding.Left = "2mm";
            rt.Style.Borders.Bottom = LineDef.Default;
            raNotes.Children.Add(rt);
            include.Children.Add(raNotes);

            raNotes = new RenderArea();
            raNotes.FormatDataBindingInstanceScript =
                "If Not Document.Tags!IncludeLinedNotes.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If\r\n" +
                "RenderObject.Height = Document.Tags!TaskHeight.Value";
            raNotes.Style.Borders.All = LineDef.Default;
            raNotes.Style.Spacing.Top = "0.5mm";
            raNotes.Style.Spacing.Left = "0.5mm";
            raNotes.Width = "100%";

            rt = new RenderText();
            rt.Text = "Notes";
            rt.Style.Padding.Left = "2mm";
            rt.Style.Borders.Bottom = LineDef.Default;
            raNotes.Children.Add(rt);

            RenderTable lines = new RenderTable();
            lines.Rows.Insert(0, 1);
            lines.Rows[0].Height = "0.5cm";
            TableVectorGroup gr = lines.RowGroups[0, 1];
            gr.Header = TableHeaderEnum.None;
            List<int> lst = new List<int>(60);
            for (int i = 0; i < 60; i++)
            {
                lst.Add(i);
            }
            gr.DataBinding.DataSource = lst;
            lines.Style.GridLines.Horz = LineDef.Default;
            lines.RowSizingMode = TableSizingModeEnum.Fixed;

            raNotes.Children.Add(lines);

            include.Children.Add(raNotes);

            raPage.Children.Add(include);
            #endregion

            doc.Body.Children.Add(raPage);

            AddCommonTags(doc);

            Tag newTag = new Tag("Appointments", null, typeof(IList<Appointment>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("WeekNumber", null, typeof(List<DateTime>));
            newTag.SerializeValue = false;
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("DayHours", null, typeof(Dictionary<DateTime, DateTime>));
            newTag.SerializeValue = false;
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("MonthCalendar", null, typeof(DateTime));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("StartDate", DateTime.Today, typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            doc.Tags.Add(newTag);
            newTag = new Tag("EndDate", DateTime.Today.AddDays(1), typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            doc.Tags.Add(newTag);

            newTag = new Tag("StartTime", DateTime.Today.AddHours(7), typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            ((TagDateTimeInputParams)newTag.InputParams).Format = DateTimePickerFormat.Time;
            doc.Tags.Add(newTag);
            newTag = new Tag("EndTime", DateTime.Today.AddHours(19), typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            ((TagDateTimeInputParams)newTag.InputParams).Format = DateTimePickerFormat.Time;
            doc.Tags.Add(newTag);

            newTag = new Tag("HidePrivateAppointments", false, typeof(bool));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("TaskHeight", new Unit("33.3%"), typeof(Unit));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("SlotAppointments", null, typeof(List<Appointment>));
            newTag.SerializeValue = false;
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("IncludeTasks", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Include Tasks";
            doc.Tags.Add(newTag);
            newTag = new Tag("IncludeBlankNotes", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Include Notes (blank)";
            doc.Tags.Add(newTag);
            newTag = new Tag("IncludeLinedNotes", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Include Notes (lined)";
            doc.Tags.Add(newTag);
        }
コード例 #21
0
ファイル: Utils.cs プロジェクト: mdjabirov/C1Decompiled
        /// <summary>
        /// Fills specified control with a Details style.
        /// </summary>
        /// <param name="doc"></param>
        public static void MakeDetails(C1PrintDocument doc)
        {
            doc.Clear();

            doc.DocumentInfo.Title = "Details style";
            doc.DocumentInfo.Subject = "Details";
            AddNamespaces(doc);

            AddHeadersFooters(doc);
            doc.Tags["FooterRight"].Value = "[GeneratedDateTime]";

            doc.DocumentStartingScript +=
                "If Tags!InsertPageBreaks.Value And Tags!PageBreak.Value <> \"Day\" Then \r\n" +
                "	If Tags.IndexByName(\"LastDate\") = -1 Then\r\n" +
                "	    Dim tag As Tag\r\n" +
                "       tag = New Tag(\"LastDate\", Tags!StartDate.Value.Date)\r\n" +
                "       Tags.Add(tag)\r\n" +
                "   Else\r\n" +
                "       Tags!LastDate.Value = Tags!StartDate.Value.Date\r\n" +
                "   End If\r\n" +
                "End If\r\n" +
                "Dim dateAppointments As New DateAppointmentsCollection(Tags!StartDate.Value, Tags!EndDate.Value, Tags!Appointments.Value, false)\r\n" +
                "If Tags.IndexByName(\"DateAppointments\") = -1 Then\r\n" +
                "   Dim tagApps As Tag\r\n" +
                "   tagApps = New Tag(\"DateAppointments\", dateAppointments)\r\n" +
                "   tagApps.SerializeValue = False\r\n" +
                "   Tags.Add(tagApps)\r\n" +
                "Else\r\n" +
                "   Tags!DateAppointments.Value = dateAppointments\r\n" +
                "End If";

            // RenderArea representing the single day
            RenderArea ra1 = new RenderArea();
            ra1.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value");
            ra1.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            ra1.FormatDataBindingInstanceScript =
                "If Tags!InsertPageBreaks.Value Then\r\n" +
                "	 Dim newDate as DateTime\r\n" +
                "	 newDate = RenderObject.Original.DataBinding.Fields!Date.Value\r\n" +
                "    Select Case Tags!PageBreak.Value\r\n" +
                "		Case \"Week\"\r\n" +
                "			Dim tmp as DateTime\r\n" +
                "			tmp = Tags!LastDate.Value.Date.AddDays(1)\r\n" +
                "			While tmp <= newDate\r\n" +
                "				If tmp.DayOfWeek = Tags!CalendarInfo.Value.WeekStart Then\r\n" +
                "					RenderObject.BreakBefore = BreakEnum.Page\r\n" +
                "					Exit While\r\n" +
                "				End If\r\n" +
                "				tmp = tmp.AddDays(1)\r\n" +
                "			End While\r\n" +
                "		Case \"Month\"\r\n" +
                "			If Tags!LastDate.Value.Month <> newDate.Month Then\r\n" +
                "				RenderObject.BreakBefore = BreakEnum.Page\r\n" +
                "			End If\r\n" +
                "		Case Else\r\n" +
                "			RenderObject.BreakBefore = BreakEnum.Page\r\n" +
                "    End Select\r\n" +
                "    Tags!LastDate.Value = newDate\r\n" +
                "End If";

            ra1.Style.Spacing.All = "1mm";

            // day header
            RenderText rt = new RenderText("[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:D}\", Fields!Date.Value)]");
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Style.Font = Document.Tags!DateHeadingsFont.Value";
            rt.Style.Borders.All = LineDef.Default;
            rt.Style.Padding.All = "2mm";
            rt.Style.BackColor = Colors.LightGray;

            ra1.Children.Add(rt);

            // RenderArea tepresenting the single appointment
            RenderArea raApp = new RenderArea();
            raApp.Style.Spacing.All = "2mm";
            raApp.Stacking = StackingRulesEnum.InlineLeftToRight;

            // Set the text's data source to the data source of the containing  RenderArea - this indicates that the render object is bound to the current group in the specified object:
            raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value");

            rt = new RenderText();
            rt.Text = "[IIf(Fields!AllDayEvent.Value, \"All Day\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t} - {1:t}\", " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value), " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value.AddDays(1)), CDate(Fields!End.Value)) > 0, DataBinding.Parent.Fields!Date.Value.AddDays(1), Fields!End.Value)))]";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            raApp.Children.Add(rt);

            RenderArea appDetails = new RenderArea();
            appDetails.Width = "75%";
            appDetails.Stacking = StackingRulesEnum.InlineLeftToRight;

            RenderText rt1 = new RenderText();
            rt1.Text = "[Fields!Subject.Value] ";
            rt1.Style.FontBold = true;
            rt1.Width = "Auto";
            appDetails.Children.Add(rt1);

            rt1 = new RenderText();
            rt1.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt1.Text = "[\"-- \" & Fields!Location.Value]";
            rt1.Style.FontBold = true;
            rt1.Width = "Auto";
            appDetails.Children.Add(rt1);

            rt1 = new RenderText();
            rt1.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Body.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse) \r\n" +
                "RenderObject.BreakBefore = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Subject.Value & RenderObject.Original.DataBinding.Parent.Fields!Location.Value), BreakEnum.Line, BreakEnum.None)";
            rt1.Text = "[Fields!Body.Value]";
            appDetails.Children.Add(rt1);

            rt1 = new RenderText();
            rt1.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(DateDiff(DateInterval.Second, CDate(RenderObject.Original.DataBinding.Parent.Parent.Fields!Date.Value), CDate(RenderObject.Original.DataBinding.Parent.Fields!Start.Value)) < 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt1.Text = "[\"Please See Above\"]";
            rt1.Style.FontBold = true;
            rt1.BreakBefore = BreakEnum.Line;
            appDetails.Children.Add(rt1);

            raApp.Children.Add(appDetails);

            ra1.Children.Add(raApp);
            doc.Body.Children.Add(ra1);

            AddCommonTags(doc);

            Tag newTag = new Tag("Appointments", null, typeof(IList<Appointment>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("StartDate", DateTime.Today, typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            doc.Tags.Add(newTag);
            newTag = new Tag("EndDate", DateTime.Today.AddDays(1), typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            doc.Tags.Add(newTag);
            newTag = new Tag("InsertPageBreaks", false, typeof(Boolean));
            newTag.Description = "Start a new page each";
            doc.Tags.Add(newTag);
            newTag = new Tag("PageBreak", "Day", typeof(string));
            newTag.Description = "";
            newTag.InputParams = new TagListInputParams(TagListInputParamsTypeEnum.ComboBox, new TagListInputParamsItem("Day", "Day"), new TagListInputParamsItem("Week", "Week"), new TagListInputParamsItem("Month", "Month"));
            doc.Tags.Add(newTag);
            newTag = new Tag("HidePrivateAppointments", false, typeof(bool));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
        }
コード例 #22
0
ファイル: Utils.cs プロジェクト: mdjabirov/C1Decompiled
        /// <summary>
        /// Fills specified control with a Memo style.
        /// </summary>
        /// <param name="doc"></param>
        public static void MakeMemo(C1PrintDocument doc)
        {
            doc.Clear();

            doc.DocumentInfo.Title = "Memo style";
            doc.DocumentInfo.Subject = "Memo";

            AddNamespaces(doc);

            AddHeadersFooters(doc);
            doc.Tags["AppointmentsFont"].Value = new Font("Arial", 10);

            // add string tags (localizable)

            Tag newTag = new Tag("Subject", "Subject:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("Location", "Location:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("Start", "Start:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("End", "End:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("ShowTimeAs", "Show Time As:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("Recurrence", "Recurrence:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("None", "none", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("Categories", "Categories:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("Resources", "Resources:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("Contacts", "Contacts:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("Importance", "Importance:", typeof(string));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            RenderArea ra = new RenderArea();
            ra.Width = "100%";
            ra.BreakBefore = BreakEnum.Page;
            ra.DataBinding.DataSource = new Expression("Document.Tags!Appointments.Value");
            ra.DataBinding.Sorting.Expressions.Add("Fields!Start.Value");
            ra.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value");
            ra.Style.Borders.Top = LineDef.DefaultBold;
            ra.Stacking = StackingRulesEnum.InlineLeftToRight;
            ra.Style.Padding.Top = "1mm";
            ra.Style.Spacing.All = "1mm";

            RenderText rt = new RenderText();
            rt.FormatDataBindingInstanceScript = //VisibilityEnum
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Subject.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Document.Tags!Subject.Value]";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Subject.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Fields!Subject.Value]";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Document.Tags!Location.Value]";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Fields!Location.Value]";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[Document.Tags!Start.Value]";
            rt.Width = "25%";
            rt.Style.Padding.Top = "2mm";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:ddd} {1:g}\", Fields!Start.Value, Fields!Start.Value)]";
            rt.Width = "75%";
            rt.Style.Padding.Top = "2mm";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[Document.Tags!End.Value]";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:ddd} {1:g}\", Fields!End.Value, Fields!End.Value)]";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[Document.Tags!ShowTimeAs.Value]";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[Fields!BusyStatus.Value.Text]";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[Document.Tags!Recurrence.Value]";
            rt.Width = "25%";
            rt.Style.Padding.Top = "2mm";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "Dim index as Integer = RenderObject.Parent.Original.DataBinding.RowNumber - 1 \r\n" +
                "Dim app As Appointment = Document.Tags!Appointments.Value(index)\r\n" +
                "Dim text As RenderText = RenderObject\r\n" +
                "If app.RecurrenceState <> RecurrenceStateEnum.NotRecurring Then\r\n" +
                "    text.Text = app.GetRecurrencePattern().Description\r\n" +
                "Else\r\n" +
                "    text.Text = Document.Tags!None.Value\r\n" +
                "End If";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Links.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Links.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Document.Tags!Contacts.Value]";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Links.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Links.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Fields!Links.Value.ToString()]";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Categories.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Categories.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Document.Tags!Categories.Value]";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Categories.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Categories.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Fields!Categories.Value.ToString()]";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Resources.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Resources.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Document.Tags!Resources.Value]";
            rt.Width = "25%";
            rt.Style.Padding.Top = "2mm";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Resources.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Resources.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Fields!Resources.Value.ToString()]";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not (RenderObject.Parent.Original.DataBinding.Fields!Importance.Value = 1), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[Document.Tags!Importance.Value]";
            rt.Style.Padding.Top = "2mm";
            rt.Width = "25%";
            rt.Style.FontBold = true;
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not (RenderObject.Parent.Original.DataBinding.Fields!Importance.Value = 1), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Style.Padding.Top = "2mm";
            rt.Text = "[Fields!Importance.Value.ToString()]";
            rt.Width = "75%";
            ra.Children.Add(rt);

            rt = new RenderText();
            rt.Text = "[Fields!Body.Value.ToString()]";
            rt.Style.Padding.Top = "3mm";
            rt.Style.Padding.Right = "2mm";
            rt.Width = "100%";
            ra.Children.Add(rt);

            doc.Body.Children.Add(ra);

            AddCommonTags(doc);

            newTag = new Tag("Appointments", null, typeof(IList<Appointment>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
        }
コード例 #23
0
ファイル: Utils.cs プロジェクト: mdjabirov/C1Decompiled
        /// <summary>
        /// Fills specified control with a Month style.
        /// </summary>
        /// <param name="doc"></param>
        public static void MakeMonth(C1PrintDocument doc)
        {
            doc.Clear();

            doc.DocumentInfo.Title = "Monthly style";
            doc.DocumentInfo.Subject = "Month";
            AddNamespaces(doc);

            AddHeadersFooters(doc);
            doc.PageLayout.PageSettings.Landscape = true;
            doc.Tags["FooterRight"].Value = "[GeneratedDateTime]";
            doc.Tags["DateHeadingsFont"].Value = new Font("Segoe UI", 20, FontStyle.Bold);

            doc.DocumentStartingScript +=
                "Dim daysNumber As Long = 7.0 \r\n" +
                "If Document.Tags!WorkDaysOnly.Value Then\r\n" +
                "   daysNumber = Document.Tags!CalendarInfo.Value.WorkDays.Count \r\n" +
                "End If\r\n" +
                "Document.Tags!DayWidth.Value = New Unit((97.3/daysNumber - 0.005).ToString(\"#.###\", System.Globalization.CultureInfo.InvariantCulture) & \"%\") \r\n" +
                "Dim tasksNumber As Integer = 0 \r\n" +
                "If Document.Tags!IncludeTasks.Value Then\r\n" +
                "   tasksNumber = tasksNumber + 1 \r\n" +
                "End If\r\n" +
                "If Document.Tags!IncludeBlankNotes.Value Then\r\n" +
                "   tasksNumber = tasksNumber + 1 \r\n" +
                "End If\r\n" +
                "If Document.Tags!IncludeLinedNotes.Value Then\r\n" +
                "   tasksNumber = tasksNumber + 1 \r\n" +
                "End If\r\n" +
                "If tasksNumber = 1 Then\r\n" +
                "   Document.Tags!TaskHeight.Value = New Unit(\"100%\")\r\n" +
                "ElseIf tasksNumber = 2 Then\r\n" +
                "   Document.Tags!TaskHeight.Value = New Unit(\"50%\")\r\n" +
                "Else\r\n" +
                "   Document.Tags!TaskHeight.Value = New Unit(\"33.3%\")\r\n" +
                "End If\r\n" +
                "Dim startT As DateTime = Tags!StartDate.Value  \r\n" +
                "Dim endT As DateTime = Tags!EndDate.Value  \r\n" +
                "While startT.DayOfWeek <> Tags!CalendarInfo.Value.WeekStart \r\n" +
                "    startT = startT.AddDays(-1)\r\n" +
                "End While\r\n" +
                "Dim days As Long = DateDiff(DateInterval.Day, startT, endT )\r\n" +
                "endT = endT.AddDays(35 - (days Mod 35))\r\n" +
                "Dim months As New List(Of Date)\r\n" +
                "Dim s As DateTime = startT\r\n" +
                "While s < endT\r\n" +
                "	months.Add(s)\r\n" +
                "   s = s.AddDays(35)\r\n" +
                "End While\r\n" +
                "If Tags.IndexByName(\"Months\") = -1 Then\r\n" +
                "   Dim tagMonths As Tag\r\n" +
                "   tagMonths = New Tag(\"Months\", months)\r\n" +
                "   tagMonths.SerializeValue = False\r\n" +
                "   Tags.Add(tagMonths)\r\n" +
                "Else\r\n" +
                "   Tags!Months.Value = months\r\n" +
                "End If\r\n" +
                "\r\n" +
                "Dim dateAppointments As New DateAppointmentsCollection(startT, endT, Tags!Appointments.Value, Tags!CalendarInfo.Value, True, Not Tags!WorkDaysOnly.Value)\r\n" +
                "If Tags.IndexByName(\"DateAppointments\") = -1 Then\r\n" +
                "   Dim tagApps As Tag\r\n" +
                "   tagApps = New Tag(\"DateAppointments\", dateAppointments)\r\n" +
                "   tagApps.SerializeValue = False\r\n" +
                "   Tags.Add(tagApps)\r\n" +
                "Else\r\n" +
                "   Tags!DateAppointments.Value = dateAppointments\r\n" +
                "End If\r\n";

            // RenderArea representing the single page
            RenderArea raPage = new RenderArea();
            raPage.DataBinding.DataSource = new Expression("Document.Tags!Months.Value");
            raPage.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            raPage.BreakBefore = BreakEnum.Page;
            raPage.Width = "100%";
            raPage.Height = "100%";
            raPage.Stacking = StackingRulesEnum.InlineLeftToRight;

            #region ** month header
            // month header
            RenderArea raMonthHeader = new RenderArea();
            raMonthHeader.Style.Borders.All = LineDef.Default;
            raMonthHeader.Width = "100%";
            raMonthHeader.Height = "28mm";
            raMonthHeader.Stacking = StackingRulesEnum.InlineLeftToRight;

            RenderText rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Style.Font = Document.Tags!DateHeadingsFont.Value\r\n" +
                "Dim rt As RenderText = RenderObject\r\n" +
                "Dim startDate As Date = RenderObject.Original.Parent.Parent.DataBinding.Fields!Date.Value\r\n" +
                "Dim endDate As Date = startDate.AddDays(34)\r\n" +
                "Dim txt As String = startDate.ToString(\"MMMM\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" +
                "If startDate.Year <> endDate.Year Then\r\n" +
                "    txt = txt & \" \" & startDate.ToString(\"yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" +
                "End If\r\n" +
                "txt = txt & \" - \" & endDate.ToString(\"MMMM yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" +
                "rt.Text = txt\r\n" +
                "Document.Tags!WeekTabs.Value = New List(of Date)\r\n" +
                "Document.Tags!WeekTabs.Value.Add(startDate)\r\n" +
                "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(7))\r\n" +
                "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(14))\r\n" +
                "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(21))\r\n" +
                "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(28))\r\n" +
                "Document.Tags!MonthCalendars.Value = New List(of Date)\r\n" +
                "startDate = New Date(startDate.Year, startDate.Month, 1)\r\n" +
                "While startDate <= endDate\r\n" +
                "	Document.Tags!MonthCalendars.Value.Add(startDate)\r\n" +
                "	startDate = startDate.AddMonths(1)\r\n" +
                "End While";
            rt.Style.TextAlignVert = AlignVertEnum.Center;
            rt.Style.Spacing.Left = "2mm";
            rt.Height = "100%";
            rt.Width = "parent.Width - 102mm";

            raMonthHeader.Children.Add(rt);

            RenderArea monthCalendar = new RenderArea();
            monthCalendar.DataBinding.DataSource = new Expression("Document.Tags!MonthCalendars.Value");
            monthCalendar.Stacking = StackingRulesEnum.InlineLeftToRight;
            monthCalendar.Style.Spacing.Left = "1mm";
            monthCalendar.Style.Spacing.Right = "1mm";
            monthCalendar.Style.Spacing.Top = "0.5mm";
            monthCalendar.Width = "34mm";

            rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"MMMM yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)]");
            rt.FormatDataBindingInstanceScript =
                "Dim startDate As Date = RenderObject.Original.Parent.DataBinding.Fields!Date.Value\r\n" +
                "Dim endDate As Date = startDate.AddMonths(1).AddDays(-1)\r\n" +
                "While startDate.DayOfWeek <> Document.Tags!CalendarInfo.Value.WeekStart \r\n" +
                "    startDate = startDate.AddDays(-1)\r\n" +
                "End While\r\n" +
                "Document.Tags!WeekNumber.Value = New List(of Date)\r\n" +
                "While startDate <= endDate\r\n" +
                "	Document.Tags!WeekNumber.Value.Add(startDate)\r\n" +
                "	startDate = startDate.AddDays(7)\r\n" +
                "End While";
            rt.Style.TextAlignHorz = AlignHorzEnum.Center;
            rt.Style.Font = new Font("Segoe UI", 8);
            rt.Width = "100%";
            monthCalendar.Children.Add(rt);

            rt = new RenderText(" ");
            rt.Style.Font = new Font("Arial", 7f);
            rt.Style.WordWrap = false;
            rt.Width = "12.5%";
            monthCalendar.Children.Add(rt);

            rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.GetShortestDayName(CDate(Fields!Date.Value).DayOfWeek)]");
            rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Document.Tags!WeekNumber.Value(0), Document.Tags!WeekNumber.Value(0).AddDays(6), Document.Tags!Appointments.Value, True)");
            rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            rt.Style.Borders.Bottom = LineDef.Default;
            rt.Style.Font = new Font("Arial", 7f);
            rt.Style.TextAlignHorz = AlignHorzEnum.Center;
            rt.Style.WordWrap = false;
            rt.Width = "12.5%";
            monthCalendar.Children.Add(rt);

            RenderArea raWeek = new RenderArea();
            raWeek.DataBinding.DataSource = new Expression("Document.Tags!WeekNumber.Value");
            raWeek.Style.Font = new Font("Arial", 7f);
            raWeek.Width = "100%";
            raWeek.Stacking = StackingRulesEnum.InlineLeftToRight;

            rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.Calendar.GetWeekOfYear(CDate(Fields!Date.Value), System.Globalization.CalendarWeekRule.FirstDay, Document.Tags!CalendarInfo.Value.WeekStart)]");
            rt.Style.Borders.Right = LineDef.Default;
            rt.Style.TextAlignHorz = AlignHorzEnum.Right;
            rt.Style.WordWrap = false;
            rt.Width = "12.5%";
            raWeek.Children.Add(rt);

            rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"%d\", Document.Tags!CalendarInfo.Value.CultureInfo)]");
            rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6), Document.Tags!Appointments.Value, True)");
            rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            rt.FormatDataBindingInstanceScript =
                "If RenderObject.Original.DataBinding.Fields!Date.Value.Month <> RenderObject.Original.Parent.Parent.DataBinding.Fields!Date.Value.Month Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Hidden\r\n" +
                "Else If RenderObject.Original.DataBinding.Fields!HasAppointments.Value Then\r\n" +
                "    RenderObject.Style.FontBold = true\r\n" +
                "End If";
            rt.Style.TextAlignHorz = AlignHorzEnum.Right;
            rt.Width = "12.5%";
            raWeek.Children.Add(rt);
            monthCalendar.Children.Add(raWeek);

            raMonthHeader.Children.Add(monthCalendar);

            raPage.Children.Add(raMonthHeader);
            #endregion

            #region ** month
            // month
            RenderArea raMonth = new RenderArea();
            raMonth.FormatDataBindingInstanceScript =
                "If Not (Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value) Then\r\n" +
                "    RenderObject.Width = \"100%\" \r\n" +
                "End If";
            raMonth.Style.Spacing.Top = "0.5mm";
            raMonth.Style.Borders.Top = LineDef.Default;
            raMonth.Style.Borders.Left = LineDef.Default;
            raMonth.Style.Borders.Bottom = LineDef.Default;
            raMonth.Width = "80%";
            raMonth.Height = "parent.Height - 28mm";
            raMonth.Stacking = StackingRulesEnum.InlineLeftToRight;

            rt = new RenderText(" ");
            rt.Style.WordWrap = false;
            rt.Height = "4%";
            rt.Style.TextAngle = 90;
            rt.Width = "2.7%";
            raMonth.Children.Add(rt);

            rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"dddd\", Document.Tags!CalendarInfo.Value.CultureInfo)]");
            rt.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6))");
            rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Width = Document.Tags!DayWidth.Value";
            rt.Style.Borders.Bottom = LineDef.Default;
            rt.Style.Borders.Right = LineDef.Default;
            rt.Style.TextAlignHorz = AlignHorzEnum.Center;
            rt.Style.WordWrap = false;
            rt.Height = "4%";
            raMonth.Children.Add(rt);

            RenderArea raWeekTab = new RenderArea();
            raWeekTab.DataBinding.DataSource = new Expression("Document.Tags!WeekTabs.Value");
            raWeekTab.Height = "19.2%";
            raWeekTab.Width = "100%";
            raWeekTab.Stacking = StackingRulesEnum.InlineLeftToRight;

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "Dim txt As RenderText = RenderObject\r\n" +
                "Dim start As Date = RenderObject.Parent.Original.DataBinding.Fields!Date.Value\r\n" +
                "Dim endT As Date = start.AddDays(6)\r\n" +
                "If start.Month = endT.Month Then \r\n" +
                "	txt.Text = start.ToString(\"%d\", Document.Tags!CalendarInfo.Value.CultureInfo) & \" - \" & endT.ToString(\"d.MM\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" +
                "Else\r\n" +
                "	txt.Text = start.ToString(\"d.MM\", Document.Tags!CalendarInfo.Value.CultureInfo) & \" - \" & endT.ToString(\"d.MM\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" +
                "End If";
            rt.Style.Borders.Right = LineDef.Default;
            rt.Style.FontBold = true;
            rt.Style.TextAngle = 90;
            rt.Style.TextAlignHorz = AlignHorzEnum.Center;
            rt.Style.WordWrap = false;
            rt.Height = "100%";
            rt.Width = "2.7%";
            raWeekTab.Children.Add(rt);

            // RenderArea representing the single day
            RenderArea raDay = new RenderArea();
            raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6))");
            raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value");
            raDay.Style.Borders.Right = LineDef.Default;
            raDay.Style.Borders.Bottom = LineDef.Default;
            raDay.FormatDataBindingInstanceScript =
                "RenderObject.Width = Document.Tags!DayWidth.Value";
            raDay.Height = "100%";

            // day header
            rt = new RenderText("[IIF(Fields!Date.Value.Day = 1 Or CDate(Fields!Date.Value) = CDate(Document.Tags!WeekTabs.Value(0).Date), String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:m}\", Fields!Date.Value) ,Fields!Date.Value.Day)]");
            rt.Style.Borders.Bottom = LineDef.Default;
            rt.Style.Padding.Left = "1mm";
            rt.Style.FontBold = true;
            rt.Style.BackColor = Colors.White;
            rt.Style.TextAlignHorz = AlignHorzEnum.Left;
            rt.Style.WordWrap = false;

            raDay.Children.Add(rt);

            RenderText status = new RenderText(" ");
            status.FormatDataBindingInstanceScript =
                "If IsNothing(RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value) Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse\r\n" +
                "Else \r\n" +
                "    RenderObject.Style.Brush = RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value.Brush.Brush \r\n" +
                "End If";
            status.Width = "100%";
            status.Height = "1.5mm";
            raDay.Children.Add(status);

            RenderArea appointments = new RenderArea();
            appointments.Height = "parent.Height - Y - 2.5mm";

            // RenderArea representing the single appointment
            RenderArea raApp = new RenderArea();
            raApp.Style.Spacing.All = "0.2mm";
            raApp.FormatDataBindingInstanceScript =
                "If RenderObject.Original.DataBinding.Fields!AllDayEvent.Value Then\r\n" +
                "    RenderObject.Style.Borders.All = LineDef.Default\r\n" +
                "End If\r\n" +
                "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" +
                "    RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" +
                "End If";
            raApp.Stacking = StackingRulesEnum.InlineLeftToRight;
            raApp.Height = "14pt";

            // Set the text's data source to the data source of the containing  RenderArea - this indicates that the render object is bound to the current group in the specified object:
            raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value");
            raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value");

            rt = new RenderText();
            rt.Style.WordWrap = false;
            rt.Text = "[IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, \"> \", String.Empty) & " +
                "IIf(Fields!AllDayEvent.Value, \"\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t}\", " +
                "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value)))] [Fields!Subject.Value]";
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            rt = new RenderText();
            rt.FormatDataBindingInstanceScript =
                "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)";
            rt.Text = "[\" (\" & Fields!Location.Value & \")\"]";
            rt.Style.WordWrap = false;
            rt.Width = "Auto";
            raApp.Children.Add(rt);

            appointments.Children.Add(raApp);
            raDay.Children.Add(appointments);

            RenderArea overflowArea = new RenderArea();
            overflowArea.Name = "overflow";
            RenderText arrow = new RenderText(new string((char)0x36, 1), new Font("Webdings", 10));
            arrow.Style.Padding.Top = "-1.5mm";
            arrow.X = "parent.Width - 4mm";
            overflowArea.Children.Add(arrow);
            overflowArea.ZOrder = 100;
            overflowArea.Height = "2.5mm";
            overflowArea.FragmentResolvedScript =
                "if (C1PrintDocument.FormatVersion.AssemblyVersion.MinorRevision <> 100) Then\r\n" +
                "  Dim fragment As RenderFragment = RenderFragment.Parent.Children(2)\r\n" +
                "  If (fragment.HasChildren) Then\r\n" +
                "    If (RenderFragment.Parent.BoundsOnPage.Contains(fragment.Children(fragment.Children.Count - 1).BoundsOnPage)) Then\r\n" +
                "      RenderFragment.RenderObject.Visibility = VisibilityEnum.Hidden\r\n" +
                "    else\r\n" +
                "      RenderFragment.RenderObject.Visibility = VisibilityEnum.Visible\r\n" +
                "    end if\r\n" +
                "  else\r\n" +
                "    RenderFragment.RenderObject.Visibility = VisibilityEnum.Hidden\r\n" +
                "  end if\r\n" +
                "else\r\n" +
                "  RenderFragment.RenderObject.Visibility = VisibilityEnum.Hidden\r\n" +
                "end if";
            raDay.Children.Add(overflowArea);

            raWeekTab.Children.Add(raDay);
            raMonth.Children.Add(raWeekTab);

            raPage.Children.Add(raMonth);
            #endregion

            #region ** tasks
            // tasks
            RenderArea include = new RenderArea();
            include.FormatDataBindingInstanceScript =
                "If Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Visible \r\n" +
                "Else\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If";
            include.Width = "20%";
            include.Height = "parent.Height - 28mm";

            RenderArea raTasks = new RenderArea();
            raTasks.FormatDataBindingInstanceScript =
                "If Not Document.Tags!IncludeTasks.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If\r\n" +
                "RenderObject.Height = Document.Tags!TaskHeight.Value";
            raTasks.Style.Borders.All = LineDef.Default;
            raTasks.Style.Spacing.Top = "0.5mm";
            raTasks.Style.Spacing.Left = "0.5mm";
            raTasks.Width = "100%";

            rt = new RenderText();
            rt.Text = "Tasks";
            rt.Style.Padding.Left = "2mm";
            rt.Style.Borders.Bottom = LineDef.Default;
            raTasks.Children.Add(rt);
            include.Children.Add(raTasks);

            RenderArea raNotes = new RenderArea();
            raNotes.FormatDataBindingInstanceScript =
                "If Not Document.Tags!IncludeBlankNotes.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If\r\n" +
                "RenderObject.Height = Document.Tags!TaskHeight.Value";
            raNotes.Style.Borders.All = LineDef.Default;
            raNotes.Style.Spacing.Top = "0.5mm";
            raNotes.Style.Spacing.Left = "0.5mm";
            raNotes.Width = "100%";

            rt = new RenderText();
            rt.Text = "Notes";
            rt.Style.Padding.Left = "2mm";
            rt.Style.Borders.Bottom = LineDef.Default;
            raNotes.Children.Add(rt);
            include.Children.Add(raNotes);

            raNotes = new RenderArea();
            raNotes.FormatDataBindingInstanceScript =
                "If Not Document.Tags!IncludeLinedNotes.Value Then\r\n" +
                "    RenderObject.Visibility = VisibilityEnum.Collapse \r\n" +
                "End If\r\n" +
                "RenderObject.Height = Document.Tags!TaskHeight.Value";
            raNotes.Style.Borders.All = LineDef.Default;
            raNotes.Style.Spacing.Top = "0.5mm";
            raNotes.Style.Spacing.Left = "0.5mm";
            raNotes.Width = "100%";

            rt = new RenderText();
            rt.Text = "Notes";
            rt.Style.Padding.Left = "2mm";
            rt.Style.Borders.Bottom = LineDef.Default;
            raNotes.Children.Add(rt);

            RenderTable lines = new RenderTable();
            lines.Rows.Insert(0, 1);
            lines.Rows[0].Height = "0.5cm";
            TableVectorGroup gr = lines.RowGroups[0, 1];
            gr.Header = TableHeaderEnum.None;
            List<int> lst = new List<int>(60);
            for (int i = 0; i < 60; i++)
            {
                lst.Add(i);
            }
            gr.DataBinding.DataSource = lst;
            lines.Style.GridLines.Horz = LineDef.Default;
            lines.RowSizingMode = TableSizingModeEnum.Fixed;

            raNotes.Children.Add(lines);

            include.Children.Add(raNotes);

            raPage.Children.Add(include);
            #endregion

            doc.Body.Children.Add(raPage);

            AddCommonTags(doc);

            Tag newTag = new Tag("Appointments", null, typeof(IList<Appointment>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("WeekTabs", null, typeof(List<DateTime>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("WeekNumber", null, typeof(List<DateTime>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("MonthCalendars", null, typeof(List<DateTime>));
            newTag.ShowInDialog = false;
            newTag.SerializeValue = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("StartDate", DateTime.Today, typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            doc.Tags.Add(newTag);
            newTag = new Tag("EndDate", DateTime.Today.AddDays(1), typeof(DateTime));
            newTag.InputParams = new TagDateTimeInputParams();
            doc.Tags.Add(newTag);
            newTag = new Tag("HidePrivateAppointments", false, typeof(bool));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("TaskHeight", new Unit("33.3%"), typeof(Unit));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);
            newTag = new Tag("DayWidth", new Unit("13.9%"), typeof(Unit));
            newTag.ShowInDialog = false;
            doc.Tags.Add(newTag);

            newTag = new Tag("IncludeTasks", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Include Tasks";
            doc.Tags.Add(newTag);
            newTag = new Tag("IncludeBlankNotes", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Include Notes (blank)";
            doc.Tags.Add(newTag);
            newTag = new Tag("IncludeLinedNotes", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Include Notes (lined)";
            doc.Tags.Add(newTag);
            newTag = new Tag("WorkDaysOnly", false, typeof(bool));
            newTag.ShowInDialog = true;
            newTag.InputParams = new TagBoolInputParams();
            newTag.Description = "Only Print Workdays";
            doc.Tags.Add(newTag);
        }
コード例 #24
0
        /*private RenderObject CreateItem(string caption, Style style)
         * {
         *  RenderArea result = new RenderArea();
         *  result.Style.Padding.All = "1mm";
         *
         *  RenderText rt = new RenderText();
         *  rt.Text = caption;
         *  rt.Style.AmbientParent = style;
         *  result.Children.Add(rt);
         *
         *  RenderInputText rit = new RenderInputText();
         *  rit.Style.AmbientParent = style;
         *  rit.Width = "parent.width";
         *  result.Children.Add(rit);
         *
         *  return result;
         * }*/

        private void GenerateDoc(C1PrintDocument doc)
        {
            doc.Clear();
            RenderTable       ph      = new RenderTable(doc);
            RenderInputButton rbPrior = new RenderInputButton(doc, "<<");

            rbPrior.InputActions.Add(
                UserActionEnum.Click,
                new ActionHandlerLink(new C1LinkTargetPage(PageJumpTypeEnum.Previous)));
            RenderInputButton rbNext = new RenderInputButton(doc, ">>");

            rbNext.X = "parent.Width - width";
            rbNext.InputActions.Add(
                UserActionEnum.Click,
                new ActionHandlerLink(new C1LinkTargetPage(PageJumpTypeEnum.Next)));
            ph.Cells[0, 0].Area.Children.Add(rbPrior);
            ph.Cells[0, 1].Area.Children.Add(rbNext);
            ph.Style.Borders.Bottom = new LineDef("1pt", Color.Black);
            ph.Style.Spacing.Bottom = "5mm";

            doc.PageLayout.PageHeader = ph;

            doc.PageLayout.PageFooter = new RenderText(doc, "Page [PageNo] of [PageCount]", AlignHorzEnum.Right);

            // create styles
            _captionStyle                = doc.Style.Children.Add();
            _captionStyle.Font           = new Font("Tahoma", 16, FontStyle.Bold);
            _captionStyle.BackColor      = Color.FromArgb(208, 237, 253);
            _captionStyle.Spacing.Bottom = "5mm";

            _fieldCaptionStyle      = doc.Style.Children.Add();
            _fieldCaptionStyle.Font = new Font("Tahoma", 13);

            _requiredCharStyle           = doc.Style.Children.Add();
            _requiredCharStyle.Parents   = _fieldCaptionStyle;
            _requiredCharStyle.TextColor = Color.Red;

            _passwordInfoStyle              = doc.Style.Children.Add();
            _passwordInfoStyle.Parents      = _fieldCaptionStyle;
            _passwordInfoStyle.TextPosition = TextPositionEnum.Subscript;

            _textFieldStyle      = doc.Style.Children.Add();
            _textFieldStyle.Font = new Font("Tahoma", 12, FontStyle.Bold);

            // Personal information
            doc.Body.Children.Add(new RenderText(doc, "Personal information", _captionStyle, _captionStyle));
            // create RenderTable containing the form's fields
            RenderTable rt = new RenderTable(doc);

            rt.CellStyle.Padding.All    = "0.5mm";
            rt.Cells[0, 0].RenderObject = CreateFieldCaption(doc, "First name:", true, false);
            rt.Cells[1, 0].RenderObject = CreateTextField(doc, "FirstName", Color.Black, false);

            rt.Cells[0, 1].RenderObject = CreateFieldCaption(doc, "Last name:", true, false);
            rt.Cells[1, 1].RenderObject = CreateTextField(doc, "LastName", Color.Black, false);

            rt.Cells[2, 0].RenderObject = CreateFieldCaption(doc, "Email Address:", true, false);
            rt.Cells[3, 0].RenderObject = CreateTextField(doc, "EmailAddress", Color.Blue, false);

            rt.Cells[2, 1].RenderObject = CreateFieldCaption(doc, "Retype Email Address:", true, false);
            rt.Cells[3, 1].RenderObject = CreateTextField(doc, "RetypeEmailAddress", Color.Blue, false);

            rt.Cells[4, 0].RenderObject = CreateFieldCaption(doc, "Password:"******"Password", Color.Black, true);

            rt.Cells[4, 1].RenderObject = CreateFieldCaption(doc, "Retype Password:"******"RetypePassword", Color.Black, true);

            rt.Cells[6, 0].RenderObject = CreateFieldCaption(doc, "City:", false, false);
            rt.Cells[7, 0].RenderObject = CreateTextField(doc, "City", Color.Black, false);

            rt.Cells[6, 1].RenderObject = CreateFieldCaption(doc, "State:", false, false);
            rt.Cells[7, 1].RenderObject = CreateTextField(doc, "State", Color.Black, false);

            // add the "Select" button
            RenderArea        ra = new RenderArea(doc);
            RenderInputButton rb = new RenderInputButton(doc, "Select...");

            rb.Name = "Select";
            rb.X    = "parent.Width - width";
            ra.Children.Add(rb);
            rt.Cells[8, 1].RenderObject = ra;

            // Work status field
            rt.Cells[9, 0].RenderObject = CreateFieldCaption(doc, "Work status:", true, false);
            rt.Cells[9, 0].SpanCols     = 2;

            rt.Cells[10, 0].RenderObject = new RenderInputRadioButton(doc, "StatusCitizen", "I am a citizen");
            ((RenderInputRadioButton)rt.Cells[10, 0].RenderObject).Checked = true;
            rt.Cells[10, 1].RenderObject = new RenderInputRadioButton(doc, "StatusAny", "I am authorized to work for any employer");
            rt.Cells[11, 0].RenderObject = new RenderInputRadioButton(doc, "StatusCurrent", "I am authorized to work for my current employer");
            rt.Cells[11, 1].RenderObject = new RenderInputRadioButton(doc, "StatusSeeking", "I am seeking authorization");
            rt.Style.Spacing.Bottom      = "5mm";
            doc.Body.Children.Add(rt);

            //
            doc.Body.Children.Add(new RenderText(doc, "Interests", _captionStyle, _captionStyle));

            rt = new RenderTable(doc);
            rt.Cells[0, 0].RenderObject = new RenderInputCheckBox(doc, "Accounting");
            rt.Cells[0, 1].RenderObject = new RenderInputCheckBox(doc, "General Business");
            rt.Cells[0, 2].RenderObject = new RenderInputCheckBox(doc, "Pharmaceutical");
            rt.Cells[1, 0].RenderObject = new RenderInputCheckBox(doc, "Admin & Clerical");
            rt.Cells[1, 1].RenderObject = new RenderInputCheckBox(doc, "General Labor");
            rt.Cells[1, 2].RenderObject = new RenderInputCheckBox(doc, "Professional Services");
            rt.Cells[2, 0].RenderObject = new RenderInputCheckBox(doc, "Automotive");
            rt.Cells[2, 1].RenderObject = new RenderInputCheckBox(doc, "Government");
            rt.Cells[2, 2].RenderObject = new RenderInputCheckBox(doc, "QA - Quality Control");
            rt.Cells[2, 0].RenderObject = new RenderInputCheckBox(doc, "Biotech");
            rt.Cells[2, 1].RenderObject = new RenderInputCheckBox(doc, "Information Technology");
            rt.Cells[2, 2].RenderObject = new RenderInputCheckBox(doc, "Warehouse");
            rt.BreakAfter = BreakEnum.Page;
            doc.Body.Children.Add(rt);


            doc.Body.Children.Add(new RenderText(doc, "Desired Position", _captionStyle, _captionStyle));
            doc.Body.Children.Add(new RenderText(doc, "Describe your desired position by completing as many of the following questions as possible.\n\nPlease indicate the wage you are seeking."));

            rt = new RenderTable(doc);
            rt.Cells[0, 0].RenderObject = new RenderInputCheckBox(doc, "Full-time");
            rt.Cells[0, 1].RenderObject = new RenderInputCheckBox(doc, "Part-time");
            rt.Cells[0, 2].RenderObject = new RenderInputCheckBox(doc, "Intern");
            rt.Cells[1, 0].RenderObject = new RenderInputCheckBox(doc, "Seasonal");
            rt.Cells[1, 1].RenderObject = new RenderInputCheckBox(doc, "Temporary");
            rt.Style.Spacing.Bottom     = "5mm";
            doc.Body.Children.Add(rt);

            doc.Body.Children.Add(new RenderText(doc, "How many miles are you willing to commute to work?"));
            RenderInputComboBox rc = new RenderInputComboBox(
                doc,
                "-- Select Distance --",
                "1 mile",
                "5 miles",
                "10 miles",
                "25 miles",
                "50 miles",
                "100 miles");

            rc.Text                 = rc.Items[0].Text;
            rc.Style.Parents        = _textFieldStyle;
            rc.Style.Spacing.Bottom = "5mm";
            doc.Body.Children.Add(rc);

            doc.Body.Children.Add(new RenderText(doc, "How often are you willing to travel for work?"));
            rc = new RenderInputComboBox(
                doc,
                "Negligible",
                "Up to 25%",
                "Up to 50%",
                "Road Warrior");
            rc.DropDownStyle = ComboBoxStyle.DropDownList;
            rc.Text          = rc.Items[0].Text;
            doc.Body.Children.Add(rc);

            // Save button
            rb = new RenderInputButton(doc, "Save...");
            rb.AcceptButton = true;
            rb.InputActions.Add(
                UserActionEnum.Click,
                new ActionHandlerFileSave());
            doc.Body.Children.Add(rb);

            rb = new RenderInputButton(doc, "Save as PDF...");
            rb.InputActions.Add(
                UserActionEnum.Click,
                new ActionHandlerFileSave(null, ExportProviders.PdfExportProvider));
            doc.Body.Children.Add(rb);


            doc.Generate();
        }
コード例 #25
0
 bool PanelInRenderArea()
 {
     return(RenderArea.Overlaps(new Rect(Position.x, Position.y, Size.x, Size.y)));
 }
コード例 #26
0
        /// <summary>
        /// Makes render object representing a grid cell. That render object
        /// may be inserted into the corresponding RenderTable's cell, or
        /// for tree grids, into a RenderArea that combines the cell with tree glyphs.
        /// </summary>
        /// <param name="row">Grid row index.</param>
        /// <param name="col">Grid column index.</param>
        /// <param name="cellStyle">Cell style. May be modified by owner-drawn cells.</param>
        /// <param name="text">The cell text.</param>
        /// <returns>The render object representing the cell.
        /// The type of object varies depending on the cell's content - it can be
        /// a RenderText, a RenderImage, or a RenderArea containing both.
        /// </returns>
        private RenderObject MakeCellRO(int row, int col, ref CellStyle cellStyle, out string text)
        {
            Image     image;
            CheckEnum chk;

            text = _grid.GetDataDisplay(row, col, out image, out chk);
            // special treatment of bool columns - suppress text if a checkbox is drawn:
            if (cellStyle.DataType == typeof(bool) && chk != CheckEnum.None)
            {
                text = null;
            }

            // handle owner-drawn cells:
            if (_grid.DrawMode == DrawModeEnum.OwnerDraw && _grid2 != null)
            {
                // note: the next call may modify cell's style, text and image while returning null.
                RenderObject ro = _grid2.MakeOwnerDrawCellRO(row, col, ref cellStyle, ref text, ref image);
                if (ro != null)
                {
                    return(ro);
                }
                // else process as regular (non-ownerdraw) cell; taking into consideration
                // the possibly modified cell style, text and image.
            }

            bool overlay  = false;
            bool hasImage = image != null || chk != CheckEnum.None;

            switch (cellStyle.Display)
            {
            case DisplayEnum.ImageOnly:
                text = null;
                break;

            case DisplayEnum.None:
                text     = null;
                hasImage = false;
                break;

            case DisplayEnum.Overlay:
                overlay = true;
                break;

            case DisplayEnum.Stack:
                break;

            case DisplayEnum.TextOnly:
                hasImage = false;
                break;

            default:
                Debug.Assert(false);
                break;
            }
            if (cellStyle.ImageAlign == ImageAlignEnum.Hide)
            {
                hasImage = false;
            }

            if (string.IsNullOrEmpty(text) && !hasImage)
            {
                return(null);
            }
            else if (!hasImage)
            {
                return(MakeTextRO(text, null));
            }
            else if (string.IsNullOrEmpty(text))
            {
                return(MakeImageRO(image, chk, null));
            }
            else
            {
                RenderObject rimg = MakeImageRO(image, chk, "img");
                RenderObject rtxt = MakeTextRO(text, "txt");

                ImageOn ion = AlignImage(rimg, cellStyle, overlay);
                AlignText(rtxt, GetTextAlign(cellStyle, cellStyle.DataType, text), ion);

                RenderArea ra = new RenderArea();
                ra.Stacking = StackingRulesEnum.BlockLeftToRight;
                ra.Children.Add(rimg);
                ra.Children.Add(rtxt);
                if (ion == ImageOn.Left || ion == ImageOn.Right)
                {
                    ra.Width = "img.width + txt.width";
                }
                else if (ion == ImageOn.Top || ion == ImageOn.Bottom)
                {
                    ra.Height = "img.height + txt.height";
                }
                else
                {
                    ra.Width  = Unit.Auto;
                    ra.Height = Unit.Auto;
                }
                return(ra);
            }
        }