/// <summary> /// Set printer size in cm /// </summary> /// <param name="printerWidth">Width of the printer head</param> /// <param name="labelWidth">Size of the label (width)</param> /// <param name="labelHeight">Size of the label (height)</param> /// <param name="dpi">DPI of the screen</param> public void SetLabelPrinterSizeCm(double printerWidth, double labelWidth, double labelHeight) { var dpiXProperty = typeof(SystemParameters).GetProperty("DpiX", BindingFlags.NonPublic | BindingFlags.Static); int dpiX = (int)dpiXProperty.GetValue(null, null); var dpiYProperty = typeof(SystemParameters).GetProperty("DpiY", BindingFlags.NonPublic | BindingFlags.Static); int dpiY = (int)dpiXProperty.GetValue(null, null); SetLabelPrinterSizePixel(UnitHelper.CmToPx(printerWidth, dpiX), UnitHelper.CmToPx(labelWidth, dpiX), UnitHelper.CmToPx(labelHeight, dpiY)); }
///<summary> /// Render the control on a canvas ///</summary> /// <param name="canvas">Canvas formular</param> /// <param name="formular">Formular</param> /// <param name="command">Command instance</param> /// <param name="relative">Relative position</param> /// <param name="dpi">DPI</param> public override void Render(Canvas canvas, EPLFormular formular, EPLCommand command, Tuple <double, double> relative, int dpiX, int dpiY) { EPL.BarcodeCommand cmd = (EPL.BarcodeCommand)command; BarcodeBase barcode = null; switch (cmd.P4) { case "3": barcode = new RadBarcode39(); break; case "1A": barcode = new RadBarcode128A(); break; case "B": barcode = new RadBarcode128B(); break; case "C": barcode = new RadBarcode128C(); break; case "E80": case "E82": case "E85": barcode = new RadBarcodeEAN8(); break; case "E30": case "E32": case "E35": barcode = new RadBarcodeEAN8(); break; case "UA0": barcode = new RadBarcodeUPCA(); break; case "UE0": barcode = new RadBarcodeUPCA(); break; case "1": default: barcode = new RadBarcode128(); break; } if (barcode != null) { barcode.ToolTip = cmd.CommandName; string displayText = cmd.Data ?? "--null--"; barcode.FontFamily = new FontFamily("Consolas"); if (displayText.StartsWith("\"")) { displayText = displayText.Remove(0, 1); } if (displayText.EndsWith("\"")) { displayText = displayText.Remove(displayText.Length - 1, 1); } barcode.Text = displayText; // Set coordinates int _x = 0; int _y = 0; if (int.TryParse(cmd.P1, out _x) && int.TryParse(cmd.P2, out _y)) { var coord = UnitHelper.DotToPixel(8, _x, _y, dpiX, dpiY); if (relative != null) { Canvas.SetLeft(barcode, coord.Item1 + relative.Item1); Canvas.SetTop(barcode, coord.Item2 + relative.Item2); } else { Canvas.SetLeft(barcode, coord.Item1); Canvas.SetTop(barcode, coord.Item2); } } // Set height, default will be 70 dots double bHeight = 70; double.TryParse(cmd.P7, out bHeight); barcode.Height = UnitHelper.DotToPixel(8, bHeight, dpiY) + 5; switch (cmd.P3) { case "1": barcode.LayoutTransform = new RotateTransform(90); break; case "2": barcode.LayoutTransform = new RotateTransform(180); break; case "3": barcode.LayoutTransform = new RotateTransform(270); break; } //block.FontSize = PointsToPixels(12); barcode.ShowText = true; canvas.Children.Add(barcode); barcode.Background = new SolidColorBrush(Colors.WhiteSmoke); canvas.UpdateLayout(); barcode.UpdateLayout(); int narrowBarWide = 1; if (int.TryParse(cmd.P5, out narrowBarWide)) { barcode.Width = barcode.ActualWidth * narrowBarWide; } // Must be under the width calculation, because otherwise it did not work... if (cmd.P8 != "B") { barcode.ShowText = false; } barcode.ShowChecksum = false; } }
///<summary> /// Render the control on a canvas ///</summary> /// <param name="canvas">Canvas formular</param> /// <param name="formular">Formular</param> /// <param name="command">Command instance</param> /// <param name="relative">Relative position</param> /// <param name="dpi">DPI</param> public override void Render(Canvas canvas, EPLFormular formular, EPLCommand command, Tuple <double, double> relative, int dpiX, int dpiY) { EPL.TextCommand cmd = (EPL.TextCommand)command; TextBlock block = new TextBlock(); block.FontFamily = new FontFamily("Consolas"); block.ToolTip = cmd.CommandName; string displayText = cmd.Data ?? "--null--"; if (displayText.StartsWith("\"")) { displayText = displayText.Remove(0, 1); } if (displayText.EndsWith("\"")) { displayText = displayText.Remove(displayText.Length - 1, 1); } block.Text = displayText; // Set coordinates int _x = 0; int _y = 0; if (int.TryParse(cmd.P1, out _x) && int.TryParse(cmd.P2, out _y)) { var coord = UnitHelper.DotToPixel(8, _x, _y, dpiX, dpiY); if (relative != null) { Canvas.SetLeft(block, coord.Item1 + relative.Item1); Canvas.SetTop(block, coord.Item2 + relative.Item2); } else { Canvas.SetLeft(block, coord.Item1); Canvas.SetTop(block, coord.Item2); } } switch (cmd.P3) { case "1": block.LayoutTransform = new RotateTransform(90); break; case "2": block.LayoutTransform = new RotateTransform(180); break; case "3": block.LayoutTransform = new RotateTransform(270); break; } //block.FontSize = PointsToPixels(12); if (cmd.P7 == "R") { block.Foreground = new SolidColorBrush(Colors.White); block.Background = new SolidColorBrush(Colors.Black); } canvas.Children.Add(block); }
/// <summary> /// Render the current EPL formular /// </summary> public void Render() { if (eplFormular == null) { eplFormular = new EPLFormular(this, editor.Text); eplFormular.Processor = Processor; } errors.Clear(); eplFormular.Load(editor.Text); textMarkerService.RemoveAll(m => true); labelCanvas.Children.Clear(); renderGrid.Children.Clear(); renderGrid.Children.Add(labelCanvas); generatedEPLEditor.Text = eplFormular.GetEPLCode(); // Render var dpiXProperty = typeof(SystemParameters).GetProperty("DpiX", BindingFlags.NonPublic | BindingFlags.Static); int dpiX = (int)dpiXProperty.GetValue(null, null); var dpiYProperty = typeof(SystemParameters).GetProperty("DpiX", BindingFlags.NonPublic | BindingFlags.Static); int dpiY = (int)dpiXProperty.GetValue(null, null); Tuple <double, double> relativePosition = new Tuple <double, double>(0, 0); Tuple <double, double> absoltePosition = new Tuple <double, double>(0, 0); // Label size double labelHeightPx = UnitHelper.CmToPx(1.9, dpiX); double labelWidthPx = UnitHelper.CmToPx(5.7, dpiY); double printerWidthPx = UnitHelper.CmToPx(10, dpiX); foreach (var command in eplFormular.Commands) { if (command is RCommand) { double _x = 0; double _y = 0; if (double.TryParse((command as RCommand).P1, out _x) && double.TryParse((command as RCommand).P2, out _y)) { relativePosition = new Tuple <double, double>(UnitHelper.DotToPixel(8, _x, dpiX), UnitHelper.DotToPixel(8, _y, dpiY)); absoltePosition = new Tuple <double, double> ( relativePosition.Item1, relativePosition.Item2 + 5 ); } } else if (command is LabelHeightCommand) { if (double.TryParse(((LabelHeightCommand)command).P1, out labelHeightPx)) { labelHeightPx = UnitHelper.DotToPixel(8, (int)labelHeightPx, dpiY); SetLabelPrinterSizePixel(printerWidthPx, labelHeightPx, labelWidthPx); absoltePosition = new Tuple <double, double> ( ((printerWidthPx / 2) - (labelWidthPx / 2)), relativePosition.Item2 + 5 ); } } else if (command is LabelWidthCommand) { if (double.TryParse(((LabelWidthCommand)command).P1, out labelWidthPx)) { labelWidthPx = UnitHelper.DotToPixel(8, (int)labelWidthPx, dpiX); SetLabelPrinterSizePixel(printerWidthPx, labelWidthPx, labelHeightPx); absoltePosition = new Tuple <double, double> ( ((printerWidthPx / 2) - (labelWidthPx / 2)), relativePosition.Item2 + 5 ); } } else { var uiFactory = UIControlFactory.Get(command.GetType()); if (uiFactory != null) { // Render on UI uiFactory.Render(this.renderGrid, eplFormular, command, absoltePosition, dpiX, dpiY); } } } }