2 /* #ifdef TPD_HAVE_CALIBRATION */
4 /* #ifndef TPD_CUSTOM_CALIBRATION */
6 /* #if (defined(TPD_WARP_START) && defined(TPD_WARP_END)) */
7 /* #define TPD_DO_WARP */
9 int tpd_wb_start
[TPD_WARP_CNT
] = { 0 };
10 int tpd_wb_end
[TPD_WARP_CNT
] = { 0 };
12 void tpd_warp_calibrate(int *x
, int *y
)
15 if (wx
< tpd_wb_start
[0] && tpd_wb_start
[0] > 0) {
16 wx
= tpd_wb_start
[0] -
17 ((tpd_wb_start
[0] - wx
) * (tpd_wb_start
[0] -
18 tpd_wb_end
[0]) / (tpd_wb_start
[0]));
19 /* wx = wx*(tpd_wb_start[0]-tpd_wb_end[0])/tpd_wb_start[0]+tpd_wb_end[0]; */
20 } else if (wx
> tpd_wb_start
[2])
21 wx
= (wx
- tpd_wb_start
[2]) * (tpd_wb_end
[2] - tpd_wb_start
[2]) / (TPD_RES_X
-
25 if (wy
< tpd_wb_start
[1] && tpd_wb_start
[1] > 0)
26 wy
= tpd_wb_start
[1] -
27 ((tpd_wb_start
[1] - wy
) * (tpd_wb_start
[1] -
28 tpd_wb_end
[1]) / (tpd_wb_start
[1]));
29 /* wy = wy*(tpd_wb_start[1]-tpd_wb_end[1])/tpd_wb_start[1]+tpd_wb_end[1]; */
30 else if (wy
> tpd_wb_start
[3] && wy
<= TPD_RES_Y
)
31 wy
= (wy
- tpd_wb_start
[3]) * (tpd_wb_end
[3] - tpd_wb_start
[3]) / (TPD_RES_Y
-
42 /* #define tpd_warp_calibrate(x,y) */
45 void tpd_calibrate(int *x
, int *y
)
48 if (tpd_calmat
[0] == 0)
49 for (i
= 0; i
< 6; i
++)
50 tpd_calmat
[i
] = tpd_def_calmat
[i
];
51 /* ================ calibrating ================ */
52 tx
= ((tpd_calmat
[0] * (*x
)) + (tpd_calmat
[1] * (*y
)) + (tpd_calmat
[2])) >> 12;
53 *y
= ((tpd_calmat
[3] * (*x
)) + (tpd_calmat
[4] * (*y
)) + (tpd_calmat
[5])) >> 12;
57 tpd_warp_calibrate(x
, y
);
58 *x
= (*x
) + ((*y
) * (*x
) * tpd_calmat
[6] / TPD_RES_X
) / TPD_RES_Y
;
59 *y
= (*y
) + ((*y
) * (*x
) * tpd_calmat
[7] / TPD_RES_X
) / TPD_RES_Y
;