| 1390 | } |
| 1391 | |
| 1392 | private int nonLineaScroll(final int dx) { |
| 1393 | final float part; |
| 1394 | |
| 1395 | if (dx < 0) { |
| 1396 | part = ((float) (-currentPageCanvasPosition)) / ((float) pageCanvasPositionMax); |
| 1397 | } else { |
| 1398 | part = ((float) currentPageCanvasPosition) / ((float) pageCanvasPositionMax); |
| 1399 | } |
| 1400 | |
| 1401 | /* |
| 1402 | * Calculate the speed |
| 1403 | */ |
| 1404 | int dxNew = dx; |
| 1405 | |
| 1406 | if (part > 0.3) { |
| 1407 | /* |
| 1408 | * Activate non-linear mode |
| 1409 | */ |
| 1410 | if (dxNew < 0) { |
| 1411 | dxNew = -dxNew; |
| 1412 | } |
| 1413 | |
| 1414 | dxNew = (int) (((-1.8 * part) + 1.9) * dxNew); |
| 1415 | |
| 1416 | if (dxNew == 0) { |
| 1417 | dxNew = 1; |
| 1418 | } |
| 1419 | |
| 1420 | if (dx < 0) { |
| 1421 | dxNew = -dxNew; |
| 1422 | } |
| 1423 | } |
| 1424 | |
| 1425 | return dxNew; |
| 1426 | } |
| 1427 | |
| 1428 | /** |
| 1429 | * Scrolls the three PageCanvases across the screen. |