Commit e6dc1bb9e8203a183ef1a009f57efb81976f8eaa
1 parent
fb193b02
allow SelectPoints to specify which points to exclude instead of include
Showing
1 changed file
with
8 additions
and
5 deletions
openbr/plugins/template.cpp
| ... | ... | @@ -162,15 +162,18 @@ class SelectPointsTransform : public UntrainableMetadataTransform |
| 162 | 162 | { |
| 163 | 163 | Q_OBJECT |
| 164 | 164 | Q_PROPERTY(QList<int> indices READ get_indices WRITE set_indices RESET reset_indices STORED false) |
| 165 | + Q_PROPERTY(bool invert READ get_invert WRITE set_invert RESET reset_invert STORED false) // keep the points _not_ in the list | |
| 165 | 166 | BR_PROPERTY(QList<int>, indices, QList<int>()) |
| 167 | + BR_PROPERTY(bool, invert, false) | |
| 166 | 168 | |
| 167 | 169 | void projectMetadata(const File &src, File &dst) const |
| 168 | 170 | { |
| 169 | - dst = src; | |
| 170 | - QList<QPointF> origPoints = src.points(); | |
| 171 | - dst.clearPoints(); | |
| 172 | - for (int i = 0; i < indices.size(); i++) | |
| 173 | - dst.appendPoint(origPoints[indices[i]]); | |
| 171 | + const QList<QPointF> srcPoints = src.points(); | |
| 172 | + QList<QPointF> dstPoints; | |
| 173 | + for (int i=0; i<srcPoints.size(); i++) | |
| 174 | + if (indices.contains(i) ^ invert) | |
| 175 | + dstPoints.append(srcPoints[i]); | |
| 176 | + dst.setPoints(dstPoints); | |
| 174 | 177 | } |
| 175 | 178 | }; |
| 176 | 179 | ... | ... |