mirror of https://github.com/KLayout/klayout.git
WIP: via up and via down
This commit is contained in:
parent
331d16ab7c
commit
57cd512bf9
|
|
@ -45,7 +45,7 @@ ViaType::init ()
|
||||||
// ---------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
std::vector<SelectedViaDefinition>
|
std::vector<SelectedViaDefinition>
|
||||||
find_via_definitions_for (const std::string &technology, const db::LayerProperties &layer)
|
find_via_definitions_for (const std::string &technology, const db::LayerProperties &layer, int dir)
|
||||||
{
|
{
|
||||||
std::vector<SelectedViaDefinition> via_defs;
|
std::vector<SelectedViaDefinition> via_defs;
|
||||||
|
|
||||||
|
|
@ -63,7 +63,8 @@ find_via_definitions_for (const std::string &technology, const db::LayerProperti
|
||||||
|
|
||||||
auto via_types = pcell->via_types ();
|
auto via_types = pcell->via_types ();
|
||||||
for (auto vt = via_types.begin (); vt != via_types.end (); ++vt) {
|
for (auto vt = via_types.begin (); vt != via_types.end (); ++vt) {
|
||||||
if ((vt->bottom.log_equal (layer) && vt->bottom_wired) || (vt->top.log_equal (layer) && vt->top_wired)) {
|
if ((dir >= 0 && vt->bottom.log_equal (layer) && vt->bottom_wired) ||
|
||||||
|
(dir <= 0 && vt->top.log_equal (layer) && vt->top_wired)) {
|
||||||
via_defs.push_back (SelectedViaDefinition (lib, pc->second, *vt));
|
via_defs.push_back (SelectedViaDefinition (lib, pc->second, *vt));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ struct SelectedViaDefinition
|
||||||
};
|
};
|
||||||
|
|
||||||
DB_PUBLIC std::vector<SelectedViaDefinition>
|
DB_PUBLIC std::vector<SelectedViaDefinition>
|
||||||
find_via_definitions_for (const std::string &technology, const db::LayerProperties &layer);
|
find_via_definitions_for (const std::string &technology, const db::LayerProperties &layer, int dir);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,10 @@ MainService::menu_activated (const std::string &symbol)
|
||||||
cm_make_cell_variants ();
|
cm_make_cell_variants ();
|
||||||
} else if (symbol == "edt::via") {
|
} else if (symbol == "edt::via") {
|
||||||
cm_via ();
|
cm_via ();
|
||||||
|
} else if (symbol == "edt::via_up") {
|
||||||
|
cm_via_up ();
|
||||||
|
} else if (symbol == "edt::via_down") {
|
||||||
|
cm_via_down ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2443,6 +2447,24 @@ MainService::cm_tap ()
|
||||||
|
|
||||||
void
|
void
|
||||||
MainService::cm_via ()
|
MainService::cm_via ()
|
||||||
|
{
|
||||||
|
via_impl (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainService::cm_via_up ()
|
||||||
|
{
|
||||||
|
via_impl (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainService::cm_via_down ()
|
||||||
|
{
|
||||||
|
via_impl (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainService::via_impl (int dir)
|
||||||
{
|
{
|
||||||
#if ! defined(HAVE_QT)
|
#if ! defined(HAVE_QT)
|
||||||
tl_assert (false); // see TODO
|
tl_assert (false); // see TODO
|
||||||
|
|
@ -2461,7 +2483,7 @@ MainService::cm_via ()
|
||||||
|
|
||||||
edt::Service *es = dynamic_cast<edt::Service *> (view ()->canvas ()->active_service ());
|
edt::Service *es = dynamic_cast<edt::Service *> (view ()->canvas ()->active_service ());
|
||||||
if (es) {
|
if (es) {
|
||||||
es->via ();
|
es->via (dir);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
#if 0 // @@@
|
#if 0 // @@@
|
||||||
|
|
|
||||||
|
|
@ -201,10 +201,20 @@ public:
|
||||||
void cm_tap ();
|
void cm_tap ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Via operation
|
* @brief Via operation (up or down)
|
||||||
*/
|
*/
|
||||||
void cm_via ();
|
void cm_via ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Via operation (down)
|
||||||
|
*/
|
||||||
|
void cm_via_down ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Via operation (up)
|
||||||
|
*/
|
||||||
|
void cm_via_up ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief "paste" operation
|
* @brief "paste" operation
|
||||||
*/
|
*/
|
||||||
|
|
@ -247,6 +257,7 @@ private:
|
||||||
edt::MakeArrayOptionsDialog *mp_make_array_options_dialog;
|
edt::MakeArrayOptionsDialog *mp_make_array_options_dialog;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void via_impl (int dir);
|
||||||
void boolean_op (int mode);
|
void boolean_op (int mode);
|
||||||
void check_no_guiding_shapes ();
|
void check_no_guiding_shapes ();
|
||||||
void descend (bool make_new_top);
|
void descend (bool make_new_top);
|
||||||
|
|
|
||||||
|
|
@ -383,6 +383,8 @@ public:
|
||||||
|
|
||||||
// Key binding only
|
// Key binding only
|
||||||
menu_entries.push_back (lay::menu_item ("edt::via", "via:edit_mode", "@secrets.end", tl::to_string (tr ("Via")) + "(V)"));
|
menu_entries.push_back (lay::menu_item ("edt::via", "via:edit_mode", "@secrets.end", tl::to_string (tr ("Via")) + "(V)"));
|
||||||
|
menu_entries.push_back (lay::menu_item ("edt::via_up", "via_up:edit_mode", "@secrets.end", tl::to_string (tr ("Via up"))));
|
||||||
|
menu_entries.push_back (lay::menu_item ("edt::via_down", "via_down:edit_mode", "@secrets.end", tl::to_string (tr ("Via down"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool configure (const std::string &name, const std::string &value)
|
bool configure (const std::string &name, const std::string &value)
|
||||||
|
|
|
||||||
|
|
@ -1718,7 +1718,7 @@ Service::tap (const db::DPoint & /*initial*/)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Service::via ()
|
Service::via (int)
|
||||||
{
|
{
|
||||||
// .. nothing here ..
|
// .. nothing here ..
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -379,8 +379,10 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Implements the via feature
|
* @brief Implements the via feature
|
||||||
|
*
|
||||||
|
* "dir" is 0 for up or down, -1 for down and +1 for up.
|
||||||
*/
|
*/
|
||||||
virtual void via ();
|
virtual void via (int dir);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Delete the selected rulers
|
* @brief Delete the selected rulers
|
||||||
|
|
|
||||||
|
|
@ -1453,7 +1453,7 @@ PathService::selection_applies (const lay::ObjectInstPath &sel) const
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PathService::via ()
|
PathService::via (int dir)
|
||||||
{
|
{
|
||||||
#if ! defined(HAVE_QT)
|
#if ! defined(HAVE_QT)
|
||||||
tl_assert (false); // see TODO
|
tl_assert (false); // see TODO
|
||||||
|
|
@ -1469,7 +1469,7 @@ PathService::via ()
|
||||||
}
|
}
|
||||||
|
|
||||||
db::LayerProperties lp = layout ().get_properties (layer ());
|
db::LayerProperties lp = layout ().get_properties (layer ());
|
||||||
std::vector<db::SelectedViaDefinition> via_defs = db::find_via_definitions_for (layout ().technology_name (), lp);
|
std::vector<db::SelectedViaDefinition> via_defs = db::find_via_definitions_for (layout ().technology_name (), lp, dir);
|
||||||
|
|
||||||
db::SelectedViaDefinition via_def;
|
db::SelectedViaDefinition via_def;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -238,7 +238,7 @@ public:
|
||||||
virtual void do_finish_edit ();
|
virtual void do_finish_edit ();
|
||||||
virtual void do_cancel_edit ();
|
virtual void do_cancel_edit ();
|
||||||
virtual bool do_activated ();
|
virtual bool do_activated ();
|
||||||
virtual void via ();
|
virtual void via (int dir);
|
||||||
virtual bool selection_applies (const lay::ObjectInstPath &sel) const;
|
virtual bool selection_applies (const lay::ObjectInstPath &sel) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue