static int ReportDrills (int argc, char **argv, Coord x, Coord y) { DrillInfoType *AllDrills; Cardinal n; char *stringlist, *thestring; int total_drills = 0; size_t size_left; AllDrills = GetDrillInfo (PCB->Data); for (n = 0; n < AllDrills->DrillN; n++) { total_drills += AllDrills->Drill[n].PinCount; total_drills += AllDrills->Drill[n].ViaCount; } size_left = 512L + AllDrills->DrillN * 64L; stringlist = (char *)malloc (size_left); /* Use tabs for formatting since can't count on a fixed font anymore. | And even that probably isn't going to work in all cases. */ sprintf (stringlist, _("There are %d different drill sizes used in this layout, %d holes total\n\n" "Drill Diam. (%s)\t# of Pins\t# of Vias\t# of Elements\t# Unplated\n"), AllDrills->DrillN, total_drills, Settings.grid_unit->suffix); thestring = stringlist; while (size_left > 0 && *thestring != '\0') { thestring++; size_left--; } for (n = 0; n < AllDrills->DrillN; n++) { pcb_snprintf (thestring, size_left, "%10m*\t\t%d\t\t%d\t\t%d\t\t%d\n", Settings.grid_unit->suffix, AllDrills->Drill[n].DrillSize, AllDrills->Drill[n].PinCount, AllDrills->Drill[n].ViaCount, AllDrills->Drill[n].ElementN, AllDrills->Drill[n].UnplatedCount); while (size_left > 0 && *thestring != '\0') { thestring++; size_left--; } } FreeDrillInfo (AllDrills); /* create dialog box */ gui->report_dialog (_("Drill Report"), stringlist); free (stringlist); return 0; }
static int ReportDrills (int argc, char **argv, int x, int y) { DrillInfoTypePtr AllDrills; Cardinal n; char *stringlist, *thestring; int total_drills = 0; int prec = Settings.grid_units_mm? 4: 2; AllDrills = GetDrillInfo (PCB->Data); RoundDrillInfo (AllDrills, 100); for (n = 0; n < AllDrills->DrillN; n++) { total_drills += AllDrills->Drill[n].PinCount; total_drills += AllDrills->Drill[n].ViaCount; total_drills += AllDrills->Drill[n].UnplatedCount; } stringlist = (char *)malloc (512L + AllDrills->DrillN * 64L); /* Use tabs for formatting since can't count on a fixed font anymore. | And even that probably isn't going to work in all cases. */ sprintf (stringlist, "There are %d different drill sizes used in this layout, %d holes total\n\n" "Drill Diam. (%s)\t# of Pins\t# of Vias\t# of Elements\t# Unplated\n", AllDrills->DrillN, total_drills, Settings.grid_units_mm? "mm": "mils"); thestring = stringlist; while (*thestring != '\0') thestring++; for (n = 0; n < AllDrills->DrillN; n++) { sprintf (thestring, "\t%.*f\t\t%d\t\t%d\t\t%d\t\t%d\n", prec, units (AllDrills->Drill[n].DrillSize), AllDrills->Drill[n].PinCount, AllDrills->Drill[n].ViaCount, AllDrills->Drill[n].ElementN, AllDrills->Drill[n].UnplatedCount); while (*thestring != '\0') thestring++; } FreeDrillInfo (AllDrills); /* create dialog box */ gui->report_dialog ("Drill Report", stringlist); free (stringlist); return 0; }