mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-02 02:47:48 +02:00
Merge branch 'master' of github.com:KLayout/klayout
This commit is contained in:
@@ -297,10 +297,10 @@ public:
|
||||
* @brief Get the interactions between the stored objects
|
||||
*
|
||||
* Two objects interact if the boxes of the objects enlarged by the given value overlap.
|
||||
* The enlargement is specified in units of width and height, i.e. half of the enlargement
|
||||
* is applied to one side before the overlap check.
|
||||
*
|
||||
* An enlargement of 1 means that boxes have to touch only in order to get an interaction.
|
||||
* An enlargement of 1 means that boxes have to touch in order to get an interaction.
|
||||
* An enlargement of 0 means that boxes have to overlap in order to get an interaction.
|
||||
* To capture interactions between object precisely spaced d, use d+1 for the enlargement.
|
||||
*
|
||||
* The box scanner will report all interactions to the receiver object. See box_scanner_receiver
|
||||
* for details about the methods that this object must provide.
|
||||
|
||||
@@ -114,7 +114,8 @@ public:
|
||||
|
||||
/**
|
||||
* @brief Gets the interaction distance
|
||||
* A distance of means the shapes must overlap in order to interact.
|
||||
* A distance of zero means the shapes must overlap in order to interact.
|
||||
* A distance of 1 means the shapes need to touch in order to interact.
|
||||
*/
|
||||
virtual db::Coord dist () const { return 0; }
|
||||
|
||||
|
||||
@@ -888,10 +888,10 @@ std::map<unsigned int, db::Coord>
|
||||
check_local_operation<TS, TI>::override_distance () const
|
||||
{
|
||||
// makes sure, the "foreign"-type pseudo-intruder used for merging only
|
||||
// does not use the full search range, but only "touching".
|
||||
// does not use the full search range, but only "touching" (distance 1).
|
||||
std::map<unsigned int, db::Coord> od;
|
||||
if (check_local_operation_base<TS, TI>::m_has_other) {
|
||||
od.insert (std::make_pair (1, 0));
|
||||
od.insert (std::make_pair (1, 1));
|
||||
}
|
||||
return od;
|
||||
}
|
||||
|
||||
@@ -2154,3 +2154,14 @@ TEST(152d_sep_with_props)
|
||||
{
|
||||
run_test (_this, "152", true);
|
||||
}
|
||||
|
||||
// issue #2423
|
||||
TEST(153_issue_2423)
|
||||
{
|
||||
run_test (_this, "153", false);
|
||||
}
|
||||
|
||||
TEST(153d_issue_2423)
|
||||
{
|
||||
run_test (_this, "153", true);
|
||||
}
|
||||
|
||||
@@ -1962,7 +1962,7 @@ PartialService::mouse_press_event (const db::DPoint &p, unsigned int buttons, bo
|
||||
m_p1 = p;
|
||||
m_p2 = p;
|
||||
mp_box = new lay::RubberBox (ui (), m_color, p, p);
|
||||
mp_box->set_stipple (6); // coarse hatched
|
||||
mp_box->set_line_style (3); // long dashed dotted
|
||||
|
||||
ui ()->grab_mouse (this, true);
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace lay
|
||||
|
||||
RubberBox::RubberBox (lay::ViewObjectUI *widget, unsigned int color, const db::DPoint &p1, const db::DPoint &p2)
|
||||
: lay::ViewObject (widget, false /*not static*/),
|
||||
m_p1 (p1), m_p2 (p2), m_color (color), m_stipple (0)
|
||||
m_p1 (p1), m_p2 (p2), m_color (color), m_line_style (0)
|
||||
{ }
|
||||
|
||||
void
|
||||
@@ -47,10 +47,10 @@ RubberBox::set_color (unsigned int color)
|
||||
}
|
||||
|
||||
void
|
||||
RubberBox::set_stipple (unsigned int s)
|
||||
RubberBox::set_line_style (unsigned int s)
|
||||
{
|
||||
if (m_stipple != s) {
|
||||
m_stipple = s;
|
||||
if (m_line_style != s) {
|
||||
m_line_style = s;
|
||||
redraw ();
|
||||
}
|
||||
}
|
||||
@@ -60,7 +60,7 @@ RubberBox::render (const Viewport &vp, ViewObjectCanvas &canvas)
|
||||
{
|
||||
lay::Renderer &r = canvas.renderer ();
|
||||
int lw = int (0.5 + 1.0 / r.resolution ());
|
||||
lay::CanvasPlane *plane = canvas.plane (lay::ViewOp (m_color, lay::ViewOp::Copy, 0, m_stipple, 0, lay::ViewOp::Rect, lw));
|
||||
lay::CanvasPlane *plane = canvas.plane (lay::ViewOp (m_color, lay::ViewOp::Copy, m_line_style, 0, 0, lay::ViewOp::Rect, lw));
|
||||
if (plane) {
|
||||
r.draw (vp.trans () * db::DBox (m_p1, m_p2), 0, plane, 0, 0);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
RubberBox (lay::ViewObjectUI *canvas, unsigned int color, const db::DPoint &p1, const db::DPoint &p2);
|
||||
|
||||
void set_color (unsigned int color);
|
||||
void set_stipple (unsigned int s);
|
||||
void set_line_style (unsigned int s);
|
||||
void set_points (const db::DPoint &begin, const db::DPoint &end);
|
||||
|
||||
private:
|
||||
@@ -45,7 +45,7 @@ private:
|
||||
|
||||
db::DPoint m_p1, m_p2;
|
||||
unsigned int m_color;
|
||||
unsigned int m_stipple;
|
||||
unsigned int m_line_style;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ SelectionService::begin (const db::DPoint &pos)
|
||||
m_p1 = pos;
|
||||
m_p2 = pos;
|
||||
mp_box = new lay::RubberBox (ui (), m_color, pos, pos);
|
||||
mp_box->set_stipple (6); // coarse hatched
|
||||
mp_box->set_line_style (4); // short dashed
|
||||
|
||||
ui ()->grab_mouse (this, true);
|
||||
}
|
||||
|
||||
Vendored
-2
@@ -5,8 +5,6 @@ if $drc_test_deep
|
||||
deep
|
||||
end
|
||||
|
||||
deep
|
||||
|
||||
l1 = input(1, 0, enable_props)
|
||||
l1.output(1, 0)
|
||||
|
||||
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
|
||||
source $drc_test_source
|
||||
target $drc_test_target
|
||||
|
||||
if $drc_test_deep
|
||||
deep
|
||||
end
|
||||
|
||||
l1 = polygons(1, 0)
|
||||
l2 = polygons(2, 0)
|
||||
|
||||
l1.output(1, 0)
|
||||
l2.output(2, 0)
|
||||
|
||||
l1.separation(l2, 10.um).output(100, 0)
|
||||
|
||||
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user