/* --------------------------------------------------------------------------- * writes data header * the name of the PCB, cursor location, zoom and grid * layergroups and some flags */ static void WritePCBDataHeader (FILE * FP) { Cardinal group; /* * ************************** README ******************* * ************************** README ******************* * * If the file format is modified in any way, update * PCB_FILE_VERSION in file.h * * ************************** README ******************* * ************************** README ******************* */ fprintf (FP, "\n# To read pcb files, the pcb version (or the git source date) must be >= the file version\n"); fprintf (FP, "FileVersion[%i]\n", PCB_FILE_VERSION); fputs ("\nPCB[", FP); PrintQuotedString (FP, (char *)EMPTY (PCB->Name)); fprintf (FP, " %i %i]\n\n", (int) PCB->MaxWidth, (int) PCB->MaxHeight); fprintf (FP, "Grid[%s %i %i %i]\n", c_dtostr (PCB->Grid), (int) PCB->GridOffsetX, (int) PCB->GridOffsetY, (int) Settings.DrawGrid); fprintf (FP, "Cursor[%i %i %s]\n", (int) TO_PCB_X (Output.Width / 2), (int) TO_PCB_Y (Output.Height / 2), c_dtostr (PCB->Zoom)); fprintf (FP, "PolyArea[%s]\n", c_dtostr (PCB->IsleArea)); fprintf (FP, "Thermal[%s]\n", c_dtostr (PCB->ThermScale)); fprintf (FP, "DRC[%i %i %i %i %i %i]\n", PCB->Bloat, PCB->Shrink, PCB->minWid, PCB->minSlk, PCB->minDrill, PCB->minRing); fprintf (FP, "Flags(%s)\n", pcbflags_to_string(PCB->Flags)); fprintf (FP, "Groups(\"%s\")\n", LayerGroupsToString (&PCB->LayerGroups)); fputs ("Styles[\"", FP); for (group = 0; group < NUM_STYLES - 1; group++) fprintf (FP, "%s,%i,%i,%i,%i:", PCB->RouteStyle[group].Name, PCB->RouteStyle[group].Thick, PCB->RouteStyle[group].Diameter, PCB->RouteStyle[group].Hole, PCB->RouteStyle[group].Keepaway); fprintf (FP, "%s,%i,%i,%i,%i\"]\n\n", PCB->RouteStyle[group].Name, PCB->RouteStyle[group].Thick, PCB->RouteStyle[group].Diameter, PCB->RouteStyle[group].Hole, PCB->RouteStyle[group].Keepaway); }
/* --------------------------------------------------------------------------- * writes data header * the name of the PCB, cursor location, zoom and grid * layergroups and some flags */ static void WritePCBDataHeader (FILE * FP) { Cardinal group; /* * ************************** README ******************* * ************************** README ******************* * * If the file format is modified in any way, update * PCB_FILE_VERSION in file.h as well as PCBFileVersionNeeded() * at the top of this file. * * ************************** README ******************* * ************************** README ******************* */ fprintf (FP, "\n# To read pcb files, the pcb version (or the git source date) must be >= the file version\n"); fprintf (FP, "FileVersion[%i]\n", PCBFileVersionNeeded ()); fputs ("\nPCB[", FP); PrintQuotedString (FP, (char *)EMPTY (PCB->Name)); pcb_fprintf (FP, " %mr %mr]\n\n", PCB->MaxWidth, PCB->MaxHeight); pcb_fprintf (FP, "Grid[%.1mr %mr %mr %d]\n", PCB->Grid, PCB->GridOffsetX, PCB->GridOffsetY, Settings.DrawGrid); pcb_fprintf (FP, "Cursor[%mr %mr %s]\n", Crosshair.X, Crosshair.Y, c_dtostr (PCB->Zoom)); /* PolyArea should be output in square cmils, no suffix */ fprintf (FP, "PolyArea[%s]\n", c_dtostr (COORD_TO_MIL (COORD_TO_MIL (PCB->IsleArea) * 100) * 100)); pcb_fprintf (FP, "Thermal[%s]\n", c_dtostr (PCB->ThermScale)); pcb_fprintf (FP, "DRC[%mr %mr %mr %mr %mr %mr]\n", PCB->Bloat, PCB->Shrink, PCB->minWid, PCB->minSlk, PCB->minDrill, PCB->minRing); fprintf (FP, "Flags(%s)\n", pcbflags_to_string(PCB->Flags)); fprintf (FP, "Groups(\"%s\")\n", LayerGroupsToString (&PCB->LayerGroups)); fputs ("Styles[\"", FP); for (group = 0; group < NUM_STYLES - 1; group++) pcb_fprintf (FP, "%s,%mr,%mr,%mr,%mr:", PCB->RouteStyle[group].Name, PCB->RouteStyle[group].Thick, PCB->RouteStyle[group].Diameter, PCB->RouteStyle[group].Hole, PCB->RouteStyle[group].Keepaway); pcb_fprintf (FP, "%s,%mr,%mr,%mr,%mr\"]\n\n", PCB->RouteStyle[group].Name, PCB->RouteStyle[group].Thick, PCB->RouteStyle[group].Diameter, PCB->RouteStyle[group].Hole, PCB->RouteStyle[group].Keepaway); }