private static void AddFileToProject(GerberProject project, GerberImage parsedImage, string fullPathName, bool reloading) { int fileIndex = project.FileInfo.Count - 1; int colorIndex = 0; GerberVerifyError error = GerberVerifyError.ImageOK; //Debug.WriteLine("Integrity check on image....\n"); error = parsedImage.GerberImageVerify(); if (error != GerberVerifyError.ImageOK) { project.FileInfo.RemoveAt(fileIndex); // Image has errors, remove it from the file list. if ((error & GerberVerifyError.MissingNetList) > 0) { throw new GerberImageException("Missing image net list."); } if ((error & GerberVerifyError.MissingFormat) > 0) { throw new GerberImageException("Missing format information in file."); } if ((error & GerberVerifyError.MissingApertures) > 0) { throw new GerberImageException("Missing apertures/drill sizes."); } if ((error & GerberVerifyError.MissingImageInfo) > 0) { throw new GerberImageException("Missing image information."); } } project.FileInfo[fileIndex].Image = parsedImage; if (reloading) // If reload, just exchange the image and return. { return; } project.FileInfo[fileIndex].FullPathName = fullPathName; project.FileInfo[fileIndex].FileName = Path.GetFileName(fullPathName); colorIndex = defaultColorIndex % NumberOfDefaultColors; project.FileInfo[fileIndex].Color = Color.FromArgb(defaultColors[colorIndex, 1], defaultColors[colorIndex, 2], defaultColors[colorIndex, 3]); project.FileInfo[fileIndex].Alpha = defaultColors[colorIndex, 0]; project.FileInfo[fileIndex].IsVisible = true; defaultColorIndex++; }
/// <summary> /// Perform some basic integrity tests on the gerber image. /// </summary> /// <returns>error status</returns> public GerberVerifyError GerberImageVerify() { GerberVerifyError errorStatus = GerberVerifyError.ImageOK; int numberOfNets = 0; if (this.GerberNetList == null) { errorStatus |= GerberVerifyError.MissingNetList; } if (this.Format == null) { errorStatus |= GerberVerifyError.MissingFormat; } if (this.ImageInfo == null) { errorStatus |= GerberVerifyError.MissingImageInfo; } if (this.GerberNetList != null) { numberOfNets = this.GerberNetList.Count; } // If we have nets but no apertures are defined, then complain. if (numberOfNets > 0) { if (this.ApertureArray.Length == 0) { errorStatus |= GerberVerifyError.MissingApertures; } } return(errorStatus); }