File: index.html

package info (click to toggle)
pcb-rnd 3.1.7b-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,108 kB
  • sloc: ansic: 213,400; yacc: 6,241; sh: 4,698; awk: 3,016; makefile: 2,254; lex: 1,166; python: 519; xml: 261; lisp: 154; tcl: 67; perl: 34; javascript: 6; ruby: 5
file content (701 lines) | stat: -rw-r--r-- 26,361 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
<html>
<head>
	<title> pcb-rnd modularization </title>
</head>
<body>
<H1> pcb-rnd modularization </H1>
<H2> Why bother... </H2>
I believe good software should be modular. This is especially important in
the context of large software, such as CAD applications. There should be
a thin core that can model the world and provide the basic operations defined
on it but anything else should go in separate modules.
<p>
Fortunately PCB already had a strong infrastructure supporting this idea.
It has dynamic loadable plugins and the GUI and exporters are in separate
HID modules. While working on pcb-gpmi and later pcb-rnd, I added the
gpmi module as a separate plugin.
<p>
In version 1.0.8 to 1.1.0 a considerable chunk of core code has been moved into
<i>core plugins</i>. A <i>core plugin</i> is just a plugin that is
maintained together with the core, in the same repository, still the code is
somewhat detached from the core. More importantly, the user can choose, for
each plugin, separately:
<ul>
	<li> to compile it as a buildin (static-link it into the pcb executable)
	<li> to compile it as a plugin (dynamic-link it runtime, if the .so is installed in the plugins/ directory)
	<li> to disable the plugin, so it is not compiled at all
</ul>
<p>
I believe such modularization has benefits on multiple levels:
<ul>
	<li> it is possible to compile smaller, potentially faster executables by omitting features the specific user would never use anyway
	<li> in a distribution dynamic-link plugins can be distributed as separate packages providing the user with the option to decide what features to install
	<li> such plugins have to have some sort of APIs if they want to reference each other or if the code needs to reference them; such an API may not (and often did not) exist when the code is part of the core
</ul>

<H2> Progress in charts </H2>
<h3> Before-after </h3>
All numbers are in <a href="http://en.wikipedia.org/wiki/Source_lines_of_code">SLOC</a>
and are acquired running sloccount on the given directory. While lines of
code alone is not a true measure of complexity, it's a good estimation. The
slices of pie charts are the major components of the pcb-rnd executable.
<table border=1 cellspacing=0> <tr><td>
	<table border=0>
	<tr><td><img src="before.png"><td> &nbsp; &nbsp; &nbsp; &nbsp;<td><img src="after.png">
	<tr><td>Before modularization: pcb-rnd version 1.0.7
	        <br>Note: gpmi was already a plugin
	    <td>
	    <td> After modularization: current pcb-rnd
	        <br>Note: gpmi is part of the "plugins" slice
	</table>
</table>
<h3>Zooming on to the plugins</h3>
<p>

<table border=0 width="100%">
<tr>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="mods.png"><tr><td><b>total size per class</b></table>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="io.png"><tr><td>IO plugins</table>
</table>


<table border=0 width="100%">
<tr>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="feature.png"><tr><td>feature plugins </table>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="export.png"><tr><td>export plugins</table>
</table>

<table border=0 width="100%">
<tr>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="hid.png"><tr><td>HID plugins</table>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="import.png"><tr><td>import plugins</table>
</table>

<table border=0 width="100%">
<tr>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="lib.png"><tr><td>library plugins </table>
	<td width="50%"><table border=1 cellspacing=0><tr><td><img src="fp.png"><tr><td>footprint plugins</table>
</table>

