00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
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
00072
00073
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
00083
00084
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
00223
00224
00225
00226
00227
00228
00229
00230
00231
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;
00247 gerbv_HID_Attr_Val default_val;
00248 const char **enumerations;
00249
00250
00251
00252
00253
00254
00255 void *value;
00256 int hash;
00257 } gerbv_HID_Attribute;
00258
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;
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
00300
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
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
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;
00440 double height;
00441 double angle1;
00442 double angle2;
00443 } gerbv_cirseg_t;
00444
00445 typedef struct gerbv_step_and_repeat {
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;
00511 int lim_gf;
00512 int lim_pf;
00513 int lim_mf;
00514 } gerbv_format_t;
00515
00516
00518 typedef struct gerbv_image_info {
00519 char *name;
00520 gerbv_polarity_t polarity;
00521 double min_x;
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
00538
00539
00540 gchar *type;
00541
00542
00543
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 );