Помогите правильно посчитать
вставляю видео, чтобы было понятно с чем работаю. https://www.youtube.com/watch?v=33F9m1IhZP0&feature=youtu.be
есть такой код.
if ( btn_m ) {
int x = evm->x;
int y = evm->y;
l->pos_x -= x - px + l->size_width;
px = x;
l->pos_y = y - py - l->size_height;
py = y;
gtk_widget_queue_draw ( l->drawing );
}
evm->x и evm->y это текущие координаты мыши. px и py это старые координаты мыши. size_width и size_height это размер квадрата. В этом место pos_x всегда вычитается и является всегда границей, откуда будет начинаться рисоваться все квадраты. проблема в том, что это всегда уменьшается и граница увеличивается. и потом он начинает рисовать квадраты уже с позиции -35000. как сделать так, чтобы была бесконечность и граница всегда была не меньше размера -size_width?
p.s. я не знаю в какую область это написать. поэтому математика.
Ответы (1 шт):
решил в общем задачу.
if ( btn_m ) {
int x = evm->x;
int y = evm->y;
if ( l->pos_x > 0 ) {
l->pos_x -= x - px + l->size_width;
} else {
if ( l->pos_x < -l->size_width ) l->pos_x += l->size_width;
else l->pos_x -= x - px;
}
px = x;
if ( l->pos_y > 0 ) {
l->pos_y -= y - py + l->size_height;
} else {
if ( l->pos_y < -l->size_height ) l->pos_y += l->size_height;
else l->pos_y -= y - py;
}
py = y;
gtk_widget_queue_draw ( l->drawing );
}