diff --git a/src/doc/doc/about/drc_ref.xml b/src/doc/doc/about/drc_ref.xml
index 889c3fedcc..203941a1dc 100644
--- a/src/doc/doc/about/drc_ref.xml
+++ b/src/doc/doc/about/drc_ref.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/doc/doc/about/drc_ref_drc.xml b/src/doc/doc/about/drc_ref_drc.xml
index 7ee678ecab..7f121c94ad 100644
--- a/src/doc/doc/about/drc_ref_drc.xml
+++ b/src/doc/doc/about/drc_ref_drc.xml
@@ -1,7 +1,7 @@
-
+
@@ -358,7 +358,7 @@ The plain function is equivalent to "primary.bbox_width".
This method acts on edge expressions and delivers a specific part of each edge.
See layer#centers for details about this functionality.
-"corners" - Applies smoothing
+"corners" - Selects corners of polygons
Usage:
@@ -369,8 +369,10 @@ See layer#centers for details abo
This operation acts on polygons and selects the corners of the polygons.
It can be put into a condition to select corners by their angles. The angle of
-a corner is positive for a turn to the left if walking a polygon counterclockwise
-and negative for the turn to the right. Angles take values between -180 and 180 degree.
+a corner is positive for a turn to the left if walking a polygon clockwise
+and negative for the turn to the right. Hence positive angles indicate concave
+(inner) corners, negative ones indicate convex (outer) corners.
+Angles take values between -180 and 180 degree.
When using "as_dots" for the argument, the operation will return single-point edges at
the selected corners. With "as_boxes" (the default), small (2x2 DBU) rectangles will be
@@ -386,8 +388,8 @@ out = in.drc(primary.corners) # equivalent
The following example selects all inner corners:
-out = in.drc(corners < 0)
-out = in.drc(primary.corners < 0) # equivalent
+out = in.drc(corners > 0)
+out = in.drc(primary.corners > 0) # equivalent
The "corners" method is available as a plain function or as a method on DRC expressions.
diff --git a/src/doc/doc/about/drc_ref_global.xml b/src/doc/doc/about/drc_ref_global.xml
index 7e8b6ba825..6706516286 100644
--- a/src/doc/doc/about/drc_ref_global.xml
+++ b/src/doc/doc/about/drc_ref_global.xml
@@ -1,17 +1,12 @@
-
+
DRC Reference: Global Functions
-
-Some functions are available on global level and can be used without any object.
-Most of them are convenience functions that basically act on some default object
-or provide function-like alternatives for the methods.
-
"angle" - In universal DRC context: selects edges based on their orientation
diff --git a/src/doc/doc/about/drc_ref_layer.xml b/src/doc/doc/about/drc_ref_layer.xml
index ce8c3aa4aa..35af6a5b49 100644
--- a/src/doc/doc/about/drc_ref_layer.xml
+++ b/src/doc/doc/about/drc_ref_layer.xml
@@ -1,15 +1,12 @@
-
+
DRC Reference: Layer Object
-
-The layer object represents a collection of polygons, edges or edge pairs.
-
"&" - Boolean AND operation
@@ -268,7 +265,7 @@ deliver objects that can be converted into polygons. Such objects are of class <
This method produces markers on the corners of the polygons. An angle criterion can be given which
selects corners based on the angle of the connecting edges. Positive angles indicate a left turn
while negative angles indicate a right turn. Since polygons are oriented clockwise, positive angles
-indicate concave corners while negative ones indicate convex corners.
+indicate concave (inner) corners while negative ones indicate convex (outer) corners
The markers generated can be point-like edges or small 2x2 DBU boxes. The latter is the default.
diff --git a/src/doc/doc/about/drc_ref_netter.xml b/src/doc/doc/about/drc_ref_netter.xml
index f031499446..8fd41f6f50 100644
--- a/src/doc/doc/about/drc_ref_netter.xml
+++ b/src/doc/doc/about/drc_ref_netter.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/doc/doc/about/drc_ref_source.xml b/src/doc/doc/about/drc_ref_source.xml
index a9ab3eaabd..74d119bcb1 100644
--- a/src/doc/doc/about/drc_ref_source.xml
+++ b/src/doc/doc/about/drc_ref_source.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/doc/doc/about/lvs_ref.xml b/src/doc/doc/about/lvs_ref.xml
index 4a38dd6db2..58168f012e 100644
--- a/src/doc/doc/about/lvs_ref.xml
+++ b/src/doc/doc/about/lvs_ref.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/doc/doc/about/lvs_ref_global.xml b/src/doc/doc/about/lvs_ref_global.xml
index c262d68153..c1d2ad9149 100644
--- a/src/doc/doc/about/lvs_ref_global.xml
+++ b/src/doc/doc/about/lvs_ref_global.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/doc/doc/about/lvs_ref_netter.xml b/src/doc/doc/about/lvs_ref_netter.xml
index f5f8512039..9feef786f6 100644
--- a/src/doc/doc/about/lvs_ref_netter.xml
+++ b/src/doc/doc/about/lvs_ref_netter.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/drc/drc/built-in-macros/_drc_complex_ops.rb b/src/drc/drc/built-in-macros/_drc_complex_ops.rb
index c3674e3d2e..aa9e9e7d32 100644
--- a/src/drc/drc/built-in-macros/_drc_complex_ops.rb
+++ b/src/drc/drc/built-in-macros/_drc_complex_ops.rb
@@ -756,15 +756,17 @@ def smoothed(d, keep_hv = false)
# %DRC%
# @name corners
- # @brief Applies smoothing
+ # @brief Selects corners of polygons
# @synopsis expression.corners
# @synopsis expression.corners(as_dots)
# @synopsis expression.corners(as_boxes)
#
# This operation acts on polygons and selects the corners of the polygons.
# It can be put into a condition to select corners by their angles. The angle of
- # a corner is positive for a turn to the left if walking a polygon counterclockwise
- # and negative for the turn to the right. Angles take values between -180 and 180 degree.
+ # a corner is positive for a turn to the left if walking a polygon clockwise
+ # and negative for the turn to the right. Hence positive angles indicate concave
+ # (inner) corners, negative ones indicate convex (outer) corners.
+ # Angles take values between -180 and 180 degree.
#
# When using "as_dots" for the argument, the operation will return single-point edges at
# the selected corners. With "as_boxes" (the default), small (2x2 DBU) rectangles will be
@@ -780,8 +782,8 @@ def smoothed(d, keep_hv = false)
# The following example selects all inner corners:
#
# @code
- # out = in.drc(corners < 0)
- # out = in.drc(primary.corners < 0) # equivalent
+ # out = in.drc(corners > 0)
+ # out = in.drc(primary.corners > 0) # equivalent
# @/code
#
# The "corners" method is available as a plain function or as a method on \DRC# expressions.
diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb
index ffa80b9433..24c2cbb2e0 100644
--- a/src/drc/drc/built-in-macros/_drc_layer.rb
+++ b/src/drc/drc/built-in-macros/_drc_layer.rb
@@ -1232,7 +1232,7 @@ def _texts_impl(invert, *args)
# This method produces markers on the corners of the polygons. An angle criterion can be given which
# selects corners based on the angle of the connecting edges. Positive angles indicate a left turn
# while negative angles indicate a right turn. Since polygons are oriented clockwise, positive angles
- # indicate concave corners while negative ones indicate convex corners.
+ # indicate concave (inner) corners while negative ones indicate convex (outer) corners
#
# The markers generated can be point-like edges or small 2x2 DBU boxes. The latter is the default.
#
diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc
index 5f03940572..803cca4566 100644
--- a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc
+++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc
@@ -1117,7 +1117,7 @@ LEFDEFReaderState::read_single_map_file (const std::string &path, std::map::const_iterator l = layers.begin (); l != layers.end (); ++l) {
@@ -1176,7 +1176,7 @@ LEFDEFReaderState::read_single_map_file (const std::string &path, std::mapsecond == ViaGeometry) {
@@ -1284,7 +1284,7 @@ LEFDEFReaderState::read_single_map_file (const std::string &path, std::mapsecond == All) {
@@ -1364,21 +1364,22 @@ LEFDEFReaderState::open_layer (db::Layout &layout, const std::string &n, LayerPu
m_layers.insert (std::make_pair (std::make_pair (n, LayerDetailsKey (purpose, mask)), ll));
if (ll.empty () && ! has_fallback (purpose)) {
+ std::string msg;
if (n.empty ()) {
- tl::warn << tl::to_string (tr ("No mapping for purpose")) << " '" << purpose_to_name (purpose) << "'" << tl::noendl;
+ msg = tl::to_string (tr ("No mapping for purpose")) + " '" + purpose_to_name (purpose) + "'";
} else {
- tl::warn << tl::to_string (tr ("No mapping for layer")) << " '" << n << "', purpose '" << purpose_to_name (purpose) << "'" << tl::noendl;
+ msg = tl::to_string (tr ("No mapping for layer")) + " '" + n + "', purpose '" + purpose_to_name (purpose) + "'";
}
if (mask > 0) {
- tl::warn << tl::to_string (tr (" Mask ")) << mask << tl::noendl;
+ msg += tl::to_string (tr (" Mask ")) + tl::to_string (mask);
}
// not printing via size - too confusing?
#if 0
if (via_size != db::DVector ()) {
- tl::warn << tl::to_string (tr (" Via size ")) << via_size.to_string () << tl::noendl;
+ msg += tl::to_string (tr (" Via size ")) + via_size.to_string ();
}
#endif
- tl::warn << tl::to_string (tr (" - layer is ignored"));
+ common_reader_warn (msg + tl::to_string (tr (" - layer is ignored")));
}
return ll;