gerbv_project  *mainProject    /* global variable */
  gchar *path    /* current working directory from which to load files */
  gchar *project   /* Name of current project. */
  int curr_index    /* currently active layer */
  gerbv_fileinfo_t **file   /* array of files */
    gerbv_user_tranformation_t transform /*user-specified transformation for this layer (mirroring, translating, etc)*/
    gchar *fullPathname
    gchar *name          /* Name shown in layer window on left.  i.e. filename*/
    gboolean layer_dirty /* layer has changed since last save*/
    gboolean isVisible
    gerbv_image_t *image  /* This holds all info related to parsing and rendering one layer */
      gerbv_image_info_t *info
      gerbv_aperture_t *aperture
        gerbv_aperture_type_t type;
        gerbv_amacro_t *amacro;
        gerbv_simplified_amacro_t *simplified;
        double parameter[APERTURE_PARAMETERS_MAX];
        int nuf_parameters;
        gerbv_unit_t unit;
      gerbv_layertype_t         /* Enum holding "RS274", "Drill", or "PnP"*/
      gerbv_netstate_t *states  /* List used to keep track of RS274X state groups */
        gerbv_axis_select_t axisSelect; /* the AB to XY coordinate mapping (refer to RS274X spec) */
        gerbv_mirror_state_t mirrorState; /* any mirroring around the X or Y axis */
        gerbv_unit_t unit; /* the current length unit */
        gdouble offsetA; /* the offset along the A axis (usually this is the X axis) */
        gdouble offsetB; /* the offset along the B axis (usually this is the Y axis) */
        gdouble scaleA; /* the scale factor in the A axis (usually this is the X axis) */
        gdouble scaleB; /* the scale factor in the B axis (usually this is the Y axis) */
      gerbv_net_t *netlist /* linked list of graphical objects */
        int aperture
        gerbv_aperture_state_t  aperture_state
        gerbv_interpolation_t  interpolation
        gerbv_cirseg_t *cirseg
        GString *label  /* A label attached to a net.  Currently used only for refdeses in PnP file */
        gerbv_layer_t  *layer  /* This points to the layer struct, defined one level up in hierarchy . */
        gerbv_netstate_t *state
      gerbv_stats_t *gerbv_stats /* Gerber stats.  Struct defined below. */
      gerbv_drill_stats_t *drill_stats   /* Drill stats.  Struct defined below. */
      gerbv_layer_t *layers /* linked list of layers.  Is this because you can have multiple layers in one Gerber file? */
        gerbv_polarity
        gchar *name /*This is name from %LN in Gerber file*/


gerbv_screen_t screen /* Global variable: hold info about what's displayed on the screen */
  GtkWidget *drawing_area;
  GdkPixmap *pixmap;
  win  /* struct holding the GUI */
  statusbar
  int selected_layer
  gerbv_selection_info_t selectionInfo
    gerbv_selection_t type
    GArray *selectedNodeArray   /* Holds text list of selected items.  Access using GLib methods. */
      gchar *data;
      guint len;
  gerbv_state_t state
  gerbv_tool_t tool
  gerbv_gui_unit_t unit



gerbv_selection_item_t  /*Defines sItem, the result of indexing into the selectedNodeArray*/
  gpointer image
  gpointer net


gerb_state_t  /*Defines current Gerber state during parsing*/
  int curr_x
  int curr_y
  int prev_x
  int prev_y
  int delta_cp_x
  int delta_cp_y
  int curr_aperture  /*number of aperture in use*/
  int changed
  gerbv_aperture_state_t aperture_state
  gerbv_interpolation_t interpolation
  gerbv_interpolation_t prev_interpolation
  gerbv_net_t *parea_start_node
  gerbv_layer_t *layer
  gerbv_netstate_t *state



gerb_file_t     /* Holds FILE descriptor and some other info.  Created up file readin.*/
  FILE *fd;     /* File descriptor */
  int   fileno; /* The integer version of fd */
  char *data;   /* Pointer to data mmaped in. May not be changed, use ptr */
  int   datalen;/* Length of mmaped data ie file length */
  int   ptr;    /* Index in data where we are reading */
  gchar *filename /* name of file */


gerbv_aperture_list_t    /* list holding info related to list of aperture definitions found */
  int number;  /* Aperture number */
  int layer;   /* Layer this aperture was found on */
  int count;   /* Number of definitions for this aperture */
  gerbv_aperture_type_t type;
  double parameter[5];


gerbv_aperture_type_t  /* enum of valid aperture types */


gerbv_stats_t    /* large struct holding info about codes and errors found while parsing Gerber file */
  gerbv_error_list_t *error_list;
  gerbv_aperture_list_t *aperture_list; /* This is list of aperture types and parameters */
  gerbv_aperture_list_t *D_code_list;   /* This is count of D code aperture counts */
  int layer_count;
  int G0;
  int G1;
  /* all codes monitored are included in struct */



gerbv_drill_stats_t  /* large struct holding info about codes and errors found while parsing Gerber file */
  int layer_count;
  gerbv_error_list_t *error_list;
  gerbv_drill_list_t *drill_list;
  int comment;
  int F;
  int G00;
  int G01;
  /* all codes monitored are included in struct */

