diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-07-09 20:51:08 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-07-09 20:51:08 +0400 |
commit | a1d5261951ab621d2874ea24e80c95f1b83b5ac8 (patch) | |
tree | b24b06581bca5e08201a090212572abf5ad4d81d | |
parent | 80fa54ab3cfcec7d9ce5976a1b0af1b0c92cdef0 (diff) |
fix node drawing glitch where text alignment for output sockets would move the text X axis twice as much as it should have.
-rw-r--r-- | source/blender/editors/space_node/drawnode.c | 27 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_draw.c | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 4 |
3 files changed, 17 insertions, 17 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 5f82bf3aa51..41b4063a29a 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -216,12 +216,12 @@ static void node_draw_output_default(const bContext *C, uiBlock *block, int ofs = 0; const char *ui_name = IFACE_(name); UI_ThemeColor(TH_TEXT); - slen = snode->aspect * UI_GetStringWidth(ui_name); + slen = snode->aspect_sqrt * UI_GetStringWidth(ui_name); while (slen > node->width) { ofs++; - slen = snode->aspect * UI_GetStringWidth(ui_name + ofs); + slen = snode->aspect_sqrt * UI_GetStringWidth(ui_name + ofs); } - uiDefBut(block, LABEL, 0, ui_name + ofs, (short)(sock->locx - 15.0f - slen), (short)(sock->locy - 9.0f), + uiDefBut(block, LABEL, 0, ui_name + ofs, (short)(sock->locx - (15.0f * snode->aspect_sqrt) - slen), (short)(sock->locy - 9.0f), (short)(node->width - NODE_DY), NODE_DY, NULL, 0, 0, 0, 0, ""); } @@ -3178,17 +3178,16 @@ void node_draw_link_bezier(View2D *v2d, SpaceNode *snode, bNodeLink *link, int t drawarrow = (link->tonode && (link->tonode->type == NODE_REROUTE)) && (link->fromnode && (link->fromnode->type == NODE_REROUTE)); if (drawarrow) { - // draw arrow in line segment LINK_ARROW - float dx, dy, len; - dx = coord_array[LINK_ARROW][0]-coord_array[LINK_ARROW-1][0]; - dy = coord_array[LINK_ARROW][1]-coord_array[LINK_ARROW-1][1]; - len = sqrtf(dx*dx+dy*dy); - dx = dx /len*ARROW_SIZE; - dy = dy /len*ARROW_SIZE; - arrow1[0] = coord_array[LINK_ARROW][0]-dx+dy; - arrow1[1] = coord_array[LINK_ARROW][1]-dy-dx; - arrow2[0] = coord_array[LINK_ARROW][0]-dx-dy; - arrow2[1] = coord_array[LINK_ARROW][1]-dy+dx; + /* draw arrow in line segment LINK_ARROW */ + float d_xy[2], len; + + sub_v2_v2v2(d_xy, coord_array[LINK_ARROW], coord_array[LINK_ARROW - 1]); + len = len_v2(d_xy); + mul_v2_fl(d_xy, 1.0f / (len * ARROW_SIZE)); + arrow1[0] = coord_array[LINK_ARROW][0] - d_xy[0] + d_xy[1]; + arrow1[1] = coord_array[LINK_ARROW][1] - d_xy[1] - d_xy[0]; + arrow2[0] = coord_array[LINK_ARROW][0] - d_xy[0] - d_xy[1]; + arrow2[1] = coord_array[LINK_ARROW][1] - d_xy[1] + d_xy[0]; arrow[0] = coord_array[LINK_ARROW][0]; arrow[1] = coord_array[LINK_ARROW][1]; } diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 65646c855b7..745582c1125 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -1109,7 +1109,8 @@ void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d) glEnable(GL_MAP1_VERTEX_3); /* aspect+font, set each time */ - snode->aspect= (v2d->cur.xmax - v2d->cur.xmin)/((float)ar->winx); + snode->aspect = (v2d->cur.xmax - v2d->cur.xmin) / ((float)ar->winx); + snode->aspect_sqrt = sqrtf(snode->aspect); // XXX snode->curfont= uiSetCurFont_ext(snode->aspect); /* grid */ diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 71b59131f0b..7e1094ef93b 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -856,10 +856,10 @@ typedef struct SpaceNode { struct ID *id, *from; /* context, no need to save in file? well... pinning... */ short flag, pad1; /* menunr: browse id block in header */ - float aspect; + float aspect, aspect_sqrt; float xof, yof; /* offset for drawing the backdrop */ - float zoom, padf; /* zoom for backdrop */ + float zoom; /* zoom for backdrop */ float mx, my; /* mousepos for drawing socketless link */ struct bNodeTree *nodetree, *edittree; |