gerbv.h

Go to the documentation of this file.
00001 /*
00002  * gEDA - GNU Electronic Design Automation
00003  * This file is a part of gerbv.
00004  *
00005  *   Copyright (C) 2000-2003 Stefan Petersen (spe@stacken.kth.se)
00006  *
00007  * $Id$
00008  *
00009  * This program is free software; you can redistribute it and/or modify
00010  * it under the terms of the GNU General Public License as published by
00011  * the Free Software Foundation; either version 2 of the License, or
00012  * (at your option) any later version.
00013  *
00014  * This program is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU General Public License
00020  * along with this program; if not, write to the Free Software
00021  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA
00022  */
00023 
00030 
00033 
00058 #ifdef HAVE_CONFIG_H
00059 #include "config.h"
00060 #endif
00061 
00062 #include <glib.h>
00063 #include <gtk/gtk.h>
00064 #include <gdk/gdk.h>
00065 #include <gdk/gdkkeysyms.h>
00066 
00067 #define APERTURE_MIN 10
00068 #define APERTURE_MAX 9999
00069 
00070 /*
00071  * Maximum number of aperture parameters is set by the outline aperture
00072  * macro. There (p. 28) is defined up to 50 points in polygon.
00073  * So 50 points with x and y plus two for holding extra data gives...
00074  */
00075 #define APERTURE_PARAMETERS_MAX 102
00076 #define INITIAL_SCALE 200
00077 #define MAX_ERRMSGLEN 25
00078 #define MAX_COORDLEN 28
00079 #define MAX_DISTLEN 90
00080 #define MAX_STATUSMSGLEN (MAX_ERRMSGLEN+MAX_COORDLEN+MAX_DISTLEN)
00081 
00082 /* Macros to convert between unscaled gerber coordinates and other units */
00083 /* XXX NOTE: Currently unscaled units are assumed as inch, this is not
00084    XXX necessarily true for all files */
00085 #define COORD2MILS(c) ((c)*1000.0)
00086 #define COORD2MMS(c) ((c)*25.4)
00087 
00088 #define GERB_FATAL_ERROR(t...) g_log(NULL, G_LOG_LEVEL_ERROR, ##t);
00089 #define GERB_COMPILE_ERROR(t...)  g_log(NULL, G_LOG_LEVEL_CRITICAL, ##t);
00090 #define GERB_COMPILE_WARNING(t...)  g_log(NULL, G_LOG_LEVEL_WARNING, ##t);
00091 #define GERB_MESSAGE(t...)  g_log(NULL, G_LOG_LEVEL_MESSAGE, ##t);
00092 
00094 typedef enum {GERBV_OPCODE_NOP, 
00095              GERBV_OPCODE_PUSH, 
00096              GERBV_OPCODE_PPUSH, 
00097              GERBV_OPCODE_PPOP, 
00098              GERBV_OPCODE_ADD, 
00099              GERBV_OPCODE_SUB, 
00100              GERBV_OPCODE_MUL, 
00101              GERBV_OPCODE_DIV, 
00102              GERBV_OPCODE_PRIM 
00103 } gerbv_opcodes_t;
00104 
00106 typedef enum {GERBV_MESSAGE_FATAL, 
00107               GERBV_MESSAGE_ERROR, 
00108               GERBV_MESSAGE_WARNING, 
00109               GERBV_MESSAGE_NOTE 
00110 } gerbv_message_type_t;
00111 
00115 typedef enum {GERBV_APTYPE_NONE, 
00116               GERBV_APTYPE_CIRCLE, 
00117               GERBV_APTYPE_RECTANGLE, 
00118               GERBV_APTYPE_OVAL, 
00119               GERBV_APTYPE_POLYGON, 
00120               GERBV_APTYPE_MACRO, 
00121               GERBV_APTYPE_MACRO_CIRCLE, 
00122               GERBV_APTYPE_MACRO_OUTLINE, 
00123               GERBV_APTYPE_MACRO_POLYGON, 
00124               GERBV_APTYPE_MACRO_MOIRE, 
00125               GERBV_APTYPE_MACRO_THERMAL, 
00126               GERBV_APTYPE_MACRO_LINE20, 
00127               GERBV_APTYPE_MACRO_LINE21, 
00128               GERBV_APTYPE_MACRO_LINE22 
00129 } gerbv_aperture_type_t;
00130 
00132 typedef enum {GERBV_APERTURE_STATE_OFF, 
00133               GERBV_APERTURE_STATE_ON, 
00134               GERBV_APERTURE_STATE_FLASH 
00135 } gerbv_aperture_state_t;
00136 
00138 typedef enum {GERBV_UNIT_INCH, 
00139               GERBV_UNIT_MM, 
00140               GERBV_UNIT_UNSPECIFIED 
00141 } gerbv_unit_t;
00142 
00144 typedef enum {GERBV_POLARITY_POSITIVE, 
00145               GERBV_POLARITY_NEGATIVE, 
00146               GERBV_POLARITY_DARK, 
00147               GERBV_POLARITY_CLEAR 
00148 } gerbv_polarity_t;
00149 
00151 typedef enum {GERBV_OMIT_ZEROS_LEADING, 
00152               GERBV_OMIT_ZEROS_TRAILING, 
00153               GERBV_OMIT_ZEROS_EXPLICIT, 
00154               GERBV_OMIT_ZEROS_UNSPECIFIED 
00155 } gerbv_omit_zeros_t;
00156 
00158 typedef enum {GERBV_COORDINATE_ABSOLUTE, 
00159               GERBV_COORDINATE_INCREMENTAL 
00160 } gerbv_coordinate_t;
00161 
00163 typedef enum {GERBV_INTERPOLATION_LINEARx1, 
00164               GERBV_INTERPOLATION_x10, 
00165               GERBV_INTERPOLATION_LINEARx01, 
00166               GERBV_INTERPOLATION_LINEARx001, 
00167               GERBV_INTERPOLATION_CW_CIRCULAR, 
00168               GERBV_INTERPOLATION_CCW_CIRCULAR, 
00169               GERBV_INTERPOLATION_PAREA_START, 
00170               GERBV_INTERPOLATION_PAREA_END, 
00171               GERBV_INTERPOLATION_DELETED 
00172 } gerbv_interpolation_t;
00173 
00174 typedef enum {GERBV_ENCODING_NONE,
00175               GERBV_ENCODING_ASCII,
00176               GERBV_ENCODING_EBCDIC,
00177               GERBV_ENCODING_BCD,
00178               GERBV_ENCODING_ISO_ASCII,
00179               GERBV_ENCODING_EIA
00180 } gerbv_encoding_t;
00181 
00183 typedef enum {GERBV_LAYERTYPE_RS274X, 
00184               GERBV_LAYERTYPE_DRILL, 
00185               GERBV_LAYERTYPE_PICKANDPLACE 
00186 } gerbv_layertype_t;
00187 
00188 typedef enum {GERBV_KNOCKOUT_TYPE_NOKNOCKOUT,
00189               GERBV_KNOCKOUT_TYPE_FIXEDKNOCK,
00190               GERBV_KNOCKOUT_TYPE_BORDER
00191 } gerbv_knockout_type_t;
00192 
00193 typedef enum {GERBV_MIRROR_STATE_NOMIRROR,
00194               GERBV_MIRROR_STATE_FLIPA,
00195               GERBV_MIRROR_STATE_FLIPB,
00196               GERBV_MIRROR_STATE_FLIPAB
00197 } gerbv_mirror_state_t;
00198 
00199 typedef enum {GERBV_AXIS_SELECT_NOSELECT,
00200               GERBV_AXIS_SELECT_SWAPAB
00201 } gerbv_axis_select_t;
00202 
00203 typedef enum {GERBV_JUSTIFY_NOJUSTIFY,
00204               GERBV_JUSTIFY_LOWERLEFT,
00205               GERBV_JUSTIFY_CENTERJUSTIFY
00206 } gerbv_image_justify_type_t;
00207 
00209 typedef enum {GERBV_SELECTION_EMPTY, 
00210               GERBV_SELECTION_POINT_CLICK, 
00211               GERBV_SELECTION_DRAG_BOX 
00212 } gerbv_selection_t;
00213 
00215 typedef enum {GERBV_RENDER_TYPE_GDK, 
00216               GERBV_RENDER_TYPE_GDK_XOR, 
00217               GERBV_RENDER_TYPE_CAIRO_NORMAL, 
00218               GERBV_RENDER_TYPE_CAIRO_HIGH_QUALITY 
00219 } gerbv_render_types_t;
00220 
00221 /* 
00222  * The following typedef's are taken directly from src/hid.h in the
00223  * pcb project.  The names are kept the same to make it easier to
00224  * compare to pcb's sources.
00225  */
00226     
00227 /* Used for HID attributes (exporting and printing, mostly).
00228    HA_boolean uses int_value, HA_enum sets int_value to the index and
00229    str_value to the enumeration string.  HID_Label just shows the
00230    default str_value.  HID_Mixed is a real_value followed by an enum,
00231    like 0.5in or 100mm. 
00232 */
00233 typedef struct {
00234     int int_value;
00235     char *str_value;
00236     double real_value;
00237 } gerbv_HID_Attr_Val;
00238 
00239 typedef struct {
00240     char *name;
00241     char *help_text;
00242     enum
00243        { HID_Label, HID_Integer, HID_Real, HID_String,
00244          HID_Boolean, HID_Enum, HID_Mixed, HID_Path
00245        } type;
00246     int min_val, max_val;   /* for integer and real */
00247     gerbv_HID_Attr_Val default_val;       /* Also actual value for global attributes.  */
00248     const char **enumerations;
00249     /* If set, this is used for global attributes (i.e. those set
00250        statically with REGISTER_ATTRIBUTES below) instead of changing
00251        the default_val.  Note that a HID_Mixed attribute must specify a
00252        pointer to gerbv_HID_Attr_Val here, and HID_Boolean assumes this is
00253        "char *" so the value should be initialized to zero, and may be
00254        set to non-zero (not always one).  */
00255     void *value;
00256     int hash; /* for detecting changes. */
00257 } gerbv_HID_Attribute;
00258 /* end of HID attributes from PCB */
00259 
00261 typedef struct error_list {
00262     int layer;
00263     char *error_text;
00264     gerbv_message_type_t type;
00265     struct error_list *next;
00266 } gerbv_error_list_t;
00267 
00268 typedef struct instruction {
00269     gerbv_opcodes_t opcode;
00270     union {
00271        int ival;
00272        float fval;
00273     } data;
00274     struct instruction *next;
00275 } gerbv_instruction_t;
00276 
00277 typedef struct amacro {
00278     char *name;
00279     gerbv_instruction_t *program;
00280     unsigned int nuf_push;  /* Nuf pushes in program to estimate stack size */
00281     struct amacro *next;
00282 } gerbv_amacro_t;
00283 
00284 typedef struct gerbv_simplified_amacro {
00285     gerbv_aperture_type_t type;
00286     double parameter[APERTURE_PARAMETERS_MAX];
00287     struct gerbv_simplified_amacro *next;
00288 } gerbv_simplified_amacro_t;
00289 
00290 typedef struct gerbv_aperture {
00291     gerbv_aperture_type_t type;
00292     gerbv_amacro_t *amacro;
00293     gerbv_simplified_amacro_t *simplified;
00294     double parameter[APERTURE_PARAMETERS_MAX];
00295     int nuf_parameters;
00296     gerbv_unit_t unit;
00297 } gerbv_aperture_t;
00298 
00299 /* the gerb_aperture_list is used to keep track of 
00300  * apertures used in stats reporting */
00301 typedef struct gerbv_aperture_list {
00302     int number;
00303     int layer;
00304     int count;
00305     gerbv_aperture_type_t type;
00306     double parameter[5];
00307     struct gerbv_aperture_list *next;
00308 } gerbv_aperture_list_t;
00309 
00311 typedef struct {
00312     gerbv_error_list_t *error_list;
00313     gerbv_aperture_list_t *aperture_list;
00314     gerbv_aperture_list_t *D_code_list;
00315 
00316     int layer_count;
00317     int G0;
00318     int G1;
00319     int G2;
00320     int G3;
00321     int G4;
00322     int G10;
00323     int G11;
00324     int G12;
00325     int G36;
00326     int G37;
00327     int G54;
00328     int G55;
00329     int G70;
00330     int G71;
00331     int G74;
00332     int G75;
00333     int G90;
00334     int G91;
00335     int G_unknown;
00336 
00337     int D1;
00338     int D2;
00339     int D3;
00340 /*    GHashTable *D_user_defined; */
00341     int D_unknown;
00342     int D_error;
00343 
00344     int M0;
00345     int M1;
00346     int M2;
00347     int M_unknown;
00348 
00349     int X;
00350     int Y;
00351     int I;
00352     int J;
00353 
00354     /* Must include % RS-274 codes */
00355     int star;
00356     int unknown;
00357 
00358 } gerbv_stats_t;
00359 
00361 typedef struct drill_list {
00362     int drill_num;
00363     double drill_size;
00364     char *drill_unit;
00365     int drill_count;
00366     struct drill_list *next;
00367 } gerbv_drill_list_t;
00368 
00370 typedef struct {
00371     int layer_count;
00372     
00373     gerbv_error_list_t *error_list;
00374     gerbv_drill_list_t *drill_list;
00375     int comment;
00376     int F;
00377 
00378     int G00;
00379     int G01;
00380     int G02;
00381     int G03;
00382     int G04;
00383     int G05;
00384     int G90;
00385     int G91;
00386     int G93;
00387     int G_unknown;
00388 
00389     int M00;
00390     int M01;
00391     int M18;
00392     int M25;
00393     int M30;
00394     int M31;
00395     int M45;
00396     int M47;
00397     int M48;
00398     int M71;
00399     int M72;
00400     int M95;
00401     int M97;
00402     int M98;
00403     int M_unknown;
00404 
00405     int unknown;
00406 
00407     char *detect;
00408 
00409 } gerbv_drill_stats_t;
00410 
00411 typedef struct {
00412        gpointer image;
00413        gpointer net;
00414 } gerbv_selection_item_t;
00415 
00417 typedef struct {
00418        gerbv_selection_t type;
00419        gdouble lowerLeftX;
00420        gdouble lowerLeftY;
00421        gdouble upperRightX;
00422        gdouble upperRightY;
00423        GArray *selectedNodeArray;
00424 } gerbv_selection_info_t;
00425 
00428 typedef struct {
00429     gdouble translateX; 
00430     gdouble translateY; 
00431     gdouble scaleX; 
00432     gdouble scaleY; 
00433     gboolean inverted; 
00434 } gerbv_user_transformation_t;
00435 
00436 typedef struct gerbv_cirseg {
00437     double cp_x;
00438     double cp_y;
00439     double width;  /* of oval */
00440     double height; /* of oval */
00441     double angle1;
00442     double angle2;
00443 } gerbv_cirseg_t;
00444 
00445 typedef struct gerbv_step_and_repeat { /* SR parameters */
00446     int X;
00447     int Y;
00448     double dist_X;
00449     double dist_Y;
00450 } gerbv_step_and_repeat_t;
00451  
00452 typedef struct {
00453     gboolean firstInstance;
00454     gerbv_knockout_type_t type;
00455     gerbv_polarity_t polarity;
00456     gdouble lowerLeftX;
00457     gdouble lowerLeftY;
00458     gdouble width;
00459     gdouble height;
00460     gdouble border;
00461 } gerbv_knockout_t;
00462  
00464 typedef struct {
00465     gerbv_step_and_repeat_t stepAndRepeat; 
00466     gerbv_knockout_t knockout; 
00467     gdouble rotation; 
00468     gerbv_polarity_t polarity; 
00469     gchar *name; 
00470     gpointer next; 
00471 } gerbv_layer_t;
00472 
00474 typedef struct {
00475     gerbv_axis_select_t axisSelect; 
00476     gerbv_mirror_state_t mirrorState; 
00477     gerbv_unit_t unit; 
00478     gdouble offsetA; 
00479     gdouble offsetB; 
00480     gdouble scaleA; 
00481     gdouble scaleB; 
00482     gpointer next; 
00483 } gerbv_netstate_t;
00484 
00486 typedef struct gerbv_net {
00487     double start_x; 
00488     double start_y; 
00489     double stop_x; 
00490     double stop_y; 
00491     int aperture; 
00492     gerbv_aperture_state_t aperture_state; 
00493     gerbv_interpolation_t interpolation; 
00494     gerbv_cirseg_t *cirseg; 
00495     struct gerbv_net *next; 
00496     GString *label; 
00497     gerbv_layer_t *layer; 
00498     gerbv_netstate_t *state; 
00499 } gerbv_net_t;
00500 
00503 typedef struct gerbv_format {
00504     gerbv_omit_zeros_t omit_zeros;
00505     gerbv_coordinate_t coordinate;
00506     int x_int;
00507     int x_dec;
00508     int y_int;
00509     int y_dec;
00510     int lim_seqno; /* Length limit for codes of sequence number */
00511     int lim_gf;    /* Length limit for codes of general function */
00512     int lim_pf;    /* Length limit for codes of plot function */
00513     int lim_mf;    /* Length limit for codes of miscellaneous function */
00514 } gerbv_format_t;
00515        
00516 
00518 typedef struct gerbv_image_info {
00519     char *name;
00520     gerbv_polarity_t polarity;
00521     double min_x; /* Always in inches */
00522     double min_y;
00523     double max_x;
00524     double max_y;
00525     double offsetA;
00526     double offsetB;
00527     gerbv_encoding_t encoding;
00528     double imageRotation;
00529     gerbv_image_justify_type_t imageJustifyTypeA;
00530     gerbv_image_justify_type_t imageJustifyTypeB;
00531     gdouble imageJustifyOffsetA;
00532     gdouble imageJustifyOffsetB;
00533     gdouble imageJustifyOffsetActualA;
00534     gdouble imageJustifyOffsetActualB;
00535     gchar *plotterFilm;
00536 
00537     /* Descriptive string for the type of file (rs274-x, drill, etc)
00538      * that this is
00539      */
00540     gchar *type;
00541 
00542     /* Attribute list that is used to hold all sorts of information
00543      * about how the layer is to be parsed.
00544     */ 
00545     gerbv_HID_Attribute *attr_list;
00546     int n_attr;
00547 } gerbv_image_info_t;
00548 
00550 typedef struct {
00551   gerbv_layertype_t layertype; 
00552   gerbv_aperture_t *aperture[APERTURE_MAX]; 
00553   gerbv_layer_t *layers; 
00554   gerbv_netstate_t *states; 
00555   gerbv_amacro_t *amacro; 
00556   gerbv_format_t *format; 
00557   gerbv_image_info_t *info; 
00558   gerbv_net_t *netlist; 
00559   gerbv_stats_t *gerbv_stats; 
00560   gerbv_drill_stats_t *drill_stats;  
00561 } gerbv_image_t;
00562 
00564 typedef struct {
00565   gerbv_image_t *image; 
00566   GdkColor color; 
00567   guint16 alpha; 
00568   gboolean isVisible; 
00569   gpointer privateRenderData; 
00570   gchar *fullPathname; 
00571   gchar *name; 
00572   gerbv_user_transformation_t transform; 
00573   gboolean layer_dirty;  
00574 } gerbv_fileinfo_t;
00575 
00576 typedef struct {
00577        double x1, y1;
00578        double x2, y2;
00579 } gerbv_bbox_t;
00580 
00583 typedef struct {
00584   GdkColor  background; 
00585   int max_files; 
00586   gerbv_fileinfo_t **file; 
00587   int curr_index; 
00588   int last_loaded; 
00589   int renderType; 
00590   gboolean check_before_delete;  
00591   gchar *path; 
00592   gchar *execpath;    
00593   gchar *project;     
00594 } gerbv_project_t;
00595 
00597 typedef struct{
00598     unsigned char red;
00599     unsigned char green;
00600     unsigned char blue;
00601     unsigned char alpha;
00602 }gerbv_layer_color;
00603 
00605 typedef struct {
00606        gdouble scaleFactorX; 
00607        gdouble scaleFactorY; 
00608        gdouble lowerLeftX; 
00609        gdouble lowerLeftY; 
00610        gerbv_render_types_t renderType; 
00611        gint displayWidth; 
00612        gint displayHeight; 
00613 } gerbv_render_info_t;
00614 
00615 typedef struct {
00616     double left;
00617     double right;
00618     double top;
00619     double bottom;
00620 } gerbv_render_size_t;
00621 
00624 gerbv_image_t *gerbv_create_image(gerbv_image_t *image, 
00625               const gchar *type 
00626 );
00627 
00629 void gerbv_destroy_image(gerbv_image_t *image 
00630 );
00631 
00633 void
00634 gerbv_image_copy_image (gerbv_image_t *sourceImage, 
00635        gerbv_user_transformation_t *transform, 
00636        gerbv_image_t *destinationImage 
00637 );
00638 
00641 gerbv_image_t *
00642 gerbv_image_duplicate_image (gerbv_image_t *sourceImage, 
00643        gerbv_user_transformation_t *transform 
00644 );
00645 
00647 void
00648 gerbv_image_delete_net (gerbv_net_t *currentNet 
00649 );
00650 
00651 void
00652 gerbv_image_delete_selected_nets (gerbv_image_t *sourceImage, GArray *selectedNodeArray);
00653 
00654 gboolean
00655 gerbv_image_reduce_area_of_selected_objects (GArray *selectionArray, gdouble areaReduction, gint paneRows,
00656               gint paneColumns, gdouble paneSeparation);
00657 
00658 gboolean
00659 gerbv_image_move_selected_objects (GArray *selectionArray, gdouble translationX,
00660               gdouble translationY);
00661 
00663 gerbv_net_t *
00664 gerbv_image_return_next_renderable_object (gerbv_net_t *oldNet);
00665 
00667 gerbv_project_t *
00668 gerbv_create_project (void);
00669 
00671 void
00672 gerbv_destroy_project (gerbv_project_t *gerbvProject 
00673 );
00674 
00676 void 
00677 gerbv_open_layer_from_filename (
00678        gerbv_project_t *gerbvProject, 
00679        gchar *filename 
00680 );
00681 
00683 void 
00684 gerbv_open_layer_from_filename_with_color(gerbv_project_t *gerbvProject, 
00685        gchar *filename, 
00686        guint16 red, 
00687        guint16 green, 
00688        guint16 blue, 
00689        guint16 alpha 
00690 );
00691 
00693 void
00694 gerbv_destroy_fileinfo (gerbv_fileinfo_t *fileInfo 
00695 );
00696 
00697 gboolean 
00698 gerbv_save_layer_from_index(gerbv_project_t *gerbvProject, gint index, gchar *filename);
00699 
00700 int
00701 gerbv_revert_file(gerbv_project_t *gerbvProject, int idx);
00702 
00703 void 
00704 gerbv_revert_all_files(gerbv_project_t *gerbvProject);
00705 
00706 void 
00707 gerbv_unload_layer(gerbv_project_t *gerbvProject, int index);
00708 
00709 void 
00710 gerbv_unload_all_layers (gerbv_project_t *gerbvProject);
00711 
00712 void 
00713 gerbv_change_layer_order(gerbv_project_t *gerbvProject, gint oldPosition, gint newPosition);
00714 
00715 gint
00716 gerbv_add_parsed_image_to_project (gerbv_project_t *gerbvProject, gerbv_image_t *parsed_image,
00717                      gchar *filename, gchar *baseName, int idx, int reload);
00718 int
00719 gerbv_open_image(gerbv_project_t *gerbvProject, char *filename, int idx, int reload,
00720               gerbv_HID_Attribute *fattr, int n_fattr, gboolean forceLoadFile);
00721               
00722 void
00723 gerbv_render_get_boundingbox(gerbv_project_t *gerbvProject, gerbv_render_size_t *boundingbox);
00724 
00726 void
00727 gerbv_render_zoom_to_fit_display (gerbv_project_t *gerbvProject, 
00728               gerbv_render_info_t *renderInfo 
00729 );
00730 
00731 void
00732 gerbv_render_translate_to_fit_display (gerbv_project_t *gerbvProject, gerbv_render_info_t *renderInfo);
00733 
00734 void
00735 gerbv_render_to_pixmap_using_gdk (gerbv_project_t *gerbvProject, GdkPixmap *pixmap,
00736               gerbv_render_info_t *renderInfo, gerbv_selection_info_t *selectionInfo,
00737               GdkColor *selectionColor);
00738 
00739 #ifndef RENDER_USING_GDK
00740 void
00741 gerbv_render_all_layers_to_cairo_target_for_vector_output (gerbv_project_t *gerbvProject,
00742               cairo_t *cr, gerbv_render_info_t *renderInfo);
00743 
00744 void
00745 gerbv_render_all_layers_to_cairo_target (gerbv_project_t *gerbvProject, cairo_t *cr,
00746                      gerbv_render_info_t *renderInfo);
00747 
00749 void
00750 gerbv_render_layer_to_cairo_target (cairo_t *cr, 
00751               gerbv_fileinfo_t *fileInfo, 
00752               gerbv_render_info_t *renderInfo 
00753 );
00754                                           
00755 void
00756 gerbv_render_cairo_set_scale_and_translation(cairo_t *cr, gerbv_render_info_t *renderInfo);
00757 
00758 void
00759 gerbv_render_layer_to_cairo_target_without_transforming(cairo_t *cr, gerbv_fileinfo_t *fileInfo, gerbv_render_info_t *renderInfo );
00760 #endif
00761 
00762 double
00763 gerbv_get_tool_diameter(int toolNumber
00764 );
00765 
00766 int
00767 gerbv_process_tools_file(const char *toolFileName
00768 );
00769 
00771 void
00772 gerbv_export_png_file_from_project_autoscaled (
00773               gerbv_project_t *gerbvProject, 
00774               int widthInPixels, 
00775               int heightInPixels, 
00776               gchar const* filename  
00777 );
00778 
00780 void
00781 gerbv_export_png_file_from_project (
00782               gerbv_project_t *gerbvProject, 
00783               gerbv_render_info_t *renderInfo, 
00784               gchar const* filename 
00785 );
00786 
00788 void
00789 gerbv_export_pdf_file_from_project_autoscaled (
00790               gerbv_project_t *gerbvProject, 
00791               int widthInPixels, 
00792               int heightInPixels, 
00793               gchar const* filename  
00794 );
00795 
00797 void
00798 gerbv_export_pdf_file_from_project (
00799               gerbv_project_t *gerbvProject, 
00800               gerbv_render_info_t *renderInfo, 
00801               gchar const* filename 
00802 );
00803 
00805 void
00806 gerbv_export_postscript_file_from_project_autoscaled (
00807               gerbv_project_t *gerbvProject, 
00808               int widthInPixels, 
00809               int heightInPixels, 
00810               gchar const* filename  
00811 );
00812 
00814 void
00815 gerbv_export_postscript_file_from_project (
00816               gerbv_project_t *gerbvProject, 
00817               gerbv_render_info_t *renderInfo, 
00818               gchar const* filename 
00819 );
00820 
00822 void
00823 gerbv_export_svg_file_from_project_autoscaled (
00824               gerbv_project_t *gerbvProject, 
00825               int widthInPixels, 
00826               int heightInPixels, 
00827               gchar const* filename  
00828 );
00829 
00831 void
00832 gerbv_export_svg_file_from_project (
00833               gerbv_project_t *gerbvProject, 
00834               gerbv_render_info_t *renderInfo, 
00835               gchar const* filename 
00836 );
00837 
00840 gerbv_image_t *
00841 gerbv_create_rs274x_image_from_filename (gchar *filename 
00842 );
00843 
00846 gboolean
00847 gerbv_export_rs274x_file_from_image (gchar *filename, 
00848               gerbv_image_t *image 
00849 );
00850 
00853 gboolean
00854 gerbv_export_drill_file_from_image (gchar *filename, 
00855               gerbv_image_t *image 
00856 );
00857 
00859 void
00860 gerbv_image_create_line_object (gerbv_image_t *image, 
00861               gdouble startX, 
00862               gdouble startY, 
00863               gdouble endX, 
00864               gdouble endY, 
00865               gdouble lineWidth, 
00866               gerbv_aperture_type_t apertureType  
00867 );
00868 
00870 void
00871 gerbv_image_create_arc_object (gerbv_image_t *image, 
00872               gdouble centerX, 
00873               gdouble centerY, 
00874               gdouble radius, 
00875               gdouble startAngle, 
00876               gdouble endAngle, 
00877               gdouble lineWidth, 
00878               gerbv_aperture_type_t apertureType  
00879 );
00880               
00882 void
00883 gerbv_image_create_rectangle_object (gerbv_image_t *image, 
00884               gdouble coordinateX, 
00885               gdouble coordinateY, 
00886               gdouble width, 
00887               gdouble height 
00888 );
00889                      
00891 gerbv_drill_stats_t *
00892 gerbv_drill_stats_new(void);
00893 
00896 void
00897 gerbv_drill_stats_add_layer(gerbv_drill_stats_t *accum_stats,
00898               gerbv_drill_stats_t *input_stats,
00899               int this_layer
00900 );
00901 
00903 gerbv_stats_t *
00904 gerbv_stats_new(void);
00905 
00908 void
00909 gerbv_stats_add_layer(gerbv_stats_t *accum_stats, 
00910               gerbv_stats_t *input_stats,
00911               int this_layer
00912 );

Generated on Tue Aug 19 00:14:48 2008 for gerbv by  doxygen 1.5.6