diff --git a/src/laybasic/laybasic/NetlistBrowserConfigPage2.ui b/src/laybasic/laybasic/NetlistBrowserConfigPage2.ui
index cb4ae2af8..31000d54e 100644
--- a/src/laybasic/laybasic/NetlistBrowserConfigPage2.ui
+++ b/src/laybasic/laybasic/NetlistBrowserConfigPage2.ui
@@ -159,6 +159,13 @@ brightness of the color used.
+ -
+
+
+
+
+
+
-
@@ -173,7 +180,7 @@ brightness of the color used.
-
-
+
% intensity increase
@@ -524,5 +531,38 @@ brightness of the color used.
-
+
+
+ brightness_cb
+ clicked(bool)
+ brightness_sb
+ setEnabled(bool)
+
+
+ 114
+ 246
+
+
+ 140
+ 248
+
+
+
+
+ brightness_cb
+ clicked(bool)
+ brightness_label
+ setEnabled(bool)
+
+
+ 119
+ 251
+
+
+ 272
+ 258
+
+
+
+
diff --git a/src/laybasic/laybasic/layNetExportDialog.cc b/src/laybasic/laybasic/layNetExportDialog.cc
index 6cb89727c..af492624b 100644
--- a/src/laybasic/laybasic/layNetExportDialog.cc
+++ b/src/laybasic/laybasic/layNetExportDialog.cc
@@ -33,13 +33,13 @@
namespace lay
{
-extern std::string cfg_l2ndb_net_cell_prefix;
-extern std::string cfg_l2ndb_net_propname;
-extern std::string cfg_l2ndb_circuit_cell_prefix;
-extern std::string cfg_l2ndb_produce_circuit_cells;
-extern std::string cfg_l2ndb_device_cell_prefix;
-extern std::string cfg_l2ndb_produce_device_cells;
-extern std::string cfg_l2ndb_start_layer_number;
+extern std::string cfg_l2ndb_export_net_cell_prefix;
+extern std::string cfg_l2ndb_export_net_propname;
+extern std::string cfg_l2ndb_export_circuit_cell_prefix;
+extern std::string cfg_l2ndb_export_produce_circuit_cells;
+extern std::string cfg_l2ndb_export_device_cell_prefix;
+extern std::string cfg_l2ndb_export_produce_device_cells;
+extern std::string cfg_l2ndb_export_start_layer_number;
NetExportDialog::NetExportDialog (QWidget *parent)
@@ -168,43 +168,43 @@ int
NetExportDialog::exec (lay::PluginRoot *plugin_root)
{
std::string v;
- plugin_root->config_get (cfg_l2ndb_net_cell_prefix, v);
+ plugin_root->config_get (cfg_l2ndb_export_net_cell_prefix, v);
set_net_prefix (v);
tl::Variant var;
- plugin_root->config_get (cfg_l2ndb_net_propname, var);
+ plugin_root->config_get (cfg_l2ndb_export_net_propname, var);
set_net_propname (var);
bool f = false;
- plugin_root->config_get (cfg_l2ndb_produce_circuit_cells, f);
+ plugin_root->config_get (cfg_l2ndb_export_produce_circuit_cells, f);
set_produce_circuit_cells (f);
v.clear ();
- plugin_root->config_get (cfg_l2ndb_circuit_cell_prefix, v);
+ plugin_root->config_get (cfg_l2ndb_export_circuit_cell_prefix, v);
set_circuit_cell_prefix (v);
f = false;
- plugin_root->config_get (cfg_l2ndb_produce_device_cells, f);
+ plugin_root->config_get (cfg_l2ndb_export_produce_device_cells, f);
set_produce_device_cells (f);
v.clear ();
- plugin_root->config_get (cfg_l2ndb_device_cell_prefix, v);
+ plugin_root->config_get (cfg_l2ndb_export_device_cell_prefix, v);
set_device_cell_prefix (v);
int ln = 0;
- plugin_root->config_get (cfg_l2ndb_start_layer_number, ln);
+ plugin_root->config_get (cfg_l2ndb_export_start_layer_number, ln);
set_start_layer_number (ln);
int ret = QDialog::exec ();
if (ret) {
- plugin_root->config_set (cfg_l2ndb_net_cell_prefix, net_prefix ());
- plugin_root->config_set (cfg_l2ndb_net_propname, net_propname ());
- plugin_root->config_set (cfg_l2ndb_start_layer_number, tl::to_string (start_layer_number ()));
- plugin_root->config_set (cfg_l2ndb_produce_circuit_cells, tl::to_string (produce_circuit_cells ()));
- plugin_root->config_set (cfg_l2ndb_circuit_cell_prefix, circuit_cell_prefix ());
- plugin_root->config_set (cfg_l2ndb_produce_device_cells, tl::to_string (produce_device_cells ()));
- plugin_root->config_set (cfg_l2ndb_device_cell_prefix, device_cell_prefix ());
+ plugin_root->config_set (cfg_l2ndb_export_net_cell_prefix, net_prefix ());
+ plugin_root->config_set (cfg_l2ndb_export_net_propname, net_propname ());
+ plugin_root->config_set (cfg_l2ndb_export_start_layer_number, tl::to_string (start_layer_number ()));
+ plugin_root->config_set (cfg_l2ndb_export_produce_circuit_cells, tl::to_string (produce_circuit_cells ()));
+ plugin_root->config_set (cfg_l2ndb_export_circuit_cell_prefix, circuit_cell_prefix ());
+ plugin_root->config_set (cfg_l2ndb_export_produce_device_cells, tl::to_string (produce_device_cells ()));
+ plugin_root->config_set (cfg_l2ndb_export_device_cell_prefix, device_cell_prefix ());
}
diff --git a/src/laybasic/laybasic/layNetlistBrowser.cc b/src/laybasic/laybasic/layNetlistBrowser.cc
index d04164b7d..889593ea1 100644
--- a/src/laybasic/laybasic/layNetlistBrowser.cc
+++ b/src/laybasic/laybasic/layNetlistBrowser.cc
@@ -45,18 +45,19 @@ extern const std::string cfg_l2ndb_marker_line_width ("l2ndb-marker-line-width")
extern const std::string cfg_l2ndb_marker_vertex_size ("l2ndb-marker-vertex-size");
extern const std::string cfg_l2ndb_marker_halo ("l2ndb-marker-halo");
extern const std::string cfg_l2ndb_marker_intensity ("l2ndb-marker-intensity");
+extern const std::string cfg_l2ndb_marker_use_original_colors ("l2ndb-marker-use-original-colors");
extern const std::string cfg_l2ndb_window_mode ("l2ndb-window-mode");
extern const std::string cfg_l2ndb_window_dim ("l2ndb-window-dim");
extern const std::string cfg_l2ndb_max_shapes_highlighted ("l2ndb-max-shapes-highlighted");
extern const std::string cfg_l2ndb_show_all ("l2ndb-show-all");
extern const std::string cfg_l2ndb_window_state ("l2ndb-window-state");
-extern const std::string cfg_l2ndb_net_cell_prefix ("l2ndb-net-cell-prefix");
-extern const std::string cfg_l2ndb_net_propname ("l2ndb-net-propname");
-extern const std::string cfg_l2ndb_start_layer_number ("l2ndb-start-layer-number");
-extern const std::string cfg_l2ndb_circuit_cell_prefix ("l2ndb-circuit-cell-prefix");
-extern const std::string cfg_l2ndb_produce_circuit_cells ("l2ndb-produce-circuit-cells");
-extern const std::string cfg_l2ndb_device_cell_prefix ("l2ndb-device-cell-prefix");
-extern const std::string cfg_l2ndb_produce_device_cells ("l2ndb-produce-device-cells");
+extern const std::string cfg_l2ndb_export_net_cell_prefix ("l2ndb-export-net-cell-prefix");
+extern const std::string cfg_l2ndb_export_net_propname ("l2ndb-export-net-propname");
+extern const std::string cfg_l2ndb_export_start_layer_number ("l2ndb-export-start-layer-number");
+extern const std::string cfg_l2ndb_export_circuit_cell_prefix ("l2ndb-export-circuit-cell-prefix");
+extern const std::string cfg_l2ndb_export_produce_circuit_cells ("l2ndb-export-produce-circuit-cells");
+extern const std::string cfg_l2ndb_export_device_cell_prefix ("l2ndb-export-device-cell-prefix");
+extern const std::string cfg_l2ndb_export_produce_device_cells ("l2ndb-export-produce-device-cells");
// ------------------------------------------------------------
@@ -218,6 +219,13 @@ NetlistBrowserConfigPage2::setup (lay::PluginRoot *root)
root->config_get (cfg_l2ndb_marker_color, color, lay::ColorConverter ());
color_pb->set_color (color);
+ // use original color
+ bool original_colors = false;
+ root->config_get (cfg_l2ndb_marker_use_original_colors, original_colors);
+ brightness_cb->setChecked (original_colors);
+ brightness_sb->setEnabled (original_colors);
+ brightness_label->setEnabled (original_colors);
+
// brightness offset
int brightness = 0;
root->config_get (cfg_l2ndb_marker_intensity, brightness);
@@ -318,6 +326,8 @@ NetlistBrowserConfigPage2::commit (lay::PluginRoot *root)
}
root->config_set (cfg_l2ndb_marker_intensity, brightness_sb->value ());
+
+ root->config_set (cfg_l2ndb_marker_use_original_colors, brightness_cb->isChecked ());
}
// ------------------------------------------------------------
@@ -338,17 +348,18 @@ public:
options.push_back (std::pair (cfg_l2ndb_marker_line_width, "-1"));
options.push_back (std::pair (cfg_l2ndb_marker_vertex_size, "-1"));
options.push_back (std::pair (cfg_l2ndb_marker_halo, "-1"));
+ options.push_back (std::pair (cfg_l2ndb_marker_use_original_colors, "false"));
options.push_back (std::pair (cfg_l2ndb_marker_dither_pattern, "-1"));
options.push_back (std::pair (cfg_l2ndb_marker_intensity, "50"));
options.push_back (std::pair (cfg_l2ndb_show_all, "true"));
options.push_back (std::pair (cfg_l2ndb_window_state, ""));
- options.push_back (std::pair (cfg_l2ndb_net_propname, ""));
- options.push_back (std::pair (cfg_l2ndb_net_cell_prefix, "NET_"));
- options.push_back (std::pair (cfg_l2ndb_start_layer_number, "1000"));
- options.push_back (std::pair (cfg_l2ndb_produce_circuit_cells, "false"));
- options.push_back (std::pair (cfg_l2ndb_circuit_cell_prefix, "CIRCUIT_"));
- options.push_back (std::pair (cfg_l2ndb_produce_device_cells, "false"));
- options.push_back (std::pair (cfg_l2ndb_device_cell_prefix, "DEVICE_"));
+ options.push_back (std::pair (cfg_l2ndb_export_net_propname, ""));
+ options.push_back (std::pair (cfg_l2ndb_export_net_cell_prefix, "NET_"));
+ options.push_back (std::pair (cfg_l2ndb_export_start_layer_number, "1000"));
+ options.push_back (std::pair (cfg_l2ndb_export_produce_circuit_cells, "false"));
+ options.push_back (std::pair (cfg_l2ndb_export_circuit_cell_prefix, "CIRCUIT_"));
+ options.push_back (std::pair (cfg_l2ndb_export_produce_device_cells, "false"));
+ options.push_back (std::pair (cfg_l2ndb_export_device_cell_prefix, "DEVICE_"));
}
virtual std::vector > config_pages (QWidget *parent) const
diff --git a/src/laybasic/laybasic/layNetlistBrowserDialog.cc b/src/laybasic/laybasic/layNetlistBrowserDialog.cc
index fb7e32bc6..b94e00b75 100644
--- a/src/laybasic/laybasic/layNetlistBrowserDialog.cc
+++ b/src/laybasic/laybasic/layNetlistBrowserDialog.cc
@@ -49,6 +49,7 @@ extern const std::string cfg_l2ndb_marker_line_width;
extern const std::string cfg_l2ndb_marker_vertex_size;
extern const std::string cfg_l2ndb_marker_halo;
extern const std::string cfg_l2ndb_marker_intensity;
+extern const std::string cfg_l2ndb_marker_use_original_colors;
extern const std::string cfg_l2ndb_window_mode;
extern const std::string cfg_l2ndb_window_dim;
extern const std::string cfg_l2ndb_max_shapes_highlighted;
@@ -68,6 +69,7 @@ NetlistBrowserDialog::NetlistBrowserDialog (lay::PluginRoot *root, lay::LayoutVi
m_marker_halo (-1),
m_marker_dither_pattern (-1),
m_marker_intensity (0),
+ m_use_original_colors (false),
m_cv_index (-1),
m_l2n_index (-1),
m_mouse_state (0)
@@ -557,6 +559,13 @@ NetlistBrowserDialog::configure (const std::string &name, const std::string &val
need_update = lay::test_and_set (m_marker_intensity, bo);
+ } else if (name == cfg_l2ndb_marker_use_original_colors) {
+
+ bool oc = false;
+ tl::from_string (value, oc);
+
+ need_update = lay::test_and_set (m_use_original_colors, oc);
+
} else {
taken = false;
}
@@ -564,7 +573,7 @@ NetlistBrowserDialog::configure (const std::string &name, const std::string &val
if (active () && need_update) {
browser_frame->set_max_shape_count (m_max_shape_count);
browser_frame->set_window (m_window, m_window_dim);
- browser_frame->set_highlight_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern, m_marker_intensity, m_auto_color_enabled ? &m_auto_colors : 0);
+ browser_frame->set_highlight_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern, m_marker_intensity, m_use_original_colors, m_auto_color_enabled ? &m_auto_colors : 0);
}
browser_frame->show_all (show_all);
@@ -713,7 +722,7 @@ NetlistBrowserDialog::update_content ()
browser_frame->enable_updates (false); // Avoid building the internal lists several times ...
browser_frame->set_l2ndb (l2ndb);
browser_frame->set_max_shape_count (m_max_shape_count);
- browser_frame->set_highlight_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern, m_marker_intensity, m_auto_color_enabled ? &m_auto_colors : 0);
+ browser_frame->set_highlight_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern, m_marker_intensity, m_use_original_colors, m_auto_color_enabled ? &m_auto_colors : 0);
browser_frame->set_window (m_window, m_window_dim);
browser_frame->set_view (view (), m_cv_index);
browser_frame->enable_updates (true);
@@ -739,6 +748,12 @@ NetlistBrowserDialog::update_content ()
}
}
+void
+NetlistBrowserDialog::hideEvent (QHideEvent *)
+{
+ deactivated ();
+}
+
void
NetlistBrowserDialog::deactivated ()
{
diff --git a/src/laybasic/laybasic/layNetlistBrowserDialog.h b/src/laybasic/laybasic/layNetlistBrowserDialog.h
index 429eb2827..e7c5840da 100644
--- a/src/laybasic/laybasic/layNetlistBrowserDialog.h
+++ b/src/laybasic/laybasic/layNetlistBrowserDialog.h
@@ -60,6 +60,9 @@ private:
// implementation of the lay::Plugin interface
virtual void menu_activated (const std::string &symbol);
+ // QWidget
+ virtual void hideEvent (QHideEvent *);
+
void cellviews_changed ();
void cellview_changed (int index);
void l2ndbs_changed ();
@@ -89,6 +92,7 @@ private:
int m_marker_halo;
int m_marker_dither_pattern;
int m_marker_intensity;
+ bool m_use_original_colors;
std::string m_layout_name;
int m_cv_index;
std::string m_l2ndb_name;
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.cc b/src/laybasic/laybasic/layNetlistBrowserPage.cc
index 28677f591..6a8313ec0 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.cc
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.cc
@@ -773,12 +773,12 @@ NetlistBrowserModel::text (const QModelIndex &index) const
const db::Net *net = net_from_id (id);
if (net) {
if (index.column () == 0) {
- return tl::to_qstring ("(" + tl::to_string (net->pin_count () + net->terminal_count () + net->subcircuit_pin_count ()) + ")");
- } else {
return tl::to_qstring (net->expanded_name ());
+ } else {
+ return tl::to_qstring (net->expanded_name () + " (" + tl::to_string (net->pin_count () + net->terminal_count () + net->subcircuit_pin_count ()) + ")");
}
}
- // TODO: in case of compare, column 1 is (size), 2 is net name(a) and 3 is net name(b)
+ // TODO: in case of compare, column 1 is name(a):name(b), 2 is name(a)(size(a)) and 3 is name(b)(size(b))
} else if (is_id_circuit_net_pin (id)) {
@@ -1741,6 +1741,7 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/)
m_marker_halo (-1),
m_marker_dither_pattern (-1),
m_marker_intensity (0),
+ m_use_original_colors (false),
mp_view (0),
m_cv_index (0),
mp_plugin_root (0),
@@ -1752,7 +1753,7 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/)
{
Ui::NetlistBrowserPage::setupUi (this);
- // @@@ insert into menu
+ // TODO: insert into menu
m_show_all_action = new QAction (QObject::tr ("Show All"), this);
m_show_all_action->setCheckable (true);
m_show_all_action->setChecked (m_show_all);
@@ -1825,7 +1826,7 @@ NetlistBrowserPage::set_plugin_root (lay::PluginRoot *pr)
}
void
-NetlistBrowserPage::set_highlight_style (QColor color, int line_width, int vertex_size, int halo, int dither_pattern, int marker_intensity, const lay::ColorPalette *auto_colors)
+NetlistBrowserPage::set_highlight_style (QColor color, int line_width, int vertex_size, int halo, int dither_pattern, int marker_intensity, bool use_original_colors, const lay::ColorPalette *auto_colors)
{
m_colorizer.configure (color, auto_colors);
m_marker_line_width = line_width;
@@ -1833,6 +1834,7 @@ NetlistBrowserPage::set_highlight_style (QColor color, int line_width, int verte
m_marker_halo = halo;
m_marker_dither_pattern = dither_pattern;
m_marker_intensity = marker_intensity;
+ m_use_original_colors = use_original_colors;
update_highlights ();
}
@@ -2170,13 +2172,6 @@ NetlistBrowserPage::show_all (bool f)
m_show_all = f;
m_show_all_action->setChecked (f);
-#if 0 // @@@
- MarkerBrowserTreeViewModel *tree_model = dynamic_cast (directory_tree->model ());
- if (tree_model) {
- set_hidden_rec (tree_model, directory_tree, QModelIndex (), m_show_all, cat_filter->text (), cell_filter->text ());
- }
-#endif
-
}
}
@@ -2236,7 +2231,6 @@ NetlistBrowserPage::enable_updates (bool f)
if (f && m_update_needed) {
update_highlights ();
- // @@@ update_info_text ();
}
m_update_needed = false;
@@ -2278,14 +2272,11 @@ NetlistBrowserPage::adjust_view ()
db::cell_index_type cell_index = (*net)->circuit ()->cell_index ();
size_t cluster_id = (*net)->cluster_id ();
- // @@@std::map > tv_by_layer = mp_view->cv_transform_variants_by_layer (m_cv_index);
std::vector tv = mp_view->cv_transform_variants (m_cv_index);
const db::Connectivity &conn = mp_database->connectivity ();
for (db::Connectivity::layer_iterator layer = conn.begin_layers (); layer != conn.end_layers (); ++layer) {
- // @@@ TODO: how to get the original layer?
-
db::Box layer_bbox;
db::recursive_cluster_shape_iterator shapes (mp_database->net_clusters (), *layer, cell_index, cluster_id);
while (! shapes.at_end ()) {
@@ -2334,6 +2325,10 @@ NetlistBrowserPage::produce_highlights_for_net (const db::Net *net, size_t &n_ma
size_t cluster_id = net->cluster_id ();
QColor net_color = m_colorizer.color_of_net (net);
+ if (! net_color.isValid ()) {
+ // fallback color
+ net_color = mp_view->background_color ().green () < 128 ? QColor (Qt::white) : QColor (Qt::black);
+ }
const db::Connectivity &conn = mp_database->connectivity ();
for (db::Connectivity::layer_iterator layer = conn.begin_layers (); layer != conn.end_layers (); ++layer) {
@@ -2351,7 +2346,7 @@ NetlistBrowserPage::produce_highlights_for_net (const db::Net *net, size_t &n_ma
mp_markers.push_back (new lay::Marker (mp_view, m_cv_index));
mp_markers.back ()->set (*shapes, net_trans * shapes.trans (), tv);
- if (net_color.isValid ()) {
+ if (! m_use_original_colors || display == display_by_lp.end ()) {
mp_markers.back ()->set_color (net_color);
mp_markers.back ()->set_frame_color (net_color);
@@ -2369,13 +2364,6 @@ NetlistBrowserPage::produce_highlights_for_net (const db::Net *net, size_t &n_ma
mp_markers.back ()->set_frame_color (display->second->eff_frame_color_brighter (true, (-m_marker_intensity * 255) / 100));
}
- } else {
-
- // fallback color
- QColor net_color = mp_view->background_color ().green () < 128 ? QColor (Qt::white) : QColor (Qt::black);
- mp_markers.back ()->set_color (net_color);
- mp_markers.back ()->set_frame_color (net_color);
-
}
if (m_marker_line_width >= 0) {
@@ -2455,7 +2443,6 @@ NetlistBrowserPage::update_highlights ()
}
}
- // @@@std::map > tv_by_layer = mp_view->cv_transform_variants_by_layer (m_cv_index);
std::vector tv = mp_view->cv_transform_variants (m_cv_index);
// correct DBU differences between the storage layout and the original layout
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.h b/src/laybasic/laybasic/layNetlistBrowserPage.h
index 8945541b8..76e7df965 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.h
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.h
@@ -280,7 +280,7 @@ public:
* @param halo The halo flag or -1 for default
* @param dither_pattern The dither pattern index of -1 to take the default
*/
- void set_highlight_style (QColor color, int line_width, int vertex_size, int halo, int dither_pattern, int marker_intensity, const lay::ColorPalette *auto_colors);
+ void set_highlight_style (QColor color, int line_width, int vertex_size, int halo, int dither_pattern, int marker_intensity, bool use_original_colors, const lay::ColorPalette *auto_colors);
/**
* @brief Gets a value indicating whether all items in the netlist tree are shown (specifically for cross-reference DBs)
@@ -335,6 +335,7 @@ private:
int m_marker_halo;
int m_marker_dither_pattern;
int m_marker_intensity;
+ bool m_use_original_colors;
lay::LayoutView *mp_view;
unsigned int m_cv_index;
lay::PluginRoot *mp_plugin_root;