[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18556] branches/blender2.5/blender/source /blender: 2.5: uv editor
Brecht Van Lommel
brecht at blender.org
Sat Jan 17 23:14:10 CET 2009
Revision: 18556
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18556
Author: blendix
Date: 2009-01-17 23:14:08 +0100 (Sat, 17 Jan 2009)
Log Message:
-----------
2.5: uv editor
- mouse select, loop select, select linked, unlink selection operators.
- added edge selection mode.
- fix 2.45 bug with unitialized theme colors, which caused the active face
and face centers to be not drawn.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
branches/blender2.5/blender/source/blender/editors/interface/resources.c
branches/blender2.5/blender/source/blender/editors/space_image/image_header.c
branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_draw.c
branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_intern.h
branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_ops.c
branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_files.c
Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c 2009-01-17 18:35:33 UTC (rev 18555)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c 2009-01-17 22:14:08 UTC (rev 18556)
@@ -8492,8 +8492,12 @@
do_versions_windowmanager_2_50(screen);
/* struct audio data moved to renderdata */
- for(scene= main->scene.first; scene; scene= scene->id.next)
+ for(scene= main->scene.first; scene; scene= scene->id.next) {
scene->r.audio = scene->audio;
+
+ if(!scene->toolsettings->uv_selectmode)
+ scene->toolsettings->uv_selectmode= UV_SELECT_VERTEX;
+ }
/* shader, composit and texture node trees have id.name empty, put something in
* to have them show in RNA viewer and accessible otherwise.
@@ -8501,7 +8505,8 @@
for(ma= main->mat.first; ma; ma= ma->id.next) {
if(ma->nodetree && strlen(ma->nodetree->id.name)==0)
strcpy(ma->nodetree->id.name, "NTShader Nodetree");
- }
+ }
+
/* and composit trees */
for(sce= main->scene.first; sce; sce= sce->id.next) {
if(sce->nodetree && strlen(sce->nodetree->id.name)==0)
Modified: branches/blender2.5/blender/source/blender/editors/interface/resources.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/resources.c 2009-01-17 18:35:33 UTC (rev 18555)
+++ branches/blender2.5/blender/source/blender/editors/interface/resources.c 2009-01-17 22:14:08 UTC (rev 18556)
@@ -511,8 +511,10 @@
SETCOL(btheme->tima.vertex, 0xff, 0x70, 0xff, 255);
SETCOL(btheme->tima.vertex_select, 0xff, 0xff, 0x70, 255);
btheme->tima.vertex_size= 2;
+ btheme->tima.facedot_size= 2;
SETCOL(btheme->tima.face, 0, 50, 150, 40);
SETCOL(btheme->tima.face_select, 200, 100, 200, 80);
+ SETCOL(btheme->tima.editmesh_active, 255, 255, 255, 128);
/* space imageselect */
btheme->timasel= btheme->tv3d;
Modified: branches/blender2.5/blender/source/blender/editors/space_image/image_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/image_header.c 2009-01-17 18:35:33 UTC (rev 18555)
+++ branches/blender2.5/blender/source/blender/editors/space_image/image_header.c 2009-01-17 22:14:08 UTC (rev 18556)
@@ -223,12 +223,6 @@
case 8: /* Border Select Pinned */
borderselect_sima(UV_SELECT_PINNED);
break;
- case 2: /* Unlink Selection */
- unlink_selection();
- break;
- case 3: /* Linked UVs */
- select_linked_tface_uv(2);
- break;
case 7: /* Pinned UVs */
select_pinned_tface_uv();
break;
@@ -1207,9 +1201,11 @@
uiBlockBeginAlign(block);
uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_REDR, ICON_VERTEXSEL,
- xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)");
+ xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_REDR, ICON_EDGESEL,
+ xco+=XIC,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Edge select mode");
uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_REDR, ICON_FACESEL,
- xco+=XIC,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)");
+ xco+=XIC,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Face select mode");
uiBlockEndAlign(block);
}
@@ -1218,6 +1214,8 @@
uiDefIconButS(block, ROW, B_REDR, ICON_VERTEXSEL,
xco,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_VERTEX, 0, 0, "Vertex select mode");
+ uiDefIconButS(block, ROW, B_REDR, ICON_EDGESEL,
+ xco+=XIC,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_EDGE, 0, 0, "Edge select mode");
uiDefIconButS(block, ROW, B_REDR, ICON_FACESEL,
xco+=XIC,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_FACE, 0, 0, "Face select mode");
uiDefIconButS(block, ROW, B_REDR, ICON_MESH,
Modified: branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/space_image.c 2009-01-17 18:35:33 UTC (rev 18555)
+++ branches/blender2.5/blender/source/blender/editors/space_image/space_image.c 2009-01-17 22:14:08 UTC (rev 18556)
@@ -493,7 +493,7 @@
#endif
ibuf= BKE_image_get_ibuf(sima->image, &sima->iuser);
- if(ibuf->rect || ibuf->rect_float)
+ if(ibuf && (ibuf->rect || ibuf->rect_float))
return ibuf;
}
Modified: branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_draw.c 2009-01-17 18:35:33 UTC (rev 18555)
+++ branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_draw.c 2009-01-17 22:14:08 UTC (rev 18556)
@@ -412,25 +412,26 @@
/* draws uv's in the image space */
static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit)
{
+ ToolSettings *settings;
EditMesh *em;
EditFace *efa, *efa_act;
MTFace *tf, *activetf = NULL;
DerivedMesh *finaldm, *cagedm;
char col1[4], col2[4];
float pointsize;
- int drawfaces, lastsel, sel;
+ int drawfaces, interpedges, lastsel, sel;
Image *ima= sima->image;
em= ((Mesh*)obedit->data)->edit_mesh;
activetf= EM_get_active_mtface(em, &efa_act, NULL, 0); /* will be set to NULL if hidden */
+ settings= scene->toolsettings;
+
drawfaces= draw_uvs_face_check(scene);
-
-#if 0
- calc_image_view(G.sima, 'f'); /* float */
- myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax);
- glLoadIdentity();
-#endif
+ if(settings->uv_flag & UV_SYNC_SELECTION)
+ interpedges= (scene->selectmode & SCE_SELECT_VERTEX);
+ else
+ interpedges= (settings->uv_selectmode == UV_SELECT_VERTEX);
/* 1. draw shadow mesh */
@@ -442,7 +443,7 @@
/* when sync selection is enabled, all faces are drawn (except for hidden)
* so if cage is the same as the final, theres no point in drawing this */
- if(!((scene->toolsettings->uv_flag & UV_SYNC_SELECTION) && (cagedm == finaldm)))
+ if(!((settings->uv_flag & UV_SYNC_SELECTION) && (cagedm == finaldm)))
draw_uvs_dm_shadow(finaldm);
/* release derivedmesh again */
@@ -614,37 +615,75 @@
glColor4ubv((unsigned char *)col2);
if(G.f & G_DRAWEDGES) {
- glShadeModel(GL_SMOOTH);
UI_GetThemeColor4ubv(TH_VERTEX_SELECT, col1);
lastsel = sel = 0;
- for(efa= em->faces.first; efa; efa= efa->next) {
- tf= (MTFace *)efa->tmp.p; /* visible faces cached */
+ if(interpedges) {
+ glShadeModel(GL_SMOOTH);
- if(tf) {
- glBegin(GL_LINE_LOOP);
- sel = (uvedit_uv_selected(scene, efa, tf, 0) ? 1 : 0);
- if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
- glVertex2fv(tf->uv[0]);
-
- sel = uvedit_uv_selected(scene, efa, tf, 1) ? 1 : 0;
- if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
- glVertex2fv(tf->uv[1]);
-
- sel = uvedit_uv_selected(scene, efa, tf, 2) ? 1 : 0;
- if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
- glVertex2fv(tf->uv[2]);
-
- if(efa->v4) {
- sel = uvedit_uv_selected(scene, efa, tf, 3) ? 1 : 0;
+ for(efa= em->faces.first; efa; efa= efa->next) {
+ tf= (MTFace *)efa->tmp.p; /* visible faces cached */
+
+ if(tf) {
+ glBegin(GL_LINE_LOOP);
+ sel = (uvedit_uv_selected(scene, efa, tf, 0)? 1 : 0);
if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
- glVertex2fv(tf->uv[3]);
+ glVertex2fv(tf->uv[0]);
+
+ sel = uvedit_uv_selected(scene, efa, tf, 1)? 1 : 0;
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[1]);
+
+ sel = uvedit_uv_selected(scene, efa, tf, 2)? 1 : 0;
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[2]);
+
+ if(efa->v4) {
+ sel = uvedit_uv_selected(scene, efa, tf, 3)? 1 : 0;
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[3]);
+ }
+
+ glEnd();
}
-
- glEnd();
}
+
+ glShadeModel(GL_FLAT);
}
- glShadeModel(GL_FLAT);
+ else {
+ for(efa= em->faces.first; efa; efa= efa->next) {
+ tf= (MTFace *)efa->tmp.p; /* visible faces cached */
+
+ if(tf) {
+ glBegin(GL_LINES);
+ sel = (uvedit_edge_selected(scene, efa, tf, 0)? 1 : 0);
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[0]);
+ glVertex2fv(tf->uv[1]);
+
+ sel = uvedit_edge_selected(scene, efa, tf, 1)? 1 : 0;
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[1]);
+ glVertex2fv(tf->uv[2]);
+
+ sel = uvedit_edge_selected(scene, efa, tf, 2)? 1 : 0;
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[2]);
+
+ if(efa->v4) {
+ glVertex2fv(tf->uv[3]);
+
+ sel = uvedit_edge_selected(scene, efa, tf, 3)? 1 : 0;
+ if(sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; }
+ glVertex2fv(tf->uv[3]);
+ }
+
+ glVertex2fv(tf->uv[0]);
+
+ glEnd();
+ }
+ }
+ }
}
else {
/* no nice edges */
Modified: branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_intern.h 2009-01-17 18:35:33 UTC (rev 18555)
+++ branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_intern.h 2009-01-17 22:14:08 UTC (rev 18556)
@@ -56,6 +56,10 @@
void uvedit_face_select(struct Scene *scene, struct EditFace *efa, struct MTFace *tf);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list