pointer_event_t* pointer_event = (pointer_event_t*)e;
float_t x_f = 0;
float_t y_f = 0;
float_t result = 0;
if(pointer_event->x >= pieslice->x_center_point){
x_f = pointer_event->x - pieslice->x_center_point;
}else{
x_f = -(pieslice->x_center_point - pointer_event->x);
}
if(pointer_event->y >= pieslice->y_center_point){
y_f = pointer_event->y - pieslice->y_center_point;
}else{
y_f = -(pieslice->y_center_point - pointer_event->y);
}
if(x_f < 0 && y_f > 0){
result += (M_PI / 2);
}
if(x_f < 0 && y_f < 0){
result += M_PI;
}
if(x_f > 0 && y_f < 0){
result += (3*M_PI / 4);
}
result += atan(fabs(y_f) / fabs(x_f));
piechar_t* piechar = (piechar_t*)pieslice->widget.parent;
pieslice_t* iter = NULL;
pieslice_t** all = (pieslice_t**)(piechar->pieslice_array.elms);
int size = piechar->pieslice_array.size;
for(int i = 0; i < size; i++){
iter = all[i];
// float_t end_angle = iter->angle_span - iter->start_angle;
if((result >= iter->start_angle) && (result <= iter->angle_span)){
break;
}
}
char* name = iter->widget.name;
pieslice->pressed = TRUE;
widget_set_state(widget, WIDGET_STATE_PRESSED);
widget_grab(widget->parent, widget);