void rspfImageViewTransform::getImageToViewScale(rspfDpt& resultScale, const rspfDpt& imagePoint, const rspfDpt& deltaImagePointXY)const { rspfDpt p1 = imagePoint; rspfDpt p2(imagePoint.x + deltaImagePointXY.x, imagePoint.y); rspfDpt p3(imagePoint.x, imagePoint.y + deltaImagePointXY.y); rspfDpt transformedP1; rspfDpt transformedP2; rspfDpt transformedP3; imageToView(p1, transformedP1); imageToView(p2, transformedP2); imageToView(p3, transformedP3); rspfDpt deltaP1P2 = transformedP1 - transformedP2; rspfDpt deltaP1P3 = transformedP1 - transformedP3; double sumSquaredSqrtP1P2 = sqrt((deltaP1P2.x*deltaP1P2.x) + (deltaP1P2.y*deltaP1P2.y)); double sumSquaredSqrtP1P3 = sqrt((deltaP1P3.x*deltaP1P3.x) + (deltaP1P3.y*deltaP1P3.y)); resultScale.x = 0; resultScale.y = 0; if(sumSquaredSqrtP1P2 > FLT_EPSILON) { resultScale.x = sumSquaredSqrtP1P2/deltaImagePointXY.x; } if(sumSquaredSqrtP1P3 > FLT_EPSILON) { resultScale.y = sumSquaredSqrtP1P3/deltaImagePointXY.y; } }
void rspfImageViewTransform::getScaleChangeImageToView(rspfDpt& result, const rspfDrect& imageRect) { result.makeNan(); if(!imageRect.hasNans()) { rspfDpt vul; rspfDpt vur; rspfDpt vlr; rspfDpt vll; imageToView(imageRect.ul(), vul); imageToView(imageRect.ur(), vur); imageToView(imageRect.lr(), vlr); imageToView(imageRect.ll(), vll); if(!vul.hasNans()&& !vur.hasNans()&& !vlr.hasNans()&& !vll.hasNans()) { double deltaTop = (vul - vur).length(); double deltaBottom = (vll - vlr).length(); double deltaRight = (vur - vlr).length(); double w = imageRect.width(); double h = imageRect.height(); result.x = (deltaTop/w + deltaBottom/w)*.5; result.y = (deltaRight/h + deltaRight/h)*.5; } } }
void rspfImageViewTransform::getScaleChangeViewToImage(rspfDpt& result, const rspfDrect& viewRect) { result.makeNan(); if(!viewRect.hasNans()) { rspfDpt iul; rspfDpt iur; rspfDpt ilr; rspfDpt ill; imageToView(viewRect.ul(), iul); imageToView(viewRect.ur(), iur); imageToView(viewRect.lr(), ilr); imageToView(viewRect.ll(), ill); if(!iul.hasNans()&& !iur.hasNans()&& !ilr.hasNans()&& !ill.hasNans()) { double deltaTop = (iul - iur).length(); double deltaBottom = (ill - ilr).length(); double deltaRight = (iur - ilr).length(); double w = viewRect.width(); double h = viewRect.height(); result.x = (deltaTop/w + deltaBottom/w)*.5; result.y = (deltaRight/h + deltaRight/h)*.5; } } }
rspfDrect rspfImageViewTransform::getImageToViewBounds(const rspfDrect& imageRect)const { rspfDpt p1; rspfDpt p2; rspfDpt p3; rspfDpt p4; imageToView(imageRect.ul(), p1); imageToView(imageRect.ur(), p2); imageToView(imageRect.lr(), p3); imageToView(imageRect.ll(), p4); return rspfDrect(p1, p2, p3, p4); }
ossimDrect ossimImageViewTransform::getImageToViewBounds(const ossimDrect& imageRect)const { ossimDpt p1; ossimDpt p2; ossimDpt p3; ossimDpt p4; imageToView(imageRect.ul(), p1); imageToView(imageRect.ur(), p2); imageToView(imageRect.lr(), p3); imageToView(imageRect.ll(), p4); return ossimDrect(p1, p2, p3, p4); }
rspfDpt rspfImageViewTransform::imageToView(const rspfDpt& imagePoint)const { rspfDpt tempPt; imageToView(imagePoint, tempPt); return tempPt; }
ossimDpt ossimImageViewTransform::imageToView(const ossimDpt& imagePoint)const { ossimDpt tempPt; imageToView(imagePoint, tempPt); return tempPt; }
void ossimIvtGeomXform::groundToView(const ossimGpt& gpt, ossimDpt& viewPt) { ossimDpt ipt; viewPt.makeNan(); groundToImage(gpt, ipt); if(!ipt.hasNans()) { imageToView(ipt, viewPt); } }
void ossimImageViewTransform::getImageToViewScale(ossimDpt& resultScale, const ossimDpt& imagePoint, const ossimDpt& deltaImagePointXY)const { ossimDpt p1 = imagePoint; ossimDpt p2(imagePoint.x + deltaImagePointXY.x, imagePoint.y); ossimDpt p3(imagePoint.x, imagePoint.y + deltaImagePointXY.y); ossimDpt transformedP1; ossimDpt transformedP2; ossimDpt transformedP3; imageToView(p1, transformedP1); imageToView(p2, transformedP2); imageToView(p3, transformedP3); ossimDpt deltaP1P2 = transformedP1 - transformedP2; ossimDpt deltaP1P3 = transformedP1 - transformedP3; // now compute the distances. double sumSquaredSqrtP1P2 = sqrt((deltaP1P2.x*deltaP1P2.x) + (deltaP1P2.y*deltaP1P2.y)); double sumSquaredSqrtP1P3 = sqrt((deltaP1P3.x*deltaP1P3.x) + (deltaP1P3.y*deltaP1P3.y)); resultScale.x = 0; resultScale.y = 0; if(sumSquaredSqrtP1P2 > FLT_EPSILON) { resultScale.x = sumSquaredSqrtP1P2/deltaImagePointXY.x; } if(sumSquaredSqrtP1P3 > FLT_EPSILON) { resultScale.y = sumSquaredSqrtP1P3/deltaImagePointXY.y; } }
KisPaintInformation KisPaintingInformationBuilder::hover(const QPointF &imagePoint, const KoPointerEvent *event) { qreal perspective = calculatePerspective(imagePoint); qreal speed = m_speedSmoother->getNextSpeed(imageToView(imagePoint)); if (event) { return KisPaintInformation::createHoveringModeInfo(imagePoint, PRESSURE_DEFAULT, event->xTilt(), event->yTilt(), event->rotation(), event->tangentialPressure(), perspective, speed); } else { return KisPaintInformation::createHoveringModeInfo(imagePoint); } }
KisPaintInformation KisPaintingInformationBuilder::createPaintingInformation(KoPointerEvent *event, int timeElapsed) { QPointF adjusted = adjustDocumentPoint(event->point, m_startPoint); QPointF imagePoint = documentToImage(adjusted); qreal perspective = calculatePerspective(adjusted); qreal speed = m_speedSmoother->getNextSpeed(imageToView(imagePoint)); return KisPaintInformation(imagePoint, !m_pressureDisabled ? 1.0 : pressureToCurve(event->pressure()), event->xTilt(), event->yTilt(), event->rotation(), event->tangentialPressure(), perspective, timeElapsed, speed); }
void rspfImageViewTransform::forward(const rspfDpt& input, rspfDpt& output) const { imageToView(input, output); }
void ossimImageViewTransform::forward(const ossimDpt& input, ossimDpt& output) const { imageToView(input, output); }