Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/uvedit/uvedit_draw.c')
-rw-r--r--source/blender/editors/uvedit/uvedit_draw.c62
1 files changed, 36 insertions, 26 deletions
diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index e67461be9d4..112e40429ae 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -61,6 +61,7 @@
#include "ED_image.h"
#include "ED_mesh.h"
#include "ED_uvedit.h"
+#include "ED_curve.h"
#include "UI_resources.h"
#include "UI_interface.h"
@@ -927,21 +928,22 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
float x_view, y_view; /* XY in view (local, normalized) coord systems */
int x_region, y_region; /* XY in window coord systems */
int xmax_region, ymax_region, resoltrim;
- int bot_tweak, top_tweak, left_tweak, right_tweak, line_width;
- GLint quad_in[4][2];
+ int line_width;
double regionx2viewx, regiony2viewy;
- float widget_unit, trash, fonth, fontw;
+ float widget_unit, fonth, fontw;
int umin,vmin,umax,vmax;
float uminf,vminf,umaxf,vmaxf;
char lbl[128];
unsigned char col1[4], col2[4];
float (*trim_uv_pnts)[2];
+ int grid_x_spacing, grid_y_spacing;
BLI_assert(obedit && obedit->type == OB_SURF);
cur = ar->v2d.cur;
mask = ar->v2d.mask;
cu = (Curve*)obedit->data;
umin=INFINITY; vmin=INFINITY; umax=-INFINITY; vmax=-INFINITY;
+ ED_curve_propagate_selected_pts_to_flag2(cu);
/* Figure out the union bounding box in UV space for all knots */
for (nu=cu->editnurb->nurbs.first; nu; nu=nu->next) {
if (nu->knotsu[0]<umin) umin = nu->knotsu[0];
@@ -949,7 +951,6 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
if (nu->knotsu[KNOTSU(nu)-1]>umax) umax = nu->knotsu[KNOTSU(nu)-1];
if (nu->knotsv[KNOTSV(nu)-1]>vmax) vmax = nu->knotsv[KNOTSV(nu)-1];
}
- printf("\n");
umin = floor(umin)-1;
vmin = floor(vmin)-1;
umax = ceil(umax)+1;
@@ -978,22 +979,33 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
UI_ThemeColor(TH_TITLE);
/* UI_ThemeColor(TH_GRID); probably more correct but too hard to see */
fonth = BLF_height_default("1",1);
- for (i=umin; i<=umax; i++) {
- x_view=i; y_view=vmin-widget_unit;
- UI_view2d_view_to_region(&ar->v2d, x_view, y_view, &x_region, &y_region);
- snprintf(lbl, sizeof(lbl), "%i", (int)i);
- if (y_region < mask.ymin) y_region = mask.ymin;
- if (y_region > ymax_region-fonth-4) y_region = ymax_region-fonth-4;
- BLF_draw_default_ascii(x_region+4, y_region+4, 0.0f, lbl, strlen(lbl));
+ snprintf(lbl, sizeof(lbl), "%i", umin);
+ fontw = BLF_width_default(lbl, strlen(lbl));
+ snprintf(lbl, sizeof(lbl), "%i", umax);
+ i = BLF_width_default(lbl, strlen(lbl));
+ fontw = (i>fontw) ? i : fontw;
+ grid_x_spacing = 1.0 * BLI_rcti_size_x(&ar->v2d.mask) / BLI_rctf_size_x(&ar->v2d.cur);
+ grid_y_spacing = 1.0 * BLI_rcti_size_y(&ar->v2d.mask) / BLI_rctf_size_y(&ar->v2d.cur);
+ if (grid_x_spacing>fontw) {
+ for (i=umin; i<=umax; i++) {
+ x_view=i; y_view=vmin-widget_unit;
+ UI_view2d_view_to_region(&ar->v2d, x_view, y_view, &x_region, &y_region);
+ snprintf(lbl, sizeof(lbl), "%i", (int)i);
+ if (y_region < mask.ymin) y_region = mask.ymin;
+ if (y_region > ymax_region-fonth-4) y_region = ymax_region-fonth-4;
+ BLF_draw_default_ascii(x_region+4, y_region+4, 0.0f, lbl, strlen(lbl));
+ }
}
- for (i=vmin; i<=vmax; i++) {
- x_view=umin-widget_unit; y_view=i;
- UI_view2d_view_to_region(&ar->v2d, x_view, y_view, &x_region, &y_region);
- snprintf(lbl, sizeof(lbl), "%i", (int)i);
- fontw = BLF_width_default(lbl, strlen(lbl));
- if (x_region < mask.xmin) x_region = mask.xmin;
- if (x_region > xmax_region-fontw-4) x_region = xmax_region-fontw-4;
- BLF_draw_default_ascii(x_region+4, y_region-fonth-4, 0.0f, lbl, strlen(lbl));
+ if (grid_y_spacing>fonth) {
+ for (i=vmin; i<=vmax; i++) {
+ x_view=umin-widget_unit; y_view=i;
+ UI_view2d_view_to_region(&ar->v2d, x_view, y_view, &x_region, &y_region);
+ snprintf(lbl, sizeof(lbl), "%i", (int)i);
+ fontw = BLF_width_default(lbl, strlen(lbl));
+ if (x_region < mask.xmin) x_region = mask.xmin;
+ if (x_region > xmax_region-fontw-4) x_region = xmax_region-fontw-4;
+ BLF_draw_default_ascii(x_region+4, y_region-fonth-4, 0.0f, lbl, strlen(lbl));
+ }
}
/******* (Normalized Coordinates) draw semitransparent domain background *********/
@@ -1004,6 +1016,7 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
glEnable(GL_BLEND);
glColor4ubv(col1);
for (nu=cu->editnurb->nurbs.first; nu; nu=nu->next) {
+ if (!(nu->flag2&CU_SELECTED2)) continue;
BKE_nurbs_domain(nu, &uminf, &umaxf, &vminf, &vmaxf);
glRectf(uminf,vminf,umaxf,vmaxf);
}
@@ -1014,6 +1027,7 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_QUADS);
for (nu=cu->editnurb->nurbs.first; nu; nu=nu->next) {
+ if (!(nu->flag2&CU_SELECTED2)) continue;
NurbEditKnot *ek = BKE_nurbs_editKnot_get(nu);
UI_view2d_view_to_region(&ar->v2d, ek->breaksu[0], ek->breaksv[0], &umin, &vmin);
UI_view2d_view_to_region(&ar->v2d, ek->breaksu[ek->num_breaksu-1], ek->breaksv[ek->num_breaksv-1], &umax, &vmax);
@@ -1051,6 +1065,7 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
glBegin(GL_LINE_STRIP);
UI_ThemeColor(TH_WIRE);
for (nu=cu->editnurb->nurbs.first; nu; nu=nu->next) {
+ if (!(nu->flag2&CU_SELECTED2)) continue;
resoltrim = nu->resol_trim;
for (nt=nu->trims.first; nt; nt=nt->next) {
j = BKE_nurbTrim_tess(nt, resoltrim, &trim_uv_pnts);
@@ -1062,12 +1077,11 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
}
glEnd();
- if (glGetError()!=GL_NO_ERROR)
- printf("ERR! %i\n",glGetError());
/******* (Normalized Coordinates) draw trim control polygon *********/
glBegin(GL_LINE_STRIP);
UI_ThemeColor(TH_WIRE_EDIT);
for (nu=cu->editnurb->nurbs.first; nu; nu=nu->next) {
+ if (!(nu->flag2&CU_SELECTED2)) continue;
resoltrim = nu->resol_trim;
for (nt=nu->trims.first; nt; nt=nt->next) {
for (trimnu=nt->nurb_list.first; trimnu; trimnu=trimnu->next) {
@@ -1080,13 +1094,12 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
}
glEnd();
- if (glGetError()!=GL_NO_ERROR)
- printf("ERR! %i\n",glGetError());
/******* (Normalized Coordinates) draw handles for control polygon *********/
glPointSize(3);
glBegin(GL_POINTS);
UI_ThemeColor(TH_WIRE_EDIT);
for (nu=cu->editnurb->nurbs.first; nu; nu=nu->next) {
+ if (!(nu->flag2&CU_SELECTED2)) continue;
resoltrim = nu->resol_trim;
for (nt=nu->trims.first; nt; nt=nt->next) {
for (trimnu=nt->nurb_list.first; trimnu; trimnu=trimnu->next) {
@@ -1101,9 +1114,6 @@ void draw_nurbuv(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene
glEnd();
glPointSize(1);
- if (glGetError()!=GL_NO_ERROR)
- printf("ERR! %i\n",glGetError());
-
}
void draw_uvedit_main(const struct bContext *C, SpaceImage *sima, ARegion *ar, Scene *scene, Object *obedit, Object *obact)