pcb 4.1.1
An interactive printed circuit board layout editor.

Todo List

Global bestpolygon (privpath_t *pp)
Implement cyclic version.

Global c_dtostr (double d)
In future all use of this should be supplanted by pcb-printf and mr/m# spec.

Global ChangeArcAngles (LayerType *, ArcType *, Angle, Angle)
Doesn't this belong in change.c ??

Global CollectSubnets (bool)
This is copied in large part from AddAllRats above; for maintainability, AddAllRats probably wants to be tweaked to use this version of the code so that we don't have duplication.

Global draw_dashed_line (hidGC gc, Coord x1, Coord y1, Coord x2, Coord y2)

we need a real geometrical library, using double here is plain wrong.

line too short, just draw it -> magic value; with a proper geo lib this would be gone anyway.

Global find_pair_padline_callback (const BoxType *b, void *cl)

This is for round pads. Good enough for now, but add square pad support later.

We should split the line.

Global find_pair_pinline_callback (const BoxType *b, void *cl)
This assumes round pads, but it's good enough for square ones for now.

File fontmode.c
We currently hardcode the grid and PCB size.
What we should do in the future is scan the font for its extents, and size the grid appropriately.
Also, when we convert back to a font, we should search the grid for the gridlines and use them to figure out where the symbols are.

Global gp_pad_cb (const BoxType *b, void *cb)
We lump octagonal pads in with square; safe, but not optimal. I don't think we even support octagonal pads.

Global gp_pin_cb (const BoxType *b, void *cb)
We lump octagonal pins in with square; safe, but not optimal.

Global gsvit_choose_groups ()
Is this check necessary? It seems that special layers have negative indexes?

Global gsvit_create_netlist (void)

Add fancy color attachment here.

Probably a '\0' character is better code.

Global gsvit_set_color (hidGC gc, const char *name)
Should be background, not white.

File gui-top-window.c

Figure out when we need to call this everytime ?

The old quit callback had:

What about stuff like this:
Set to ! because ActionDisplay toggles it

We need to do the status line thing. For example shift-alt-v to change the via size. Note: The status line label does not get updated properly until a zoom in/out.

Global hid_load_dir (char *dirname)
the MacOS .dylib should be added to this list

Global IPCD356_WriteNet (FILE *fd, char *net)

1) The bottom layer is always written as layer #2 (A02).
It could output the actual layer number (example: A06 on a 6 layer board).
But I could not find an easy way to do this...

2) Objects with mutiple connections could have the "M" (column 32) field written to indicate a Mid Net Point.

Midpoint indicator (M).

Put actual layer # for bottom side.

Midpoint indicator (M).

Midpoint indicator (M).

Global IsPointOnArc (Coord, Coord, Coord, ArcType *)
This code is BROKEN in the case of non-circular arcs, and in the case that the arc thickness is greater than the radius.

Global LayersChanged (int argc, char **argv, Coord x, Coord y)
If a layer is moved it should retain its color. But layers currently can't do that because color info is not saved in the pcb file. So this makes a moved layer change its color to reflect the way it will be when the pcb is reloaded.

Global lesstif_uninit_menu (void)
XtDestroyWidget (...);

Global MakeLayerGroupsDefault ()
is this an orphan prototype ?

Global NetlistChanged (int force_unfreeze)
These are in netlist.c

Global poly_DelContour (PLINE **c)
FIXME -- strict aliasing violation.

File puller.c
Things that need to be fixed before this is "perfect".
Add to this list as we find things.
  • respect the outline layer.
  • don't consider points that are perpendicular to our start_arc. I.e. when we have busses going around corners, we have a *lot* of arcs and endpoints that are all in the same direction and all equally "good", but rounding the arc angles to integers causes all sorts of tiny differences that result in bumps, reversals, and other messes.
  • Store the X,Y values in our shadow struct so we don't fill up the undo buffer with all our line reversals.
  • at least check the other layers in our layer group.

Global seg_in_seg (const BoxType *b, void *cl)
There are efficient algorithms for finding intersections with snap rounding, but I don't have time to implement them right now.