Lines Matching refs:dial
50 Dial *dial = MEM_callocN(sizeof(Dial), "dial"); in BLI_dial_init() local
52 copy_v2_v2(dial->center, start_position); in BLI_dial_init()
53 dial->threshold_squared = threshold * threshold; in BLI_dial_init()
55 return dial; in BLI_dial_init()
58 float BLI_dial_angle(Dial *dial, const float current_position[2]) in BLI_dial_angle() argument
62 sub_v2_v2v2(current_direction, current_position, dial->center); in BLI_dial_angle()
66 if (len_squared_v2(current_direction) > dial->threshold_squared) { in BLI_dial_angle()
72 if (!dial->initialized) { in BLI_dial_angle()
73 copy_v2_v2(dial->initial_direction, current_direction); in BLI_dial_angle()
74 dial->initialized = true; in BLI_dial_angle()
78 cosval = dot_v2v2(current_direction, dial->initial_direction); in BLI_dial_angle()
79 sinval = cross_v2v2(current_direction, dial->initial_direction); in BLI_dial_angle()
87 if ((angle * dial->last_angle < 0.0f) && (fabsf(dial->last_angle) > (float)M_PI_2)) { in BLI_dial_angle()
88 if (dial->last_angle < 0.0f) { in BLI_dial_angle()
89 dial->rotations--; in BLI_dial_angle()
92 dial->rotations++; in BLI_dial_angle()
95 dial->last_angle = angle; in BLI_dial_angle()
97 return angle + 2.0f * (float)M_PI * dial->rotations; in BLI_dial_angle()
100 return dial->last_angle; in BLI_dial_angle()