Lines Matching defs:vel

64 SetAccelerationProfile(DeviceVelocityPtr vel, int profile_num);
66 SimpleSmoothProfile(DeviceIntPtr dev, DeviceVelocityPtr vel, float velocity,
69 GetAccelerationProfile(DeviceVelocityPtr vel, int profile_num);
91 InitVelocityData(DeviceVelocityPtr vel)
93 memset(vel, 0, sizeof(DeviceVelocityRec));
95 vel->corr_mul = 10.0; /* dots per 10 milisecond should be usable */
96 vel->const_acceleration = 1.0; /* no acceleration/deceleration */
97 vel->reset_time = 300;
98 vel->use_softening = 1;
99 vel->min_acceleration = 1.0; /* don't decelerate */
100 vel->max_rel_diff = 0.2;
101 vel->max_diff = 1.0;
102 vel->initial_range = 2;
103 vel->average_accel = TRUE;
104 SetAccelerationProfile(vel, AccelProfileClassic);
105 InitTrackers(vel, 16);
113 FreeVelocityData(DeviceVelocityPtr vel){
114 free(vel->tracker);
115 SetAccelerationProfile(vel, PROFILE_UNINITIALIZE);
148 DeviceVelocityPtr vel;
156 vel = GetDevicePredictableAccelData(dev);
157 if (!vel)
166 if (GetAccelerationProfile(vel, profile) == NULL)
169 SetAccelerationProfile(vel, profile);
175 AccelInitProfileProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
177 int profile = vel->statistics.profile_number;
193 DeviceVelocityPtr vel;
201 vel = GetDevicePredictableAccelData(dev);
202 if (!vel)
214 vel->const_acceleration = 1/v;
220 AccelInitDecelProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
222 float fval = 1.0/vel->const_acceleration;
266 AccelInitAdaptDecelProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
268 float fval = 1.0/vel->min_acceleration;
285 DeviceVelocityPtr vel;
293 vel = GetDevicePredictableAccelData(dev);
294 if (!vel)
307 vel->corr_mul = v;
313 AccelInitScaleProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
315 float fval = vel->corr_mul;
327 DeviceVelocityPtr vel = GetDevicePredictableAccelData(dev);
329 if(!vel)
332 vel->prop_handlers[0] = AccelInitProfileProperty(dev, vel);
333 vel->prop_handlers[1] = AccelInitDecelProperty(dev, vel);
334 vel->prop_handlers[2] = AccelInitAdaptDecelProperty(dev, vel);
335 vel->prop_handlers[3] = AccelInitScaleProperty(dev, vel);
343 DeviceVelocityPtr vel;
356 vel = GetDevicePredictableAccelData(dev);
357 for (i = 0; vel && i < NPROPS_PREDICTABLE_ACCEL; i++)
358 if (vel->prop_handlers[i])
359 XIUnregisterPropertyHandler(dev, vel->prop_handlers[i]);
369 InitTrackers(DeviceVelocityPtr vel, int ntracker)
375 free(vel->tracker);
376 vel->tracker = (MotionTrackerPtr)malloc(ntracker * sizeof(MotionTracker));
377 memset(vel->tracker, 0, ntracker * sizeof(MotionTracker));
378 vel->num_tracker = ntracker;
467 FeedTrackers(DeviceVelocityPtr vel, int dx, int dy, int cur_t)
470 for(n = 0; n < vel->num_tracker; n++){
471 vel->tracker[n].dx += dx;
472 vel->tracker[n].dy += dy;
474 n = (vel->cur_tracker + 1) % vel->num_tracker;
475 vel->tracker[n].dx = 0;
476 vel->tracker[n].dy = 0;
477 vel->tracker[n].time = cur_t;
478 vel->tracker[n].dir = GetDirection(dx, dy);
480 dx, dy, vel->tracker[n].dir,
481 cur_t - vel->tracker[vel->cur_tracker].time);
482 vel->cur_tracker = n;
491 CalcTracker(DeviceVelocityPtr vel, int offset, int cur_t){
492 int index = TRACKER_INDEX(vel, offset);
493 float dist = sqrt( vel->tracker[index].dx * vel->tracker[index].dx
494 + vel->tracker[index].dy * vel->tracker[index].dy);
495 int dtime = cur_t - vel->tracker[index].time;
509 QueryTrackers(DeviceVelocityPtr vel, int cur_t){
513 float vfac = vel->corr_mul * vel->const_acceleration; /* premultiply */
515 for(offset = 1; offset < vel->num_tracker; offset++){
516 n = TRACKER_INDEX(vel, offset);
518 age_ms = cur_t - vel->tracker[n].time;
521 if (age_ms >= vel->reset_time || age_ms < 0) {
532 dir &= vel->tracker[n].dir;
540 tmp = CalcTracker(vel, offset, cur_t) * vfac;
542 if ((iveloc == 0 || offset <= vel->initial_range) && tmp != 0) {
548 if (vdiff <= vel->max_diff ||
549 vdiff/(iveloc + tmp) < vel->max_rel_diff) {
564 if(offset == vel->num_tracker){
566 i = vel->num_tracker-1;
569 n = TRACKER_INDEX(vel, i);
572 vel->tracker[n].dx,
573 vel->tracker[n].dy,
574 cur_t - vel->tracker[n].time);
587 DeviceVelocityPtr vel,
594 vel->last_velocity = vel->velocity;
596 FeedTrackers(vel, dx, dy, time);
598 velocity = QueryTrackers(vel, time);
600 vel->velocity = velocity;
624 DeviceVelocityPtr vel,
631 if (do_soften && vel->use_softening) {
632 *fdx = ApplySimpleSoftening(vel->last_dx, dx);
633 *fdy = ApplySimpleSoftening(vel->last_dy, dy);
639 *fdx *= vel->const_acceleration;
640 *fdy *= vel->const_acceleration;
649 DeviceVelocityPtr vel,
655 result = vel->Profile(dev, vel, velocity, threshold, acc);
658 if (result < vel->min_acceleration)
659 result = vel->min_acceleration;
669 DeviceVelocityPtr vel,
674 if(vel->velocity <= 0){
682 if(vel->average_accel && vel->velocity != vel->last_velocity){
688 dev, vel, vel->velocity, threshold, acc);
690 dev, vel, vel->last_velocity, threshold, acc);
691 res += 4.0f * BasicComputeAcceleration(dev, vel,
692 (vel->last_velocity + vel->velocity) / 2,
696 vel->velocity, vel->last_velocity, res);
699 res = BasicComputeAcceleration(dev, vel,
700 vel->velocity, threshold, acc);
702 vel->velocity, res);
718 DeviceVelocityPtr vel,
734 DeviceVelocityPtr vel,
741 vel,
747 vel,
766 DeviceVelocityPtr vel,
776 return vel->min_acceleration;
778 return (pow(acc, vel_dist)) * vel->min_acceleration;
804 DeviceVelocityPtr vel,
830 DeviceVelocityPtr vel,
853 res += vel->min_acceleration;
865 DeviceVelocityPtr vel,
877 res = CalcPenumbralGradient(velocity) * (acc - vel->min_acceleration);
879 return vel->min_acceleration + res;
886 DeviceVelocityPtr vel,
897 DeviceVelocityPtr vel,
907 DeviceVelocityPtr vel,
914 return vel->deviceSpecificProfile;
946 DeviceVelocityPtr vel,
950 profile = GetAccelerationProfile(vel, profile_num);
956 free(vel->profile_private);
957 vel->profile_private = NULL;
959 vel->Profile = profile;
960 vel->statistics.profile_number = profile_num;
980 DeviceVelocityPtr vel,
983 if(vel)
984 vel->deviceSpecificProfile = profile;