Revert "Fix locale-dependent gerber output"
[geda-pcb/whiteaudio.git] / lib / pci.inc
blob762749ed386d212bb38d91c6edfcfcc4efb4bbd6
1 # $Id$
3 # Definitions for PCI boards
4 # by D.J. Barrow dj_barrow@ariasoft.ie
6 # please note that you will need to edit the saved pcb file
7 # by hand to move the board outline onto a seperate layer
8 # I suggest one of the unused layers.
10 define(`GETNUMARRAYS',`eval(($#)/2)')
11 # $1: canonical name
12 # $2: name on PCB
13 # $3: boardheight,number of pins,arcradius,..., number of pins
14 define(`PKG_PCIPINARRAY',
15         `
16         define(`cnt',`1')
17         define(`ARGS',`$4, $5, $6, $7')
18         args(ARGS)
19         define(`LEFTOFFSET',`100')
20         define(`EDGEGAP',`12')
21         define(`PINDIST',`50')
22         define(`PINWIDTH',`25')
23         define(`NUMARRAYS',`GETNUMARRAYS(ARGS)')
24         define(`TOTALPINS1',forloop(`IDX',0,eval(NUMARRAYS-1),
25                 ``arg'eval((IDX*2)+2) + ')0)
26         define(`TOTALPINS',eval(TOTALPINS1))
27         ifelse(1,eval(NUMARRAYS>1),`
28                 define(`TOTALDIAMETER1',forloop(`IDX',0,eval(NUMARRAYS-2),
29                         ``arg'eval((IDX*2)+3) + ')0)
30                 define(`TOTALDIAMETER',eval(TOTALDIAMETER1))
31         ')
32         define(`PINCENTER',`eval(LEFTOFFSET+(PINDIST/2))')
33         define(`PINRADIUS',`eval(PINWIDTH/2)')
34         define(`PINLEFT',`eval(PINCENTER-PINRADIUS)')
35         define(`PINRIGHT',`eval(PINCENTER+PINRADIUS)')
36         define(`PENWIDTH',`eval(PINRADIUS+4)')
37         define(`PENRADIUS',`eval(PENWIDTH/2)')
38         define(`MAXIDX',`eval(TOTALPINS - 1)')
39         define(`ARRAYWIDTH', `eval((TOTALPINS*PINDIST)+TOTALDIAMETER)')
40         define(`CENTERX', `eval(((ARRAYWIDTH+LEFTOFFSET)/2))')
41         define(`MINY',`20')
42         define(`MIDY',`220')
43         define(`MAXY',`270')
44         define(`ARCRADIUS',`12')
45         define(`ARCDIAMETER',`eval(ARCRADIUS*2)')
46         define(`LMAXY',`eval(MAXY+ARCRADIUS)')
47         define(`BOARDTOP',`eval(LMAXY-arg1)')
48         define(`SCREWBORDER',275)
49 Element(0x00  "$1" "`$2'" "$3" CENTERX 10 1 30 0x00)
51         Mark(CENTERX 135)
52         define(`ADDSIDE',0)
53         define(`FLAG',0x0)
54         define(`LOOPIDX1',eval(NUMARRAYS-1))
55         define(`LEFT1',`eval(PINLEFT-ARCRADIUS)')
56         define(`ARCRADIUS2',`100')
57         define(`SLOTWIDTH',`1000')
58         define(`BRACKETLEFT',`-1525')
59         define(`LEFT2',`eval(LEFT1-ARCRADIUS2)')
60         define(`LEFT3',`eval(LEFT1+ARCRADIUS2-SLOTWIDTH)')
61         define(`LEFT4',`eval(LEFT1-SLOTWIDTH)')
62         ElementArc(LEFT2 0 ARCRADIUS2 ARCRADIUS2 180 90 1)
63         ElementLine(LEFT2 -ARCRADIUS2 LEFT3 -ARCRADIUS2 1)
64         ElementArc(LEFT3 0 ARCRADIUS2 ARCRADIUS2 270 90 1)
65         ElementLine(LEFT4 0 LEFT4 MAXY 1)
66         define(`LEFT5',`eval(LEFT4-ARCRADIUS)')
67         ElementArc(LEFT5 MAXY ARCRADIUS ARCRADIUS 90 90 1)
68         ElementLine(LEFT5 LMAXY BRACKETLEFT LMAXY 1)
69         forloop(`SIDE',0,1,
70         `
71                 define(`IDX',`0')
72                 define(`ADDDIAMETER',`0')
73                 forloop(`IDX1',0,LOOPIDX1,
74                 `
75                         define(`CURRNUMPINS',`arg'eval((IDX1*2)+2))
76                         ifelse(SIDE,`0',`
77                                 define(`CURRLEFT',`eval((PINDIST*IDX)+(ADDDIAMETER)+PINLEFT)')
78                                 define(`CURRRIGHT',`eval(CURRLEFT+((CURRNUMPINS-1)*PINDIST)+PINWIDTH)')
79                                 ElementLine(CURRLEFT LMAXY CURRRIGHT LMAXY 2)
80                                 ElementArc(CURRLEFT MAXY ARCRADIUS ARCRADIUS 0 90 2)
81                                 ElementArc(CURRRIGHT MAXY ARCRADIUS ARCRADIUS 90 90 2)
82                                 define(`CURRLEFT1',`eval(CURRLEFT-ARCRADIUS)')
83                                 define(`CURRRIGHT1',`eval(CURRRIGHT+ARCRADIUS)')
84                                 ElementLine(CURRLEFT1 0 CURRLEFT1 MAXY 1)
85                                 ElementLine(CURRRIGHT1 0 CURRRIGHT1 MAXY 1)
86                                 ifelse(1,eval((NUMARRAYS>1)&&(IDX1<LOOPIDX1)),`
87                                         define(`CURRDIAMETER',`arg'eval((IDX1*2)+3))
88                                         define(`CURRRADIUS',`eval(CURRDIAMETER/2)')
89                                         ElementArc(eval(CURRRIGHT+EDGEGAP+(CURRDIAMETER/2)) 0 CURRRADIUS CURRRADIUS 180 180 1)
90                                 ')
91                                 ifelse(1,eval(IDX1==LOOPIDX1),`
92                                         ElementLine(BRACKETLEFT LMAXY BRACKETLEFT BOARDTOP 1)
93                                         ElementLine(BRACKETLEFT BOARDTOP CURRRIGHT1 BOARDTOP 1)
94                                         ElementLine(CURRRIGHT1 BOARDTOP CURRRIGHT1 0 1)
95                                         
96                                         ElementArc(eval(BRACKETLEFT+SCREWBORDER) eval(LMAXY-SCREWBORDER) 125 125 0 360 1)
97                                         ElementArc(eval(BRACKETLEFT+SCREWBORDER) eval(BOARDTOP+SCREWBORDER) 125 125 0 360 1)
98                                 ')
99                         ')
100                         forloop(`IDX2',0,eval(CURRNUMPINS-1),
101                         `
102                                 define(`CURRX',`eval((PINDIST*IDX)+(ADDDIAMETER))')
103                                 define(`MINX',`eval(PINLEFT+CURRX)')
104                                 define(`MIDX',`eval(PINCENTER+CURRX)')
105                                 define(`MAXX',`eval(PINRIGHT+CURRX)')
106                                 define(`PINIDX',`eval(IDX+1+ADDSIDE)')
107                                 EDGECONN(MINX,MINY,MAXX,MINY,PENWIDTH,PINIDX,FLAG)
108                                 EDGECONN(MINX,MINY,MINX,MIDY,PENWIDTH,PINIDX,FLAG)
109                                 EDGECONN(MINX,MIDY,MIDX,MAXY,PENWIDTH,PINIDX,FLAG)
110                                 EDGECONN(MIDX,MINY,MIDX,MAXY,PENWIDTH,PINIDX,FLAG)
111                                 EDGECONN(MAXX,MINY,MAXX,MIDY,PENWIDTH,PINIDX,FLAG)
112                                 EDGECONN(MAXX,MIDY,MIDX,MAXY,PENWIDTH,PINIDX,FLAG)                              
113                                 define(`IDX',incr(IDX))
114                         ')
115                         
116                         ifelse(1,eval((NUMARRAYS>1)&&(IDX1<LOOPIDX1)),`
117                                 define(`ADDDIAMETER1',forloop(`IDX2',0,eval(IDX1),
118                                 ``arg'eval((IDX2*2)+3)+')0)
119                                 define(`ADDDIAMETER',eval(ADDDIAMETER1+(EDGEGAP*2)-PINDIST+PINWIDTH))
120                         ')
121                 ')
122                 define(`ADDSIDE',`TOTALPINS')
123                 define(`FLAG',0x80)
124         ')
125          
130 define(`PKG_PCI5V_AVE_HEIGHT',   `PKG_PCIPINARRAY(`$1', `$2', `$3', 2810,49,100,11)');
131 define(`PKG_PCI5V_MIN_HEIGHT',   `PKG_PCIPINARRAY(`$1', `$2', `$3', 1420,49,100,11)');
132 define(`PKG_PCI5V_MAX_HEIGHT',   `PKG_PCIPINARRAY(`$1', `$2', `$3', 4200,49,100,11)');
133 define(`PKG_PCI5V_SMALL_HEIGHT', `PKG_PCIPINARRAY(`$1', `$2', `$3', 2063,49,100,11)');