Merge commit '6369a1f993d6f9f059890b1c4e427dfd688f9547'

This commit is contained in:
Kazunari Sekigawa 2022-12-10 18:58:17 +09:00
commit 389f1728bd
26 changed files with 1992 additions and 521 deletions

View File

@ -1,4 +1,4 @@
0.28
0.28 (2022-12-09):
Changes (list may not be complete):
* Bugfix: %GITHUB%/issues/989 "Layout#convert_pcell_to_static" does not handle"defunct" cells
* Bugfix: %GITHUB%/issues/991 Basic library not available in Python module
@ -7,10 +7,12 @@ Changes (list may not be complete):
* Bugfix: %GITHUB%/issues/1138 Provide a way to suppress or redirect log output or disable warnings, specifically from file readers, in Python module
* Bugfix: %GITHUB%/issues/1178 technology-data xml results in SEGV
* Bugfix: %GITHUB%/issues/1190 General compatibility issue of Edges#extended/extended_* with deep mode
* Enhacnement: %GITHUB%/issues/1056 X2 net names
* Enhancement: %GITHUB%/issues/1052 Pdf documentation
* Enhancement: %GITHUB%/issues/1053 Lefdef enhancements
* Enhancement: Support for Qt6
* Bugfix: %GITHUB%/issues/1216 DRC internal error on "moved"
* Bugfix: %GITHUB%/issues/1214 LEF via parser error
* Enhancement: %GITHUB%/issues/1056 X2 net names
* Enhancement: %GITHUB%/issues/1052 PDF documentation
* Enhancement: %GITHUB%/issues/1053 LEF/DEF enhancements
* Enhancement: Qt6 enabled
* Enhancement: KLayout paths
- $KLAYOUT_HOME can now be empty string (no home folder used)
- $KLAYOUT_PATH can now be empty string (no further and implicit search paths)

View File

@ -1,3 +1,10 @@
klayout (0.28-1) unstable; urgency=low
* New features and bugfixes
- See changelog
-- Matthias Köfferlein <matthias@koefferlein.de> Sat, 10 Dec 2022 01:49:33 +0100
klayout (0.27.6-1) unstable; urgency=low
* New features and bugfixes

View File

