mirror of
git://projects.qi-hardware.com/fped.git
synced 2024-11-22 08:09:42 +02:00
Added a new pad type: trace pads, for antennas and other trace-like elements.
- layer.h (enum pad_type): added pad type pt_trace - layer.c (pad_type_to_layers, layers_to_pad_type), inst.c (inst_pad): "trace" pad instantition and conversion infrastructure - fpd.y (pad_type), dump.c (print_obj): .fpd file I/O for "trace" pads - postscript.c (prologue): added Postscript function "horpath" to produce horizontal stripes - postscript.c (hatch): show "trace" pads with horizontal stripes - gui_style.h (gc_pad_trace), gui_style.c (gc_pad_trace, gui_setup_style), gui_inst.c (pad_gc): added visualization of "trace" pads - gui_status.c (show_pad_type): added "trace" pad type - README: added description of "trace" pads - README: added usage examples for the various pad types git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5998 99fdad57-331a-0410-800a-d7fa5415bdb3
This commit is contained in:
parent
0bfba12f3c
commit
49a1bbdd05
8
README
8
README
@ -270,9 +270,17 @@ Type Layers
|
|||||||
--------- -------------------------------------
|
--------- -------------------------------------
|
||||||
(default) copper, solder mask, and solder paste
|
(default) copper, solder mask, and solder paste
|
||||||
bare copper and solder mask
|
bare copper and solder mask
|
||||||
|
trace copper without solder mask opening
|
||||||
paste solder paste
|
paste solder paste
|
||||||
mask solder mask
|
mask solder mask
|
||||||
|
|
||||||
|
Typical uses:
|
||||||
|
- "bare": connectors printed directly on the PCB
|
||||||
|
- "trace": connections or antennas
|
||||||
|
- "paste": sparse solder paste, e.g., for QFN center pads
|
||||||
|
- "mask": non-standard mask openings, e.g., for solder mask defined
|
||||||
|
pads
|
||||||
|
|
||||||
|
|
||||||
Rounded pads
|
Rounded pads
|
||||||
- - - - - -
|
- - - - - -
|
||||||
|
7
dump.c
7
dump.c
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* dump.c - Dump objects in the native FPD format
|
* dump.c - Dump objects in the native FPD format
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -345,6 +345,9 @@ char *print_obj(const struct obj *obj, const struct vec *prev)
|
|||||||
case pt_bare:
|
case pt_bare:
|
||||||
s2 = " bare";
|
s2 = " bare";
|
||||||
break;
|
break;
|
||||||
|
case pt_trace:
|
||||||
|
s2 = " trace";
|
||||||
|
break;
|
||||||
case pt_paste:
|
case pt_paste:
|
||||||
s2 = " paste";
|
s2 = " paste";
|
||||||
break;
|
break;
|
||||||
|
6
fpd.y
6
fpd.y
@ -2,8 +2,8 @@
|
|||||||
/*
|
/*
|
||||||
* fpd.y - FootPrint Definition language
|
* fpd.y - FootPrint Definition language
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -986,6 +986,8 @@ pad_type:
|
|||||||
{
|
{
|
||||||
if (!strcmp($1, "bare"))
|
if (!strcmp($1, "bare"))
|
||||||
$$ = pt_bare;
|
$$ = pt_bare;
|
||||||
|
else if (!strcmp($1, "trace"))
|
||||||
|
$$ = pt_trace;
|
||||||
else if (!strcmp($1, "paste"))
|
else if (!strcmp($1, "paste"))
|
||||||
$$ = pt_paste;
|
$$ = pt_paste;
|
||||||
else if (!strcmp($1, "mask"))
|
else if (!strcmp($1, "mask"))
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* gui_inst.c - GUI, instance functions
|
* gui_inst.c - GUI, instance functions
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -319,6 +319,8 @@ static GdkGC *pad_gc(const struct inst *inst, int *fill)
|
|||||||
switch (layers_to_pad_type(inst->u.pad.layers)) {
|
switch (layers_to_pad_type(inst->u.pad.layers)) {
|
||||||
case pt_bare:
|
case pt_bare:
|
||||||
return gc_pad_bare[get_mode(inst)];
|
return gc_pad_bare[get_mode(inst)];
|
||||||
|
case pt_trace:
|
||||||
|
return gc_pad_trace[get_mode(inst)];
|
||||||
case pt_mask:
|
case pt_mask:
|
||||||
*fill = FALSE;
|
*fill = FALSE;
|
||||||
return gc_pad_mask[get_mode(inst)];
|
return gc_pad_mask[get_mode(inst)];
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* gui_status.c - GUI, status area
|
* gui_status.c - GUI, status area
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -204,6 +204,9 @@ static void show_pad_type(void)
|
|||||||
case pt_bare:
|
case pt_bare:
|
||||||
s = "bare";
|
s = "bare";
|
||||||
break;
|
break;
|
||||||
|
case pt_trace:
|
||||||
|
s = "trace";
|
||||||
|
break;
|
||||||
case pt_paste:
|
case pt_paste:
|
||||||
s = "paste";
|
s = "paste";
|
||||||
break;
|
break;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/* * gui_style.c - GUI, style definitions
|
/*
|
||||||
|
* gui_style.c - GUI, style definitions
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -26,6 +27,7 @@ GdkGC *gc_vec[mode_n];
|
|||||||
GdkGC *gc_obj[mode_n];
|
GdkGC *gc_obj[mode_n];
|
||||||
GdkGC *gc_pad[mode_n];
|
GdkGC *gc_pad[mode_n];
|
||||||
GdkGC *gc_pad_bare[mode_n];
|
GdkGC *gc_pad_bare[mode_n];
|
||||||
|
GdkGC *gc_pad_trace[mode_n];
|
||||||
GdkGC *gc_pad_mask[mode_n];
|
GdkGC *gc_pad_mask[mode_n];
|
||||||
GdkGC *gc_ptext[mode_n];
|
GdkGC *gc_ptext[mode_n];
|
||||||
GdkGC *gc_rim[mode_n];
|
GdkGC *gc_rim[mode_n];
|
||||||
@ -68,6 +70,7 @@ void gui_setup_style(GdkDrawable *drawable)
|
|||||||
style(gc_obj, "#006060", "#00ffff", "#ffff80", 1);
|
style(gc_obj, "#006060", "#00ffff", "#ffff80", 1);
|
||||||
style(gc_pad, "#400000", "#ff0000", "#ffff80", 1);
|
style(gc_pad, "#400000", "#ff0000", "#ffff80", 1);
|
||||||
style(gc_pad_bare, "#402000", "#ff6000", "#ffff80", 1);
|
style(gc_pad_bare, "#402000", "#ff6000", "#ffff80", 1);
|
||||||
|
style(gc_pad_trace, "#304000", "#80c000", "#ffff80", 1);
|
||||||
style(gc_pad_mask, "#000040", "#0000ff", "#ffff80", 2);
|
style(gc_pad_mask, "#000040", "#0000ff", "#ffff80", 2);
|
||||||
style(gc_ptext, "#404040", "#ffffff", "#ffffff", 1);
|
style(gc_ptext, "#404040", "#ffffff", "#ffffff", 1);
|
||||||
style(gc_hole, "#000000", "#000000", "#000000", 0);
|
style(gc_hole, "#000000", "#000000", "#000000", 0);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* gui_style.h - GUI, style definitions
|
* gui_style.h - GUI, style definitions
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -114,6 +114,7 @@ extern GdkGC *gc_vec[mode_n];
|
|||||||
extern GdkGC *gc_obj[mode_n];
|
extern GdkGC *gc_obj[mode_n];
|
||||||
extern GdkGC *gc_pad[mode_n];
|
extern GdkGC *gc_pad[mode_n];
|
||||||
extern GdkGC *gc_pad_bare[mode_n];
|
extern GdkGC *gc_pad_bare[mode_n];
|
||||||
|
extern GdkGC *gc_pad_trace[mode_n];
|
||||||
extern GdkGC *gc_pad_mask[mode_n];
|
extern GdkGC *gc_pad_mask[mode_n];
|
||||||
extern GdkGC *gc_ptext[mode_n];
|
extern GdkGC *gc_ptext[mode_n];
|
||||||
extern GdkGC *gc_rim[mode_n];
|
extern GdkGC *gc_rim[mode_n];
|
||||||
|
7
inst.c
7
inst.c
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* inst.c - Instance structures
|
* inst.c - Instance structures
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -896,7 +896,8 @@ int inst_pad(struct obj *obj, const char *name, struct coord a, struct coord b)
|
|||||||
struct inst *inst;
|
struct inst *inst;
|
||||||
|
|
||||||
inst = add_inst(obj->u.pad.rounded ? &rpad_ops : &pad_ops,
|
inst = add_inst(obj->u.pad.rounded ? &rpad_ops : &pad_ops,
|
||||||
obj->u.pad.type == pt_normal || obj->u.pad.type == pt_bare ?
|
obj->u.pad.type == pt_normal || obj->u.pad.type == pt_bare ||
|
||||||
|
obj->u.pad.type == pt_trace ?
|
||||||
ip_pad_copper : ip_pad_special, a);
|
ip_pad_copper : ip_pad_special, a);
|
||||||
inst->obj = obj;
|
inst->obj = obj;
|
||||||
inst->u.pad.name = stralloc(name);
|
inst->u.pad.name = stralloc(name);
|
||||||
|
9
layer.c
9
layer.c
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* layer.c - PCB layers on a pad
|
* layer.c - PCB layers on a pad
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -52,6 +52,9 @@ layer_type pad_type_to_layers(enum pad_type type)
|
|||||||
case pt_bare:
|
case pt_bare:
|
||||||
layers |= LAYER_COPPER_TOP | LAYER_MASK_TOP;
|
layers |= LAYER_COPPER_TOP | LAYER_MASK_TOP;
|
||||||
break;
|
break;
|
||||||
|
case pt_trace:
|
||||||
|
layers |= LAYER_COPPER_TOP;
|
||||||
|
break;
|
||||||
case pt_paste:
|
case pt_paste:
|
||||||
layers = LAYER_PASTE_TOP;
|
layers = LAYER_PASTE_TOP;
|
||||||
break;
|
break;
|
||||||
@ -70,7 +73,9 @@ enum pad_type layers_to_pad_type(layer_type layers)
|
|||||||
if (layers & LAYER_COPPER_TOP) {
|
if (layers & LAYER_COPPER_TOP) {
|
||||||
if (layers & LAYER_PASTE_TOP)
|
if (layers & LAYER_PASTE_TOP)
|
||||||
return pt_normal;
|
return pt_normal;
|
||||||
|
if (layers & LAYER_MASK_TOP)
|
||||||
return pt_bare;
|
return pt_bare;
|
||||||
|
return pt_trace;
|
||||||
} else {
|
} else {
|
||||||
if (layers & LAYER_PASTE_TOP)
|
if (layers & LAYER_PASTE_TOP)
|
||||||
return pt_paste;
|
return pt_paste;
|
||||||
|
5
layer.h
5
layer.h
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* layer.h - PCB layers on a pad
|
* layer.h - PCB layers on a pad
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -57,6 +57,7 @@ enum kicad_layer {
|
|||||||
enum pad_type {
|
enum pad_type {
|
||||||
pt_normal, /* copper and solder mask */
|
pt_normal, /* copper and solder mask */
|
||||||
pt_bare, /* only copper (and finish) */
|
pt_bare, /* only copper (and finish) */
|
||||||
|
pt_trace, /* only copper, without solder mask opening */
|
||||||
pt_paste, /* only solder paste */
|
pt_paste, /* only solder paste */
|
||||||
pt_mask, /* only solder mask */
|
pt_mask, /* only solder mask */
|
||||||
pt_n
|
pt_n
|
||||||
|
20
postscript.c
20
postscript.c
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* postscript.c - Dump objects in Postscript
|
* postscript.c - Dump objects in Postscript
|
||||||
*
|
*
|
||||||
* Written 2009, 2010 by Werner Almesberger
|
* Written 2009-2011 by Werner Almesberger
|
||||||
* Copyright 2009, 2010 by Werner Almesberger
|
* Copyright 2009-2011 by Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -64,6 +64,8 @@
|
|||||||
#define PS_HATCH mm_to_units(0.1)
|
#define PS_HATCH mm_to_units(0.1)
|
||||||
#define PS_HATCH_LINE mm_to_units(0.015)
|
#define PS_HATCH_LINE mm_to_units(0.015)
|
||||||
|
|
||||||
|
#define PS_STRIPE mm_to_units(0.08)
|
||||||
|
|
||||||
#define PS_RIM_LINE mm_to_units(0.02)
|
#define PS_RIM_LINE mm_to_units(0.02)
|
||||||
|
|
||||||
#define PS_FONT_OUTLINE mm_to_units(0.025)
|
#define PS_FONT_OUTLINE mm_to_units(0.025)
|
||||||
@ -223,6 +225,8 @@ static const char *hatch(layer_type layers)
|
|||||||
return "backhatchpath";
|
return "backhatchpath";
|
||||||
case pt_mask:
|
case pt_mask:
|
||||||
return "dotpath";
|
return "dotpath";
|
||||||
|
case pt_trace:
|
||||||
|
return "horpath";
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
@ -940,7 +944,7 @@ static void prologue(FILE *file, int pages)
|
|||||||
"/backhatchpath {\n"
|
"/backhatchpath {\n"
|
||||||
" gsave flattenpath pathbbox clip newpath\n"
|
" gsave flattenpath pathbbox clip newpath\n"
|
||||||
" /ury exch def /urx exch def /lly exch def /llx exch def\n"
|
" /ury exch def /urx exch def /lly exch def /llx exch def\n"
|
||||||
" 0 %d ury lly sub urx llx sub add {\n" /* for 0 to urx-llx_ury-lly */
|
" 0 %d ury lly sub urx llx sub add {\n" /* for 0 to urx-llx+ury-lly */
|
||||||
" llx add dup lly moveto\n"
|
" llx add dup lly moveto\n"
|
||||||
" ury lly sub sub ury lineto stroke\n"
|
" ury lly sub sub ury lineto stroke\n"
|
||||||
" } for\n"
|
" } for\n"
|
||||||
@ -950,6 +954,16 @@ fprintf(file,
|
|||||||
"/crosspath {\n"
|
"/crosspath {\n"
|
||||||
" gsave hatchpath grestore backhatchpath } def\n");
|
" gsave hatchpath grestore backhatchpath } def\n");
|
||||||
|
|
||||||
|
fprintf(file,
|
||||||
|
"/horpath {\n"
|
||||||
|
" gsave flattenpath pathbbox clip newpath\n"
|
||||||
|
" /ury exch def /urx exch def /lly exch def /llx exch def\n"
|
||||||
|
" lly %d ury {\n" /* for lly to ury */
|
||||||
|
" dup llx exch moveto\n"
|
||||||
|
" urx exch lineto stroke\n"
|
||||||
|
" } for\n"
|
||||||
|
" grestore newpath } def\n", PS_STRIPE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stack: font string width height factor -> factor
|
* Stack: font string width height factor -> factor
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user