WIP: Introducing names

This commit is contained in:
Matthias Koefferlein 2022-03-06 19:01:16 +01:00
parent 33cd9fe687
commit dda18e6f53
6 changed files with 27 additions and 11 deletions

View File

@ -260,7 +260,7 @@ module D25
displays.each do |k,zz|
display = zz[0].display
view.open_display(display.frame, display.fill, display.like)
view.open_display(display.frame, display.fill, display.like, display.name)
zz.each do |z|
view.entry(z.layer.data, self.dbu, z.zstart, z.zstop)
end

View File

@ -65,7 +65,7 @@ Class<lay::D25View> decl_D25View (QT_EXTERNAL_BASE (QDialog) "lay", "D25View",
gsi::method ("begin", &lay::D25View::begin, gsi::arg ("generator"),
"@brief Initiates delivery of display groups"
) +
gsi::method ("open_display", &lay::D25View::open_display, gsi::arg ("frame_color"), gsi::arg ("fill_color"), gsi::arg ("like"),
gsi::method ("open_display", &lay::D25View::open_display, gsi::arg ("frame_color"), gsi::arg ("fill_color"), gsi::arg ("like"), gsi::arg ("name"),
"@brief Creates a new display group"
) +
gsi::method ("entry", &lay::D25View::entry, gsi::arg ("data"), gsi::arg ("dbu"), gsi::arg ("zstart"), gsi::arg ("zstop"),

View File

@ -173,10 +173,10 @@ D25View::begin (const std::string &generator)
}
void
D25View::open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like)
D25View::open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like, const std::string *name)
{
if (! mp_ui->d25_view->has_error ()) {
mp_ui->d25_view->open_display (frame_color, fill_color, like);
mp_ui->d25_view->open_display (frame_color, fill_color, like, name);
}
}

View File

@ -65,7 +65,7 @@ public:
void close ();
void clear ();
void begin (const std::string &generator);
void open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like);
void open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like, const std::string *name);
void close_display ();
void entry (const db::Region &data, double dbu, double zstart, double zstop);
void finish ();

View File

@ -555,7 +555,7 @@ static void lp_to_info (const lay::LayerPropertiesNode &lp, D25ViewWidget::Layer
}
void
D25ViewWidget::open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like)
D25ViewWidget::open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like, const std::string *name)
{
m_vertex_chunks.push_back (triangle_chunks_type ());
m_line_chunks.push_back (line_chunks_type ());
@ -565,6 +565,14 @@ D25ViewWidget::open_display (const color_t *frame_color, const color_t *fill_col
info.visible = true;
color_to_gl (frame_color, info.frame_color);
color_to_gl (fill_color, info.fill_color);
info.has_name = (name != 0 || like != 0);
if (name) {
info.name = *name;
} else if (like) {
info.name = like->to_string ();
}
info.vertex_chunk = &m_vertex_chunks.back ();
info.line_chunk = &m_line_chunks.back ();
@ -601,9 +609,11 @@ D25ViewWidget::entry (const db::Region &data, double dbu, double zstart, double
m_zmax = std::min (m_zmax, std::max (zstart, zstop));
}
LayerInfo &info = m_layers.back ();
// try to establish a default color from the region's origin if required
const db::OriginalLayerRegion *original_region = dynamic_cast<db::OriginalLayerRegion *> (data.delegate ());
if (mp_view && m_layers.back ().fill_color [3] == 0.0 && m_layers.back ().frame_color [3] == 0.0) {
if (mp_view && info.fill_color [3] == 0.0 && info.frame_color [3] == 0.0) {
if (original_region) {
@ -614,7 +624,11 @@ D25ViewWidget::entry (const db::Region &data, double dbu, double zstart, double
for (lay::LayerPropertiesConstIterator lp = mp_view->begin_layers (); ! lp.at_end (); ++lp) {
if (! lp->has_children () && lp->source (true).layer_props ().log_equal (like)) {
lp_to_info (*lp, m_layers.back ());
lp_to_info (*lp, info);
if (! info.has_name) {
info.name = like.to_string ();
info.has_name = true;
}
break;
}
}
@ -625,7 +639,7 @@ D25ViewWidget::entry (const db::Region &data, double dbu, double zstart, double
// sequential assignment
lay::color_t color = mp_view->get_palette ().luminous_color_by_index (m_layers.size ());
color_to_gl (color, m_layers.back ().fill_color);
color_to_gl (color, info.fill_color);
}
@ -638,7 +652,7 @@ D25ViewWidget::entry (const db::Region &data, double dbu, double zstart, double
void
D25ViewWidget::finish ()
{
// @@@
// .. nothing yet ..
}
void

View File

@ -89,6 +89,8 @@ public:
GLfloat fill_color [4];
GLfloat frame_color [4];
bool visible;
std::string name;
bool has_name;
};
D25ViewWidget (QWidget *parent);
@ -148,7 +150,7 @@ public:
}
void clear ();
void open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like);
void open_display (const color_t *frame_color, const color_t *fill_color, const db::LayerProperties *like, const std::string *name);
void close_display ();
void entry (const db::Region &data, double dbu, double zstart, double zstop);
void finish ();