368{
371
372
373 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(-1, 0))) >= 0 &&
374 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(-2, 0))) >= 0) {
375
376 extensionPoints << ext;
377 }
378
379 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(0, -1))) >= 0 &&
380 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(0, -2))) >= 0) {
381
382 extensionPoints << ext;
383 }
384
385 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(1, 0))) >= 0 &&
386 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(2, 0))) >= 0) {
387
388 extensionPoints << ext;
389 }
390
391 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(0, 1))) >= 0 &&
392 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(0, 2))) >= 0) {
393
394 extensionPoints << ext;
395 }
396
397 if (extensionPoints.isEmpty()) {
398
399 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(-1, -1))) >= 0 &&
400 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(-2, -2))) >= 0) {
401
402 extensionPoints << ext;
403 }
404
405 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(1, -1))) >= 0 &&
406 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(2, -2))) >= 0) {
407
408 extensionPoints << ext;
409 }
410
411 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(1, 1))) >= 0 &&
412 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(2, 2))) >= 0) {
413
414 extensionPoints << ext;
415 }
416
417 if ((ext.
near = indexesOp.tryGetValidIndex(cellPt + QPoint(-1, 1))) >= 0 &&
418 (ext.
far = indexesOp.tryGetValidIndex(cellPt + QPoint(-2, 2))) >= 0) {
419
420 extensionPoints << ext;
421 }
422 }
423
424 if (extensionPoints.isEmpty()) {
425 return false;
426 }
427
428 int numResultPoints = 0;
429 *srcPoint = indexesOp.getSrcPointForce(cellPt);
431
432 Q_FOREACH (const Private::PointExtension &ext, extensionPoints) {
433 QPointF near = transformedPoints[ext.near];
434 QPointF far = transformedPoints[ext.far];
435
436 QPointF nearSrc = originalPoints[ext.near];
437 QPointF farSrc = originalPoints[ext.far];
438
439 QPointF base1 = nearSrc - farSrc;
440 QPointF base2 = near - far;
441
442 QPointF pt = near +
444
446 numResultPoints++;
447 }
448
450
451 return true;
452}
QPointF transformAsBase(const QPointF &pt, const QPointF &base1, const QPointF &base2)