@ -51,9 +51,9 @@ def escape(mod, s)
s.gsub("&", "&amp;").
gsub("<", "&lt;").
gsub(">", "&gt;").
gsub(/\\\\([\w:#]+)/) { create_link(mod, $1) }.
gsub(/\\([\w:#]+)/) { create_ref(mod, $1) }.
gsub(/RBA::([\w#]+)/) { create_class_doc_ref($1) }
gsub(/\\\\([\w:#\?]+)/) { create_link(mod, $1) }.
gsub(/\\([\w:#\?]+)/) { create_ref(mod, $1) }.
gsub(/RBA::([\w#\?]+)/) { create_class_doc_ref($1) }
end
def unescape(s)

View File

@ -298,7 +298,7 @@ const std::string cfg_ruler_snap_mode ("ruler-snap-mode");
const std::string cfg_ruler_obj_snap ("ruler-obj-snap");
const std::string cfg_ruler_grid_snap ("ruler-grid-snap");
const std::string cfg_ruler_grid_micron ("grid-micron");
const std::string cfg_ruler_templates ("ruler-templates");
const std::string cfg_ruler_templates ("ruler-templates-v2");
const std::string cfg_current_ruler_template ("current-ruler-template");
} // namespace ant

View File

@ -210,7 +210,7 @@ PluginDeclaration::initialized (lay::Dispatcher *root)
// This provides a migration path from earlier versions (not having templates) to recent ones.
std::map<std::string, const ant::Template *> cat_names;
for (auto i = m_templates.begin (); i != m_templates.end (); ++i) {
if (! i->category ().empty ()) {
if (i->category ().find ("_") == 0) {
cat_names.insert (std::make_pair (i->category (), i.operator-> ()));
}
}

View File

@ -154,168 +154,126 @@ Template::from_string (const std::string &s)
while (! ex.at_end ()) {
if (ex.test ("version=")) {
std::string key, s;
ex.read_word_or_quoted (key);
ex.expect ("=");
ex.read_word_or_quoted (s);
if (key == "version") {
int v = 0;
ex.read (v);
tl::from_string (s, v);
r.back ().version (v);
ex.test (",");
} else if (ex.test ("mode=")) {
} else if (key == "mode") {
std::string s;
ex.read_word_or_quoted (s);
ant::RulerModeConverter mc;
ant::Template::ruler_mode_type mode;
mc.from_string (s, mode);
r.back ().set_mode (mode);
ex.test (",");
} else if (ex.test ("title=")) {
} else if (key == "title") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().title (s);
ex.test (",");
} else if (ex.test ("category=")) {
} else if (key == "category") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().category (s);
ex.test (",");
} else if (ex.test ("fmt=")) {
} else if (key == "fmt") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().fmt (s);
ex.test (",");
} else if (ex.test ("fmt_x=")) {
} else if (key == "fmt_x") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().fmt_x (s);
ex.test (",");
} else if (ex.test ("fmt_y=")) {
} else if (key == "fmt_y") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().fmt_y (s);
ex.test (",");
} else if (ex.test ("position=")) {
} else if (key == "position") {
std::string s;
ex.read_word (s);
ant::PositionConverter pc;
ant::Object::position_type pos;
pc.from_string (s, pos);
r.back ().set_main_position (pos);
ex.test (",");
} else if (ex.test ("xalign=")) {
} else if (key == "xalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac;
ant::Object::alignment_type a;
ac.from_string (s, a);
r.back ().set_main_xalign (a);
ex.test (",");
} else if (ex.test ("yalign=")) {
} else if (key == "yalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac;
ant::Object::alignment_type a;
ac.from_string (s, a);
r.back ().set_main_yalign (a);
ex.test (",");
} else if (ex.test ("xlabel_xalign=")) {
} else if (key == "xlabel_xalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac;
ant::Object::alignment_type a;
ac.from_string (s, a);
r.back ().set_xlabel_xalign (a);
ex.test (",");
} else if (ex.test ("xlabel_yalign=")) {
} else if (key == "xlabel_yalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac;
ant::Object::alignment_type a;
ac.from_string (s, a);
r.back ().set_xlabel_yalign (a);
ex.test (",");
} else if (ex.test ("ylabel_xalign=")) {
} else if (key == "ylabel_xalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac;
ant::Object::alignment_type a;
ac.from_string (s, a);
r.back ().set_ylabel_xalign (a);
ex.test (",");
} else if (ex.test ("ylabel_yalign=")) {
} else if (key == "ylabel_yalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac;
ant::Object::alignment_type a;
ac.from_string (s, a);
r.back ().set_ylabel_yalign (a);
ex.test (",");
} else if (ex.test ("style=")) {
} else if (key == "style") {
std::string s;
ex.read_word (s);
ant::StyleConverter sc;
ant::Object::style_type st;
sc.from_string (s, st);
r.back ().style (st);
ex.test (",");
} else if (ex.test ("outline=")) {
} else if (key == "outline") {
std::string s;
ex.read_word (s);
ant::OutlineConverter oc;
ant::Object::outline_type ot;
oc.from_string (s, ot);
r.back ().outline (ot);
ex.test (",");
} else if (ex.test ("snap=")) {
} else if (key == "snap") {
bool f = false;
ex.read (f);
tl::from_string (s, f);
r.back ().snap (f);
ex.test (",");
} else if (ex.test ("angle_constraint=")) {
} else if (key == "angle_constraint") {
std::string s;
ex.read_word (s);
ant::ACConverter sc;
lay::angle_constraint_type sm;
sc.from_string (s, sm);
r.back ().angle_constraint (sm);
ex.test (",");
} else {
}
ex.test (",");
if (ex.test (";")) {
ex.expect (";");
r.push_back (Template ());
r.back ().version (0);

View File

@ -1226,7 +1226,7 @@ gsi::ClassExt<lay::LayoutViewBase> layout_view_decl (
gsi::arg ("category"),
"@brief Unregisters the template or templates with the given category string on this particular view\n"
"\n"
"See \\Annotation#unregister_template for a method doing the same on application level."
"See \\Annotation#unregister_templates for a method doing the same on application level."
"This method is hardly useful normally, but can be used when customizing layout views as "
"individual widgets.\n"
"\n"

View File

@ -31,12 +31,11 @@ The following global functions are relevant for the DRC expressions:
<li><a href="/about/drc_ref_global.xml#angle">angle</a> </li>
<li><a href="/about/drc_ref_global.xml#area">area</a> </li>
<li><a href="/about/drc_ref_global.xml#area_ratio">area_ratio</a> </li>
<li><a href="/about/drc_ref_global.xml#bbox_area_ratio">bbox_area_ratio</a> </li>
<li><a href="/about/drc_ref_global.xml#bbox_aspect_ratio">bbox_aspect_ratio</a> </li>
<li><a href="/about/drc_ref_global.xml#bbox_height">bbox_height</a> </li>
<li><a href="/about/drc_ref_global.xml#bbox_max">bbox_max</a> </li>
<li><a href="/about/drc_ref_global.xml#bbox_min">bbox_min</a> </li>
<li><a href="/about/drc_ref_global.xml#bbox_width">bbox_width</a> </li>
<li><a href="/about/drc_ref_global.xml#case">case</a> </li>
<li><a href="/about/drc_ref_global.xml#corners">corners</a> </li>
<li><a href="/about/drc_ref_global.xml#covering">covering</a> </li>
<li><a href="/about/drc_ref_global.xml#enc">enc</a> </li>
@ -71,6 +70,7 @@ The following global functions are relevant for the DRC expressions:
<li><a href="/about/drc_ref_global.xml#smoothed">smoothed</a> </li>
<li><a href="/about/drc_ref_global.xml#space">space</a> </li>
<li><a href="/about/drc_ref_global.xml#squares">squares</a> </li>
<li><a href="/about/drc_ref_global.xml#switch">switch</a> </li>
<li><a href="/about/drc_ref_global.xml#width">width</a> </li>
<li><a href="/about/drc_ref_global.xml#with_holes">with_holes</a> </li>
</ul>
@ -358,8 +358,8 @@ The plain function is equivalent to "primary.bbox_width".
This method acts on edge expressions and delivers a specific part of each edge.
See <a href="/about/drc_ref_layer.xml#centers">layer#centers</a> for details about this functionality.
</p>
<a name="corners (in condition)"/><h2>"corners (in condition)" - Applies smoothing</h2>
<keyword name="corners (in condition)"/>
<a name="corners"/><h2>"corners" - Applies smoothing</h2>
<keyword name="corners"/>
<p>Usage:</p>
<ul>
<li><tt>expression.corners</tt></li>

View File

@ -8,8 +8,8 @@
<title>DRC Reference: Global Functions</title>
<keyword name="global"/>
<h2-index/>
<a name="angle (in condition)"/><h2>"angle (in condition)" - In universal DRC context: selects edges based on their orientation</h2>
<keyword name="angle (in condition)"/>
<a name="angle"/><h2>"angle" - In universal DRC context: selects edges based on their orientation</h2>
<keyword name="angle"/>
<p>Usage:</p>
<ul>
<li><tt>angle (in condition)</tt></li>
@ -41,7 +41,7 @@ is equivalent to "layer.area" (see <a href="/about/drc_ref_layer.xml#area">Layer
polygons in the layer.
</p><p>
Without a layer argument, "area" represents an area filter for primary shapes in
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#area">DRC#area</a> for more details).
<a href="/about/drc_ref_global.xml">global</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#area">DRC#area</a> for more details).
</p>
<a name="area_ratio"/><h2>"area_ratio" - Selects primary shapes based on the ratio of bounding box and polygon area</h2>
<keyword name="area_ratio"/>
@ -359,7 +359,7 @@ See <a href="/about/drc_ref_netter.xml#connect_implicit">Netter#connect_implicit
This function can be used with a layer argument. In this case it
is equivalent to "layer.corners" (see <a href="/about/drc_ref_layer.xml#corners">Layer#corners</a>). Without a layer
argument, "corners" represents the corner generator/filter in primary shapes for
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#corners">DRC#corners</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#corners">corners</a> for more details).
</p><p>
Like the layer-based version, the "corners" operator accepts the
output type option: "as_dots" for dot-like edges, "as_boxes" for
@ -380,7 +380,7 @@ This operator represents the selector of primary shapes
which entirely cover shapes from the other layer. This version can be put into
a condition indicating how many shapes of the other layer need to be covered.
Use this operator within <a href="/about/drc_ref_drc.xml">DRC</a> expressions (also see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a>). If can be used
as method to an expression. See there for more details: <a href="/about/drc_ref_drc.xml#covering">DRC#covering</a>.
as method to an expression. See there for more details: <a href="/about/drc_ref_global.xml#covering">covering</a>.
</p>
<a name="dbu"/><h2>"dbu" - Gets or sets the database unit to use</h2>
<keyword name="dbu"/>
@ -721,7 +721,7 @@ See <a href="/about/drc_ref_source.xml#extent">Source#extent</a> for a descripti
This function can be used with a layer argument. In this case it
is equivalent to "layer.extent_refs" (see <a href="/about/drc_ref_layer.xml#extent_refs">Layer#extent_refs</a>). Without a layer
argument, "extent_refs" represents the partial extents extractor on primary shapes within
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#extent_refs">DRC#extent_refs</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#extent_refs">extent_refs</a> for more details).
</p>
<a name="extents"/><h2>"extents" - Returns the bounding box of each input object</h2>
<keyword name="extents"/>
@ -734,7 +734,7 @@ argument, "extent_refs" represents the partial extents extractor on primary shap
This function can be used with a layer argument. In this case it
is equivalent to "layer.extents" (see <a href="/about/drc_ref_layer.xml#extents">Layer#extents</a>). Without a layer
argument, "extents" represents the extents generator on primary shapes within
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#extents">DRC#extents</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#extents">extents</a> for more details).
</p>
<a name="extract_devices"/><h2>"extract_devices" - Extracts devices for a given device extractor and device layer selection</h2>
<keyword name="extract_devices"/>
@ -813,7 +813,7 @@ argument, "holes" represents a hole extractor for primary shapes in
This function can be used with a layer argument. In this case it
is equivalent to "layer.hulls" (see <a href="/about/drc_ref_layer.xml#hulls">Layer#hulls</a>). Without a layer
argument, "hulls" represents a hull contour extractor for primary shapes in
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#hulls">DRC#hulls</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#hulls">hulls</a> for more details).
</p>
<a name="if_all"/><h2>"if_all" - Evaluates to the primary shape when all condition expression results are non-empty</h2>
<keyword name="if_all"/>
@ -888,7 +888,7 @@ this method.
This operator represents the selector of primary shapes
which are inside shapes from the other layer.
Use this operator within <a href="/about/drc_ref_drc.xml">DRC</a> expressions (also see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a>). If can be used
as method to an expression. See there for more details: <a href="/about/drc_ref_drc.xml#inside">DRC#inside</a>.
as method to an expression. See there for more details: <a href="/about/drc_ref_global.xml#inside">inside</a>.
</p>
<a name="interacting"/><h2>"interacting" - Selects shapes interacting with other shapes</h2>
<keyword name="interacting"/>
@ -901,7 +901,7 @@ This operator represents the selector of primary shapes
which interact with shapes from the other layer. This version can be put into
a condition indicating how many shapes of the other layer need to be covered.
Use this operator within <a href="/about/drc_ref_drc.xml">DRC</a> expressions (also see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a>). If can be used
as method to an expression. See there for more details: <a href="/about/drc_ref_drc.xml#interacting">DRC#interacting</a>.
as method to an expression. See there for more details: <a href="/about/drc_ref_global.xml#interacting">interacting</a>.
</p>
<a name="is_deep?"/><h2>"is_deep?" - Returns true, if in deep mode</h2>
<keyword name="is_deep?"/>
@ -1038,8 +1038,8 @@ l2 = layout("second_layout.gds")
</p><p>
For further methods on the source object see <a href="/about/drc_ref_source.xml">Source</a>.
</p>
<a name="length (in condition)"/><h2>"length (in condition)" - Computes the total edge length of an edge layer or in universal DRC context: selects edges based on a length condition</h2>
<keyword name="length (in condition)"/>
<a name="length"/><h2>"length" - Computes the total edge length of an edge layer or in universal DRC context: selects edges based on a length condition</h2>
<keyword name="length"/>
<p>Usage:</p>
<ul>
<li><tt>length (in condition)</tt></li>
@ -1136,7 +1136,7 @@ See also <a href="#max_area_ratio">max_area_ratio</a> for the other option affec
This function can be used with a layer argument. In this case it
is equivalent to "layer.middle" (see <a href="/about/drc_ref_layer.xml#middle">Layer#middle</a>). Without a layer
argument, "middle" represents the bounding box center marker generator on primary shapes within
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#middle">DRC#middle</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#middle">middle</a> for more details).
</p>
<a name="mos3"/><h2>"mos3" - Supplies the MOS3 transistor extractor class</h2>
<keyword name="mos3"/>
@ -1267,7 +1267,7 @@ layout if is report database.
This operator represents the selector of primary shapes
which are outside shapes from the other layer.
Use this operator within <a href="/about/drc_ref_drc.xml">DRC</a> expressions (also see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a>). If can be used
as method to an expression. See there for more details: <a href="/about/drc_ref_drc.xml#outside">DRC#outside</a>.
as method to an expression. See there for more details: <a href="/about/drc_ref_global.xml#outside">outside</a>.
</p>
<a name="overlap"/><h2>"overlap" - Performs an overlap check</h2>
<keyword name="overlap"/>
@ -1330,7 +1330,7 @@ This operator represents the selector of primary shapes
which overlap shapes from the other layer. This version can be put into
a condition indicating how many shapes of the other layer need to be covered.
Use this operator within <a href="/about/drc_ref_drc.xml">DRC</a> expressions (also see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a>). If can be used
as method to an expression. See there for more details: <a href="/about/drc_ref_drc.xml#overlapping">DRC#overlapping</a>.
as method to an expression. See there for more details: <a href="/about/drc_ref_global.xml#overlapping">overlapping</a>.
</p>
<a name="p"/><h2>"p" - Creates a point object</h2>
<keyword name="p"/>
@ -1424,7 +1424,7 @@ is called on.
This function can be used with a layer argument. In this case it
is equivalent to "layer.rectangles" (see <a href="/about/drc_ref_layer.xml#rectangles">Layer#rectangles</a>). Without a layer
argument, "rectangles" represents the rectangles filter for primary shapes in
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#rectangles">DRC#rectangles</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#rectangles">rectangles</a> for more details).
</p>
<a name="rectilinear"/><h2>"rectilinear" - Selects all polygons which are rectilinear</h2>
<keyword name="rectilinear"/>
@ -1437,7 +1437,7 @@ argument, "rectangles" represents the rectangles filter for primary shapes in
This function can be used with a layer argument. In this case it
is equivalent to "layer.rectilinear" (see <a href="/about/drc_ref_layer.xml#rectilinear">Layer#rectilinear</a>). Without a layer
argument, "rectilinear" represents the rectilinear polygons filter for primary shapes in
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#rectilinear">DRC#rectilinear</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#rectilinear">rectilinear</a> for more details).
</p>
<a name="region_overlap"/><h2>"region_overlap" - Specifies region selected input in "overlap mode"</h2>
<keyword name="region_overlap"/>
@ -1570,7 +1570,7 @@ about this extractor.
This function can be used with a layer argument. In this case it
is equivalent to "layer.rounded_corners" (see <a href="/about/drc_ref_layer.xml#rounded_corners">Layer#rounded_corners</a>). Without a layer
argument, "rounded_corners" represents the corner rounding algorithm on primary shapes within
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#rounded_corners">DRC#rounded_corners</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#rounded_corners">rounded_corners</a> for more details).
</p>
<a name="secondary"/><h2>"secondary" - Provides secondary input for the "drc" universal DRC function</h2>
<keyword name="secondary"/>
@ -1703,7 +1703,7 @@ This function is equivalent to "verbose(false)" (see <a href="#verbose">verbose<
This function can be used with a layer argument. In this case it
is equivalent to "layer.sized" (see <a href="/about/drc_ref_layer.xml#sized">Layer#sized</a>). Without a layer
argument, "sized" represents the polygon sizer on primary shapes within
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#sized">DRC#sized</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#sized">sized</a> for more details).
</p>
<a name="smoothed"/><h2>"smoothed" - Applies smoothing</h2>
<keyword name="smoothed"/>
@ -1716,7 +1716,7 @@ argument, "sized" represents the polygon sizer on primary shapes within
This function can be used with a layer argument. In this case it
is equivalent to "layer.smoothed" (see <a href="/about/drc_ref_layer.xml#smoothed">Layer#smoothed</a>). Without a layer
argument, "smoothed" represents the polygon smoother on primary shapes within
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#smoothed">DRC#smoothed</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#smoothed">smoothed</a> for more details).
</p>
<a name="source"/><h2>"source" - Specifies a source layout</h2>
<keyword name="source"/>
@ -1815,7 +1815,7 @@ See <a href="#enclosing">enclosing</a> for more details about the various ways t
This function can be used with a layer argument. In this case it
is equivalent to "layer.squares" (see <a href="/about/drc_ref_layer.xml#squares">Layer#squares</a>). Without a layer
argument, "squares" represents the rectangles filter for primary shapes in
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#squares">DRC#squares</a> for more details).
<a href="/about/drc_ref_drc.xml">DRC</a> expressions (see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#squares">squares</a> for more details).
</p>
<a name="switch"/><h2>"switch" - A conditional selector for the "drc" universal DRC function</h2>
<keyword name="switch"/>
@ -1913,9 +1913,9 @@ The tile border specifies the distance to which shapes are collected into the
tile. In order words, when processing a tile, shapes within the border distance
participate in the operations.
</p><p>
For some operations such as booleans (<a href="#and">and</a>, <a href="#or">or</a>, ...), <a href="#size">size</a> and the DRC functions (<a href="#width">width</a>, <a href="#space">space</a>, ...)
a tile border is automatically established. For other operations such as <a href="#with_area">with_area</a>
or <a href="#edges">edges</a>, the exact distance is unknown, because such operations may have a long range.
For some operations such as booleans (<a href="/about/drc_ref_layer.xml#and">Layer#and</a>, <a href="/about/drc_ref_layer.xml#or">Layer#or</a>, ...), <a href="/about/drc_ref_layer.xml#size">Layer#size</a> and the DRC functions (<a href="/about/drc_ref_layer.xml#width">Layer#width</a>, <a href="/about/drc_ref_layer.xml#space">Layer#space</a>, ...)
a tile border is automatically established. For other operations such as <a href="/about/drc_ref_layer.xml#with_area">Layer#with_area</a>
or <a href="/about/drc_ref_layer.xml#edges">Layer#edges</a>, the exact distance is unknown, because such operations may have a long range.
In that cases, no border is used. The tile_borders function may be used to specify a minimum border
which is used in that case. That allows taking into account at least shapes within the
given range, although not necessarily all.
@ -2056,7 +2056,7 @@ shape.
<p>
"with_holes" represents a polygon selector for
<a href="/about/drc_ref_drc.xml">DRC</a> expressions selecting polygons of the primary by their number of holes
(see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_drc.xml#with_holes">DRC#with_holes</a> for more details).
(see <a href="/about/drc_ref_layer.xml#drc">Layer#drc</a> and <a href="/about/drc_ref_global.xml#with_holes">with_holes</a> for more details).
</p>
<a name="write_spice"/><h2>"write_spice" - Defines SPICE output format (with options)</h2>
<keyword name="write_spice"/>

View File

@ -198,7 +198,7 @@ and <class_doc href="EdgePair">EdgePair</class_doc> objects are accepted too and
objects. <class_doc href="Region">Region</class_doc>, <class_doc href="Edges">Edges</class_doc> and <class_doc href="EdgePair">EdgePair</class_doc> objects are accepted as well and the corresponding
content of that collections is inserted into the output layer.
</p><p>
Other versions are available that allow translation of objects into other types (<a href="#collect_to_polygons">collect_to_polygons</a>,
Other versions are available that allow translation of objects into other types (<a href="#collect_to_region">collect_to_region</a>,
<a href="#collect_to_edges">collect_to_edges</a> and <a href="#collect_to_edge_pairs">collect_to_edge_pairs</a>).
</p><p>
Because this method executes inside the interpreter, it's inherently slow. Tiling does not
@ -520,7 +520,7 @@ Filter operators select input polygons or edges based on their properties. These
<li>"<a href="/about/drc_ref_drc.xml#area_ratio">DRC#area_ratio</a>": selects polygons based on their bounding box to polygon area ratio </li>
<li>"<a href="/about/drc_ref_drc.xml#bbox_aspect_ratio">DRC#bbox_aspect_ratio</a>": selects polygons based on their bounding box aspect ratio </li>
<li>"<a href="/about/drc_ref_drc.xml#relative_height">DRC#relative_height</a>": selects polygons based on their relative height </li>
<li>"<a href="/about/drc_ref_drc.xml#bbox_min">DRC#bbox_min</a>", "<a href="/about/drc_ref_global.xml#bbox_max">bbox_max</a>", "<a href="/about/drc_ref_global.xml#bbox_width">bbox_width</a>", "<a href="/about/drc_ref_global.xml#bbox_height">bbox_height</a>": selects polygons based on their bounding box properties </li>
<li>"<a href="/about/drc_ref_drc.xml#bbox_min">DRC#bbox_min</a>", "<a href="/about/drc_ref_drc.xml#bbox_max">DRC#bbox_max</a>", "<a href="/about/drc_ref_drc.xml#bbox_width">DRC#bbox_width</a>", "<a href="/about/drc_ref_drc.xml#bbox_height">DRC#bbox_height</a>": selects polygons based on their bounding box properties </li>
<li>"<a href="/about/drc_ref_drc.xml#length">DRC#length</a>": selects edges based on their length </li>
<li>"<a href="/about/drc_ref_drc.xml#angle">DRC#angle</a>": selects edges based on their orientation </li>
</ul>
@ -562,9 +562,9 @@ passes the polygons if the condition is met.
The predicates available currently are:
</p><p>
<ul>
<li>"<a href="/about/drc_ref_global.xml#rectangles">rectangles</a>": Filters rectangles </li>
<li>"<a href="/about/drc_ref_global.xml#squares">squares</a>": Filters squares </li>
<li>"<a href="/about/drc_ref_global.xml#rectilinear">rectilinear</a>": Filters rectilinear ("Manhattan") polygons </li>
<li>"<a href="/about/drc_ref_drc.xml#rectangles">DRC#rectangles</a>": Filters rectangles </li>
<li>"<a href="/about/drc_ref_drc.xml#squares">DRC#squares</a>": Filters squares </li>
<li>"<a href="/about/drc_ref_drc.xml#rectilinear">DRC#rectilinear</a>": Filters rectilinear ("Manhattan") polygons </li>
</ul>
</p><p>
For the same reason as explained above, it's recommended to use these predicates
@ -1274,7 +1274,7 @@ regions or edges, with each cell counting once.
A high <a href="#count">count</a> to hier_count (flat to hierarchical) ratio is an indication
of a good hierarchical compression.
"hier_count" applies only to original layers without clip regions or
cell filters and to layers in <a href="#deep">deep</a> mode. Otherwise, hier_count gives
cell filters and to layers in <a href="/about/drc_ref_global.xml#deep">deep</a> mode. Otherwise, hier_count gives
the same value than <a href="#count">count</a>.
</p>
<a name="holes"/><h2>"holes" - Selects all polygon holes from the input</h2>
@ -1351,34 +1351,6 @@ The following image shows the effect of the "in" method (input1: red, input2: bl
<p>
This method is equivalent to calling <a href="#in">in</a> and <a href="#not_in">not_in</a>, but more
efficient as it delivers both results in a single call.
</p><p>
This method is available for polygon, text and edge layers. Edges can be selected
with respect to other edges or polygons. Texts can be selected with respect to
polygons. Polygons can be selected with respect to edges, texts and other polygons.
</p><p>
The following image shows the effect of the "interacting" method (input1: red, input2: blue):
</p><p>
<table>
<tr>
<td><img src="/images/drc_interacting.png"/></td>
</tr>
</table>
</p><p>
If a single count is given, shapes from self are selected only if they do interact at least with the given
number of (different) shapes from the other layer. If a min and max count is given, shapes from
self are selected only if they interact with min_count or more, but a maximum of max_count different shapes
from the other layer. Two polygons overlapping or touching at two locations are counted as single interactions.
</p><p>
<table>
<tr>
<td><img src="/images/drc_interacting2.png"/></td>
<td><img src="/images/drc_interacting3.png"/></td>
</tr>
<tr>
<td><img src="/images/drc_interacting4.png"/></td>
<td><img src="/images/drc_interacting5.png"/></td>
</tr>
</table>
</p>
<a name="insert"/><h2>"insert" - Inserts one or many objects into the layer</h2>
<keyword name="insert"/>
@ -1486,6 +1458,50 @@ method computing both inside and outside part in a single call.
</tr>
</table>
</p>
<a name="interacting"/><h2>"interacting" - Selects shapes or regions of self which touch or overlap shapes from the other region</h2>
<keyword name="interacting"/>
<p>Usage:</p>
<ul>
<li><tt>layer.interacting(other)</tt></li>
<li><tt>layer.interacting(other, min_count)</tt></li>
<li><tt>layer.interacting(other, min_count, max_count)</tt></li>
<li><tt>layer.interacting(other, min_count .. max_count)</tt></li>
</ul>
<p>
This method selects all shapes or regions from self which touch or overlap shapes from the other
region. Unless self is in raw mode (see <a href="#raw">raw</a>), coherent regions are selected from self,
otherwise individual shapes are selected.
It returns a new layer containing the selected shapes. A version which modifies self
is <a href="#select_interacting">select_interacting</a>.
</p><p>
This method is available for polygon, text and edge layers. Edges can be selected
with respect to other edges or polygons. Texts can be selected with respect to
polygons. Polygons can be selected with respect to edges, texts and other polygons.
</p><p>
The following image shows the effect of the "interacting" method (input1: red, input2: blue):
</p><p>
<table>
<tr>
<td><img src="/images/drc_interacting.png"/></td>
</tr>
</table>
</p><p>
If a single count is given, shapes from self are selected only if they do interact at least with the given
number of (different) shapes from the other layer. If a min and max count is given, shapes from
self are selected only if they interact with min_count or more, but a maximum of max_count different shapes
from the other layer. Two polygons overlapping or touching at two locations are counted as single interactions.
</p><p>
<table>
<tr>
<td><img src="/images/drc_interacting2.png"/></td>
<td><img src="/images/drc_interacting3.png"/></td>
</tr>
<tr>
<td><img src="/images/drc_interacting4.png"/></td>
<td><img src="/images/drc_interacting5.png"/></td>
</tr>
</table>
</p>
<a name="intersections"/><h2>"intersections" - Returns the intersection points of intersecting edge segments for two edge collections</h2>
<keyword name="intersections"/>
<p>Usage:</p>
@ -1541,7 +1557,7 @@ See <a href="#clean">clean</a> for a discussion of the clean state.
This method will return true, if the polygons of this layer are
merged, i.e. they don't overlap and form single continuous polygons.
In clean mode, this is ensured implicitly. In raw mode (see <a href="#raw">raw</a>),
merging can be achieved by using the <a href="#merge">merge</a> method. <a href="#is_merged">is_merged</a>?
merging can be achieved by using the <a href="#merge">merge</a> method. <a href="#is_merged?">is_merged?</a>
tells, whether calling <a href="#merge">merge</a> is necessary.
</p>
<a name="is_raw?"/><h2>"is_raw?" - Returns true, if the layer is raw state</h2>
@ -2034,7 +2050,7 @@ The following image shows the effect of the notch check:
Returns the parts of the polygons which are not orientable (i.e. "8" configuration) or self-overlapping.
Merged semantics does not apply for this method. Always the raw polygons are taken (see <a href="#raw">raw</a>).
</p><p>
The odd_polygons check is not available in deep mode currently. See <a href="#deep_reject_odd_polygons">deep_reject_odd_polygons</a> for
The odd_polygons check is not available in deep mode currently. See <a href="/about/drc_ref_global.xml#deep_reject_odd_polygons">deep_reject_odd_polygons</a> for
an alternative.
</p>
<a name="ongrid"/><h2>"ongrid" - Checks for on-grid vertices</h2>
@ -3078,14 +3094,14 @@ This feature has been introduced in version 0.23.2.
</ul>
<p>
This method can be applied to original layers - i.e. ones that have
been created with <a href="#input">input</a>. By default, a small box (2x2 DBU) will be produced on each
been created with <a href="/about/drc_ref_global.xml#input">input</a>. By default, a small box (2x2 DBU) will be produced on each
selected text. By using the "as_dots" option, degenerated point-like edges will be
produced.
</p><p>
The preferred method however is to use true text layers created with <a href="#labels">labels</a>.
The preferred method however is to use true text layers created with <a href="/about/drc_ref_global.xml#labels">labels</a>.
In this case, without specifying "as_dots" or "as_boxes" retains the text
objects as such a text filtering is applied. In contrast to this, layers generated
with <a href="#input">input</a> cannot maintain the text nature of the selected objects and
with <a href="/about/drc_ref_global.xml#input">input</a> cannot maintain the text nature of the selected objects and
produce dots or small polygon boxes in the <a href="#texts">texts</a> method.
</p><p>
Texts can be selected either by exact match string or a pattern match with a
@ -3135,7 +3151,7 @@ The effect of the operation is shown in these examples:
<li><tt>layer.texts_not([ options ])</tt></li>
</ul>
<p>
This method can be applied to true text layers obtained with <a href="#labels">labels</a>.
This method can be applied to true text layers obtained with <a href="/about/drc_ref_global.xml#labels">labels</a>.
In this case, without specifying "as_dots" or "as_boxes" retains the text
objects as such. Only text filtering is applied.
</p><p>
@ -3322,7 +3338,7 @@ on <a href="#without_angle">without_angle</a>. This is because <a href="#without
one edge does not match the criterion. The logical opposite of "one edge matches" however is
"both edges do not match".
</p><p>
The following images demonstrate some use cases of <a href="#with_angle">with_angle</a> and <a href="#without_angle:">without_angle:</a>
The following images demonstrate some use cases of <a href="#with_angle">with_angle</a> and <a href="#without_angle">without_angle</a> :
</p><p>
<table>
<tr>

View File

@ -230,8 +230,8 @@ on these layers touching or overlapping other shapes on these
layers will form bigger, electrically connected areas.
</p><p>
Texts will be used to assign net names to the nets. The preferred
method is to use <a href="#labels">labels</a> to create a text layer from a design
layer. When using <a href="#input">input</a>, text labels are carried implicitly
method is to use <a href="/about/drc_ref_global.xml#labels">labels</a> to create a text layer from a design
layer. When using <a href="/about/drc_ref_global.xml#input">input</a>, text labels are carried implicitly
with the polygons but at the cost of small dummy shapes (2x2 DBU
marker polygons) and limited functionality.
</p><p>

View File

@ -396,7 +396,8 @@ output(w, "width violations")</pre>
<a href="/about/drc_ref_layer.xml#separation">separation (sep)</a>,
<a href="/about/drc_ref_layer.xml#notch">notch</a>,
<a href="/about/drc_ref_layer.xml#isolated">isolated (iso)</a>,
<a href="/about/drc_ref_layer.xml#enclosure">enclosure (enc)</a>,
<a href="/about/drc_ref_layer.xml#enclosing">enclosing (enc)</a>,
<a href="/about/drc_ref_layer.xml#enclosed">enclosed</a>,
<a href="/about/drc_ref_layer.xml#overlap">overlap</a>
</li>
<li>Universal DRC (see below):<br/>
@ -419,18 +420,20 @@ output(w, "width violations")</pre>
<a href="/about/drc_ref_layer.xml#merged">merged</a>
</li>
<li>Shape selections:<br/>
<a href="/about/drc_ref_layer.xml#covering">covering</a>,
<a href="/about/drc_ref_layer.xml#in">in</a>,
<a href="/about/drc_ref_layer.xml#inside">inside</a>,
<a href="/about/drc_ref_layer.xml#interacting">interacting</a>,
<a href="/about/drc_ref_layer.xml#pull_interacting">pull_interacting</a>,
<a href="/about/drc_ref_layer.xml#outside">outside</a>,
<a href="/about/drc_ref_layer.xml#touching">touching</a>,
<a href="/about/drc_ref_layer.xml#overlapping">overlapping</a><br/>
<a href="/about/drc_ref_layer.xml#pull_inside">pull_inside</a>,
<a href="/about/drc_ref_layer.xml#pull_interacting">pull_interacting</a>,
<a href="/about/drc_ref_layer.xml#pull_overlapping">pull_overlapping</a>,
These methods are available as in-place operations as well:<br/>
<a href="/about/drc_ref_layer.xml#select_covering">select_covering</a>,
<a href="/about/drc_ref_layer.xml#select_interacting">select_interacting</a>,
<a href="/about/drc_ref_layer.xml#select_inside">select_inside</a>,
<a href="/about/drc_ref_layer.xml#select_outside">select_outside</a>,
<a href="/about/drc_ref_layer.xml#select_touching">select_touching</a>,
<a href="/about/drc_ref_layer.xml#select_overlapping">select_overlapping</a>
</li>
<li>Filters:<br/>
@ -606,10 +609,10 @@ output(w, "width violations")</pre>
<ul>
<li>Boolean AND with a polygon layer: will select those texts
which are inside or at the border of a polygon.
<a href="/about/drc_ref_layer.xml#interact">interact</a> is a synonym for this operation.</li>
<a href="/about/drc_ref_layer.xml#interacting">interact</a> is a synonym for this operation.</li>
<li>Boolean NOT with a polygon layer: will select those texts
which are outside of any polygon.
<a href="/about/drc_ref_layer.xml#not_interact">not_interact</a> is a synonym for this operation.</li>
<a href="/about/drc_ref_layer.xml#not_interacting">not_interact</a> is a synonym for this operation.</li>
<li>As second layer for region interact: this way, polygons
can be selected which are tagged with certain texts.</li>
<li>Text filtering by string: texts can be filtered either
@ -735,7 +738,8 @@ overlaps = layer.size(0.2).raw.merged(2)</pre>
<a href="/about/drc_ref_layer.xml#separation">separation (sep)</a>,
<a href="/about/drc_ref_layer.xml#notch">notch</a>,
<a href="/about/drc_ref_layer.xml#isolated">isolated (iso)</a>,
<a href="/about/drc_ref_layer.xml#enclosure">enclosure (enc)</a> or
<a href="/about/drc_ref_layer.xml#enclosing">enclosing (enc)</a> or
<a href="/about/drc_ref_layer.xml#enclosed">enclosed</a> or
<a href="/about/drc_ref_layer.xml#overlap">overlap</a>.
Shielding is turned off using the "transparent" option or turned on using "shielded". The latter
is only for clarity, but is not required as shielding is enabled by default.
@ -831,7 +835,7 @@ overlaps = layer.size(0.2).raw.merged(2)</pre>
</ul>
<p>
"measurement" is "width", "notch", "isolated" ("iso"), "separation" ("sep"), "overlap" or "enclosure" ("enc").
"measurement" is "width", "notch", "isolated" ("iso"), "separation" ("sep"), "overlap", "enclosed" or "enclosuring" ("enc").
The last three checks are two-layer checks which require a second layer. The
second layer is specified together with the measurement like this:
</p>

View File

@ -15,7 +15,7 @@
connectivity (<a href="/about/drc_ref_global.xml#connect">connect</a>,
<a href="/about/drc_ref_global.xml#connect_global">connect_global</a>,
<a href="/about/drc_ref_global.xml#connect_implicit">connect_implicit</a>) and
provided a reference netlist (<a href="/about/drc_ref_global.xml#schematic">schematic</a>),
provided a reference netlist (<a href="/about/lvs_ref_global.xml#schematic">schematic</a>),
this function will perform the actual compare:
</p>

View File

@ -148,7 +148,7 @@ X$2 VSS IN OUT SUBSTRATE NMOS PARAMS: L=0.25 W=0.9 AS=0.405 AD=0.405 PS=2.7
<p>
The main use case for reading netlists is for comparison in LVS.
Reference netlists are read with the "schematic" function
(see <a href="/about/drc_ref_global.xml#schematic">schematic</a>):
(see <a href="/about/lvs_ref_global.xml#schematic">schematic</a>):
</p>
<pre>schematic("inverter.cir")</pre>

View File

@ -30,12 +30,11 @@ module DRC
# @li \global#angle @/li
# @li \global#area @/li
# @li \global#area_ratio @/li
# @li \global#bbox_area_ratio @/li
# @li \global#bbox_aspect_ratio @/li
# @li \global#bbox_height @/li
# @li \global#bbox_max @/li
# @li \global#bbox_min @/li
# @li \global#bbox_width @/li
# @li \global#case @/li
# @li \global#corners @/li
# @li \global#covering @/li
# @li \global#enc @/li
@ -70,6 +69,7 @@ module DRC
# @li \global#smoothed @/li
# @li \global#space @/li
# @li \global#squares @/li
# @li \global#switch @/li
# @li \global#width @/li
# @li \global#with_holes @/li
# @/ul
@ -755,7 +755,7 @@ CODE
end
# %DRC%
# @name corners (in condition)
# @name corners
# @brief Applies smoothing
# @synopsis expression.corners
# @synopsis expression.corners(as_dots)

View File

@ -188,7 +188,7 @@ module DRC
# @li "\DRC#area_ratio": selects polygons based on their bounding box to polygon area ratio @/li
# @li "\DRC#bbox_aspect_ratio": selects polygons based on their bounding box aspect ratio @/li
# @li "\DRC#relative_height": selects polygons based on their relative height @/li
# @li "\DRC#bbox_min", "\global#bbox_max", "\global#bbox_width", "\global#bbox_height": selects polygons based on their bounding box properties @/li
# @li "\DRC#bbox_min", "\DRC#bbox_max", "\DRC#bbox_width", "\DRC#bbox_height": selects polygons based on their bounding box properties @/li
# @li "\DRC#length": selects edges based on their length @/li
# @li "\DRC#angle": selects edges based on their orientation @/li
# @/ul
@ -230,9 +230,9 @@ module DRC
# The predicates available currently are:
#
# @ul
# @li "\global#rectangles": Filters rectangles @/li
# @li "\global#squares": Filters squares @/li
# @li "\global#rectilinear": Filters rectilinear ("Manhattan") polygons @/li
# @li "\DRC#rectangles": Filters rectangles @/li
# @li "\DRC#squares": Filters squares @/li
# @li "\DRC#rectilinear": Filters rectilinear ("Manhattan") polygons @/li
# @/ul
#
# For the same reason as explained above, it's recommended to use these predicates
@ -669,7 +669,7 @@ CODE
# polygons in the layer.
#
# Without a layer argument, "area" represents an area filter for primary shapes in
# \DRC# expressions (see \Layer#drc and \DRC#area for more details).
# \global# expressions (see \Layer#drc and \DRC#area for more details).
# %DRC%
# @name hulls
@ -680,7 +680,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.hulls" (see \Layer#hulls). Without a layer
# argument, "hulls" represents a hull contour extractor for primary shapes in
# \DRC# expressions (see \Layer#drc and \DRC#hulls for more details).
# \DRC# expressions (see \Layer#drc and \global#hulls for more details).
# %DRC%
# @name holes
@ -715,7 +715,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.rectangles" (see \Layer#rectangles). Without a layer
# argument, "rectangles" represents the rectangles filter for primary shapes in
# \DRC# expressions (see \Layer#drc and \DRC#rectangles for more details).
# \DRC# expressions (see \Layer#drc and \global#rectangles for more details).
# %DRC%
# @name squares
@ -726,7 +726,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.squares" (see \Layer#squares). Without a layer
# argument, "squares" represents the rectangles filter for primary shapes in
# \DRC# expressions (see \Layer#drc and \DRC#squares for more details).
# \DRC# expressions (see \Layer#drc and \global#squares for more details).
# %DRC%
# @name rectilinear
@ -737,10 +737,10 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.rectilinear" (see \Layer#rectilinear). Without a layer
# argument, "rectilinear" represents the rectilinear polygons filter for primary shapes in
# \DRC# expressions (see \Layer#drc and \DRC#rectilinear for more details).
# \DRC# expressions (see \Layer#drc and \global#rectilinear for more details).
# %DRC%
# @name length (in condition)
# @name length
# @brief Computes the total edge length of an edge layer or in universal DRC context: selects edges based on a length condition
# @synopsis length (in condition)
# @synopsis length(layer)
@ -752,7 +752,7 @@ CODE
# the operation acts similar to \Layer#with_length.
# %DRC%
# @name angle (in condition)
# @name angle
# @brief In universal DRC context: selects edges based on their orientation
# @synopsis angle (in condition)
#
@ -788,7 +788,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.corners" (see \Layer#corners). Without a layer
# argument, "corners" represents the corner generator/filter in primary shapes for
# \DRC# expressions (see \Layer#drc and \DRC#corners for more details).
# \DRC# expressions (see \Layer#drc and \global#corners for more details).
#
# Like the layer-based version, the "corners" operator accepts the
# output type option: "as_dots" for dot-like edges, "as_boxes" for
@ -812,7 +812,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.extent_refs" (see \Layer#extent_refs). Without a layer
# argument, "extent_refs" represents the partial extents extractor on primary shapes within
# \DRC# expressions (see \Layer#drc and \DRC#extent_refs for more details).
# \DRC# expressions (see \Layer#drc and \global#extent_refs for more details).
# %DRC%
# @name extents
@ -823,7 +823,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.extents" (see \Layer#extents). Without a layer
# argument, "extents" represents the extents generator on primary shapes within
# \DRC# expressions (see \Layer#drc and \DRC#extents for more details).
# \DRC# expressions (see \Layer#drc and \global#extents for more details).
# %DRC%
# @name middle
@ -834,7 +834,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.middle" (see \Layer#middle). Without a layer
# argument, "middle" represents the bounding box center marker generator on primary shapes within
# \DRC# expressions (see \Layer#drc and \DRC#middle for more details).
# \DRC# expressions (see \Layer#drc and \global#middle for more details).
# %DRC%
# @name rounded_corners
@ -845,7 +845,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.rounded_corners" (see \Layer#rounded_corners). Without a layer
# argument, "rounded_corners" represents the corner rounding algorithm on primary shapes within
# \DRC# expressions (see \Layer#drc and \DRC#rounded_corners for more details).
# \DRC# expressions (see \Layer#drc and \global#rounded_corners for more details).
# %DRC%
# @name sized
@ -858,7 +858,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.sized" (see \Layer#sized). Without a layer
# argument, "sized" represents the polygon sizer on primary shapes within
# \DRC# expressions (see \Layer#drc and \DRC#sized for more details).
# \DRC# expressions (see \Layer#drc and \global#sized for more details).
# %DRC%
# @name smoothed
@ -869,7 +869,7 @@ CODE
# This function can be used with a layer argument. In this case it
# is equivalent to "layer.smoothed" (see \Layer#smoothed). Without a layer
# argument, "smoothed" represents the polygon smoother on primary shapes within
# \DRC# expressions (see \Layer#drc and \DRC#smoothed for more details).
# \DRC# expressions (see \Layer#drc and \global#smoothed for more details).
%w(
extent_refs
@ -896,7 +896,7 @@ CODE
# which entirely cover shapes from the other layer. This version can be put into
# a condition indicating how many shapes of the other layer need to be covered.
# Use this operator within \DRC# expressions (also see \Layer#drc). If can be used
# as method to an expression. See there for more details: \DRC#covering.
# as method to an expression. See there for more details: \global#covering.
# %DRC%
# @name interacting
@ -907,7 +907,7 @@ CODE
# which interact with shapes from the other layer. This version can be put into
# a condition indicating how many shapes of the other layer need to be covered.
# Use this operator within \DRC# expressions (also see \Layer#drc). If can be used
# as method to an expression. See there for more details: \DRC#interacting.
# as method to an expression. See there for more details: \global#interacting.
# %DRC%
# @name overlapping
@ -918,7 +918,7 @@ CODE
# which overlap shapes from the other layer. This version can be put into
# a condition indicating how many shapes of the other layer need to be covered.
# Use this operator within \DRC# expressions (also see \Layer#drc). If can be used
# as method to an expression. See there for more details: \DRC#overlapping.
# as method to an expression. See there for more details: \global#overlapping.
# %DRC%
# @name inside
@ -928,7 +928,7 @@ CODE
# This operator represents the selector of primary shapes
# which are inside shapes from the other layer.
# Use this operator within \DRC# expressions (also see \Layer#drc). If can be used
# as method to an expression. See there for more details: \DRC#inside.
# as method to an expression. See there for more details: \global#inside.
# %DRC%
# @name outside
@ -938,7 +938,7 @@ CODE
# This operator represents the selector of primary shapes
# which are outside shapes from the other layer.
# Use this operator within \DRC# expressions (also see \Layer#drc). If can be used
# as method to an expression. See there for more details: \DRC#outside.
# as method to an expression. See there for more details: \global#outside.
%w(
covering
@ -961,7 +961,7 @@ CODE
#
# "with_holes" represents a polygon selector for
# \DRC# expressions selecting polygons of the primary by their number of holes
# (see \Layer#drc and \DRC#with_holes for more details).
# (see \Layer#drc and \global#with_holes for more details).
def with_holes
primary.with_holes

View File

@ -783,9 +783,9 @@ module DRC
# tile. In order words, when processing a tile, shapes within the border distance
# participate in the operations.
#
# For some operations such as booleans (\and, \or, ...), \size and the DRC functions (\width, \space, ...)
# a tile border is automatically established. For other operations such as \with_area
# or \edges, the exact distance is unknown, because such operations may have a long range.
# For some operations such as booleans (\Layer#and, \Layer#or, ...), \Layer#size and the DRC functions (\Layer#width, \Layer#space, ...)
# a tile border is automatically established. For other operations such as \Layer#with_area
# or \Layer#edges, the exact distance is unknown, because such operations may have a long range.
# In that cases, no border is used. The tile_borders function may be used to specify a minimum border
# which is used in that case. That allows taking into account at least shapes within the
# given range, although not necessarily all.
@ -1917,7 +1917,6 @@ CODE
select_not_overlapping
select_outside
select_overlapping
select_touching
size
sized
smoothed
@ -1937,7 +1936,7 @@ CODE
with_area
with_area_ratio
with_bbox_area
with_bbox_area_ratio
with_bbox_aspect_ratio
with_bbox_height
with_bbox_max
with_bbox_min
@ -1948,7 +1947,7 @@ CODE
without_area
without_area_ratio
without_bbox
without_bbox_area_ratio
without_bbox_aspect_ratio
without_bbox_height
without_bbox_max
without_bbox_min

View File

@ -302,7 +302,7 @@ module DRC
# A high \count to hier_count (flat to hierarchical) ratio is an indication
# of a good hierarchical compression.
# "hier_count" applies only to original layers without clip regions or
# cell filters and to layers in \deep mode. Otherwise, hier_count gives
# cell filters and to layers in \global#deep mode. Otherwise, hier_count gives
# the same value than \count.
def hier_count
@ -901,7 +901,7 @@ CODE
# one edge does not match the criterion. The logical opposite of "one edge matches" however is
# "both edges do not match".
#
# The following images demonstrate some use cases of \with_angle and \without_angle:
# The following images demonstrate some use cases of \with_angle and \without_angle :
#
# @table
# @tr
@ -1107,14 +1107,14 @@ CODE
# @synopsis layer.texts(p)
# @synopsis layer.texts([ options ])
# This method can be applied to original layers - i.e. ones that have
# been created with \input. By default, a small box (2x2 DBU) will be produced on each
# been created with \global#input. By default, a small box (2x2 DBU) will be produced on each
# selected text. By using the "as_dots" option, degenerated point-like edges will be
# produced.
#
# The preferred method however is to use true text layers created with \labels.
# The preferred method however is to use true text layers created with \global#labels.
# In this case, without specifying "as_dots" or "as_boxes" retains the text
# objects as such a text filtering is applied. In contrast to this, layers generated
# with \input cannot maintain the text nature of the selected objects and
# with \global#input cannot maintain the text nature of the selected objects and
# produce dots or small polygon boxes in the \texts method.
#
# Texts can be selected either by exact match string or a pattern match with a
@ -1163,7 +1163,7 @@ CODE
# @synopsis layer.texts_not(p)
# @synopsis layer.texts_not([ options ])
#
# This method can be applied to true text layers obtained with \labels.
# This method can be applied to true text layers obtained with \global#labels.
# In this case, without specifying "as_dots" or "as_boxes" retains the text
# objects as such. Only text filtering is applied.
#
@ -1567,7 +1567,7 @@ CODE
# objects. RBA::Region, RBA::Edges and RBA::EdgePair objects are accepted as well and the corresponding
# content of that collections is inserted into the output layer.
#
# Other versions are available that allow translation of objects into other types (\collect_to_polygons,
# Other versions are available that allow translation of objects into other types (\collect_to_region,
# \collect_to_edges and \collect_to_edge_pairs).
#
# Because this method executes inside the interpreter, it's inherently slow. Tiling does not
@ -1645,7 +1645,7 @@ CODE
# Returns the parts of the polygons which are not orientable (i.e. "8" configuration) or self-overlapping.
# Merged semantics does not apply for this method. Always the raw polygons are taken (see \raw).
#
# The odd_polygons check is not available in deep mode currently. See \deep_reject_odd_polygons for
# The odd_polygons check is not available in deep mode currently. See \global#deep_reject_odd_polygons for
# an alternative.
def odd_polygons

View File

@ -83,8 +83,8 @@ module DRC
# layers will form bigger, electrically connected areas.
#
# Texts will be used to assign net names to the nets. The preferred
# method is to use \labels to create a text layer from a design
# layer. When using \input, text labels are carried implicitly
# method is to use \global#labels to create a text layer from a design
# layer. When using \global#input, text labels are carried implicitly
# with the polygons but at the cost of small dummy shapes (2x2 DBU
# marker polygons) and limited functionality.
#

View File

@ -1977,7 +1977,7 @@ LAYBASIC_PUBLIC Class<lay::LayoutViewBase> decl_LayoutViewBase ("lay", "LayoutVi
"@brief Sends a mouse move event\n"
"\n"
"This method is intended to emulate the mouse move events sent by Qt normally in environments where Qt is not present. "
"The arguments follow the conventions used within \\Plugin#mouse_move_event for example.\n"
"The arguments follow the conventions used within \\Plugin#mouse_moved_event for example.\n"
"\n"
"This method was introduced in version 0.28."
) +
@ -1985,7 +1985,7 @@ LAYBASIC_PUBLIC Class<lay::LayoutViewBase> decl_LayoutViewBase ("lay", "LayoutVi
"@brief Sends a mouse button press event\n"
"\n"
"This method is intended to emulate the mouse button press events sent by Qt normally in environments where Qt is not present. "
"The arguments follow the conventions used within \\Plugin#mouse_move_event for example.\n"
"The arguments follow the conventions used within \\Plugin#mouse_moved_event for example.\n"
"\n"
"This method was introduced in version 0.28."
) +
@ -1993,7 +1993,7 @@ LAYBASIC_PUBLIC Class<lay::LayoutViewBase> decl_LayoutViewBase ("lay", "LayoutVi
"@brief Sends a mouse button double-click event\n"
"\n"
"This method is intended to emulate the mouse button double-click events sent by Qt normally in environments where Qt is not present. "
"The arguments follow the conventions used within \\Plugin#mouse_move_event for example.\n"
"The arguments follow the conventions used within \\Plugin#mouse_moved_event for example.\n"
"\n"
"This method was introduced in version 0.28."
) +
@ -2001,7 +2001,7 @@ LAYBASIC_PUBLIC Class<lay::LayoutViewBase> decl_LayoutViewBase ("lay", "LayoutVi
"@brief Sends a mouse button release event\n"
"\n"
"This method is intended to emulate the mouse button release events sent by Qt normally in environments where Qt is not present. "
"The arguments follow the conventions used within \\Plugin#mouse_move_event for example.\n"
"The arguments follow the conventions used within \\Plugin#mouse_moved_event for example.\n"
"\n"
"This method was introduced in version 0.28."
) +

File diff suppressed because it is too large Load Diff

View File

@ -55,6 +55,10 @@ class PixelBuffer:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> PixelBuffer:
r"""
@brief Creates a copy of self
"""
def __eq__(self, other: object) -> bool:
r"""
@brief Returns a value indicating whether self is identical to the other image
@ -239,6 +243,10 @@ class BitmapBuffer:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> BitmapBuffer:
r"""
@brief Creates a copy of self
"""
def __eq__(self, other: object) -> bool:
r"""
@brief Returns a value indicating whether self is identical to the other image
@ -395,6 +403,10 @@ class MacroExecutionContext:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> MacroExecutionContext:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -635,6 +647,10 @@ class MacroInterpreter:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> MacroInterpreter:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -1635,6 +1651,10 @@ class LayerProperties:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> LayerProperties:
r"""
@brief Creates a copy of self
"""
def __eq__(self, other: object) -> bool:
r"""
@brief Equality
@ -2221,6 +2241,11 @@ class LayerPropertiesNodeRef(LayerPropertiesNode):
@brief Creates a \LayerPropertiesNode object as a copy of the content of this node.
This method is mainly provided for backward compatibility with 0.24 and before.
"""
def __deepcopy__(self) -> LayerPropertiesNode:
r"""
@brief Creates a \LayerPropertiesNode object as a copy of the content of this node.
This method is mainly provided for backward compatibility with 0.24 and before.
"""
def _assign(self, other: LayerProperties) -> None:
r"""
@brief Assigns another object to self
@ -2271,14 +2296,14 @@ class LayerPropertiesNodeRef(LayerPropertiesNode):
r"""
@brief Assigns the contents of the 'other' object to self.
This version accepts a \LayerPropertiesNode object and allows modification of the layer node's hierarchy. Assignment will reconfigure the layer node in the view.
This version accepts a \LayerProperties object. Assignment will change the properties of the layer in the view.
"""
@overload
def assign(self, other: LayerProperties) -> None:
r"""
@brief Assigns the contents of the 'other' object to self.
This version accepts a \LayerProperties object. Assignment will change the properties of the layer in the view.
This version accepts a \LayerPropertiesNode object and allows modification of the layer node's hierarchy. Assignment will reconfigure the layer node in the view.
"""
def delete(self) -> None:
r"""
@ -2317,6 +2342,10 @@ class LayerPropertiesIterator:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> LayerPropertiesIterator:
r"""
@brief Creates a copy of self
"""
def __eq__(self, other: object) -> bool:
r"""
@brief Equality
@ -2562,12 +2591,12 @@ class LayoutViewBase:
@overload
def __eq__(self, other: object) -> bool:
r"""
@brief Compares an enum with an integer value
@brief Compares two enums
"""
@overload
def __eq__(self, other: object) -> bool:
r"""
@brief Compares two enums
@brief Compares an enum with an integer value
"""
@overload
def __init__(self, i: int) -> None:
@ -2592,12 +2621,12 @@ class LayoutViewBase:
@overload
def __ne__(self, other: object) -> bool:
r"""
@brief Compares two enums for inequality
@brief Compares an enum with an integer for inequality
"""
@overload
def __ne__(self, other: object) -> bool:
r"""
@brief Compares an enum with an integer for inequality
@brief Compares two enums for inequality
"""
def __repr__(self) -> str:
r"""
@ -2865,6 +2894,24 @@ class LayoutViewBase:
@brief A event indicating that annotations have been added or removed
This event has been added in version 0.25.
"""
on_apply_technology: None
r"""
Getter:
@brief An event indicating that a cellview has requested a new technology
If the technology of a cellview is changed, this event is triggered.
The integer parameter of this event will indicate the cellview that has changed.
This event has been introduced in version 0.28.
Setter:
@brief An event indicating that a cellview has requested a new technology
If the technology of a cellview is changed, this event is triggered.
The integer parameter of this event will indicate the cellview that has changed.
This event has been introduced in version 0.28.
"""
on_cell_visibility_changed: None
r"""
Getter:
@ -3873,6 +3920,16 @@ class LayoutViewBase:
r"""
@brief Hides the given cell for the given cellview
"""
def icon_for_layer(self, iter: LayerPropertiesIterator, w: int, h: int, dpr: float, di_off: Optional[int] = ..., no_state: Optional[bool] = ...) -> PixelBuffer:
r"""
@brief Creates an icon pixmap for the given layer.
The icon will have size w times h pixels multiplied by the device pixel ratio (dpr). The dpr is The number of physical pixels per logical pixels on high-DPI displays.
'di_off' will shift the dither pattern by the given number of (physical) pixels. If 'no_state' is true, the icon will not reflect visibility or validity states but rather the display style.
This method has been introduced in version 0.28.
"""
def image(self, id: int) -> Image:
r"""
@brief Gets the image given by an ID
@ -4895,6 +4952,10 @@ class CellView:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> CellView:
r"""
@brief Creates a copy of self
"""
def __eq__(self, other: object) -> bool:
r"""
@brief Equality: indicates whether the cellviews refer to the same one
@ -5677,11 +5738,11 @@ class ActionBase:
def icon(self) -> None:
r"""
WARNING: This variable can only be set, not retrieved.
@brief Sets the icon to the given image file
@brief Sets the icon to the given \QIcon object
@param file The image file to load for the icon
@param qicon The QIcon object
Passing an empty string will reset the icon.
This variant has been added in version 0.28.
"""
icon_text: str
r"""
@ -6398,6 +6459,10 @@ class Cursor:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> Cursor:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -6516,6 +6581,10 @@ class ButtonState:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> ButtonState:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -6670,6 +6739,10 @@ class KeyCode:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> KeyCode:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -6900,6 +6973,10 @@ class DoubleValue:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> DoubleValue:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -7003,6 +7080,10 @@ class IntValue:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> IntValue:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -7106,6 +7187,10 @@ class StringValue:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> StringValue:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -7213,6 +7298,10 @@ class StringListValue:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> StringListValue:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -7516,6 +7605,10 @@ class BrowserSource_Native:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> BrowserSource_Native:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -7631,6 +7724,10 @@ class BrowserSource:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> BrowserSource:
r"""
@brief Creates a copy of self
"""
def __init__(self, arg0: str) -> None:
r"""
@brief Constructs a BrowserSource object with a default HTML string
@ -8027,6 +8124,10 @@ class InputDialog:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> InputDialog:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -8224,6 +8325,10 @@ class FileDialog:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> FileDialog:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -8417,6 +8522,10 @@ class MessageBox(QMainWindow_Native):
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> MessageBox:
r"""
@brief Creates a copy of self
"""
def _create(self) -> None:
r"""
@brief Ensures the C++ object is created
@ -8519,6 +8628,10 @@ class NetlistObjectPath:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> NetlistObjectPath:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -8615,6 +8728,10 @@ class NetlistObjectsPath:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> NetlistObjectsPath:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -9103,6 +9220,10 @@ class BasicAnnotation:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> BasicAnnotation:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -9305,6 +9426,13 @@ class Annotation(BasicAnnotation):
@brief Gets the vertical angle code for use with the \angle_constraint method
If this value is specified for the angle constraint, only vertical rulers are allowed.
"""
OutlineAngle: ClassVar[int]
r"""
@brief Gets the angle measurement ruler outline code for use with the \outline method
When this outline style is specified, the ruler is drawn to indicate the angle between the first and last segment.
This constant has been introduced in version 0.28.
"""
OutlineBox: ClassVar[int]
r"""
@brief Gets the box outline code for use with the \outline method
@ -9333,6 +9461,13 @@ class Annotation(BasicAnnotation):
This constant has been introduced in version 0.26.
"""
OutlineRadius: ClassVar[int]
r"""
@brief Gets the radius measurement ruler outline code for use with the \outline method
When this outline style is specified, the ruler is drawn to indicate a radius defined by at least three points of the ruler.
This constant has been introduced in version 0.28.
"""
OutlineXY: ClassVar[int]
r"""
@brief Gets the xy outline code for use with the \outline method
@ -9375,6 +9510,7 @@ class Annotation(BasicAnnotation):
r"""
@brief Specifies auto-metric ruler mode for the \register_template method
In auto-metric mode, a ruler can be placed with a single click and p1/p2 will be determined from the neighborhood.
This constant has been introduced in version 0.25
"""
RulerModeNormal: ClassVar[int]
@ -9387,8 +9523,23 @@ class Annotation(BasicAnnotation):
r"""
@brief Specifies single-click ruler mode for the \register_template method
In single click-mode, a ruler can be placed with a single click and p1 will be == p2.
This constant has been introduced in version 0.25
"""
RulerMultiSegment: ClassVar[int]
r"""
@brief Specifies multi-segment mode
In multi-segment mode, multiple segments can be created. The ruler is finished with a double click.
This constant has been introduced in version 0.28
"""
RulerThreeClicks: ClassVar[int]
r"""
@brief Specifies three-click ruler mode for the \register_template method
In this ruler mode, two segments are created for angle and circle radius measurements. Three mouse clicks are required.
This constant has been introduced in version 0.28
"""
StyleArrowBoth: ClassVar[int]
r"""
@brief Gets the both arrow ends style code for use the \style method
@ -9543,22 +9694,47 @@ class Annotation(BasicAnnotation):
Getter:
@brief Gets the first point of the ruler or marker
The points of the ruler or marker are always given in micron units in floating-point coordinates.
This method is provided for backward compatibility. Starting with version 0.28, rulers can be multi-segmented. Use \points or \seg_p1 to retrieve the points of the ruler segments.
@return The first point
Setter:
@brief Sets the first point of the ruler or marker
The points of the ruler or marker are always given in micron units in floating-point coordinates.
This method is provided for backward compatibility. Starting with version 0.28, rulers can be multi-segmented. Use \points= to specify the ruler segments.
"""
p2: db.DPoint
r"""
Getter:
@brief Gets the second point of the ruler or marker
The points of the ruler or marker are always given in micron units in floating-point coordinates.
This method is provided for backward compatibility. Starting with version 0.28, rulers can be multi-segmented. Use \points or \seg_p1 to retrieve the points of the ruler segments.
@return The second point
Setter:
@brief Sets the second point of the ruler or marker
The points of the ruler or marker are always given in micron units in floating-point coordinates.
This method is provided for backward compatibility. Starting with version 0.28, rulers can be multi-segmented. Use \points= to specify the ruler segments.
"""
points: List[db.DPoint]
r"""
Getter:
@brief Gets the points of the ruler
A single-segmented ruler has two points. Rulers with more points have more segments correspondingly. Note that the point list may have one point only (single-point ruler) or may even be empty.
Use \points= to set the segment points. Use \segments to get the number of segments and \seg_p1 and \seg_p2 to get the first and second point of one segment.
Multi-segmented rulers have been introduced in version 0.28
Setter:
@brief Sets the points for a (potentially) multi-segmented ruler
See \points for a description of multi-segmented rulers. The list of points passed to this method is cleaned from duplicates before being stored inside the ruler.
This method has been introduced in version 0.28.
"""
snap: bool
r"""
@ -9631,85 +9807,12 @@ class Annotation(BasicAnnotation):
This method has been introduced in version 0.25
"""
@classmethod
def angle_any(cls) -> int:
def from_s(cls, s: str) -> Annotation:
r"""
@brief Gets the any angle code for use with the \angle_constraint method
If this value is specified for the angle constraint, all angles will be allowed.
"""
@classmethod
def angle_diagonal(cls) -> int:
r"""
@brief Gets the diagonal angle code for use with the \angle_constraint method
If this value is specified for the angle constraint, only multiples of 45 degree are allowed.
"""
@classmethod
def angle_global(cls) -> int:
r"""
@brief Gets the global angle code for use with the \angle_constraint method.
This code will tell the ruler or marker to use the angle constraint defined globally.
"""
@classmethod
def angle_horizontal(cls) -> int:
r"""
@brief Gets the horizontal angle code for use with the \angle_constraint method
If this value is specified for the angle constraint, only horizontal rulers are allowed.
"""
@classmethod
def angle_ortho(cls) -> int:
r"""
@brief Gets the ortho angle code for use with the \angle_constraint method
If this value is specified for the angle constraint, only multiples of 90 degree are allowed.
"""
@classmethod
def angle_vertical(cls) -> int:
r"""
@brief Gets the vertical angle code for use with the \angle_constraint method
If this value is specified for the angle constraint, only vertical rulers are allowed.
"""
@classmethod
def outline_box(cls) -> int:
r"""
@brief Gets the box outline code for use with the \outline method
When this outline style is specified, a box is drawn with the corners specified by the start and end point. All box edges are drawn in the style specified with the \style attribute.
"""
@classmethod
def outline_diag(cls) -> int:
r"""
@brief Gets the diagonal output code for use with the \outline method
When this outline style is specified, a line connecting start and end points in the given style (ruler, arrow or plain line) is drawn.
"""
@classmethod
def outline_diag_xy(cls) -> int:
r"""
@brief Gets the xy plus diagonal outline code for use with the \outline method
@brief outline_xy code used by the \outline method
When this outline style is specified, three lines are drawn: one horizontal from left to right and attached to the end of that a line from the bottom to the top. Another line is drawn connecting the start and end points directly. The lines are drawn in the specified style (see \style method).
"""
@classmethod
def outline_diag_yx(cls) -> int:
r"""
@brief Gets the yx plus diagonal outline code for use with the \outline method
When this outline style is specified, three lines are drawn: one vertical from bottom to top and attached to the end of that a line from the left to the right. Another line is drawn connecting the start and end points directly. The lines are drawn in the specified style (see \style method).
"""
@classmethod
def outline_ellipse(cls) -> int:
r"""
@brief Gets the ellipse outline code for use with the \outline method
When this outline style is specified, an ellipse is drawn with the extensions specified by the start and end point. The contour drawn as a line.
@brief Creates a ruler from a string representation
This function creates a ruler from the string returned by \to_s.
This constant has been introduced in version 0.26.
"""
@classmethod
def outline_xy(cls) -> int:
r"""
@brief Gets the xy outline code for use with the \outline method
When this outline style is specified, two lines are drawn: one horizontal from left to right and attached to the end of that a line from the bottom to the top. The lines are drawn in the specified style (see \style method).
"""
@classmethod
def outline_yx(cls) -> int:
r"""
@brief Gets the yx outline code for use with the \outline method
When this outline style is specified, two lines are drawn: one vertical from bottom to top and attached to the end of that a line from the left to the right. The lines are drawn in the specified style (see \style method).
This method was introduced in version 0.28.
"""
@classmethod
def register_template(cls, annotation: BasicAnnotation, title: str, mode: Optional[int] = ...) -> None:
@ -9728,60 +9831,6 @@ class Annotation(BasicAnnotation):
This method has been added in version 0.25.
"""
@classmethod
def style_arrow_both(cls) -> int:
r"""
@brief Gets the both arrow ends style code for use the \style method
When this style is specified, a two-headed arrow is drawn.
"""
@classmethod
def style_arrow_end(cls) -> int:
r"""
@brief Gets the end arrow style code for use the \style method
When this style is specified, an arrow is drawn pointing from the start to the end point.
"""
@classmethod
def style_arrow_start(cls) -> int:
r"""
@brief Gets the start arrow style code for use the \style method
When this style is specified, an arrow is drawn pointing from the end to the start point.
"""
@classmethod
def style_cross_both(cls) -> int:
r"""
@brief Gets the line style code for use with the \style method
When this style is specified, a cross is drawn at both points.
This constant has been added in version 0.26.
"""
@classmethod
def style_cross_end(cls) -> int:
r"""
@brief Gets the line style code for use with the \style method
When this style is specified, a cross is drawn at the end point.
This constant has been added in version 0.26.
"""
@classmethod
def style_cross_start(cls) -> int:
r"""
@brief Gets the line style code for use with the \style method
When this style is specified, a cross is drawn at the start point.
This constant has been added in version 0.26.
"""
@classmethod
def style_line(cls) -> int:
r"""
@brief Gets the line style code for use with the \style method
When this style is specified, a plain line is drawn.
"""
@classmethod
def style_ruler(cls) -> int:
r"""
@brief Gets the ruler style code for use the \style method
When this style is specified, the annotation will show a ruler with some ticks at distances indicating a decade of units and a suitable subdivision into minor ticks at intervals of 1, 2 or 5 units.
"""
@classmethod
def unregister_templates(cls, category: str) -> None:
r"""
@brief Unregisters the template or templates with the given category string globally
@ -9883,17 +9932,42 @@ class Annotation(BasicAnnotation):
This method was introduced in version 0.25.
"""
def text(self) -> str:
def seg_p1(self, segment_index: int) -> db.DPoint:
r"""
@brief Gets the first point of the given segment.
The segment is indicated by the segment index which is a number between 0 and \segments-1.
This method has been introduced in version 0.28.
"""
def seg_p2(self, segment_index: int) -> db.DPoint:
r"""
@brief Gets the second point of the given segment.
The segment is indicated by the segment index which is a number between 0 and \segments-1.
The second point of a segment is also the first point of the following segment if there is one.
This method has been introduced in version 0.28.
"""
def segments(self) -> int:
r"""
@brief Gets the number of segments.
This method returns the number of segments the ruler is made up. Even though the ruler can be one or even zero points, the number of segments is at least 1.
This method has been introduced in version 0.28.
"""
def text(self, index: Optional[int] = ...) -> str:
r"""
@brief Returns the formatted text for the main label
The index parameter indicates which segment to use (0 is the first one). It has been added in version 0.28.
"""
def text_x(self) -> str:
def text_x(self, index: Optional[int] = ...) -> str:
r"""
@brief Returns the formatted text for the x-axis label
The index parameter indicates which segment to use (0 is the first one). It has been added in version 0.28.
"""
def text_y(self) -> str:
def text_y(self, index: Optional[int] = ...) -> str:
r"""
@brief Returns the formatted text for the y-axis label
The index parameter indicates which segment to use (0 is the first one). It has been added in version 0.28.
"""
def to_s(self) -> str:
r"""
@ -10088,6 +10162,10 @@ class ObjectInstPath:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> ObjectInstPath:
r"""
@brief Creates a copy of self
"""
def __eq__(self, b: object) -> bool:
r"""
@brief Equality of two ObjectInstPath objects
@ -10419,6 +10497,10 @@ class ImageDataMapping:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> ImageDataMapping:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Create a new data mapping object with default settings
@ -10568,6 +10650,10 @@ class BasicImage:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> BasicImage:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class

View File

@ -35,6 +35,10 @@ class RdbReference:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> RdbReference:
r"""
@brief Creates a copy of self
"""
def __init__(self, trans: db.DCplxTrans, parent_cell_id: int) -> None:
r"""
@brief Creates a reference with a given transformation and parent cell ID
@ -378,23 +382,23 @@ class RdbCategory:
@return The category ID
"""
@overload
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, edge_pairs: db.EdgePairs, flat: Optional[bool] = ...) -> None:
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, edge_pairs: db.EdgePairs, flat: Optional[bool] = ..., with_properties: Optional[bool] = ...) -> None:
r"""
@brief Turns the given edge pair collection into a hierarchical or flat report database
This a another flavour of \scan_collection accepting an edge pair collection.
This method has been introduced in version 0.26.
This method has been introduced in version 0.26. The 'with_properties' argument has been added in version 0.28.
"""
@overload
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, edges: db.Edges, flat: Optional[bool] = ...) -> None:
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, edges: db.Edges, flat: Optional[bool] = ..., with_properties: Optional[bool] = ...) -> None:
r"""
@brief Turns the given edge collection into a hierarchical or flat report database
This a another flavour of \scan_collection accepting an edge collection.
This method has been introduced in version 0.26.
This method has been introduced in version 0.26. The 'with_properties' argument has been added in version 0.28.
"""
@overload
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, region: db.Region, flat: Optional[bool] = ...) -> None:
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, region: db.Region, flat: Optional[bool] = ..., with_properties: Optional[bool] = ...) -> None:
r"""
@brief Turns the given region into a hierarchical or flat report database
The exact behavior depends on the nature of the region. If the region is a hierarchical (original or deep) region and the 'flat' argument is false, this method will produce a hierarchical report database in the given category. The 'cell_id' parameter is ignored in this case. Sample references will be produced to supply minimal instantiation information.
@ -403,30 +407,19 @@ class RdbCategory:
The transformation argument needs to supply the dbu-to-micron transformation.
This method has been introduced in version 0.26.
"""
@overload
def scan_layer(self, layout: db.Layout, layer: int) -> None:
r"""
@brief Scans a layer from a layout into this category
Creates RDB items for each polygon or edge shape read from the each cell in the layout on the given layer and puts them into this category.
New cells will be generated for every cell encountered in the layout.
Other settings like database unit, description, top cell etc. are not made in the RDB.
If 'with_properties' is true, user properties will be turned into tagged values as well.
This method has been introduced in version 0.23.
This method has been introduced in version 0.26. The 'with_properties' argument has been added in version 0.28.
"""
@overload
def scan_layer(self, layout: db.Layout, layer: int, cell: db.Cell) -> None:
def scan_collection(self, cell: RdbCell, trans: db.CplxTrans, texts: db.Texts, flat: Optional[bool] = ..., with_properties: Optional[bool] = ...) -> None:
r"""
@brief Scans a layer from a layout into this category, starting with a given cell
Creates RDB items for each polygon or edge shape read from the cell and it's children in the layout on the given layer and puts them into this category.
New cells will be generated when required.
Other settings like database unit, description, top cell etc. are not made in the RDB.
@brief Turns the given edge pair collection into a hierarchical or flat report database
This a another flavour of \scan_collection accepting a text collection.
This method has been introduced in version 0.23.
This method has been introduced in version 0.28.
"""
@overload
def scan_layer(self, layout: db.Layout, layer: int, cell: db.Cell, levels: int) -> None:
def scan_layer(self, layout: db.Layout, layer: int, cell: Optional[db.Cell] = ..., levels: Optional[int] = ..., with_properties: Optional[bool] = ...) -> None:
r"""
@brief Scans a layer from a layout into this category, starting with a given cell and a depth specification
Creates RDB items for each polygon or edge shape read from the cell and it's children in the layout on the given layer and puts them into this category.
@ -434,16 +427,20 @@ class RdbCategory:
"levels" is the number of hierarchy levels to take the child cells from. 0 means to use only "cell" and don't descend, -1 means "all levels".
Other settings like database unit, description, top cell etc. are not made in the RDB.
This method has been introduced in version 0.23.
If 'with_properties' is true, user properties will be turned into tagged values as well.
This method has been introduced in version 0.23. The 'with_properties' argument has been added in version 0.28.
"""
def scan_shapes(self, iter: db.RecursiveShapeIterator, flat: Optional[bool] = ...) -> None:
def scan_shapes(self, iter: db.RecursiveShapeIterator, flat: Optional[bool] = ..., with_properties: Optional[bool] = ...) -> None:
r"""
@brief Scans the polygon or edge shapes from the shape iterator into the category
Creates RDB items for each polygon or edge shape read from the iterator and puts them into this category.
A similar, but lower-level method is \ReportDatabase#create_items with a \RecursiveShapeIterator argument.
In contrast to \ReportDatabase#create_items, 'scan_shapes' can also produce hierarchical databases if the \flat argument is false. In this case, the hierarchy the recursive shape iterator traverses is copied into the report database using sample references.
This method has been introduced in version 0.23. The flat mode argument has been added in version 0.26.
If 'with_properties' is true, user properties will be turned into tagged values as well.
This method has been introduced in version 0.23. The flat mode argument has been added in version 0.26. The 'with_properties' argument has been added in version 0.28.
"""
class RdbItemValue:
@ -533,6 +530,10 @@ class RdbItemValue:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> RdbItemValue:
r"""
@brief Creates a copy of self
"""
@overload
def __init__(self, b: db.DBox) -> None:
r"""
@ -782,6 +783,10 @@ class RdbItem:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> RdbItem:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -1146,31 +1151,33 @@ class ReportDatabase:
A more convenient method that takes cell and category objects instead of ID's is the other version of \create_item.
"""
@overload
def create_item(self, cell_id: int, category_id: int, trans: db.CplxTrans, shape: db.Shape) -> None:
def create_item(self, cell_id: int, category_id: int, trans: db.CplxTrans, shape: db.Shape, with_properties: Optional[bool] = ...) -> None:
r"""
@brief Creates a new item from a single shape
This method produces an item from the given shape.
It accepts various kind of shapes, such as texts, polygons, boxes and paths and converts them to a corresponding item. The transformation argument can be used to supply the transformation that applies the database unit for example.
This method has been introduced in version 0.25.3.
This method has been introduced in version 0.25.3. The 'with_properties' argument has been added in version 0.28.
@param cell_id The ID of the cell to which the item is associated
@param category_id The ID of the category to which the item is associated
@param shape The shape to take the geometrical object from
@param trans The transformation to apply
@param with_properties If true, user properties will be turned into tagged values as well
"""
@overload
def create_items(self, cell_id: int, category_id: int, iter: db.RecursiveShapeIterator) -> None:
def create_items(self, cell_id: int, category_id: int, iter: db.RecursiveShapeIterator, with_properties: Optional[bool] = ...) -> None:
r"""
@brief Creates new items from a shape iterator
This method takes the shapes from the given iterator and produces items from them.
It accepts various kind of shapes, such as texts, polygons, boxes and paths and converts them to corresponding items. This method will produce a flat version of the shapes iterated by the shape iterator. A similar method, which is intended for production of polygon or edge error layers and also provides hierarchical database construction is \RdbCategory#scan_shapes.
This method has been introduced in version 0.25.3.
This method has been introduced in version 0.25.3. The 'with_properties' argument has been added in version 0.28.
@param cell_id The ID of the cell to which the item is associated
@param category_id The ID of the category to which the item is associated
@param iter The iterator (a \RecursiveShapeIterator object) from which to take the items
@param with_properties If true, user properties will be turned into tagged values as well
"""
@overload
def create_items(self, cell_id: int, category_id: int, trans: db.CplxTrans, array: Sequence[db.EdgePair]) -> None:
@ -1223,7 +1230,7 @@ class ReportDatabase:
This method will also produce a flat version of the edge pairs inside the edge pair collection. \RdbCategory#scan_collection is a similar method which also supports construction of hierarchical databases from deep edge pair collections.
This method has been introduced in version 0.23.
This method has been introduced in version 0.23. It has been deprecated in favor of \RdbCategory#scan_collection in version 0.28.
@param cell_id The ID of the cell to which the item is associated
@param category_id The ID of the category to which the item is associated
@ -1239,7 +1246,7 @@ class ReportDatabase:
This method will also produce a flat version of the edges inside the edge collection. \RdbCategory#scan_collection is a similar method which also supports construction of hierarchical databases from deep edge collections.
This method has been introduced in version 0.23.
This method has been introduced in version 0.23. It has been deprecated in favor of \RdbCategory#scan_collection in version 0.28.
@param cell_id The ID of the cell to which the item is associated
@param category_id The ID of the category to which the item is associated
@ -1255,7 +1262,7 @@ class ReportDatabase:
This method will also produce a flat version of the shapes inside the region. \RdbCategory#scan_collection is a similar method which also supports construction of hierarchical databases from deep regions.
This method has been introduced in version 0.23.
This method has been introduced in version 0.23. It has been deprecated in favor of \RdbCategory#scan_collection in version 0.28.
@param cell_id The ID of the cell to which the item is associated
@param category_id The ID of the category to which the item is associated
@ -1263,18 +1270,19 @@ class ReportDatabase:
@param region The region (a \Region object) containing the polygons for which to create items
"""
@overload
def create_items(self, cell_id: int, category_id: int, trans: db.CplxTrans, shapes: db.Shapes) -> None:
def create_items(self, cell_id: int, category_id: int, trans: db.CplxTrans, shapes: db.Shapes, with_properties: Optional[bool] = ...) -> None:
r"""
@brief Creates new items from a shape container
This method takes the shapes from the given container and produces items from them.
It accepts various kind of shapes, such as texts, polygons, boxes and paths and converts them to corresponding items. The transformation argument can be used to supply the transformation that applies the database unit for example.
This method has been introduced in version 0.25.3.
This method has been introduced in version 0.25.3. The 'with_properties' argument has been added in version 0.28.
@param cell_id The ID of the cell to which the item is associated
@param category_id The ID of the category to which the item is associated
@param shapes The shape container from which to take the items
@param trans The transformation to apply
@param with_properties If true, user properties will be turned into tagged values as well
"""
def destroy(self) -> None:
r"""

View File

@ -12,6 +12,10 @@ class EmptyClass:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> EmptyClass:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -116,6 +120,10 @@ class Value:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> Value:
r"""
@brief Creates a copy of self
"""
@overload
def __init__(self) -> None:
r"""
@ -402,6 +410,10 @@ class ArgType:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> ArgType:
r"""
@brief Creates a copy of self
"""
def __eq__(self, arg0: object) -> bool:
r"""
@brief Equality of two types
@ -568,6 +580,10 @@ class MethodOverload:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> MethodOverload:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -675,6 +691,10 @@ class Method:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> Method:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -1012,6 +1032,10 @@ class Logger:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> Logger:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -1119,6 +1143,10 @@ class Timer:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> Timer:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -1336,6 +1364,10 @@ class AbstractProgress(Progress):
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> AbstractProgress:
r"""
@brief Creates a copy of self
"""
def __init__(self, desc: str) -> None:
r"""
@brief Creates an abstract progress reporter with the given description
@ -1446,6 +1478,10 @@ class RelativeProgress(Progress):
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> RelativeProgress:
r"""
@brief Creates a copy of self
"""
@overload
def __init__(self, desc: str, max_value: int) -> None:
r"""
@ -1600,6 +1636,10 @@ class AbsoluteProgress(Progress):
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> AbsoluteProgress:
r"""
@brief Creates a copy of self
"""
@overload
def __init__(self, desc: str) -> None:
r"""
@ -1691,6 +1731,10 @@ class ExpressionContext:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> ExpressionContext:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -1903,6 +1947,10 @@ class GlobPattern:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> GlobPattern:
r"""
@brief Creates a copy of self
"""
def __init__(self, pattern: str) -> None:
r"""
@brief Creates a new glob pattern match object
@ -1995,6 +2043,10 @@ class ExecutableBase:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> ExecutableBase:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -2246,6 +2298,10 @@ class PythonGetterSetterPair:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> PythonGetterSetterPair:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class
@ -2340,6 +2396,10 @@ class PythonFunction:
r"""
@brief Creates a copy of self
"""
def __deepcopy__(self) -> PythonFunction:
r"""
@brief Creates a copy of self
"""
def __init__(self) -> None:
r"""
@brief Creates a new object of this class

View File

@ -626,7 +626,7 @@ class Ant_TestClass < TestBase
def test_5
lv = RBA::LayoutView::new
lv.set_config("ruler-templates", "mode=normal,title=Ruler,category=_ruler,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global")
lv.set_config("ruler-templates-v2", "mode=normal,title=Ruler,category=_ruler,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global")
tpl = lv.annotation_templates
assert_equal(tpl.size, 1)

View File

@ -5,7 +5,7 @@
KLAYOUT_VERSION="0.28"
# The version used for PyPI (don't use variables here!)
KLAYOUT_PYPI_VERSION="0.28"
KLAYOUT_PYPI_VERSION="0.28-1"
# The build date
KLAYOUT_VERSION_DATE=$(date "+%Y-%m-%d")