@@ -774,30 +774,40 @@ regionview_resize(Regionview *regionview, guint modifiers,
774774 imageui_snap_rect (imageui , our_area , our_area );
775775 break ;
776776
777- case REGIONVIEW_RESIZE_RIGHT :
777+ case REGIONVIEW_RESIZE_TOPLEFT :
778+ our_area -> left = x + start_area -> left ;
779+ our_area -> top = y + start_area -> top ;
780+ break ;
781+
782+ case REGIONVIEW_RESIZE_TOP :
783+ our_area -> top = y + start_area -> top ;
784+ break ;
785+
786+ case REGIONVIEW_RESIZE_TOPRIGHT :
787+ our_area -> top = y + start_area -> top ;
778788 our_area -> width = x + VIPS_RECT_RIGHT (start_area ) - start_area -> left ;
779789 break ;
780790
781- case REGIONVIEW_RESIZE_BOTTOM :
782- our_area -> height = y + VIPS_RECT_BOTTOM (start_area ) - start_area -> top ;
791+ case REGIONVIEW_RESIZE_RIGHT :
792+ our_area -> width = x + VIPS_RECT_RIGHT (start_area ) - start_area -> left ;
783793 break ;
784794
785795 case REGIONVIEW_RESIZE_BOTTOMRIGHT :
786796 our_area -> width = x + VIPS_RECT_RIGHT (start_area ) - start_area -> left ;
787797 our_area -> height = y + VIPS_RECT_BOTTOM (start_area ) - start_area -> top ;
788798 break ;
789799
790- case REGIONVIEW_RESIZE_LEFT :
791- our_area -> left = x + start_area -> left ;
800+ case REGIONVIEW_RESIZE_BOTTOM :
801+ our_area -> height = y + VIPS_RECT_BOTTOM ( start_area ) - start_area -> top ;
792802 break ;
793803
794- case REGIONVIEW_RESIZE_TOP :
795- our_area -> top = y + start_area -> top ;
804+ case REGIONVIEW_RESIZE_BOTTOMLEFT :
805+ our_area -> left = x + start_area -> left ;
806+ our_area -> height = y + VIPS_RECT_BOTTOM (start_area ) - start_area -> top ;
796807 break ;
797808
798- case REGIONVIEW_RESIZE_TOPLEFT :
809+ case REGIONVIEW_RESIZE_LEFT :
799810 our_area -> left = x + start_area -> left ;
800- our_area -> top = y + start_area -> top ;
801811 break ;
802812
803813 default :
@@ -840,6 +850,22 @@ regionview_resize(Regionview *regionview, guint modifiers,
840850 our_area -> height = VIPS_RECT_BOTTOM (start_area ) - our_area -> top ;
841851 break ;
842852
853+ case REGIONVIEW_RESIZE_TOPRIGHT :
854+ our_area -> top =
855+ VIPS_CLIP (0 , our_area -> top , VIPS_RECT_BOTTOM (start_area ) - 1 );
856+ our_area -> width =
857+ VIPS_CLIP (1 , our_area -> width , width - start_area -> left );
858+ our_area -> height = VIPS_RECT_BOTTOM (start_area ) - our_area -> top ;
859+ break ;
860+
861+ case REGIONVIEW_RESIZE_BOTTOMLEFT :
862+ our_area -> left =
863+ VIPS_CLIP (0 , our_area -> left , VIPS_RECT_RIGHT (start_area ) - 1 );
864+ our_area -> height =
865+ VIPS_CLIP (1 , our_area -> height , height - start_area -> top );
866+ our_area -> width = VIPS_RECT_RIGHT (start_area ) - our_area -> left ;
867+ break ;
868+
843869 default :
844870 break ;
845871 }
0 commit comments