diff --git a/sch2fig/fig.c b/sch2fig/fig.c index 92c76dd..d0434f4 100644 --- a/sch2fig/fig.c +++ b/sch2fig/fig.c @@ -45,6 +45,9 @@ static inline float pt(int x) } +/* ----- Library items ----------------------------------------------------- */ + + void fig_rect(int sx, int sy, int ex, int ey) { // Type Thick Depth StyleV Rad @@ -76,7 +79,8 @@ void fig_poly(int points, int x[points], int y[points]) } -#define OFF 20 +/* ----- Schematics items -------------------------------------------------- */ + void fig_glabel(int x, int y, const char *s, int dir, int dim, enum fig_shape shape) @@ -93,7 +97,7 @@ void fig_glabel(int x, int y, const char *s, int dir, int dim, int n = 6; int vx[5]; int vy[5]; - int half = (dim >> 1) + OFF; + int half = (dim >> 1) + GLABEL_OFFSET; switch (dir) { case 0: @@ -106,21 +110,29 @@ void fig_glabel(int x, int y, const char *s, int dir, int dim, switch (shape) { case fig_in: - text_shift(&txt, txt.hor, text_mid, -OFF - half, 0); - text_rel(&txt, text_min, text_min, -OFF, OFF, vx + 1, vy + 1); - text_rel(&txt, text_max, text_min, OFF, OFF, vx + 2, vy + 2); - text_rel(&txt, text_max, text_mid, OFF + half, 0, + text_shift(&txt, txt.hor, text_mid, -GLABEL_OFFSET - half, 0); + text_rel(&txt, text_min, text_min, + -GLABEL_OFFSET, GLABEL_OFFSET, vx + 1, vy + 1); + text_rel(&txt, text_max, text_min, + GLABEL_OFFSET, GLABEL_OFFSET, vx + 2, vy + 2); + text_rel(&txt, text_max, text_mid, GLABEL_OFFSET + half, 0, vx + 3, vy + 3); - text_rel(&txt, text_max, text_max, OFF, -OFF, vx + 4, vy + 4); - text_rel(&txt, text_min, text_max, -OFF, -OFF, vx + 5, vy + 5); + text_rel(&txt, text_max, text_max, + GLABEL_OFFSET, -GLABEL_OFFSET, vx + 4, vy + 4); + text_rel(&txt, text_min, text_max, + -GLABEL_OFFSET, -GLABEL_OFFSET, vx + 5, vy + 5); break; case fig_out: - text_shift(&txt, txt.hor, text_mid, -OFF, 0); - text_rel(&txt, text_min, text_min, -OFF, OFF, vx + 1, vy + 1); - text_rel(&txt, text_max, text_min, OFF, OFF, vx + 2, vy + 2); - text_rel(&txt, text_max, text_max, OFF, -OFF, vx + 3, vy + 3); - text_rel(&txt, text_min, text_max, -OFF, -OFF, vx + 4, vy + 4); - text_rel(&txt, text_min, text_mid, -OFF - half, 0, + text_shift(&txt, txt.hor, text_mid, -GLABEL_OFFSET, 0); + text_rel(&txt, text_min, text_min, + -GLABEL_OFFSET, GLABEL_OFFSET, vx + 1, vy + 1); + text_rel(&txt, text_max, text_min, + GLABEL_OFFSET, GLABEL_OFFSET, vx + 2, vy + 2); + text_rel(&txt, text_max, text_max, + GLABEL_OFFSET, -GLABEL_OFFSET, vx + 3, vy + 3); + text_rel(&txt, text_min, text_max, + -GLABEL_OFFSET, -GLABEL_OFFSET, vx + 4, vy + 4); + text_rel(&txt, text_min, text_mid, -GLABEL_OFFSET- half, 0, vx + 5, vy + 5); break; default: @@ -168,6 +180,9 @@ void fig_line(int sx, int sy, int ex, int ey) } +/* ----- General items ----------------------------------------------------- */ + + void fig_text(int x, int y, const char *s, unsigned size, enum text_align align, int rot, unsigned color, unsigned layer) { @@ -180,6 +195,9 @@ void fig_text(int x, int y, const char *s, unsigned size, } +/* ----- FIG file header --------------------------------------------------- */ + + void fig_init(void) { printf("#FIG 3.2\n"); diff --git a/sch2fig/lib.c b/sch2fig/lib.c index 5a764df..f62cf36 100644 --- a/sch2fig/lib.c +++ b/sch2fig/lib.c @@ -91,6 +91,9 @@ struct comp { }; +/* ----- Drawing ----------------------------------------------------------- */ + + static struct comp *comps = NULL; static struct comp **next_comp = &comps; static struct obj **next_obj; @@ -206,6 +209,9 @@ found: } +/* ----- Text -------------------------------------------------------------- */ + + static enum text_style decode_style(const char *s) { if (!strcmp(s, "Normal")) @@ -214,6 +220,9 @@ static enum text_style decode_style(const char *s) } +/* ----- Polygons ---------------------------------------------------------- */ + + static bool parse_poly(struct obj *obj, const char *line, int points) { int i, n; @@ -233,6 +242,9 @@ static bool parse_poly(struct obj *obj, const char *line, int points) } +/* ----- Library parser ---------------------------------------------------- */ + + bool lib_parse(struct lib_ctx *ctx, const char *line) { int n = 0; diff --git a/sch2fig/sch.c b/sch2fig/sch.c index 7813bf4..383ecb9 100644 --- a/sch2fig/sch.c +++ b/sch2fig/sch.c @@ -25,6 +25,9 @@ #include "sch.h" +/* ----- (Global) Labels --------------------------------------------------- */ + + static enum fig_shape do_decode_shape(const char *s) { if (!strcmp(s, "UnSpc")) @@ -50,6 +53,9 @@ static enum fig_shape decode_shape(const char *s) } +/* ----- Text -------------------------------------------------------------- */ + + static void draw_text(int x, int y, const char *s, int dir, int dim, enum fig_shape shape) { @@ -57,6 +63,9 @@ static void draw_text(int x, int y, const char *s, int dir, int dim, } +/* ----- Component fields -------------------------------------------------- */ + + struct sch_field { struct text txt; struct sch_field *next; @@ -179,6 +188,9 @@ static void dump_fields(struct sch_field *fields, int m[6]) } +/* ----- Schematics parser ------------------------------------------------- */ + + bool sch_parse(struct sch_ctx *ctx, const char *line) { int n = 0; diff --git a/sch2fig/style.h b/sch2fig/style.h index fd5327a..de56bc7 100644 --- a/sch2fig/style.h +++ b/sch2fig/style.h @@ -42,4 +42,6 @@ #define JUNCTION_R 40 +#define GLABEL_OFFSET 20 + #endif /* !STYLE_H */