/// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= /// <summary> /// If we draw a line with an aperture it will not always have linear ends /// for example if the aperture is a circle it will have half circle ends. Each /// line that is drawn calls this to make it look right visually /// </summary> /// <param name="graphicsObj">a graphics object to draw on</param> /// <param name="workingBrush">a brush to draw with</param> /// <param name="workingPen">the pen used for the line, we get the width from this</param> /// <param name="x1">the first x value</param> /// <param name="y1">the first y value</param> /// <param name="x2">the second x value</param> /// <param name="y2">the second y value</param> /// <param name="xyComp">the xy compensation factor</param> /// <returns>z success, nz fail</returns> public override void FixupLineEndpointsForGCodePlot(IsoPlotBuilder isoPlotBuilder, GerberFileStateMachine stateMachine, int x1, int y1, int x2, int y2, int radius, int xyComp) { IsoPlotUsageTagFlagEnum usageMode = IsoPlotUsageTagFlagEnum.IsoPlotUsageTagFlag_NORMALEDGE; if (isoPlotBuilder == null) { return; } if (stateMachine == null) { return; } // set the usage mode if (stateMachine.GerberFileLayerPolarity == GerberLayerPolarityEnum.CLEAR) { usageMode = IsoPlotUsageTagFlagEnum.IsoPlotUsageTagFlag_INVERTEDGE; } else { usageMode = IsoPlotUsageTagFlagEnum.IsoPlotUsageTagFlag_NORMALEDGE; } // fix up the two end points isoPlotBuilder.DrawGSCircle(usageMode, x1, y1, radius, stateMachine.BackgroundFillModeAccordingToPolarity, stateMachine.WantClockWise); isoPlotBuilder.DrawGSCircle(usageMode, x2, y2, radius, stateMachine.BackgroundFillModeAccordingToPolarity, stateMachine.WantClockWise); return; }
/// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= /// <summary> /// If we draw a line with an aperture it will not always have linear ends /// for example if the aperture is a circle it will have half circle ends. Each /// line that is drawn calls this to make it look right visually /// </summary> /// <param name="graphicsObj">a graphics object to draw on</param> /// <param name="workingBrush">a brush to draw with</param> /// <param name="workingPen">the pen used for the line, we get the width from this</param> /// <param name="x1">the first x value</param> /// <param name="y1">the first y value</param> /// <param name="x2">the second x value</param> /// <param name="y2">the second y value</param> /// <param name="xyComp">the xy compensation factor</param> /// <returns>z success, nz fail</returns> public override void FixupLineEndpointsForGCodePlot(IsoPlotBuilder isoPlotBuilder, GerberFileStateMachine stateMachine, int x1, int y1, int x2, int y2, int radius, int xyComp) { IsoPlotUsageTagFlagEnum usageMode = IsoPlotUsageTagFlagEnum.IsoPlotUsageTagFlag_NORMALEDGE; if (isoPlotBuilder == null) { return; } if (stateMachine == null) { return; } // set the usage mode if (stateMachine.GerberFileLayerPolarity == GerberLayerPolarityEnum.CLEAR) { usageMode = IsoPlotUsageTagFlagEnum.IsoPlotUsageTagFlag_INVERTEDGE; } else { usageMode = IsoPlotUsageTagFlagEnum.IsoPlotUsageTagFlag_NORMALEDGE; } int xComp = (int)Math.Round(((xAxisDimension * stateMachine.IsoPlotPointsPerAppUnit))); int yComp = (int)Math.Round(((yAxisDimension * stateMachine.IsoPlotPointsPerAppUnit) / 2)); isoPlotBuilder.DrawGSLineOutLine(usageMode, x1, y1 - yComp - xyComp, x1, y1 + yComp + xyComp, xComp + (2 * xyComp), stateMachine.BackgroundFillModeAccordingToPolarity); isoPlotBuilder.DrawGSLineOutLine(usageMode, x2, y2 - yComp - xyComp, x2, y2 + yComp + xyComp, xComp + (2 * xyComp), stateMachine.BackgroundFillModeAccordingToPolarity); return; }