MCPcopy Create free account
hub / github.com/KLayout/klayout / add_new_layers

Method add_new_layers

src/laybasic/laybasic/layLayoutViewBase.cc:2889–2937  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2887}
2888
2889void
2890LayoutViewBase::add_new_layers (const std::vector <unsigned int> &layer_ids, int cv_index)
2891{
2892 if (cv_index >= 0 && cv_index < int (cellviews ())) {
2893
2894 const lay::CellView &cv = cellview (cv_index);
2895
2896 // create the layers and do a basic recoloring ..
2897 lay::LayerPropertiesList new_props (get_properties ());
2898
2899 bool was_empty = new_props.begin_const_recursive ().at_end ();
2900
2901 // don't create new layers for those, for which there are layers already: compute a
2902 // set of layers already present
2903 std::set <db::LayerProperties, db::LPLogicalLessFunc> present_layers;
2904 for (LayerPropertiesConstIterator lay_iter = begin_layers (); ! lay_iter.at_end (); ++lay_iter) {
2905 if (! lay_iter->has_children () && lay_iter->cellview_index () == cv_index) {
2906 present_layers.insert (lay_iter->source (true /*real*/).layer_props ());
2907 }
2908 }
2909
2910 // determine layers which are new and need to be created
2911 std::vector <db::LayerProperties> new_layers;
2912 for (std::vector <unsigned int>::const_iterator l = layer_ids.begin (); l != layer_ids.end (); ++l) {
2913 const db::LayerProperties &lp = cv->layout ().get_properties (*l);
2914 if (present_layers.find (lp) == present_layers.end ()) {
2915 new_layers.push_back (lp);
2916 }
2917 }
2918
2919 // create them in the sorting order provided by db::LayerProperties
2920 std::sort (new_layers.begin (), new_layers.end (), db::LPLogicalLessFunc ());
2921
2922 // and actually create them
2923 for (std::vector <db::LayerProperties>::const_iterator l = new_layers.begin (); l != new_layers.end (); ++l) {
2924 lay::LayerProperties p;
2925 p.set_source (lay::ParsedLayerSource (*l, cv_index));
2926 init_layer_properties (p, new_props);
2927 new_props.push_back (p);
2928 }
2929
2930 set_properties (new_props);
2931
2932 if (was_empty) {
2933 set_current_layer (new_props.begin_const_recursive ());
2934 }
2935
2936 }
2937}
2938
2939void
2940LayoutViewBase::init_layer_properties (LayerProperties &p) const

Callers 6

pasteMethod · 0.80
do_applyMethod · 0.80
make_cellMethod · 0.80
pasteMethod · 0.80
cm_new_layerMethod · 0.80
item_selectedMethod · 0.80

Calls 15

cellviewsFunction · 0.85
sortFunction · 0.85
LPLogicalLessFuncClass · 0.85
set_current_layerFunction · 0.85
current_layer_listFunction · 0.85
begin_const_recursiveMethod · 0.80
layer_propsMethod · 0.80
get_propertiesMethod · 0.80
begin_layersFunction · 0.70
set_propertiesFunction · 0.70
end_layersFunction · 0.70
emit_layer_order_changedFunction · 0.70

Tested by

no test coverage detected