Color support also for multi height mapping of a single layer

This commit is contained in:
Matthias Koefferlein 2021-09-23 01:00:59 +02:00
parent 5d1b12391b
commit 6dd35693d6
4 changed files with 42 additions and 6 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

@ -143,5 +143,38 @@ end
<li> Up/down/left/right keys: move the pivot on the horizontal plane </li>
</ul>
<p>
Note: if the Shift key does not switch to top level view, click into the
scene view once.
</p>
<h2>Colors in the 2.5d View</h2>
<p>
While the 2.5d view window is open, the layout view is still active. Layer
colors are applied also to the 2.5d view. Changing the fill color will change
the 2.5d view's face color. The frame color will be applied to the wire frame.
If a hollow stipple is selected, only the wire frame is shown. If a layer is
made invisible in the layout view, the corresponding blocks will also be
made invisible in the 2.5d view.
</p>
<h2>Other controls</h2>
<p>
The left zoom slider changes the overall scale factor. The right slider only changes the z (height) axis zoom factor.
This is useful as in many cases, the real height profile will result in a rather flat arrangement. Increasing the
z zoom factor will exaggerate the vertical axis hence making height variations more pronounced.
</p>
<p>
The edit boxes next to the scale sliders allow entering the scale factors manually.
</p>
<p>
The button bar at the top right side holds the view presets. Use them to reset the window to
front view, top view etc.
</p>
</doc>

View File

@ -657,8 +657,6 @@ D25ViewWidget::prepare_view ()
double z0 = zi->zstart ();
double z1 = zi->zstop ();
lay::color_t color = lp->fill_color (true);
m_vertex_chunks.push_back (triangle_chunks_type ());
m_line_chunks.push_back (line_chunks_type ());
@ -667,7 +665,7 @@ D25ViewWidget::prepare_view ()
info.vertex_chunk = &m_vertex_chunks.back ();
info.line_chunk = &m_line_chunks.back ();
m_layer_to_info [std::make_pair (lp->cellview_index (), lp->layer_index ())] = m_layers.size ();
m_layer_to_info.insert (std::make_pair (std::make_pair (lp->cellview_index (), lp->layer_index ()), m_layers.size ()));
m_layers.push_back (info);
const lay::CellView &cv = mp_view->cellview ((unsigned int) lp->cellview_index ());
@ -698,12 +696,17 @@ D25ViewWidget::refresh_view ()
}
for (lay::LayerPropertiesConstIterator lp = mp_view->begin_layers (); ! lp.at_end (); ++lp) {
std::map<std::pair<size_t, size_t>, size_t>::const_iterator l = m_layer_to_info.find (std::make_pair (lp->cellview_index (), lp->layer_index ()));
if (l != m_layer_to_info.end ()) {
std::pair<size_t, size_t> key = std::make_pair (lp->cellview_index (), lp->layer_index ());
std::multimap<std::pair<size_t, size_t>, size_t>::const_iterator l = m_layer_to_info.find (key);
while (l != m_layer_to_info.end () && l->first == key) {
if (l->second < m_layers.size ()) {
lp_to_info (*lp, m_layers [l->second]);
}
++l;
}
}
refresh ();

View File

@ -168,7 +168,7 @@ private:
};
std::vector<LayerInfo> m_layers;
std::map<std::pair<size_t, size_t>, size_t> m_layer_to_info;
std::multimap<std::pair<size_t, size_t>, size_t> m_layer_to_info;
void initializeGL ();
void paintGL ();