Line snapping for deco editor

This commit is contained in:
jacksonmj
2012-04-29 00:22:02 +01:00
parent ade3fd9568
commit 34bfd77aa5

View File

@@ -5338,6 +5338,7 @@ char *console_ui(pixel *vid_buf,char error[255],char console_more) {
unsigned int decorations_ui(pixel *vid_buf,int *bsx,int *bsy, unsigned int savedColor) unsigned int decorations_ui(pixel *vid_buf,int *bsx,int *bsy, unsigned int savedColor)
{//TODO: have the text boxes be editable and update the color. {//TODO: have the text boxes be editable and update the color.
int i,ss,hh,vv,cr=127,cg=0,cb=0,b = 0,mx,my,bq = 0,j, lb=0,lx=0,ly=0,lm=0,hidden=0; int i,ss,hh,vv,cr=127,cg=0,cb=0,b = 0,mx,my,bq = 0,j, lb=0,lx=0,ly=0,lm=0,hidden=0;
int line_x=0, line_y=0;
int window_offset_x_left = 2; int window_offset_x_left = 2;
int window_offset_x_right = XRES - 279; int window_offset_x_right = XRES - 279;
int window_offset_y = 2; int window_offset_y = 2;
@@ -5637,7 +5638,19 @@ unsigned int decorations_ui(pixel *vid_buf,int *bsx,int *bsy, unsigned int saved
{ {
if (lm == 1)//line tool preview if (lm == 1)//line tool preview
{ {
xor_line(lx, ly, mx, my, vid_buf); if (sdl_mod & KMOD_ALT)
{
float snap_angle = floor(atan2(my-ly, mx-lx)/(M_PI*0.25)+0.5)*M_PI*0.25;
float line_mag = sqrtf(pow(mx-lx,2)+pow(my-ly,2));
line_x = (int)(line_mag*cos(snap_angle)+lx+0.5f);
line_y = (int)(line_mag*sin(snap_angle)+ly+0.5f);
}
else
{
line_x = mx;
line_y = my;
}
xor_line(lx, ly, line_x, line_y, vid_buf);
} }
else if (lm == 2)//box tool preview else if (lm == 2)//box tool preview
{ {
@@ -5706,7 +5719,7 @@ unsigned int decorations_ui(pixel *vid_buf,int *bsx,int *bsy, unsigned int saved
if (lb && lm) //lm is box/line tool if (lb && lm) //lm is box/line tool
{ {
if (lm == 1)//line if (lm == 1)//line
line_decorations(lx, ly, mx, my, *bsx, *bsy, currR, currG, currB, lb, tool); line_decorations(lx, ly, line_x, line_y, *bsx, *bsy, currR, currG, currB, lb, tool);
else//box else//box
box_decorations(lx, ly, mx, my, currR, currG, currB, lb, tool); box_decorations(lx, ly, mx, my, currR, currG, currB, lb, tool);
lm = 0; lm = 0;