Commit 2aba0aa2842ab4a7da7926f395e5913043848f60
1 parent
05452b11
Updated FlipTransform
Showing
1 changed file
with
39 additions
and
1 deletions
openbr/plugins/register.cpp
| @@ -121,6 +121,24 @@ private: | @@ -121,6 +121,24 @@ private: | ||
| 121 | BR_REGISTER(Transform, AffineTransform) | 121 | BR_REGISTER(Transform, AffineTransform) |
| 122 | 122 | ||
| 123 | /*! | 123 | /*! |
| 124 | + * \ingroup initializers | ||
| 125 | + * \brief Initialize Stasm | ||
| 126 | + * \author Scott Klum \cite sklum | ||
| 127 | + */ | ||
| 128 | +class FlipInitializer : public Initializer | ||
| 129 | +{ | ||
| 130 | + Q_OBJECT | ||
| 131 | + | ||
| 132 | + void initialize() const | ||
| 133 | + { | ||
| 134 | + Globals->abbreviations.insert("FlipMUCT","Flip(from=[ 0, 1, 2, 3, 4, 5, 6, 7, 17,18,19,20,21,31,32,36,37,38,39,40,41,48,49,50,55,56,60,61,65], \ | ||
| 135 | + to=[16,15,14,13,12,11,10, 9, 26,25,24,23,22,35,34,45,44,43,42,47,46,54,53,52,59,58,64,63,67])"); | ||
| 136 | + } | ||
| 137 | +}; | ||
| 138 | + | ||
| 139 | +BR_REGISTER(Initializer, FlipInitializer) | ||
| 140 | + | ||
| 141 | +/*! | ||
| 124 | * \ingroup transforms | 142 | * \ingroup transforms |
| 125 | * \brief Flips the image about an axis. | 143 | * \brief Flips the image about an axis. |
| 126 | * \author Josh Klontz \cite jklontz | 144 | * \author Josh Klontz \cite jklontz |
| @@ -130,6 +148,8 @@ class FlipTransform : public UntrainableMetaTransform | @@ -130,6 +148,8 @@ class FlipTransform : public UntrainableMetaTransform | ||
| 130 | Q_OBJECT | 148 | Q_OBJECT |
| 131 | Q_ENUMS(Axis) | 149 | Q_ENUMS(Axis) |
| 132 | Q_PROPERTY(Axis axis READ get_axis WRITE set_axis RESET reset_axis STORED false) | 150 | Q_PROPERTY(Axis axis READ get_axis WRITE set_axis RESET reset_axis STORED false) |
| 151 | + Q_PROPERTY(QList<int> from READ get_from WRITE set_from RESET reset_from STORED false) | ||
| 152 | + Q_PROPERTY(QList<int> to READ get_to WRITE set_to RESET reset_to STORED false) | ||
| 133 | 153 | ||
| 134 | public: | 154 | public: |
| 135 | /*!< */ | 155 | /*!< */ |
| @@ -139,6 +159,8 @@ public: | @@ -139,6 +159,8 @@ public: | ||
| 139 | 159 | ||
| 140 | private: | 160 | private: |
| 141 | BR_PROPERTY(Axis, axis, Y) | 161 | BR_PROPERTY(Axis, axis, Y) |
| 162 | + BR_PROPERTY(QList<int>, from, QList<int>()) | ||
| 163 | + BR_PROPERTY(QList<int>, to, QList<int>()) | ||
| 142 | 164 | ||
| 143 | void project(const TemplateList &src, TemplateList &dst) const | 165 | void project(const TemplateList &src, TemplateList &dst) const |
| 144 | { | 166 | { |
| @@ -148,7 +170,23 @@ private: | @@ -148,7 +170,23 @@ private: | ||
| 148 | flip(src[i], buffer, axis); | 170 | flip(src[i], buffer, axis); |
| 149 | dst.append(Template(src[i].file,buffer)); | 171 | dst.append(Template(src[i].file,buffer)); |
| 150 | 172 | ||
| 151 | - dst.last().file.setPoints(QtUtils::flipPoints(dst.last().file.points(),src[i].m().rows,src[i].m().cols)); | 173 | + if (from.size() == to.size()) { |
| 174 | + QList<QPointF> flippedPoints; | ||
| 175 | + foreach(const QPointF &point, dst.last().file.points()) { | ||
| 176 | + if (axis == Y) { | ||
| 177 | + flippedPoints.append(QPointF(src[i].m().cols-point.x(),point.y())); | ||
| 178 | + } else if (axis == X) { | ||
| 179 | + flippedPoints.append(QPointF(point.x(),src[i].m().rows-point.y())); | ||
| 180 | + } else { | ||
| 181 | + flippedPoints.append(QPointF(src[i].m().cols-point.x(),src[i].m().rows-point.y())); | ||
| 182 | + } | ||
| 183 | + } | ||
| 184 | + | ||
| 185 | + for (int j=0; j<from.size(); j++) | ||
| 186 | + std::swap(flippedPoints[from[j]],flippedPoints[to[j]]); | ||
| 187 | + | ||
| 188 | + dst.last().file.setPoints(flippedPoints); | ||
| 189 | + } | ||
| 152 | } | 190 | } |
| 153 | } | 191 | } |
| 154 | 192 |