From 8c55f3a99e98e2addfd7474ed0bc90101420f92e Mon Sep 17 00:00:00 2001
From: stefan schippers
+ If hide=instance is given the text will be invisible in placed instances of the
+ symbol, but visible when descending into the symbol.
diff --git a/doc/xschem_man/xschem_elements.html b/doc/xschem_man/xschem_elements.html
index 1b027ff4..82e1444e 100644
--- a/doc/xschem_man/xschem_elements.html
+++ b/doc/xschem_man/xschem_elements.html
@@ -100,7 +100,9 @@ p{padding: 15px 30px 10px;}
slant=oblique may specify italic or slanted text.
A hide=true will make the specified text invisible unless the View->Show hidden texts
option is enabled.
-
You wil learn in the xschem properties chapter diff --git a/src/actions.c b/src/actions.c index 7f6e0746..5bb2e790 100644 --- a/src/actions.c +++ b/src/actions.c @@ -874,7 +874,10 @@ int set_text_flags(xText *t) str = get_tok_value(t->prop_ptr, "weight", 0); t->flags |= strcmp(str, "bold") ? 0 : TEXT_BOLD; str = get_tok_value(t->prop_ptr, "hide", 0); - t->flags |= strboolcmp(str, "true") ? 0 : HIDE_TEXT; + if(!strcmp(str, "instance")) t->flags |= HIDE_TEXT_INSTANTIATED; + else { + t->flags |= strboolcmp(str, "true") ? 0 : HIDE_TEXT; + } str = get_tok_value(t->prop_ptr, "name", 0); if(!xctx->tok_size) str = get_tok_value(t->prop_ptr, "floater", 0); t->flags |= xctx->tok_size ? TEXT_FLOATER : 0; diff --git a/src/draw.c b/src/draw.c index 7338e8c8..28c69d08 100644 --- a/src/draw.c +++ b/src/draw.c @@ -679,7 +679,7 @@ void draw_symbol(int what,int c, int n,int layer,short tmp_flip, short rot, get_sym_text_size(n, j, &xscale, &yscale); text = symptr->text[j]; if(!text.txt_ptr || !text.txt_ptr[0] || xscale*FONTWIDTH*xctx->mooz<1) continue; - if(!xctx->show_hidden_texts && (text.flags & HIDE_TEXT)) continue; + if(!xctx->show_hidden_texts && (text.flags & (HIDE_TEXT | HIDE_TEXT_INSTANTIATED))) continue; if( hide && text.txt_ptr && strcmp(text.txt_ptr, "@symname") && strcmp(text.txt_ptr, "@name") ) continue; ROTATION(rot, flip, 0.0,0.0,text.x0,text.y0,x1,y1); textlayer = c; @@ -875,7 +875,7 @@ void draw_temp_symbol(int what, GC gc, int n,int layer,short tmp_flip, short rot get_sym_text_size(n, j, &xscale, &yscale); text = symptr->text[j]; if(!text.txt_ptr || !text.txt_ptr[0] || xscale*FONTWIDTH*xctx->mooz<1) continue; - if(!xctx->show_hidden_texts && (text.flags & HIDE_TEXT)) continue; + if(!xctx->show_hidden_texts && (text.flags & (HIDE_TEXT | HIDE_TEXT_INSTANTIATED))) continue; ROTATION(rot, flip, 0.0,0.0,text.x0,text.y0,x1,y1); #if HAS_CAIRO==1 customfont = set_text_custom_font(&text); diff --git a/src/psprint.c b/src/psprint.c index b00efea2..4f253bbb 100644 --- a/src/psprint.c +++ b/src/psprint.c @@ -907,7 +907,7 @@ static void ps_draw_symbol(int n,int layer, int what, short tmp_flip, short rot, get_sym_text_size(n, j, &xscale, &yscale); text = (xctx->inst[n].ptr+ xctx->sym)->text[j]; /* if(xscale*FONTWIDTH* xctx->mooz<1) continue; */ - if(!xctx->show_hidden_texts && (text.flags & HIDE_TEXT)) continue; + if(!xctx->show_hidden_texts && (text.flags & (HIDE_TEXT | HIDE_TEXT_INSTANTIATED))) continue; if( hide && text.txt_ptr && strcmp(text.txt_ptr, "@symname") && strcmp(text.txt_ptr, "@name") ) continue; txtptr= translate(n, text.txt_ptr); ROTATION(rot, flip, 0.0,0.0,text.x0,text.y0,x1,y1); diff --git a/src/select.c b/src/select.c index f8529326..5f3006bb 100644 --- a/src/select.c +++ b/src/select.c @@ -357,7 +357,7 @@ void symbol_bbox(int i, double *x1,double *y1, double *x2, double *y2) get_sym_text_size(i, j, &xscale, &yscale); text = (xctx->inst[i].ptr+ xctx->sym)->text[j]; - if(!xctx->show_hidden_texts && (text.flags & HIDE_TEXT)) continue; + if(!xctx->show_hidden_texts && (text.flags & (HIDE_TEXT | HIDE_TEXT_INSTANTIATED))) continue; sym_flip = flip; sym_rot = rot; /* dbg(2, "symbol_bbox(): instance %d text n: %d text str=%s\n", i,j, text.txt_ptr? text.txt_ptr:"NULL"); */ diff --git a/src/svgdraw.c b/src/svgdraw.c index 863bffa2..9f04979f 100644 --- a/src/svgdraw.c +++ b/src/svgdraw.c @@ -547,7 +547,7 @@ static void svg_draw_symbol(int c, int n,int layer,short tmp_flip, short rot, get_sym_text_size(n, j, &xscale, &yscale); text = symptr->text[j]; /* if(xscale*FONTWIDTH* xctx->mooz<1) continue; */ - if(!xctx->show_hidden_texts && (symptr->text[j].flags & HIDE_TEXT)) continue; + if(!xctx->show_hidden_texts && (symptr->text[j].flags & (HIDE_TEXT | HIDE_TEXT_INSTANTIATED))) continue; if( hide && text.txt_ptr && strcmp(text.txt_ptr, "@symname") && strcmp(text.txt_ptr, "@name") ) continue; txtptr= translate(n, text.txt_ptr); ROTATION(rot, flip, 0.0,0.0,text.x0,text.y0,x1,y1); diff --git a/src/xschem.h b/src/xschem.h index 6ee6bf48..1eb54fae 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -311,6 +311,7 @@ extern char win_temp_dir[PATH_MAX]; /* flag (.flags field) to hide text in symbols when displaying instances */ #define HIDE_TEXT 8 #define TEXT_FLOATER 16 +#define HIDE_TEXT_INSTANTIATED 32 #define S(a) (sizeof(a)/sizeof(a[0])) #define BUS_WIDTH 4