mirror of
git://git.geda-project.org/gerbvhtdocs
synced 2025-05-10 01:29:04 +08:00
380 lines
46 KiB
HTML
380 lines
46 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
|
<title>gerbv: src/export-rs274x.c Source File</title>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
<link href="tabs.css" rel="stylesheet" type="text/css">
|
|
</head><body>
|
|
<!-- Generated by Doxygen 1.5.6 -->
|
|
<div class="navigation" id="top">
|
|
<div class="tabs">
|
|
<ul>
|
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li><a href="classes.html"><span>Data Structures</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
<li><a href="dirs.html"><span>Directories</span></a></li>
|
|
<li><a href="examples.html"><span>Examples</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="navpath"><a class="el" href="dir_0fba06f62092f0c8d9ff47b96507f331.html">src</a>
|
|
</div>
|
|
</div>
|
|
<div class="contents">
|
|
<h1>export-rs274x.c</h1><a href="export-rs274x_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
|
|
<a name="l00002"></a>00002 <span class="comment"> * gEDA - GNU Electronic Design Automation</span>
|
|
<a name="l00003"></a>00003 <span class="comment"> * This file is a part of gerbv.</span>
|
|
<a name="l00004"></a>00004 <span class="comment"> *</span>
|
|
<a name="l00005"></a>00005 <span class="comment"> * Copyright (C) 2008 Julian Lamb</span>
|
|
<a name="l00006"></a>00006 <span class="comment"> *</span>
|
|
<a name="l00007"></a>00007 <span class="comment"> * $Id$</span>
|
|
<a name="l00008"></a>00008 <span class="comment"> *</span>
|
|
<a name="l00009"></a>00009 <span class="comment"> * This program is free software; you can redistribute it and/or modify</span>
|
|
<a name="l00010"></a>00010 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
|
|
<a name="l00011"></a>00011 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span>
|
|
<a name="l00012"></a>00012 <span class="comment"> * (at your option) any later version.</span>
|
|
<a name="l00013"></a>00013 <span class="comment"> *</span>
|
|
<a name="l00014"></a>00014 <span class="comment"> * This program is distributed in the hope that it will be useful,</span>
|
|
<a name="l00015"></a>00015 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
|
|
<a name="l00016"></a>00016 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
|
|
<a name="l00017"></a>00017 <span class="comment"> * GNU General Public License for more details.</span>
|
|
<a name="l00018"></a>00018 <span class="comment"> *</span>
|
|
<a name="l00019"></a>00019 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
|
|
<a name="l00020"></a>00020 <span class="comment"> * along with this program; if not, write to the Free Software</span>
|
|
<a name="l00021"></a>00021 <span class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA</span>
|
|
<a name="l00022"></a>00022 <span class="comment"> */</span>
|
|
<a name="l00023"></a>00023
|
|
<a name="l00030"></a>00030 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
|
|
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
|
|
<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
|
|
<a name="l00033"></a>00033 <span class="preprocessor"></span>
|
|
<a name="l00034"></a>00034 <span class="preprocessor">#include <glib.h></span>
|
|
<a name="l00035"></a>00035 <span class="preprocessor">#include <math.h></span>
|
|
<a name="l00036"></a>00036
|
|
<a name="l00037"></a>00037 <span class="preprocessor">#include <glib/gstdio.h></span>
|
|
<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="gerbv_8h.html" title="The main header file for the libgerbv library.">gerbv.h</a>"</span>
|
|
<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="draw-gdk_8h.html" title="Header info for the GDK rendering functions.">draw-gdk.h</a>"</span>
|
|
<a name="l00040"></a>00040
|
|
<a name="l00041"></a>00041 <span class="comment">/* DEBUG printing. #define DEBUG 1 in config.h to use this fcn. */</span>
|
|
<a name="l00042"></a>00042 <span class="preprocessor">#define dprintf if(DEBUG) printf</span>
|
|
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define round(x) floor(x+0.5)</span>
|
|
<a name="l00044"></a>00044 <span class="preprocessor"></span>
|
|
<a name="l00045"></a>00045 <span class="keywordtype">void</span>
|
|
<a name="l00046"></a>00046 export_rs274x_write_macro (FILE *fd, gerbv_aperture_t *currentAperture,
|
|
<a name="l00047"></a>00047 gint apertureNumber) {
|
|
<a name="l00048"></a>00048 gerbv_simplified_amacro_t *ls = currentAperture->simplified;
|
|
<a name="l00049"></a>00049
|
|
<a name="l00050"></a>00050 <span class="comment">/* write the macro portion first */</span>
|
|
<a name="l00051"></a>00051 fprintf(fd, <span class="stringliteral">"%%AMMACRO%d*\n"</span>,apertureNumber);
|
|
<a name="l00052"></a>00052 <span class="keywordflow">while</span> (ls != NULL) {
|
|
<a name="l00053"></a>00053 <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e12374aa4d6be02b88c38208a8d57568e0e25">GERBV_APTYPE_MACRO_CIRCLE</a>) {
|
|
<a name="l00054"></a>00054 fprintf(fd, <span class="stringliteral">"1,%d,%f,%f,%f*\n"</span>,(<span class="keywordtype">int</span>) ls->parameter[CIRCLE_EXPOSURE],
|
|
<a name="l00055"></a>00055 ls->parameter[CIRCLE_DIAMETER],ls->parameter[CIRCLE_CENTER_X],
|
|
<a name="l00056"></a>00056 ls->parameter[CIRCLE_CENTER_Y]);
|
|
<a name="l00057"></a>00057 }
|
|
<a name="l00058"></a>00058 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e123745da38f5ee1b382588d0990bb2c7a61d">GERBV_APTYPE_MACRO_OUTLINE</a>) {
|
|
<a name="l00059"></a>00059 <span class="keywordtype">int</span> pointCounter;
|
|
<a name="l00060"></a>00060 <span class="keywordtype">int</span> numberOfPoints = (int) ls->parameter[OUTLINE_NUMBER_OF_POINTS];
|
|
<a name="l00061"></a>00061
|
|
<a name="l00062"></a>00062 fprintf(fd, <span class="stringliteral">"4,%d,%d,\n"</span>,(<span class="keywordtype">int</span>) ls->parameter[OUTLINE_EXPOSURE],
|
|
<a name="l00063"></a>00063 numberOfPoints);
|
|
<a name="l00064"></a>00064
|
|
<a name="l00065"></a>00065 <span class="keywordflow">for</span> (pointCounter=0; pointCounter < numberOfPoints; pointCounter++) {
|
|
<a name="l00066"></a>00066 fprintf(fd, <span class="stringliteral">"%f,%f,"</span>,ls->parameter[pointCounter * 2 + OUTLINE_FIRST_X],
|
|
<a name="l00067"></a>00067 ls->parameter[pointCounter * 2 + OUTLINE_FIRST_Y]);
|
|
<a name="l00068"></a>00068 }
|
|
<a name="l00069"></a>00069 fprintf(fd, <span class="stringliteral">"%f*\n"</span>,ls->parameter[pointCounter * 2 + OUTLINE_FIRST_X]);
|
|
<a name="l00070"></a>00070 }
|
|
<a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237a102b604a3b05bf6c141edacf5ed1126">GERBV_APTYPE_MACRO_POLYGON</a>) {
|
|
<a name="l00072"></a>00072 fprintf(fd, <span class="stringliteral">"5,%d,%d,%f,%f,%f,%f*\n"</span>,(<span class="keywordtype">int</span>) ls->parameter[POLYGON_EXPOSURE],
|
|
<a name="l00073"></a>00073 (<span class="keywordtype">int</span>) ls->parameter[POLYGON_NUMBER_OF_POINTS],
|
|
<a name="l00074"></a>00074 ls->parameter[POLYGON_CENTER_X],ls->parameter[POLYGON_CENTER_Y],
|
|
<a name="l00075"></a>00075 ls->parameter[POLYGON_DIAMETER],ls->parameter[POLYGON_ROTATION]);
|
|
<a name="l00076"></a>00076 }
|
|
<a name="l00077"></a>00077 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237e76651c204dbffde21b0dc5332565e18">GERBV_APTYPE_MACRO_MOIRE</a>) {
|
|
<a name="l00078"></a>00078 fprintf(fd, <span class="stringliteral">"6,%f,%f,%f,%f,%f,%d,%f,%f,%f*\n"</span>,ls->parameter[MOIRE_CENTER_X],
|
|
<a name="l00079"></a>00079 ls->parameter[MOIRE_CENTER_Y],ls->parameter[MOIRE_OUTSIDE_DIAMETER],
|
|
<a name="l00080"></a>00080 ls->parameter[MOIRE_CIRCLE_THICKNESS],ls->parameter[MOIRE_GAP_WIDTH],
|
|
<a name="l00081"></a>00081 (<span class="keywordtype">int</span>) ls->parameter[MOIRE_NUMBER_OF_CIRCLES],ls->parameter[MOIRE_CROSSHAIR_THICKNESS],
|
|
<a name="l00082"></a>00082 ls->parameter[MOIRE_CROSSHAIR_LENGTH],ls->parameter[MOIRE_ROTATION]);
|
|
<a name="l00083"></a>00083 }
|
|
<a name="l00084"></a>00084 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237dabe9b77a94c2120f39baed9ac18df4e">GERBV_APTYPE_MACRO_THERMAL</a>) {
|
|
<a name="l00085"></a>00085 fprintf(fd, <span class="stringliteral">"7,%f,%f,%f,%f,%f,%f*\n"</span>,ls->parameter[THERMAL_CENTER_X],
|
|
<a name="l00086"></a>00086 ls->parameter[THERMAL_CENTER_Y],ls->parameter[THERMAL_OUTSIDE_DIAMETER],
|
|
<a name="l00087"></a>00087 ls->parameter[THERMAL_INSIDE_DIAMETER],ls->parameter[THERMAL_CROSSHAIR_THICKNESS],
|
|
<a name="l00088"></a>00088 ls->parameter[THERMAL_ROTATION]);
|
|
<a name="l00089"></a>00089 }
|
|
<a name="l00090"></a>00090 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e123705b2b411854f499ec367cba6143dd725">GERBV_APTYPE_MACRO_LINE20</a>) {
|
|
<a name="l00091"></a>00091 fprintf(fd, <span class="stringliteral">"20,%d,%f,%f,%f,%f,%f,%f*\n"</span>,(<span class="keywordtype">int</span>) ls->parameter[LINE20_EXPOSURE],
|
|
<a name="l00092"></a>00092 ls->parameter[LINE20_LINE_WIDTH],ls->parameter[LINE20_START_X],
|
|
<a name="l00093"></a>00093 ls->parameter[LINE20_START_Y],ls->parameter[LINE20_END_X],
|
|
<a name="l00094"></a>00094 ls->parameter[LINE20_END_Y],ls->parameter[LINE20_ROTATION]);
|
|
<a name="l00095"></a>00095 }
|
|
<a name="l00096"></a>00096 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e123706618241ba60c1d2e90a63a13033a419">GERBV_APTYPE_MACRO_LINE21</a>) {
|
|
<a name="l00097"></a>00097 fprintf(fd, <span class="stringliteral">"21,%d,%f,%f,%f,%f,%f*\n"</span>,(<span class="keywordtype">int</span>) ls->parameter[LINE21_EXPOSURE],
|
|
<a name="l00098"></a>00098 ls->parameter[LINE21_WIDTH],ls->parameter[LINE21_HEIGHT],
|
|
<a name="l00099"></a>00099 ls->parameter[LINE21_CENTER_X],ls->parameter[LINE21_CENTER_Y],
|
|
<a name="l00100"></a>00100 ls->parameter[LINE21_ROTATION]);
|
|
<a name="l00101"></a>00101 }
|
|
<a name="l00102"></a>00102 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ls->type == <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237e52e5a1629e8f1e68c29b66eb78e6021">GERBV_APTYPE_MACRO_LINE22</a>) {
|
|
<a name="l00103"></a>00103 fprintf(fd, <span class="stringliteral">"22,%d,%f,%f,%f,%f,%f*\n"</span>,(<span class="keywordtype">int</span>) ls->parameter[LINE22_EXPOSURE],
|
|
<a name="l00104"></a>00104 ls->parameter[LINE22_WIDTH],ls->parameter[LINE22_HEIGHT],
|
|
<a name="l00105"></a>00105 ls->parameter[LINE22_LOWER_LEFT_X],ls->parameter[LINE22_LOWER_LEFT_Y],
|
|
<a name="l00106"></a>00106 ls->parameter[LINE22_ROTATION]);
|
|
<a name="l00107"></a>00107 }
|
|
<a name="l00108"></a>00108 ls = ls->next;
|
|
<a name="l00109"></a>00109 }
|
|
<a name="l00110"></a>00110 fprintf(fd, <span class="stringliteral">"%%\n"</span>);
|
|
<a name="l00111"></a>00111 <span class="comment">/* and finally create an aperture definition to use the macro */</span>
|
|
<a name="l00112"></a>00112 fprintf(fd, <span class="stringliteral">"%%ADD%dMACRO%d*%%\n"</span>,apertureNumber,apertureNumber);
|
|
<a name="l00113"></a>00113 }
|
|
<a name="l00114"></a>00114
|
|
<a name="l00115"></a>00115 <span class="keywordtype">void</span>
|
|
<a name="l00116"></a>00116 export_rs274x_write_apertures (FILE *fd, <a class="code" href="structgerbv__image__t.html">gerbv_image_t</a> *image) {
|
|
<a name="l00117"></a>00117 gerbv_aperture_t *currentAperture;
|
|
<a name="l00118"></a>00118 gint numberOfRequiredParameters=0,numberOfOptionalParameters=0,i,j;
|
|
<a name="l00119"></a>00119
|
|
<a name="l00120"></a>00120 <span class="keywordflow">for</span> (i=APERTURE_MIN; i<APERTURE_MAX; i++) {
|
|
<a name="l00121"></a>00121 gboolean writeAperture=TRUE;
|
|
<a name="l00122"></a>00122
|
|
<a name="l00123"></a>00123 currentAperture = image-><a class="code" href="structgerbv__image__t.html#b40defce85ca280ecf3804fad90fc308">aperture</a>[i];
|
|
<a name="l00124"></a>00124
|
|
<a name="l00125"></a>00125 <span class="keywordflow">if</span> (!currentAperture)
|
|
<a name="l00126"></a>00126 <span class="keywordflow">continue</span>;
|
|
<a name="l00127"></a>00127
|
|
<a name="l00128"></a>00128 <span class="keywordflow">switch</span> (currentAperture->type) {
|
|
<a name="l00129"></a>00129 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237562331d94d824b3711bd0c8b7296e366">GERBV_APTYPE_CIRCLE</a>:
|
|
<a name="l00130"></a>00130 fprintf(fd, <span class="stringliteral">"%%ADD%d"</span>,i);
|
|
<a name="l00131"></a>00131 fprintf(fd, <span class="stringliteral">"C,"</span>);
|
|
<a name="l00132"></a>00132 numberOfRequiredParameters = 1;
|
|
<a name="l00133"></a>00133 numberOfOptionalParameters = 2;
|
|
<a name="l00134"></a>00134 <span class="keywordflow">break</span>;
|
|
<a name="l00135"></a>00135 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237aeafcbf11dd893e46930f813e353c27a">GERBV_APTYPE_RECTANGLE</a>:
|
|
<a name="l00136"></a>00136 fprintf(fd, <span class="stringliteral">"%%ADD%d"</span>,i);
|
|
<a name="l00137"></a>00137 fprintf(fd, <span class="stringliteral">"R,"</span>);
|
|
<a name="l00138"></a>00138 numberOfRequiredParameters = 2;
|
|
<a name="l00139"></a>00139 numberOfOptionalParameters = 2;
|
|
<a name="l00140"></a>00140 <span class="keywordflow">break</span>;
|
|
<a name="l00141"></a>00141 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e12374498025ab88968326d79bab43020469f">GERBV_APTYPE_OVAL</a>:
|
|
<a name="l00142"></a>00142 fprintf(fd, <span class="stringliteral">"%%ADD%d"</span>,i);
|
|
<a name="l00143"></a>00143 fprintf(fd, <span class="stringliteral">"O,"</span>);
|
|
<a name="l00144"></a>00144 numberOfRequiredParameters = 2;
|
|
<a name="l00145"></a>00145 numberOfOptionalParameters = 2;
|
|
<a name="l00146"></a>00146 <span class="keywordflow">break</span>;
|
|
<a name="l00147"></a>00147 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e12379f80359e7ff5ff5fdf024434ec98fc7d">GERBV_APTYPE_POLYGON</a>:
|
|
<a name="l00148"></a>00148 fprintf(fd, <span class="stringliteral">"%%ADD%d"</span>,i);
|
|
<a name="l00149"></a>00149 fprintf(fd, <span class="stringliteral">"P,"</span>);
|
|
<a name="l00150"></a>00150 numberOfRequiredParameters = 2;
|
|
<a name="l00151"></a>00151 numberOfOptionalParameters = 3;
|
|
<a name="l00152"></a>00152 <span class="keywordflow">break</span>;
|
|
<a name="l00153"></a>00153 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#c99303749c4afdc6a24eafbfa37e1237555091fa58982b0afde79e6eb51215a7">GERBV_APTYPE_MACRO</a>:
|
|
<a name="l00154"></a>00154 export_rs274x_write_macro (fd, currentAperture, i);
|
|
<a name="l00155"></a>00155 writeAperture=FALSE;
|
|
<a name="l00156"></a>00156 <span class="keywordflow">break</span>;
|
|
<a name="l00157"></a>00157 <span class="keywordflow">default</span>:
|
|
<a name="l00158"></a>00158 writeAperture=FALSE;
|
|
<a name="l00159"></a>00159 <span class="keywordflow">break</span>;
|
|
<a name="l00160"></a>00160 }
|
|
<a name="l00161"></a>00161 <span class="keywordflow">if</span> (writeAperture) {
|
|
<a name="l00162"></a>00162 <span class="comment">/* write the parameter list */</span>
|
|
<a name="l00163"></a>00163 <span class="keywordflow">for</span> (j=0; j<(numberOfRequiredParameters + numberOfOptionalParameters); j++) {
|
|
<a name="l00164"></a>00164 <span class="keywordflow">if</span> ((j < numberOfRequiredParameters) || (currentAperture->parameter[j] != 0)) {
|
|
<a name="l00165"></a>00165 <span class="comment">/* print the "X" character to separate the parameters */</span>
|
|
<a name="l00166"></a>00166 <span class="keywordflow">if</span> (j>0)
|
|
<a name="l00167"></a>00167 fprintf(fd, <span class="stringliteral">"X"</span>);
|
|
<a name="l00168"></a>00168 fprintf(fd, <span class="stringliteral">"%.4f"</span>,currentAperture->parameter[j]);
|
|
<a name="l00169"></a>00169 }
|
|
<a name="l00170"></a>00170 }
|
|
<a name="l00171"></a>00171 fprintf(fd, <span class="stringliteral">"*%%\n"</span>);
|
|
<a name="l00172"></a>00172 }
|
|
<a name="l00173"></a>00173 }
|
|
<a name="l00174"></a>00174 }
|
|
<a name="l00175"></a>00175
|
|
<a name="l00176"></a>00176 <span class="keywordtype">void</span>
|
|
<a name="l00177"></a>00177 export_rs274x_write_layer_change (<a class="code" href="structgerbv__layer__t.html">gerbv_layer_t</a> *oldLayer, <a class="code" href="structgerbv__layer__t.html">gerbv_layer_t</a> *newLayer, FILE *fd) {
|
|
<a name="l00178"></a>00178 <span class="keywordflow">if</span> (oldLayer-><a class="code" href="structgerbv__layer__t.html#5a34fe35525dd75b47c4c5908daedc9c">polarity</a> != newLayer-><a class="code" href="structgerbv__layer__t.html#5a34fe35525dd75b47c4c5908daedc9c">polarity</a>) {
|
|
<a name="l00179"></a>00179 <span class="comment">/* polarity changed */</span>
|
|
<a name="l00180"></a>00180 <span class="keywordflow">if</span> ((newLayer-><a class="code" href="structgerbv__layer__t.html#5a34fe35525dd75b47c4c5908daedc9c">polarity</a> == <a class="code" href="gerbv_8h.html#42e426131be82b5e215429994035f4651d2d9836da807afaa7c732d93749a478">GERBV_POLARITY_CLEAR</a>))
|
|
<a name="l00181"></a>00181 fprintf(fd, <span class="stringliteral">"%%LPC*%%\n"</span>);
|
|
<a name="l00182"></a>00182 <span class="keywordflow">else</span>
|
|
<a name="l00183"></a>00183 fprintf(fd, <span class="stringliteral">"%%LPD*%%\n"</span>);
|
|
<a name="l00184"></a>00184 }
|
|
<a name="l00185"></a>00185 }
|
|
<a name="l00186"></a>00186
|
|
<a name="l00187"></a>00187 <span class="keywordtype">void</span>
|
|
<a name="l00188"></a>00188 export_rs274x_write_state_change (<a class="code" href="structgerbv__netstate__t.html">gerbv_netstate_t</a> *oldState, <a class="code" href="structgerbv__netstate__t.html">gerbv_netstate_t</a> *newState, FILE *fd) {
|
|
<a name="l00189"></a>00189
|
|
<a name="l00190"></a>00190
|
|
<a name="l00191"></a>00191 }
|
|
<a name="l00192"></a>00192
|
|
<a name="l00193"></a>00193 gboolean
|
|
<a name="l00194"></a><a class="code" href="gerbv_8h.html#49e264bfff8ce4ae783c173b48bba31d">00194</a> <a class="code" href="export-rs274x_8c.html#49e264bfff8ce4ae783c173b48bba31d" title="Export an image to a new file in RS274X format.">gerbv_export_rs274x_file_from_image</a> (gchar *filename, <a class="code" href="structgerbv__image__t.html">gerbv_image_t</a> *image) {
|
|
<a name="l00195"></a>00195 FILE *fd;
|
|
<a name="l00196"></a>00196 <a class="code" href="structgerbv__netstate__t.html">gerbv_netstate_t</a> *oldState;
|
|
<a name="l00197"></a>00197 <a class="code" href="structgerbv__layer__t.html">gerbv_layer_t</a> *oldLayer;
|
|
<a name="l00198"></a>00198 gboolean insidePolygon=FALSE;
|
|
<a name="l00199"></a>00199
|
|
<a name="l00200"></a>00200 <span class="keywordflow">if</span> ((fd = g_fopen(filename, <span class="stringliteral">"w"</span>)) == NULL) {
|
|
<a name="l00201"></a>00201 GERB_MESSAGE(<span class="stringliteral">"Can't open file for writing: %s\n"</span>, filename);
|
|
<a name="l00202"></a>00202 <span class="keywordflow">return</span> FALSE;
|
|
<a name="l00203"></a>00203 }
|
|
<a name="l00204"></a>00204 <span class="comment">/* write header info */</span>
|
|
<a name="l00205"></a>00205 fprintf(fd, <span class="stringliteral">"G04 This is an RS-274x file exported by *\n"</span>);
|
|
<a name="l00206"></a>00206 fprintf(fd, <span class="stringliteral">"G04 gerbv version %s *\n"</span>,VERSION);
|
|
<a name="l00207"></a>00207 fprintf(fd, <span class="stringliteral">"G04 More information is available about gerbv at *\n"</span>);
|
|
<a name="l00208"></a>00208 fprintf(fd, <span class="stringliteral">"G04 http://gerbv.sourceforge.net/ *\n"</span>);
|
|
<a name="l00209"></a>00209 fprintf(fd, <span class="stringliteral">"G04 --Header info--*\n"</span>);
|
|
<a name="l00210"></a>00210 fprintf(fd, <span class="stringliteral">"%%MOIN*%%\n"</span>);
|
|
<a name="l00211"></a>00211 fprintf(fd, <span class="stringliteral">"%%FSLAX23Y23*%%\n"</span>);
|
|
<a name="l00212"></a>00212
|
|
<a name="l00213"></a>00213 <span class="comment">/* check the image info struct for any non-default settings */</span>
|
|
<a name="l00214"></a>00214 <span class="comment">/* image offset */</span>
|
|
<a name="l00215"></a>00215 <span class="keywordflow">if</span> ((image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#3f145d47793e723d09e5a75758b25295">offsetA</a> > 0.0) || (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#db9f3d343e14f84e23181b17c0bf3a73">offsetB</a> > 0.0))
|
|
<a name="l00216"></a>00216 fprintf(fd, <span class="stringliteral">"%%IOA%fB%f*%%\n"</span>,image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#3f145d47793e723d09e5a75758b25295">offsetA</a>,image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#db9f3d343e14f84e23181b17c0bf3a73">offsetB</a>);
|
|
<a name="l00217"></a>00217 <span class="comment">/* image polarity */</span>
|
|
<a name="l00218"></a>00218 <span class="keywordflow">if</span> (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#18c534ca1aec8e2cb2c8dd0faef4d3f1">polarity</a> == <a class="code" href="gerbv_8h.html#42e426131be82b5e215429994035f4651d2d9836da807afaa7c732d93749a478">GERBV_POLARITY_CLEAR</a>)
|
|
<a name="l00219"></a>00219 fprintf(fd, <span class="stringliteral">"%%IPNEG*%%\n"</span>);
|
|
<a name="l00220"></a>00220 <span class="keywordflow">else</span>
|
|
<a name="l00221"></a>00221 fprintf(fd, <span class="stringliteral">"%%IPPOS*%%\n"</span>);
|
|
<a name="l00222"></a>00222 <span class="comment">/* image name */</span>
|
|
<a name="l00223"></a>00223 <span class="keywordflow">if</span> (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#7a296e9a201ae947a1760ec2e83cc738">name</a>)
|
|
<a name="l00224"></a>00224 fprintf(fd, <span class="stringliteral">"%%IN%s*%%\n"</span>,image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#7a296e9a201ae947a1760ec2e83cc738">name</a>);
|
|
<a name="l00225"></a>00225 <span class="comment">/* plotter film */</span>
|
|
<a name="l00226"></a>00226 <span class="keywordflow">if</span> (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#a18948ac1074c04ff695b0b407acb32c">plotterFilm</a>)
|
|
<a name="l00227"></a>00227 fprintf(fd, <span class="stringliteral">"%%PF%s*%%\n"</span>,image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#a18948ac1074c04ff695b0b407acb32c">plotterFilm</a>);
|
|
<a name="l00228"></a>00228 <span class="comment">/* image rotation */</span>
|
|
<a name="l00229"></a>00229 <span class="keywordflow">if</span> (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#db41e52862ce0d0038506566743ff334">imageRotation</a> != 0.0)
|
|
<a name="l00230"></a>00230 fprintf(fd, <span class="stringliteral">"%%IR%d*%%\n"</span>,(<span class="keywordtype">int</span>) image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#db41e52862ce0d0038506566743ff334">imageRotation</a>);
|
|
<a name="l00231"></a>00231 <span class="keywordflow">if</span> ((image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#50bcbb6c1aa5d238dd9b8a5084ad8e66">imageJustifyTypeA</a> != GERBV_JUSTIFY_NOJUSTIFY) ||
|
|
<a name="l00232"></a>00232 (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#fd754e52ac7c4b3447b95c25bd488ef1">imageJustifyTypeB</a> != GERBV_JUSTIFY_NOJUSTIFY)) {
|
|
<a name="l00233"></a>00233 fprintf(fd, <span class="stringliteral">"%%IJA"</span>);
|
|
<a name="l00234"></a>00234 <span class="keywordflow">if</span> (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#50bcbb6c1aa5d238dd9b8a5084ad8e66">imageJustifyTypeA</a> == GERBV_JUSTIFY_CENTERJUSTIFY)
|
|
<a name="l00235"></a>00235 fprintf(fd, <span class="stringliteral">"C"</span>);
|
|
<a name="l00236"></a>00236 <span class="keywordflow">else</span>
|
|
<a name="l00237"></a>00237 fprintf(fd, <span class="stringliteral">"%.4f"</span>,image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#678ef7ef39870fbf61a1d1f2e2d685d6">imageJustifyOffsetA</a>);
|
|
<a name="l00238"></a>00238 fprintf(fd, <span class="stringliteral">"B"</span>);
|
|
<a name="l00239"></a>00239 <span class="keywordflow">if</span> (image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#fd754e52ac7c4b3447b95c25bd488ef1">imageJustifyTypeB</a> == GERBV_JUSTIFY_CENTERJUSTIFY)
|
|
<a name="l00240"></a>00240 fprintf(fd, <span class="stringliteral">"C"</span>);
|
|
<a name="l00241"></a>00241 <span class="keywordflow">else</span>
|
|
<a name="l00242"></a>00242 fprintf(fd, <span class="stringliteral">"%.4f"</span>,image-><a class="code" href="structgerbv__image__t.html#ee14513fd6f516dc355948f49a10375c">info</a>-><a class="code" href="structgerbv__image__info.html#c2188f9f81755e4147be0d43a7f70b7c">imageJustifyOffsetB</a>);
|
|
<a name="l00243"></a>00243 fprintf(fd, <span class="stringliteral">"*%%\n"</span>);
|
|
<a name="l00244"></a>00244
|
|
<a name="l00245"></a>00245 }
|
|
<a name="l00246"></a>00246 <span class="comment">/* define all apertures */</span>
|
|
<a name="l00247"></a>00247 fprintf(fd, <span class="stringliteral">"G04 --Define apertures--*\n"</span>);
|
|
<a name="l00248"></a>00248 export_rs274x_write_apertures (fd, image);
|
|
<a name="l00249"></a>00249
|
|
<a name="l00250"></a>00250 <span class="comment">/* write rest of image */</span>
|
|
<a name="l00251"></a>00251 fprintf(fd, <span class="stringliteral">"G04 --Start main section--*\n"</span>);
|
|
<a name="l00252"></a>00252 gint currentAperture = 0;
|
|
<a name="l00253"></a>00253 <a class="code" href="structgerbv__net.html">gerbv_net_t</a> *currentNet;
|
|
<a name="l00254"></a>00254
|
|
<a name="l00255"></a>00255 oldLayer = image-><a class="code" href="structgerbv__image__t.html#13fdf9e40c8e6efc8f9eec2ec5e25801">layers</a>;
|
|
<a name="l00256"></a>00256 oldState = image-><a class="code" href="structgerbv__image__t.html#b81e3c6363cf0014970ca1cbcb3182f6">states</a>;
|
|
<a name="l00257"></a>00257 <span class="comment">/* skip the first net, since it's always zero due to the way we parse things */</span>
|
|
<a name="l00258"></a>00258 <span class="keywordflow">for</span> (currentNet = image-><a class="code" href="structgerbv__image__t.html#4ce3cbd8ab0949d0da18653890184120">netlist</a>-><a class="code" href="structgerbv__net.html#74453be5449de76efa6cc12df4b2886c">next</a>; currentNet; currentNet = currentNet-><a class="code" href="structgerbv__net.html#74453be5449de76efa6cc12df4b2886c">next</a>){
|
|
<a name="l00259"></a>00259 <span class="comment">/* check for "layer" changes (RS274X commands) */</span>
|
|
<a name="l00260"></a>00260 <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#13bb1433bc8ba893ab8d18dc83b3ec0c">layer</a> != oldLayer)
|
|
<a name="l00261"></a>00261 export_rs274x_write_layer_change (oldLayer, currentNet-><a class="code" href="structgerbv__net.html#13bb1433bc8ba893ab8d18dc83b3ec0c">layer</a>, fd);
|
|
<a name="l00262"></a>00262
|
|
<a name="l00263"></a>00263 <span class="comment">/* check for new "netstate" (more RS274X commands) */</span>
|
|
<a name="l00264"></a>00264 <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#61c550ee3a7c7aeeb4b9d39993f6ded4">state</a> != oldState)
|
|
<a name="l00265"></a>00265 export_rs274x_write_state_change (oldState, currentNet-><a class="code" href="structgerbv__net.html#61c550ee3a7c7aeeb4b9d39993f6ded4">state</a>, fd);
|
|
<a name="l00266"></a>00266
|
|
<a name="l00267"></a>00267 <span class="comment">/* check for tool changes */</span>
|
|
<a name="l00268"></a>00268 <span class="comment">/* also, make sure the aperture number is a valid one, since sometimes</span>
|
|
<a name="l00269"></a>00269 <span class="comment"> the loaded file may refer to invalid apertures */</span>
|
|
<a name="l00270"></a>00270 <span class="keywordflow">if</span> ((currentNet-><a class="code" href="structgerbv__net.html#f4db0779d7e69e16f525fef3044897fd">aperture</a> != currentAperture)&&
|
|
<a name="l00271"></a>00271 (image-><a class="code" href="structgerbv__image__t.html#b40defce85ca280ecf3804fad90fc308">aperture</a>[currentNet-><a class="code" href="structgerbv__net.html#f4db0779d7e69e16f525fef3044897fd">aperture</a>] != NULL)) {
|
|
<a name="l00272"></a>00272 fprintf(fd, <span class="stringliteral">"G54D%02d*\n"</span>,currentNet-><a class="code" href="structgerbv__net.html#f4db0779d7e69e16f525fef3044897fd">aperture</a>);
|
|
<a name="l00273"></a>00273 currentAperture = currentNet-><a class="code" href="structgerbv__net.html#f4db0779d7e69e16f525fef3044897fd">aperture</a>;
|
|
<a name="l00274"></a>00274 }
|
|
<a name="l00275"></a>00275
|
|
<a name="l00276"></a>00276 oldLayer = currentNet-><a class="code" href="structgerbv__net.html#13bb1433bc8ba893ab8d18dc83b3ec0c">layer</a>;
|
|
<a name="l00277"></a>00277 oldState = currentNet-><a class="code" href="structgerbv__net.html#61c550ee3a7c7aeeb4b9d39993f6ded4">state</a>;
|
|
<a name="l00278"></a>00278
|
|
<a name="l00279"></a>00279 <span class="keywordtype">long</span> xVal,yVal,endX,endY,centerX,centerY;
|
|
<a name="l00280"></a>00280 <span class="keywordflow">switch</span> (currentNet-><a class="code" href="structgerbv__net.html#ad3bee195bd0592bf1521e94a5451d42">interpolation</a>) {
|
|
<a name="l00281"></a>00281 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5eafb605f54313fd8299abb57f749a5f72">GERBV_INTERPOLATION_x10</a> :
|
|
<a name="l00282"></a>00282 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5e162b6f84fe9933e3d8f8d9d712222584">GERBV_INTERPOLATION_LINEARx01</a> :
|
|
<a name="l00283"></a>00283 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5e713750d93715d25cc1306fb07cfc3090">GERBV_INTERPOLATION_LINEARx001</a> :
|
|
<a name="l00284"></a>00284 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5efc1b3a7c8e48bfbf95dc57b3e3042d2d">GERBV_INTERPOLATION_LINEARx1</a> :
|
|
<a name="l00285"></a>00285 <span class="comment">/* see if we need to write an "aperture off" line to get</span>
|
|
<a name="l00286"></a>00286 <span class="comment"> the pen to the right start point */</span>
|
|
<a name="l00287"></a>00287 <span class="keywordflow">if</span> ((!insidePolygon) && (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f5522a02cbf231eae94b370a73e021bdc1">GERBV_APERTURE_STATE_ON</a>)) {
|
|
<a name="l00288"></a>00288 xVal = (long) round(currentNet-><a class="code" href="structgerbv__net.html#6189e51df43105b4225cb6324f34d87f">start_x</a> * 1000.0);
|
|
<a name="l00289"></a>00289 yVal = (long) round(currentNet-><a class="code" href="structgerbv__net.html#8a34ce21baab8da09fdf6301f211ff6f">start_y</a> * 1000.0);
|
|
<a name="l00290"></a>00290 fprintf(fd, <span class="stringliteral">"G01X%05ldY%05ldD02*\n"</span>,xVal,yVal);
|
|
<a name="l00291"></a>00291 }
|
|
<a name="l00292"></a>00292 xVal = (long) round(currentNet-><a class="code" href="structgerbv__net.html#5e221f216fd25e09358da99191821d25">stop_x</a> * 1000.0);
|
|
<a name="l00293"></a>00293 yVal = (long) round(currentNet-><a class="code" href="structgerbv__net.html#322975adbc33c1a642fb5e8cfadd2eb7">stop_y</a> * 1000.0);
|
|
<a name="l00294"></a>00294 fprintf(fd, <span class="stringliteral">"G01X%05ldY%05ld"</span>,xVal,yVal);
|
|
<a name="l00295"></a>00295 <span class="comment">/* and finally, write the esposure value */</span>
|
|
<a name="l00296"></a>00296 <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f521b7ab32e7803243140cc7abc199eed1">GERBV_APERTURE_STATE_OFF</a>)
|
|
<a name="l00297"></a>00297 fprintf(fd, <span class="stringliteral">"D02*\n"</span>);
|
|
<a name="l00298"></a>00298 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f5522a02cbf231eae94b370a73e021bdc1">GERBV_APERTURE_STATE_ON</a>)
|
|
<a name="l00299"></a>00299 fprintf(fd, <span class="stringliteral">"D01*\n"</span>);
|
|
<a name="l00300"></a>00300 <span class="keywordflow">else</span>
|
|
<a name="l00301"></a>00301 fprintf(fd, <span class="stringliteral">"D03*\n"</span>);
|
|
<a name="l00302"></a>00302 <span class="keywordflow">break</span>;
|
|
<a name="l00303"></a>00303 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5e922b94e7291b681b05cded85daa1eb98">GERBV_INTERPOLATION_CW_CIRCULAR</a> :
|
|
<a name="l00304"></a>00304 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5ef738d54521d612942753090b943a7426">GERBV_INTERPOLATION_CCW_CIRCULAR</a> :
|
|
<a name="l00305"></a>00305 <span class="comment">/* see if we need to write an "aperture off" line to get</span>
|
|
<a name="l00306"></a>00306 <span class="comment"> the pen to the right start point */</span>
|
|
<a name="l00307"></a>00307 <span class="keywordflow">if</span> ((!insidePolygon) && (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f5522a02cbf231eae94b370a73e021bdc1">GERBV_APERTURE_STATE_ON</a>)) {
|
|
<a name="l00308"></a>00308 xVal = (long) round(currentNet-><a class="code" href="structgerbv__net.html#6189e51df43105b4225cb6324f34d87f">start_x</a> * 1000.0);
|
|
<a name="l00309"></a>00309 yVal = (long) round(currentNet-><a class="code" href="structgerbv__net.html#8a34ce21baab8da09fdf6301f211ff6f">start_y</a> * 1000.0);
|
|
<a name="l00310"></a>00310 fprintf(fd, <span class="stringliteral">"G01X%05ldY%05ldD02*\n"</span>,xVal,yVal);
|
|
<a name="l00311"></a>00311 }
|
|
<a name="l00312"></a>00312 centerX= (long) round((currentNet-><a class="code" href="structgerbv__net.html#d3b4aebb1c8b89627580795063c7cf75">cirseg</a>->cp_x - currentNet-><a class="code" href="structgerbv__net.html#6189e51df43105b4225cb6324f34d87f">start_x</a>) * 1000.0);
|
|
<a name="l00313"></a>00313 centerY= (long) round((currentNet-><a class="code" href="structgerbv__net.html#d3b4aebb1c8b89627580795063c7cf75">cirseg</a>->cp_y - currentNet-><a class="code" href="structgerbv__net.html#8a34ce21baab8da09fdf6301f211ff6f">start_y</a>) * 1000.0);
|
|
<a name="l00314"></a>00314 endX = (long) round(currentNet-><a class="code" href="structgerbv__net.html#5e221f216fd25e09358da99191821d25">stop_x</a> * 1000.0);
|
|
<a name="l00315"></a>00315 endY = (long) round(currentNet-><a class="code" href="structgerbv__net.html#322975adbc33c1a642fb5e8cfadd2eb7">stop_y</a> * 1000.0);
|
|
<a name="l00316"></a>00316
|
|
<a name="l00317"></a>00317 <span class="comment">/* always use multi-quadrant, since it's much easier to export */</span>
|
|
<a name="l00318"></a>00318 <span class="comment">/* and most all software should support it */</span>
|
|
<a name="l00319"></a>00319 fprintf(fd, <span class="stringliteral">"G75*\n"</span>);
|
|
<a name="l00320"></a>00320 <span class="comment">/* figure out clockwise or c-clockwise */</span>
|
|
<a name="l00321"></a>00321 <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#d3b4aebb1c8b89627580795063c7cf75">cirseg</a>->angle2 > currentNet-><a class="code" href="structgerbv__net.html#d3b4aebb1c8b89627580795063c7cf75">cirseg</a>->angle1)
|
|
<a name="l00322"></a>00322 fprintf(fd, <span class="stringliteral">"G03"</span>);
|
|
<a name="l00323"></a>00323 <span class="keywordflow">else</span>
|
|
<a name="l00324"></a>00324 fprintf(fd, <span class="stringliteral">"G02"</span>);
|
|
<a name="l00325"></a>00325 <span class="comment">/* don't write the I and J values if the exposure is off */</span>
|
|
<a name="l00326"></a>00326 <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f5522a02cbf231eae94b370a73e021bdc1">GERBV_APERTURE_STATE_ON</a>)
|
|
<a name="l00327"></a>00327 fprintf(fd, <span class="stringliteral">"X%05ldY%05ldI%05ldJ%05ld"</span>,endX,endY,centerX,centerY);
|
|
<a name="l00328"></a>00328 <span class="keywordflow">else</span>
|
|
<a name="l00329"></a>00329 fprintf(fd, <span class="stringliteral">"X%05ldY%05ld"</span>,endX,endY);
|
|
<a name="l00330"></a>00330 <span class="comment">/* and finally, write the esposure value */</span>
|
|
<a name="l00331"></a>00331 <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f521b7ab32e7803243140cc7abc199eed1">GERBV_APERTURE_STATE_OFF</a>)
|
|
<a name="l00332"></a>00332 fprintf(fd, <span class="stringliteral">"D02*\n"</span>);
|
|
<a name="l00333"></a>00333 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentNet-><a class="code" href="structgerbv__net.html#5cabb2f3b512a328ff8dc7e6ef0c803b">aperture_state</a> == <a class="code" href="gerbv_8h.html#1bde819e0800e9b6efd3718c28b6c8f5522a02cbf231eae94b370a73e021bdc1">GERBV_APERTURE_STATE_ON</a>)
|
|
<a name="l00334"></a>00334 fprintf(fd, <span class="stringliteral">"D01*\n"</span>);
|
|
<a name="l00335"></a>00335 <span class="keywordflow">else</span>
|
|
<a name="l00336"></a>00336 fprintf(fd, <span class="stringliteral">"D03*\n"</span>);
|
|
<a name="l00337"></a>00337 <span class="keywordflow">break</span>;
|
|
<a name="l00338"></a>00338 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5e418a4b1cc85b83c63417078058325eef">GERBV_INTERPOLATION_PAREA_START</a>:
|
|
<a name="l00339"></a>00339 fprintf(fd, <span class="stringliteral">"G36*\n"</span>);
|
|
<a name="l00340"></a>00340 insidePolygon = TRUE;
|
|
<a name="l00341"></a>00341 <span class="keywordflow">break</span>;
|
|
<a name="l00342"></a>00342 <span class="keywordflow">case</span> <a class="code" href="gerbv_8h.html#f06070b85e638637eae8960cdaa2cf5e9a0c81abf80482847b58c54d3ea4218e">GERBV_INTERPOLATION_PAREA_END</a>:
|
|
<a name="l00343"></a>00343 fprintf(fd, <span class="stringliteral">"G37*\n"</span>);
|
|
<a name="l00344"></a>00344 insidePolygon = FALSE;
|
|
<a name="l00345"></a>00345 <span class="keywordflow">break</span>;
|
|
<a name="l00346"></a>00346 <span class="keywordflow">default</span>:
|
|
<a name="l00347"></a>00347 <span class="keywordflow">break</span>;
|
|
<a name="l00348"></a>00348 }
|
|
<a name="l00349"></a>00349 }
|
|
<a name="l00350"></a>00350
|
|
<a name="l00351"></a>00351 <span class="comment">/* write footer */</span>
|
|
<a name="l00352"></a>00352 fprintf(fd, <span class="stringliteral">"G04 --Footer info--*\n"</span>);
|
|
<a name="l00353"></a>00353 fprintf(fd, <span class="stringliteral">"M02*\n"</span>);
|
|
<a name="l00354"></a>00354
|
|
<a name="l00355"></a>00355 fclose(fd);
|
|
<a name="l00356"></a>00356 <span class="keywordflow">return</span> TRUE;
|
|
<a name="l00357"></a>00357 }
|
|
</pre></div></div>
|
|
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Aug 19 00:14:48 2008 for gerbv by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
|
|
</body>
|
|
</html>
|