<p>
(Red means the plugin doesn't really work).

<H2> Progress in numbers </H2>
Below is a table with the summary of core plugins.
<table border=1 cellspacing=0>
<tr><th>module <th>size [sloc] <th> status <th> configure<br>default <th> class <th> description


<tr><th align=left>acompnet<td>304
<td  > WIP
<td bgcolor="red"> disable
<td> feature
<td> Auto-complete the current network. A very limited autorouter/assistant.
<tr><th align=left>act_draw<td>603
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Expose drawing related API as actions
<tr><th align=left>act_read<td>416
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Data access related API as actions
<tr><th align=left>ar_cpcb<td>319
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Autoroute using external tool c-pcb
<tr><th align=left>asm<td>559
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> hand assembly assistant GUI
<tr><th align=left>autocrop<td>51
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Reduce the board dimensions to just enclose the objects on the board.
<tr><th align=left>autoplace<td>645
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Automatically place subcircuits.
<tr><th align=left>autoroute<td>4385
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Automatically route selected or all rats. This is the original autorouter.
<tr><th align=left>cam<td>1595
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Configurable output job based batch exporting
<tr><th align=left>ddraft<td>2129
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> export
<td> Actions and a command interpreter for supporting advanced/precise 2 dimensional drafting
<tr><th align=left>diag<td>803
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> feature
<td> Actions for pcb-rnd core diagnostics, intended for developers. These are not in core because end users normally don't need these. As a plugin, due to dynamic loading, it can be dropped on an existing pcb-rnd installation with minimal risk of scaring away a reproducible bug.
<tr><th align=left>dialogs<td>8918
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> feature
<td> Interactive core functionality: HID-independent GUI dialogs (enabled by GUI HIDs)
<tr><th align=left>distalign<td>443
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Introducing Align() and Distribute(), which work much like the similarly named functions in Visio. Given that PCB does not have the concept of "first selected object" to draw on, the reference points can be selected by arguments.
<tr><th align=left>distaligntext<td>474
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Same as distalign, operates on text objects.
<tr><th align=left>djopt<td>2250
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Various board optimization algorithms.
<tr><th align=left>draw_csect<td>800
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> feature
<td> Draw cross section and layer map.
<tr><th align=left>draw_fab<td>290
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Draw the fab layer (for various exporters).
<tr><th align=left>draw_fontsel<td>143
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> feature
<td> Draw the font selector GUI
<tr><th align=left>drc_orig<td>352
<td  >
<td bgcolor="lightgreen"> buildin
<td> feature
<td> A few simple, hardwired Design Rule Checks.
<tr><th align=left>expfeat<td>31
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> feature
<td> Staging plugin for experimenting with new actions and dialogs before getting them into core or other plugins
<tr><th align=left>export_bom<td>218
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export bom (Bill of Materials)
<tr><th align=left>export_dsn<td>445
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export specctra .dsn files
<tr><th align=left>export_dxf<td>2340
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export dxf
<tr><th align=left>export_excellon<td>583
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export to excellon drill/cnc files
<tr><th align=left>export_fidocadj<td>274
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export to FidoCadJ format (.fcd)
<tr><th align=left>export_gcode<td>309
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export to gcode
<tr><th align=left>export_gerber<td>1198
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export to gerber
<tr><th align=left>export_ipcd356<td>383
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> IPC-D-356 Netlist export.
<tr><th align=left>export_lpr<td>104
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export to lpr (using export_ps to generate postscript)
<tr><th align=left>export_oldconn<td>240
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export subc/terminal connection map in an old, custom file format
<tr><th align=left>export_openems<td>2186
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export copper to OpenEMS simulation
<tr><th align=left>export_openscad<td>719
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export openscad
<tr><th align=left>export_png<td>1457
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export to png, gif and jpeg
<tr><th align=left>export_ps<td>1566
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export postscript or embedded postscript.
<tr><th align=left>export_stat<td>320
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export various board statistics in lihata format
<tr><th align=left>export_stl<td>189
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> export
<td> Export stl (triangulated surface)
<tr><th align=left>export_svg<td>719
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Scalable Vector Graphics (SVG) exporter
<tr><th align=left>export_test<td>90
<td  > WIP
<td bgcolor="red"> disable
<td> export
<td> A thin layer of code to dump exporter calls for testing the HID exporter API.
<tr><th align=left>export_vfs_fuse<td>311
<td  > WIP
<td bgcolor="red"> disable
<td> export
<td> Export all data and config of a board to a FUSE mountable filesystem
<tr><th align=left>export_vfs_mc<td>149
<td  > WIP
<td bgcolor="red"> disable
<td> export
<td> Export all data and config of a board to GNU mc
<tr><th align=left>export_xy<td>987
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> export
<td> Template based export of XY centroid subcircuit data e.g. for pick & place.
<tr><th align=left>extedit<td>352
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> invoke external program to edit parts of the current board
<tr><th align=left>exto_std<td>1261
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Extended objects for: line-of-vias, dimension
<tr><th align=left>fontmode<td>257
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Font editing actions.
<tr><th align=left>fp_board<td>120
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> fp
<td> Footprint: load a board and expose all the unique subcircuits on that board as a footprint library
<tr><th align=left>fp_fs<td>439
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> fp
<td> Footprint: file system based implementation. Used to be called Newlib: load footprints from directories. Run external processes for the parametric footprints.
<tr><th align=left>fp_wget<td>686
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> fp
<td> Footprint: get static (file) footprints from the web, e.g. from http://gedasymbols.org
<tr><th align=left>hid_batch<td>325
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> hid
<td> HID without GUI: read actions from stdin.
<tr><th align=left>hid_gtk2_gdk<td>1288
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> hid
<td> GUI: GTK2 HID with GDK software rendering.
<tr><th align=left>hid_gtk2_gl<td>769
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> hid
<td> GUI: GTK2 with opengl rendering
<tr><th align=left>hid_lesstif<td>9199
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> hid
<td> GUI: the lesstif HID.
<tr><th align=left>hid_remote<td>1100
<td  > WIP
<td bgcolor="red"> disable-all
<td> hid
<td> Remote access HID: implement a protocol and use it to relay between a core and a remote HID implementation.
<tr><th align=left>import_calay<td>213
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import the netlist and footprints from a calay netlist.
<tr><th align=left>import_dsn<td>268
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import specctra .dsn files
<tr><th align=left>import_edif<td>3637
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import plugin for netlists in the EDIF format.
<tr><th align=left>import_fpcb_nl<td>192
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import the netlist and footprints from freepcb format (exported by e.g. easyeda)
<tr><th align=left>import_gnetlist<td>135
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import gEDA/gschem schematics running gnetlist
<tr><th align=left>import_hpgl<td>131
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Emulate a plotter and import the plot as lines, arcs and polygons.
<tr><th align=left>import_ipcd356<td>430
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> IPC-D-356 Netlist and pad centroid import
<tr><th align=left>import_ltspice<td>566
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import the netlist and footprints from an ltspice .asc and .net pair of files
<tr><th align=left>import_mentor_sch<td>522
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import Mentor Graphics Design Capture from flattened .edf netlist, using a parts conversion table.
<tr><th align=left>import_mucs<td>122
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import lines and vias from MUCS unixplot .pl files
<tr><th align=left>import_net_action<td>75
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import the netlist and footprints from an action script.
<tr><th align=left>import_net_cmd<td>68
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import schematics/netlist by running a commandline
<tr><th align=left>import_netlist<td>142
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import plugin for netlists in the classic pcb netlist format.
<tr><th align=left>import_pxm_gd<td>103
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import png, gif and jpeg using libgd
<tr><th align=left>import_pxm_pnm<td>119
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import pnm P4, P5 and P6 into pcb-rnd pixmaps
<tr><th align=left>import_sch<td>321
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Imports footprints and netlist data from the schematics (or some other source).
<tr><th align=left>import_sch2<td>496
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> import
<td> Imports footprints and netlist data from the schematics (or some other source).
<tr><th align=left>import_tinycad<td>199
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import the netlist and footprints from a tinycad netlist.
<tr><th align=left>import_ttf<td>163
<td  > WIP
<td bgcolor="lightgreen"> buildin
<td> import
<td> Import outline ttf glyphs into the current font, either as polygons or lines
<tr><th align=left>io_autotrax<td>1584
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Import and export autotrax layouts and footprints.
<tr><th align=left>io_dsn<td>1673
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> io
<td> Load and save specctra DSN files
<tr><th align=left>io_eagle<td>4116
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Load the design from eagle's xml and binary formats.
<tr><th align=left>io_hyp<td>4097
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Import plugin for hyperlynx geometry (no polygons yet).
<tr><th align=left>io_kicad<td>3572
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Load and save the design and footprints in Kicad's s-expression format - this is the new, currently preferred format in Kicad.
<tr><th align=left>io_kicad_legacy<td>901
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Export the design and footprints in Kicad's legacy format.
<tr><th align=left>io_lihata<td>4338
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Load and save the design and footprints in the lihata board format.
<tr><th align=left>io_mentor_cell<td>1875
<td  > WIP
<td bgcolor="red"> disable
<td> io
<td> Load Mentor Graphics cell footprint library and make footprints available (e.g. for fp_board)
<tr><th align=left>io_pcb<td>2948
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Load and save the design and footprints in the original gEDA/PCB text format.
<tr><th align=left>io_tedax<td>2565
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> io
<td> Import and export tEDAx netlists and footprints.
<tr><th align=left>jostle<td>420
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Pushes lines out of the way.
<tr><th align=left>lib_compat_help<td>1254
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> lib
<td> a library of functions providing a simplified API compatibility layer, mainly for I/O plugins
<tr><th align=left>lib_gensexpr<td>13
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> S-expression parser lib
<tr><th align=left>lib_gtk_common<td>5689
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> hid_gtk* common code (regardless of rendering mechanism: for both gdk sw rendering and gl)
<tr><th align=left>lib_hid_common<td>2389
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> hidlib common helper functions for non-PCB GUI
<tr><th align=left>lib_hid_gl<td>1083
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> generic openGL renderer shared among GUI HIDs
<tr><th align=left>lib_hid_pcbui<td>2268
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> PCB related helper functions for GUI HIDs
<tr><th align=left>lib_netmap<td>218
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> create disposable cross-reference maps between all objects and all nets
<tr><th align=left>lib_polyhelp<td>766
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> lib
<td> functions to help plugins processing polygons and PolyHatch() action
<tr><th align=left>lib_vfs<td>458
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> Retrieve, sort and query data under VFS export plugins
<tr><th align=left>lib_wget<td>67
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable-all
<td> lib
<td> retrieve files from the web using wget(1)
<tr><th align=left>loghid<td>295
<td  > WIP
<td bgcolor="red"> disable
<td> feature
<td> Sits between a HID (or exporter) and the core and logs all core->plugin calls made through the HID structure.
<tr><th align=left>millpath<td>491
<td  > WIP
<td bgcolor="red"> disable
<td> feature
<td> Calculate and simulate toolpath for milling away opper
<tr><th align=left>mincut<td>889
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Use the minimal cut algorithm to indicate shorts: instead of highlighting two random pins/pads, try to highlight the least number of objects that connect the two networks.
<tr><th align=left>oldactions<td>289
<td bgcolor="lightgreen" > works
<td bgcolor="red"> disable
<td> feature
<td> Random collection of old/obsolete actions. Bell(): audible feedback, DumpLibrary(): print footprint library on stdout, a set of debug actions useful for writing pcb scripts: Debug(), DebugXY(), Return(). Old plugin actions to toggle or set settings that are now accessible via the unified config system (vendordrill, djopt)
<tr><th align=left>order<td>309
<td  > WIP
<td bgcolor="red"> disable
<td> feature
<td> order boards through the Internet
<tr><th align=left>order_pcbway<td>612
<td  > WIP
<td bgcolor="red"> disable
<td> feature
<td> order from PCBWay through the Internet
<tr><th align=left>polycombine<td>206
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> The selected polygons are combined together according to the ordering of their points.
<tr><th align=left>polystitch<td>95
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> The polygon under the cursor (based on closest-corner) is stitched together with the polygon surrounding it on the same layer. Use with pstoedit conversions where there's a "hole" in the shape - select the hole.
<tr><th align=left>propedit<td>1984
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> List and edit properties of a group of objects.
<tr><th align=left>puller<td>1747
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Pull traces to minimize their length.
<tr><th align=left>query<td>2318
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> pcb-rnd query language: execute expressions on objects and rules for the programmed drc.
<tr><th align=left>renumber<td>321
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Renumber subcircuits (renaming them) and generate a text file for back annotation.
<tr><th align=left>report<td>896
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Report() and ReportObject() actions - print a report about design objects.
<tr><th align=left>rubberband_orig<td>1219
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> The original rubberband code.
<tr><th align=left>script<td>1503
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Load and execute scripts written in any language supported by fungw
<tr><th align=left>serpentine<td>369
<td  > WIP
<td bgcolor="red"> disable-all
<td> feature
<td> Create serpentines on existing lines.
<tr><th align=left>shand_cmd<td>165
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> vi-like command shorthands (1..3 character long commands)
<tr><th align=left>shape<td>860
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Generate objects of regular shape (regular polygons, circle, round rect)
<tr><th align=left>sketch_route<td>2702
<td  > WIP
<td bgcolor="red"> disable
<td> feature
<td> TODO
<tr><th align=left>smartdisperse<td>164
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Improve the initial dispersion of subcircuits by choosing an order based on the netlist, rather than the arbitrary subcircuit order. This isn't the same as a global autoplace, it's more of a linear autoplace. It might make some useful local groupings. For example, you should not have to chase all over the board to find the resistor that goes with a given LED.
<tr><th align=left>stroke<td>290
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Configurable gesture recognition with libstroke.
<tr><th align=left>teardrops<td>215
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Draw teardrops on pins.
<tr><th align=left>tool_std<td>2255
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> The basic set of PCB drawing tools
<tr><th align=left>vendordrill<td>514
<td bgcolor="lightgreen" > works
<td bgcolor="lightgreen"> buildin
<td> feature
<td> Vendor drill mapping.
</table>

<H3> Classes </H3>
<p>
Each plugin implements a class (rarely a set of classes). Classes are:
<table border=1 cellspacing=0>
	<tr><th>name         <th> description
	<tr><td>feature      <td> random features directly accessible for the user, usually actions
	<tr><td>lib          <td> support code library for other plugins (core doesn't depend on these); functionality not directly accessible for the user but other plugins may depend on it
	<tr><td>hid          <td> Human Interface Device: interactive user interface, usually GUI
	<tr><td>import       <td> load alien formats into the design space
	<tr><td>export       <td> save (parts of) the design space in alien formats
	<tr><td>fp           <td> footprint (element) library implementation
	<tr><td>io           <td> native file format (save & load) implementation
</table>

<H3> Status </H3>
<p>
Common status column values mean:
<table border=1 cellspacing=0>
	<tr><th>name         <th> description
	<tr><td>works        <td> production quality code - configures, compiles, tested
	<tr><td>WIP          <td> work in progress: the plugin may be avaialble for testing but is not yet production quality
	<tr><td>abandoned    <td> unmaintained plugin; may be in working condition but there is no developer supporting it
	<tr><td>deprecated   <td> legacy plugin scheduled for removal; may still work but will soon be removed; if your workflow depends on it, please report ASAP
</table>

<H3> Plugin dependency map </H3>
<p>
<img src="deps.svg" alt="pcb-rnd plugin dependency graph">

</body>
</html>