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))); }
/// <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); }
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); } }
//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); }
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(); }
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 ); }
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); }
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); }
/// <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; }
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(); }
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); }
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 } }
/// <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); }
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; } }
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); }
/// <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); } }
/// <summary> /// Invalidate the render area /// </summary> public void Refresh() { RenderArea.Invalidate(); }
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); } }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/*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(); }
bool PanelInRenderArea() { return(RenderArea.Overlaps(new Rect(Position.x, Position.y, Size.x, Size.y))); }
/// <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); } }