+ Vec2f position = camera_map_screen(
+ camera,
+ event->button.x,
+ event->button.y);
+
+ switch (layer->resize_mask) {
+ case 1: { // TOP
+ Rect a = rect(rects[layer->selection].x,
+ position.y,
+ rects[layer->selection].w,
+ rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ vec(a.x, a.y),
+ rect_position2(rects[layer->selection]));
+ } break;
+
+ case 2: { // LEFT
+ Rect a = rect(position.x,
+ rects[layer->selection].y,
+ rects[layer->selection].w,
+ rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ vec(a.x, a.y),
+ rect_position2(rects[layer->selection]));
+ } break;
+
+ case 3: { // TOP,LEFT
+ Rect a = rect(
+ position.x,
+ position.y,
+ rects[layer->selection].w,
+ rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ vec(a.x, a.y),
+ rect_position2(rects[layer->selection]));
+ } break;
+
+ case 4: { // BOTTOM
+ Rect a = rect(rects[layer->selection].x,
+ position.y,
+ rects[layer->selection].w,
+ rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ rect_position(rects[layer->selection]),
+ vec(rects[layer->selection].x + rects[layer->selection].w,
+ a.y));
+ } break;
+
+ case 6: { // BOTTOM,LEFT
+ Rect a = rect(
+ position.x,
+ position.y,
+ rects[layer->selection].w,
+ -rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ vec(a.x, rects[layer->selection].y),
+ vec(rects[layer->selection].x + rects[layer->selection].w,
+ a.y));
+ } break;
+
+ case 8: { // RIGHT
+ Rect a = rect(position.x,
+ rects[layer->selection].y,
+ rects[layer->selection].w,
+ rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ rect_position(rects[layer->selection]),
+ vec(a.x, rects[layer->selection].y + rects[layer->selection].h));
+ } break;
+
+ case 9: { // TOP,RIGHT
+ Rect a = rect(
+ position.x,
+ position.y,
+ -rects[layer->selection].w,
+ rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ vec(rects[layer->selection].x, a.y),
+ vec(a.x,
+ rects[layer->selection].y + rects[layer->selection].h));
+ } break;
+
+ case 12: { // BOTTOM,RIGHT
+ Rect a = rect(
+ position.x,
+ position.y,
+ -rects[layer->selection].w,
+ -rects[layer->selection].h);
+
+ snap_rect_resize_if_enabled(layer, &a, scaled_snap_threshold);
+
+ layer->inter_rect = rect_from_points(
+ rect_position(rects[layer->selection]),
+ vec(a.x, a.y));
+ } break;
+ }
+