[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: next PCB release - 1.99za vs 4.0



On Mon, Sep 13, 2010 at 08:58:54PM -0400, DJ Delorie wrote:
> 
> > What's the physical meaning of an eight-layered composite?
> 
> A board with eight copper layers, assuming the eight drawing layers
> each map to a different physical layer.  Making the structure "flat"
> just means that all your drills and outlines apply to all layers
> equally.
>

Okay, how does this look (I don't think this compiles, it's just
an example)?:

/*** BEGIN ***/ 

/*
 * The layer structuring works as follows:
 *   1. At the physical level, PCBs are composed of composites. These
 *      composites have an outline and thickness, and drills pass through
 *      them. They may contain sub-composites -or- PCB layers.
 *
 *   2. Overlays, or drawing layers, are tagged with their respective
 *      physical layer(s) to obtain a stacking order. Some overlays, such
 *      as the ratsnest one, have no physical layer, and are considered
 *      to be "on top" of everything else for drawing purposes.
 *
 *   3. Keepouts are just another form of overlay.
 *
 *   4. In footprint mode, there is a single composite. When importing
 *      footprints, the top and bottom layer of this composite will (by
 *      default) map to the top-most and bottom-most layer of the PCB.
 */

/*! The type of overlay */
typedef enum
{
  OVERLAY_COPPER,	/*! conductive */
  OVERLAY_SILK,		/*! non-conductive */
  OVERLAY_KEEPOUT,	/*! keepout */
  OVERLAY_VIRTUAL	/*! non-PCB (ratsnest, documentation, etc) */
}
OverlayStyle;

/*! Overlay ("drawing layer") structure */
typedef struct _overlay
{
  const char *name;	/*! Layer name */
  const char *color;	/*! Layer color */

  OverlayStyle style;	/*! Layer material */

  Layer **layer;	/*! Associated physical layers */
  unsigned n_layers;	/*! Number of physical layers */

  int b_visible;	/*! Visible in GUI */
  int b_active;		/*! Active layer in GUI */
  int b_vacuum;		/*! "Hole mode" in GUI */
  int b_locked;		/*! Un-editable in GUI */
}
Overlay;

/*! Physical layer structure */
typedef struct _layer
{
  const char *name;	/*! Layer name */
  const char *color;	/*! Layer color */

  unsigned z_index;	/*! Stacking order within its composite */
}
Layer;

/*! Composite structure */
typedef struct _comp;
{
  const char *name;	/*! Composite name */
  int thickness;	/*! The physical thickness of the composite */

  int b_leaf;		/*! If true, composite has layers, otherwise it has sub-composites */

  unsigned n_children;	/*! Number of sub-comps or layers */
  struct _comp **child;	/*! Array of sub-comps */
  Layer **layer;	/*! Array of layers */

  void *geometry;	/*! The shape of the composite (?) */
}
Composite;

/*** END ***/ 

Andrew



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user