bool MgBaseShape::_rotateHandlePoint(int index, const Point2d& pt) { if (getFlag(kMgFixedLength)) { if (getFlag(kMgRotateDisnable)) { offset(pt - getHandlePoint(index), -1); } else { Point2d basept(_extent.center()); if (!getFlag(kMgSquare)) { int baseindex = index > 0 ? index - 1 : getHandleCount() - 1; while (baseindex > 0 && isHandleFixed(baseindex)) baseindex--; basept = (getHandlePoint(baseindex)); } float a1 = (pt - basept).angle2(); float a2 = (getHandlePoint(index) - basept).angle2(); transform(Matrix2d::rotation(a1 - a2, basept)); } return true; } return false; }
bool StrIOBase::containsHandlePoint(int xp, int yp) { return getHandlePoint(xp, yp) != RSItemBase::None; }