private void ResetRenderer() { if (pluginInterface.FileState.Opened) { Func <PathData> pd; if (routesDropDown.SelectedRoute > Timetable.UNASSIGNED_ROUTE_ID) { pd = Renderer.DefaultPathData(routesDropDown.SelectedRoute, pluginInterface.Timetable); } else { var virt = VirtualRoute.GetVRoute(pluginInterface.Timetable, routesDropDown.SelectedRoute); pd = virt !.GetPathData; } renderer = new Renderer(pluginInterface.Timetable, pd); if (!scrollPosition.HasValue) { scrollPosition = new Point(0, 0); } panel.Height = renderer.GetHeightExternal(!splitCheckBox.Checked !.Value); hpanel.Height = splitCheckBox.Checked.Value ? renderer.GetHeightExternal(default, default, true) : 0;
public bool Export(Timetable tt, Stream stream, IReducedPluginInterface pluginInterface, string[] flags = null) { Func <PathData> pd; if (route > Timetable.UNASSIGNED_ROUTE_ID) { pd = Renderer.DefaultPathData(route, tt); } else { var virt = VirtualRoute.GetVRoute(tt, route); pd = virt !.GetPathData; } Renderer renderer = new Renderer(tt, pd); using (var bmp = new Bitmap(width, renderer.GetHeightExternal(true), PixelFormat.Format32bppArgb)) using (var g = Graphics.FromImage(bmp)) { renderer.Draw(g, true, width, true); bmp.Save(stream, format); } return(true); }
public void InitPrint() { var printers = Print.PrinterSettings.InstalledPrinters.Cast <string>().ToArray(); doc = new Print.PrintDocument(); var form = new FDialog <string>(); var routesDropDown = new RoutesDropDown(); var routeStack = new StackLayout(routesDropDown) { Orientation = Orientation.Horizontal, Padding = new Eto.Drawing.Padding(10), Spacing = 5 }; var routeGroup = new GroupBox { Content = routeStack, Text = T._("Strecke auswählen") }; var printerDropDown = new DropDown { DataStore = printers }; var paperDropDown = new DropDown(); var landscapeChk = new CheckBox { Text = T._("Querformat") }; var printButton = new Button { Text = T._("Drucken") }; var printerStack = new StackLayout(printerDropDown, paperDropDown, landscapeChk, printButton) { Orientation = Orientation.Horizontal, Padding = new Eto.Drawing.Padding(10), Spacing = 5 }; var printerGroup = new GroupBox { Content = printerStack, Text = T._("Druckeinstellungen") }; var stack = new StackLayout(routeGroup, printerGroup) { Orientation = Orientation.Vertical, Padding = new Eto.Drawing.Padding(10), Spacing = 5 }; routesDropDown.Initialize(pluginInterface); routesDropDown.EnableVirtualRoutes = true; form.Content = stack; form.DefaultButton = printButton; form.Title = T._("Bildfahrplan drucken"); printButton.Click += (s, e) => { form.Result = (string)printerDropDown.SelectedValue; form.Close(); }; printerDropDown.SelectedIndexChanged += (s, e) => { doc.PrinterSettings.PrinterName = (string)printerDropDown.SelectedValue; var paper = doc.PrinterSettings.PaperSizes.Cast <Print.PaperSize>().Select(p => p.PaperName).ToArray(); var a4Index = Array.IndexOf(paper, "A4"); paperDropDown.DataStore = paper; paperDropDown.SelectedIndex = (a4Index != -1) ? a4Index : 0; }; printerDropDown.SelectedIndex = 0; if (form.ShowModal() != null) { if (routesDropDown.SelectedRoute > Timetable.UNASSIGNED_ROUTE_ID) { pd = Renderer.DefaultPathData(routesDropDown.SelectedRoute, pluginInterface.Timetable); } else { var virt = VirtualRoute.GetVRoute(pluginInterface.Timetable, routesDropDown.SelectedRoute); pd = virt !.GetPathData; } doc.PrintPage += Doc_PrintPage; doc.DocumentName = T._("Bildfahrplan generiert mit FPLedit"); doc.PrinterSettings.PrinterName = form.Result; doc.DefaultPageSettings.Margins = new Print.Margins(50, 50, 50, 50); // not working (turning page????) if (Eto.Platform.Instance.IsGtk) { var paperSize = doc.PrinterSettings.PaperSizes[paperDropDown.SelectedIndex]; //HACK: Do not use doc.DefaultPageSettings.Landscape on Linux, as it will lead to awkwardly turned rendering areas, ???) if (landscapeChk.Checked !.Value) { doc.DefaultPageSettings.PaperSize = new Print.PaperSize(paperSize.PaperName, paperSize.Height, paperSize.Width); } else { doc.DefaultPageSettings.PaperSize = paperSize; } } else { doc.DefaultPageSettings.Landscape = landscapeChk.Checked !.Value; } if (!doc.PrinterSettings.IsValid) { MessageBox.Show(T._("Ungültige Druckereinstellungen!"), "FPLedit", MessageBoxType.Error); } else { try { doc.Print(); } catch (Exception ex) { MessageBox.Show(T._("Fehler beim Drucken! {0}", ex.Message), "FPLedit", MessageBoxType.Error); } } }