Revision: 18722 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18722 Author: blendix Date: 2009-01-28 22:43:43 +0100 (Wed, 28 Jan 2009)
Log Message: ----------- 2.5: * UV Editor Transform, translate, rotate, scale, live unwrap, snap, gesture, etc work. * Also for selection operators, used OPERATOR_FINISHED|OPERATOR_PASS_THROUGH instead of just OPERATOR_PASS_THROUGH to make gestures work, seems more correct to me. Modified Paths: -------------- branches/blender2.5/blender/source/blender/editors/include/ED_uvedit.h branches/blender2.5/blender/source/blender/editors/space_image/image_header.c branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h branches/blender2.5/blender/source/blender/editors/space_image/space_image.c branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c branches/blender2.5/blender/source/blender/editors/space_node/node_select.c branches/blender2.5/blender/source/blender/editors/transform/transform.c branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c branches/blender2.5/blender/source/blender/editors/transform/transform_snap.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/editors/uvedit/uvedit_unwrap_ops.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c Added Paths: ----------- branches/blender2.5/blender/source/blender/editors/include/ED_image.h Added: branches/blender2.5/blender/source/blender/editors/include/ED_image.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/include/ED_image.h (rev 0) +++ branches/blender2.5/blender/source/blender/editors/include/ED_image.h 2009-01-28 21:43:43 UTC (rev 18722) @@ -0,0 +1,39 @@ +/** + * $Id: + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2008 Blender Foundation. + * All rights reserved. + * + * Contributor(s): Blender Foundation + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef ED_IMAGE_H +#define ED_IMAGE_H + +struct SpaceImage; + +/* space_image.c, exported for transform */ +struct Image *ED_space_image(struct SpaceImage *sima); +void ED_space_image_size(struct SpaceImage *sima, int *width, int *height); +void ED_space_image_uv_aspect(struct SpaceImage *sima, float *aspx, float *aspy); + +#endif /* ED_IMAGE_H */ + Modified: branches/blender2.5/blender/source/blender/editors/include/ED_uvedit.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/include/ED_uvedit.h 2009-01-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/include/ED_uvedit.h 2009-01-28 21:43:43 UTC (rev 18722) @@ -30,6 +30,8 @@ struct Scene; struct Object; +struct MTFace; +struct EditFace; struct Image; struct wmWindowManager; @@ -41,5 +43,20 @@ void ED_uvedit_set_tile(struct Scene *scene, struct Object *obedit, struct Image *ima, int curtile, int dotile); int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object *obedit, float *min, float *max); +int ED_uvedit_test_silent(struct Object *obedit); +int ED_uvedit_test(struct Object *obedit); + +int uvedit_face_visible(struct Scene *scene, struct Image *ima, struct EditFace *efa, struct MTFace *tf); +int uvedit_face_selected(struct Scene *scene, struct EditFace *efa, struct MTFace *tf); +int uvedit_edge_selected(struct Scene *scene, struct EditFace *efa, struct MTFace *tf, int i); +int uvedit_uv_selected(struct Scene *scene, struct EditFace *efa, struct MTFace *tf, int i); + +int ED_uvedit_nearest_uv(struct Scene *scene, struct Object *obedit, struct Image *ima, float co[2], float uv[2]); + +/* uvedit_unwrap.c */ +void ED_uvedit_live_unwrap_begin(struct Scene *scene, struct Object *obedit); +void ED_uvedit_live_unwrap_re_solve(void); +void ED_uvedit_live_unwrap_end(short cancel); + #endif /* ED_UVEDIT_H */ 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-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/space_image/image_header.c 2009-01-28 21:43:43 UTC (rev 18722) @@ -662,10 +662,6 @@ static void do_uvsmenu(bContext *C, void *arg, int event) { switch(event) { - case 1: /* UVs Constrained Rectangular */ - if(sima->flag & SI_BE_SQUARE) sima->flag &= ~SI_BE_SQUARE; - else sima->flag |= SI_BE_SQUARE; - break; case 2: /* UVs Clipped to Image Size */ if(sima->flag & SI_CLIP_UV) sima->flag &= ~SI_CLIP_UV; else sima->flag |= SI_CLIP_UV; @@ -727,7 +723,6 @@ block= uiBeginBlock(C, handle->region, "image_imagemenu", UI_EMBOSSP, UI_HELV); uiDefMenuTogR(block, &uvptr, "snap_to_pixels", 0, NULL); - uiDefMenuTogR(block, &uvptr, "constrain_quads_rectangular", 0, NULL); uiDefMenuTogR(block, &uvptr, "constrain_to_image_bounds", 0, NULL); uiDefMenuSep(block); Modified: branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h 2009-01-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h 2009-01-28 21:43:43 UTC (rev 18722) @@ -47,6 +47,7 @@ void get_space_image_size(struct SpaceImage *sima, int *width, int *height); void get_space_image_aspect(struct SpaceImage *sima, float *aspx, float *aspy); void get_space_image_zoom(struct SpaceImage *sima, struct ARegion *ar, float *zoomx, float *zoomy); +void get_space_image_uv_aspect(struct SpaceImage *sima, float *aspx, float *aspy); int get_space_image_show_render(struct SpaceImage *sima); int get_space_image_show_paint(struct SpaceImage *sima); 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-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/space_image/space_image.c 2009-01-28 21:43:43 UTC (rev 18722) @@ -53,6 +53,7 @@ #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" +#include "ED_image.h" #include "ED_mesh.h" #include "ED_space_api.h" #include "ED_screen.h" @@ -547,6 +548,17 @@ *zoomy= (float)(ar->winrct.ymax - ar->winrct.ymin)/(float)((ar->v2d.cur.ymax - ar->v2d.cur.ymin)*height); } +void get_space_image_uv_aspect(SpaceImage *sima, float *aspx, float *aspy) +{ + int w, h; + + get_space_image_aspect(sima, aspx, aspy); + get_space_image_size(sima, &w, &h); + + *aspx *= (float)w; + *aspy *= (float)h; +} + int get_space_image_show_render(SpaceImage *sima) { return (sima->image && ELEM(sima->image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE)); @@ -585,3 +597,21 @@ return 0; } +/* Exported Functions */ + +Image *ED_space_image(SpaceImage *sima) +{ + return get_space_image(sima); +} + +void ED_space_image_size(SpaceImage *sima, int *width, int *height) +{ + get_space_image_size(sima, width, height); +} + +void ED_space_image_uv_aspect(SpaceImage *sima, float *aspx, float *aspy) +{ + get_space_image_uv_aspect(sima, aspx, aspy); +} + + Modified: branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c 2009-01-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c 2009-01-28 21:43:43 UTC (rev 18722) @@ -871,7 +871,7 @@ ANIM_animdata_send_notifiers(C, &ac, ANIM_CHANGED_BOTH); /* for tweak grab to work */ - return OPERATOR_PASS_THROUGH; + return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; } void GRAPHEDIT_OT_keyframes_clickselect (wmOperatorType *ot) Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_select.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_node/node_select.c 2009-01-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/space_node/node_select.c 2009-01-28 21:43:43 UTC (rev 18722) @@ -127,7 +127,7 @@ WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */ /* allow tweak event to work too */ - return OPERATOR_PASS_THROUGH; + return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; } static int node_select_modal(bContext *C, wmOperator *op, wmEvent *event) Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform.c 2009-01-28 19:42:49 UTC (rev 18721) +++ branches/blender2.5/blender/source/blender/editors/transform/transform.c 2009-01-28 21:43:43 UTC (rev 18722) @@ -76,7 +76,6 @@ //#include "BIF_editmesh.h" //#include "BIF_editsima.h" //#include "BIF_editparticle.h" -//#include "BIF_drawimage.h" /* uvco_to_areaco_noclip */ //#include "BIF_editaction.h" #include "BKE_action.h" /* get_action_frame */ @@ -96,10 +95,11 @@ //#include "BSE_time.h" //#include "BSE_view.h" -#include "ED_view3d.h" +#include "ED_image.h" #include "ED_screen.h" -#include "ED_util.h" #include "ED_space_api.h" +#include "ED_util.h" +#include "ED_view3d.h" #include "UI_view2d.h" #include "WM_types.h" @@ -192,9 +192,7 @@ View2D *v2d = t->view; float divx, divy, aspx, aspy; - // TRANSFORM_FIX_ME - //transform_aspect_ratio_tface_uv(&aspx, &aspy); - aspx= aspy= 1.0f; + ED_space_image_uv_aspect(t->sa->spacedata.first, &aspx, &aspy); divx= v2d->mask.xmax-v2d->mask.xmin; divy= v2d->mask.ymax-v2d->mask.ymin; @@ -246,13 +244,11 @@ else if(t->spacetype==SPACE_IMAGE) { float aspx, aspy, v[2]; - // TRANSFORM_FIX_ME - //transform_aspect_ratio_tface_uv(&aspx, &aspy); + ED_space_image_uv_aspect(t->sa->spacedata.first, &aspx, &aspy); v[0]= vec[0]/aspx; v[1]= vec[1]/aspy; - // TRANSFORM_FIX_ME - //uvco_to_areaco_noclip(v, adr); + UI_view2d_to_region_no_clip(t->view, v[0], v[1], adr, adr+1); } else if(t->spacetype==SPACE_IPO) { int out[2] = {0, 0}; @@ -293,46 +289,44 @@ void applyAspectRatio(TransInfo *t, float *vec) { -#if 0 // TRANSFORM_FIX_ME - TransInfo *t = BIF_GetTransInfo(); + SpaceImage *sima= t->sa->spacedata.first; if ((t->spacetype==SPACE_IMAGE) && (t->mode==TFM_TRANSLATION)) { float aspx, aspy; - if((G.sima->flag & SI_COORDFLOATS)==0) { + if((sima->flag & SI_COORDFLOATS)==0) { int width, height; - transform_width_height_tface_uv(&width, &height); + ED_space_image_size(sima, &width, &height); vec[0] *= width; vec[1] *= height; } - transform_aspect_ratio_tface_uv(&aspx, &aspy); + ED_space_image_uv_aspect(sima, &aspx, &aspy); vec[0] /= aspx; vec[1] /= aspy; } -#endif } @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs