Index: trunk/src/examples/psu.lht =================================================================== --- trunk/src/examples/psu.lht (revision 1353) +++ trunk/src/examples/psu.lht (revision 1354) @@ -5,9 +5,9 @@ ha:group.10 { li:objects { ha:line.11 { x1=2000; y1=1000; x2=8000; y2=1000; pen=sym-decor; } - ha:line.12 { x1=2000; y1=1000; x2=2000; y2=3000; pen=8; } + ha:line.12 { x1=2000; y1=1000; x2=2000; y2=3000; pen=sym-decor; } ha:line.13 { x1=2000; y1=3000; x2=8000; y2=3000; pen=sym-decor; } - ha:line.14 { x1=8000; y1=1000; x2=8000; y2=3000; pen=8; } + ha:line.14 { x1=8000; y1=1000; x2=8000; y2=3000; pen=sym-decor; } ha:group.20 { li:objects { ha:line.1 { x1=0000; y1=2000; x2=2000; y2=2000; pen=terminal; } @@ -19,7 +19,7 @@ } ha:group.21 { li:objects { - ha:line.1 { x1=8000; y1=2000; x2=10000; y2=2000; pen=5; } + ha:line.1 { x1=8000; y1=2000; x2=10000; y2=2000; pen=terminal; } } ha:attrib { name=2 Index: trunk/src/libcschem/cnc_pen.c =================================================================== --- trunk/src/libcschem/cnc_pen.c (revision 1353) +++ trunk/src/libcschem/cnc_pen.c (revision 1354) @@ -86,7 +86,7 @@ if (sheet != NULL) { for(e = htip_first(&pen->hdr.parent->id2obj); e; e = htip_next(&pen->hdr.parent->id2obj, e)) { csch_chdr_t *hdr = e->value; - if ((hdr->pen_oid == pen->hdr.oid) || (hdr->pen == pen)) + if ((strcmp(hdr->pen_name.str, pen->name) == 0) || (hdr->pen == pen)) hdr->pen = NULL; } } @@ -110,17 +110,14 @@ } -csch_cpen_t *csch_pen_get_oid(csch_sheet_t *sheet, csch_cgrp_t *grp, csch_oid_t oid) +csch_cpen_t *csch_pen_get(csch_sheet_t *sheet, csch_cgrp_t *grp, const char *name) { - csch_cpen_t *pen = htip_get(&grp->id2obj, oid); - if ((pen != NULL) && (pen->hdr.type != CSCH_CTYPE_PEN)) + csch_cpen_t *pen; + + if (name == NULL) return NULL; - return pen; -} -csch_cpen_t *csch_pen_get_name(csch_sheet_t *sheet, csch_cgrp_t *grp, const char *name) -{ - csch_cpen_t *pen = htsp_get(&grp->name2pen, name); + pen = htsp_get(&grp->name2pen, name); if ((pen != NULL) && (pen->hdr.type != CSCH_CTYPE_PEN)) return NULL; return pen; Index: trunk/src/libcschem/cnc_pen.h =================================================================== --- trunk/src/libcschem/cnc_pen.h (revision 1353) +++ trunk/src/libcschem/cnc_pen.h (revision 1354) @@ -72,8 +72,7 @@ csch_cpen_t *csch_pen_alloc(csch_sheet_t *sheet, csch_cgrp_t *parent, csch_oid_t oid, const char *name); csch_cpen_t *csch_pen_dup(csch_sheet_t *sheet, csch_cgrp_t *parent, const csch_cpen_t *src); void csch_pen_free(csch_cpen_t *pen); -csch_cpen_t *csch_pen_get_oid(csch_sheet_t *sheet, csch_cgrp_t *grp, csch_oid_t oid); -csch_cpen_t *csch_pen_get_name(csch_sheet_t *sheet, csch_cgrp_t *grp, const char *name); +csch_cpen_t *csch_pen_get(csch_sheet_t *sheet, csch_cgrp_t *grp, const char *name); extern csch_cpen_t csch_pen_default_unknown; @@ -83,10 +82,7 @@ if (hdr->pen == NULL) { csch_cgrp_t *grp = hdr->parent; while((hdr->pen == NULL) && (grp != NULL) && ((grp->hdr.type == CSCH_CTYPE_GRP) || (grp->hdr.type == CSCH_CTYPE_GRP_REF))) { - if (hdr->pen_name.str != NULL) - hdr->pen = csch_pen_get_name(hdr->sheet, grp, hdr->pen_name.str); - else - hdr->pen = csch_pen_get_oid(hdr->sheet, grp, hdr->pen_oid); + hdr->pen = csch_pen_get(hdr->sheet, grp, hdr->pen_name.str); grp = grp->hdr.parent; } } Index: trunk/src/libcschem/concrete.c =================================================================== --- trunk/src/libcschem/concrete.c (revision 1353) +++ trunk/src/libcschem/concrete.c (revision 1354) @@ -115,7 +115,6 @@ void csch_chdr_copy_meta4dup(csch_chdr_t *dst, const csch_chdr_t *src) { - dst->pen_oid = src->pen_oid; dst->pen_name = src->pen_name; dst->dsply = src->dsply; } Index: trunk/src/libcschem/concrete.h =================================================================== --- trunk/src/libcschem/concrete.h (revision 1353) +++ trunk/src/libcschem/concrete.h (revision 1354) @@ -97,8 +97,7 @@ csch_ctype_t type; csch_cgrp_t *parent; htsp_t attr; - csch_comm_str_t pen_name; /* used to resolve pen if not NULL */ - csch_oid_t pen_oid; /* used to resolve pen if pen_name is NULL */ + csch_comm_str_t pen_name; /* used to resolve pen */ gdl_elem_t link; /* sheet's active or removed list */ /*** cached ***/ Index: trunk/src/libcschem/util_wirenet.c =================================================================== --- trunk/src/libcschem/util_wirenet.c (revision 1353) +++ trunk/src/libcschem/util_wirenet.c (revision 1354) @@ -143,7 +143,7 @@ csch_op_remove(sheet, (csch_chdr_t *)grp); } -csch_chdr_t *csch_wirenet_draw(csch_sheet_t *sheet, csch_comm_str_t pen_name, csch_oid_t pen_oid, csch_coord_t x1, csch_coord_t y1, csch_coord_t x2, csch_coord_t y2) +csch_chdr_t *csch_wirenet_draw(csch_sheet_t *sheet, csch_comm_str_t pen_name, csch_coord_t x1, csch_coord_t y1, csch_coord_t x2, csch_coord_t y2) { csch_line_t *w1, *w2, *line; csch_cgrp_t *g1 = NULL, *g2 = NULL, *parent; @@ -196,7 +196,6 @@ line->spec.p1.x = x1; line->spec.p1.y = y1; line->spec.p2.x = x2; line->spec.p2.y = y2; line->hdr.pen_name = pen_name; - line->hdr.pen_oid = pen_oid; csch_line_update(sheet, line, 1); csch_cgrp_bbox_update(sheet, parent); @@ -203,7 +202,7 @@ if (need_update) { TODO("probably pass this as arg too"); csch_comm_str_t junction_pen = {0}; - csch_wirenet_recalc_junctions(sheet, parent, junction_pen, CSCH_PEN_JUNCTION); + csch_wirenet_recalc_junctions(sheet, parent, junction_pen); } remove_grp_if_empty(sheet, g1); @@ -222,7 +221,7 @@ return rnd_istrue(j); } -void csch_wirenet_recalc_junctions(csch_sheet_t *sheet, csch_cgrp_t *wirenet, csch_comm_str_t pen_name, csch_oid_t pen_oid) +void csch_wirenet_recalc_junctions(csch_sheet_t *sheet, csch_cgrp_t *wirenet, csch_comm_str_t pen_name) { htip_entry_t *e; htPo_t jl; /* junction list */ @@ -273,7 +272,6 @@ line->spec.p1.x = line->spec.p2.x = je->key.x; line->spec.p1.y = line->spec.p2.y = je->key.y; line->hdr.pen_name = pen_name; - line->hdr.pen_oid = pen_oid; csch_line_update(sheet, line, 1); csch_cgrp_bbox_update(sheet, wirenet); } Index: trunk/src/libcschem/util_wirenet.h =================================================================== --- trunk/src/libcschem/util_wirenet.h (revision 1353) +++ trunk/src/libcschem/util_wirenet.h (revision 1354) @@ -13,11 +13,11 @@ Returns the new line object. */ -csch_chdr_t *csch_wirenet_draw(csch_sheet_t *sheet, csch_comm_str_t pen_name, csch_oid_t pen_oid, csch_coord_t x1, csch_coord_t y1, csch_coord_t x2, csch_coord_t y2); +csch_chdr_t *csch_wirenet_draw(csch_sheet_t *sheet, csch_comm_str_t pen_name, csch_coord_t x1, csch_coord_t y1, csch_coord_t x2, csch_coord_t y2); /* Recalculate all junction marks on a wirenet, removing stale ones and adding new ines where multiple lines are crossing */ -void csch_wirenet_recalc_junctions(csch_sheet_t *sheet, csch_cgrp_t *wirenet, csch_comm_str_t pen_name, csch_oid_t pen_oid); +void csch_wirenet_recalc_junctions(csch_sheet_t *sheet, csch_cgrp_t *wirenet, csch_comm_str_t pen_name); #endif \ No newline at end of file Index: trunk/src/plugins/io_lihata/read.c =================================================================== --- trunk/src/plugins/io_lihata/read.c (revision 1353) +++ trunk/src/plugins/io_lihata/read.c (revision 1354) @@ -380,11 +380,6 @@ static int parse_pen_ref(read_ctx_t *ctx, csch_chdr_t *obj, lht_node_t *subtree) { const lht_node_t *pn = lht_dom_hash_get(subtree, "pen"); - - /* first try if it is an oid - integers are treated as oid, not name */ - if (parse_oid(ctx, &obj->pen_oid, pn, 1) == 0) - return 0; - obj->pen_name = csch_comm_str(ctx->sheet, pn->data.text.value, 1); return 0; } Index: trunk/src/plugins/io_lihata/write.c =================================================================== --- trunk/src/plugins/io_lihata/write.c (revision 1353) +++ trunk/src/plugins/io_lihata/write.c (revision 1354) @@ -120,23 +120,12 @@ return 0; } -static const char *pen_str(const csch_chdr_t *obj) -{ - static char tmp[32]; - - if (obj->pen_name.str != NULL) - return obj->pen_name.str; - - sprintf(tmp, "%d", obj->pen_oid); - return tmp; -} - static int lht_print_line(write_ctx_t *ctx, int indlev, char *parind, const csch_line_t *line) { fprintf(ctx->f, " x1=%ld; y1=%ld; x2=%ld; y2=%ld; pen=%s; }\n", line->spec.p1.x, line->spec.p1.y, line->spec.p2.x, line->spec.p2.y, - pen_str(&line->hdr)); + line->hdr.pen_name.str); return 0; } @@ -143,10 +132,10 @@ static int lht_print_arc(write_ctx_t *ctx, int indlev, char *parind, const csch_arc_t *arc) { TODO("save start and end"); - fprintf(ctx->f, " cx=%ld; cy=%ld; r=%ld; sang=%f; dang=%f; pen=%d; }\n", + fprintf(ctx->f, " cx=%ld; cy=%ld; r=%ld; sang=%f; dang=%f; pen=%s; }\n", arc->spec.c.x, arc->spec.c.y, arc->spec.r, arc->spec.start, arc->spec.delta, - arc->hdr.pen_oid); + arc->hdr.pen_name.str); return 0; } Index: trunk/src/plugins/std_tools/line_common.c =================================================================== --- trunk/src/plugins/std_tools/line_common.c (revision 1353) +++ trunk/src/plugins/std_tools/line_common.c (revision 1354) @@ -205,12 +205,11 @@ line->spec.p2.x = x2; line->spec.p2.y = y2; TODO("refine pen passing"); - line->hdr.pen_name = csch_comm_str(sheet, csch_tool_line.pen->name, 0); - line->hdr.pen_oid = csch_tool_line.pen->hdr.oid; + line->hdr.pen_name = csch_comm_str(sheet, csch_tool_line.pen->name, 1); csch_line_update(sheet, line, 1); } else { - csch_wirenet_draw(sheet, csch_comm_str(sheet, csch_tool_line.pen->name, 0), csch_tool_line.pen->hdr.oid, x1, y1, x2, y2); + csch_wirenet_draw(sheet, csch_comm_str(sheet, csch_tool_line.pen->name, 1), x1, y1, x2, y2); } } } Index: trunk/src/plugins/std_tools/tool_circle.c =================================================================== --- trunk/src/plugins/std_tools/tool_circle.c (revision 1353) +++ trunk/src/plugins/std_tools/tool_circle.c (revision 1354) @@ -64,8 +64,7 @@ if (csch_tool_circle.pen == NULL) csch_tool_circle.pen = CSCH_DIRECT_PEN(sheet, tool_circle); - arc->hdr.pen_name = csch_comm_str(sheet, csch_tool_circle.pen->name, 0); - arc->hdr.pen_oid = csch_tool_circle.pen->hdr.oid; + arc->hdr.pen_name = csch_comm_str(sheet, csch_tool_circle.pen->name, 1); csch_arc_update(sheet, arc, 1); csch_tool_circle.clicked = 0; Index: trunk/src/plugins/std_tools/tool_rect.c =================================================================== --- trunk/src/plugins/std_tools/tool_rect.c (revision 1353) +++ trunk/src/plugins/std_tools/tool_rect.c (revision 1354) @@ -55,8 +55,7 @@ line->spec.p2.x = x2; line->spec.p2.y = y2; TODO("refine pen passing"); - line->hdr.pen_name = csch_comm_str(sheet, pen->name, 0); - line->hdr.pen_oid = pen->hdr.oid; + line->hdr.pen_name = csch_comm_str(sheet, pen->name, 1); csch_line_update(sheet, line, 1); } Index: trunk/src/sch-rnd/sch-rnd-conf.lht =================================================================== --- trunk/src/sch-rnd/sch-rnd-conf.lht (revision 1353) +++ trunk/src/sch-rnd/sch-rnd-conf.lht (revision 1354) @@ -9,10 +9,10 @@ line_refraction=0 line_cont=1 ha:style { - li:tool_circle { sheet-decor; decor; 1; } - li:tool_rect { sheet-decor; decor; 1; } - li:tool_line { sheet-decor; decor; 1; } - li:tool_wire { wire; 3; } + li:tool_circle { sheet-decor; decor;} + li:tool_rect { sheet-decor; decor;} + li:tool_line { sheet-decor; decor;} + li:tool_wire { wire; } } ha:selection { disable_negative = 0 Index: trunk/src/sch-rnd/style.c =================================================================== --- trunk/src/sch-rnd/style.c (revision 1353) +++ trunk/src/sch-rnd/style.c (revision 1354) @@ -39,21 +39,11 @@ for(ci = rnd_conflist_first((rnd_conflist_t *)lst); ci != NULL; ci = rnd_conflist_next(ci)) { const char *pn = ci->val.string[0]; - - if ((pn == NULL) || (pn[0] == '\0')) continue; - - if (isdigit(pn[0])) { - char *end; - long oid = strtol(pn, &end, 10); - pen = csch_pen_get_oid(sheet, grp, oid); + if ((pn != NULL) && (*pn != '\0')) { + pen = csch_pen_get(sheet, grp, pn); if (pen != NULL) return pen; } - else { - pen = csch_pen_get_name(sheet, grp, pn); - if (pen != NULL) - return pen; - } } return &csch_pen_default_unknown;