Blender  V2.93
uvedit_intern.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2008 Blender Foundation.
17  * All rights reserved.
18  */
19 
24 #pragma once
25 
26 struct BMFace;
27 struct BMLoop;
28 struct Object;
29 struct Scene;
30 struct SpaceImage;
31 struct wmOperatorType;
32 
33 /* geometric utilities */
34 void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len);
35 
36 /* find nearest */
37 
38 typedef struct UvNearestHit {
40  struct Object *ob;
42  struct BMFace *efa;
43  struct BMLoop *l;
50  float dist_sq;
51 
53  float scale[2];
55 
56 #define UV_NEAREST_HIT_INIT_DIST_PX(v2d, dist_px) \
57  { \
58  .dist_sq = square_f(U.pixelsize * dist_px), \
59  .scale = { \
60  UI_view2d_scale_get_x(v2d), \
61  UI_view2d_scale_get_y(v2d), \
62  }, \
63  }
64 
65 #define UV_NEAREST_HIT_INIT_MAX(v2d) \
66  { \
67  .dist_sq = FLT_MAX, \
68  .scale = { \
69  UI_view2d_scale_get_x(v2d), \
70  UI_view2d_scale_get_y(v2d), \
71  }, \
72  }
73 
74 bool uv_find_nearest_vert(struct Scene *scene,
75  struct Object *obedit,
76  const float co[2],
77  const float penalty_dist,
78  struct UvNearestHit *hit);
80  struct Object **objects,
81  const uint objects_len,
82  const float co[2],
83  const float penalty_dist,
84  struct UvNearestHit *hit);
85 
86 bool uv_find_nearest_edge(struct Scene *scene,
87  struct Object *obedit,
88  const float co[2],
89  struct UvNearestHit *hit);
91  struct Object **objects,
92  const uint objects_len,
93  const float co[2],
94  struct UvNearestHit *hit);
95 
97  struct Object *obedit,
98  const float co[2],
99  struct UvNearestHit *hit,
100  const bool only_in_face);
101 bool uv_find_nearest_face(struct Scene *scene,
102  struct Object *obedit,
103  const float co[2],
104  struct UvNearestHit *hit);
106  struct Object **objects,
107  const uint objects_len,
108  const float co[2],
109  struct UvNearestHit *hit,
110  const bool only_in_face);
112  struct Object **objects,
113  const uint objects_len,
114  const float co[2],
115  struct UvNearestHit *hit);
116 
118  struct Object *obedit,
119  struct BMVert *v,
120  const float co[2]);
122  struct Object *obedit,
123  struct BMEdge *e,
124  const float co[2]);
125 
126 /* utility tool functions */
127 
128 void uvedit_live_unwrap_update(struct SpaceImage *sima,
129  struct Scene *scene,
130  struct Object *obedit);
131 
132 /* operators */
133 
135 void UV_OT_cube_project(struct wmOperatorType *ot);
139 void UV_OT_pack_islands(struct wmOperatorType *ot);
140 void UV_OT_reset(struct wmOperatorType *ot);
142 void UV_OT_unwrap(struct wmOperatorType *ot);
143 void UV_OT_rip(struct wmOperatorType *ot);
144 void UV_OT_stitch(struct wmOperatorType *ot);
146 
147 /* uvedit_path.c */
150 
151 /* uvedit_select.c */
152 
153 bool uvedit_select_is_any_selected(struct Scene *scene, struct Object *obedit);
155  struct Object **objects,
156  const uint objects_len);
158  struct BMVert *eve,
159  const int cd_loop_uv_offset);
160 
161 void UV_OT_select_all(struct wmOperatorType *ot);
162 void UV_OT_select(struct wmOperatorType *ot);
163 void UV_OT_select_loop(struct wmOperatorType *ot);
167 void UV_OT_select_split(struct wmOperatorType *ot);
169 void UV_OT_select_box(struct wmOperatorType *ot);
170 void UV_OT_select_lasso(struct wmOperatorType *ot);
172 void UV_OT_select_more(struct wmOperatorType *ot);
173 void UV_OT_select_less(struct wmOperatorType *ot);
unsigned int uint
Definition: BLI_sys_types.h:83
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
Scene scene
struct BMLoop * l
Definition: uvedit_intern.h:43
struct Object * ob
Definition: uvedit_intern.h:40
float scale[2]
Definition: uvedit_intern.h:53
struct BMFace * efa
Definition: uvedit_intern.h:42
void UV_OT_rip(struct wmOperatorType *ot)
Definition: uvedit_rip.c:950
bool uvedit_select_is_any_selected(struct Scene *scene, struct Object *obedit)
void UV_OT_select_linked(struct wmOperatorType *ot)
void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len)
Definition: uvedit_ops.c:208
BMLoop * uv_find_nearest_loop_from_vert(struct Scene *scene, struct Object *obedit, struct BMVert *v, const float co[2])
bool uv_find_nearest_face_multi_ex(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], struct UvNearestHit *hit, const bool only_in_face)
BMLoop * uv_find_nearest_loop_from_edge(struct Scene *scene, struct Object *obedit, struct BMEdge *e, const float co[2])
bool uv_find_nearest_vert(struct Scene *scene, struct Object *obedit, const float co[2], const float penalty_dist, struct UvNearestHit *hit)
void UV_OT_select_less(struct wmOperatorType *ot)
void UV_OT_select_loop(struct wmOperatorType *ot)
void UV_OT_select(struct wmOperatorType *ot)
bool uv_find_nearest_face_multi(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], struct UvNearestHit *hit)
void UV_OT_select_pinned(struct wmOperatorType *ot)
struct UvNearestHit UvNearestHit
bool uvedit_select_is_any_selected_multi(struct Scene *scene, struct Object **objects, const uint objects_len)
void UV_OT_select_overlap(struct wmOperatorType *ot)
void UV_OT_select_box(struct wmOperatorType *ot)
bool uv_find_nearest_vert_multi(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], const float penalty_dist, struct UvNearestHit *hit)
void UV_OT_unwrap(struct wmOperatorType *ot)
bool uv_find_nearest_edge(struct Scene *scene, struct Object *obedit, const float co[2], struct UvNearestHit *hit)
void UV_OT_sphere_project(struct wmOperatorType *ot)
void UV_OT_select_more(struct wmOperatorType *ot)
void uvedit_live_unwrap_update(struct SpaceImage *sima, struct Scene *scene, struct Object *obedit)
Definition: uvedit_ops.c:193
void UV_OT_smart_project(struct wmOperatorType *ot)
void UV_OT_shortest_path_pick(struct wmOperatorType *ot)
Definition: uvedit_path.c:774
void UV_OT_shortest_path_select(struct wmOperatorType *ot)
Definition: uvedit_path.c:881
void UV_OT_cube_project(struct wmOperatorType *ot)
const float * uvedit_first_selected_uv_from_vertex(struct Scene *scene, struct BMVert *eve, const int cd_loop_uv_offset)
void UV_OT_cylinder_project(struct wmOperatorType *ot)
void UV_OT_select_split(struct wmOperatorType *ot)
void UV_OT_select_all(struct wmOperatorType *ot)
void UV_OT_stitch(struct wmOperatorType *ot)
bool uv_find_nearest_face_ex(struct Scene *scene, struct Object *obedit, const float co[2], struct UvNearestHit *hit, const bool only_in_face)
void UV_OT_select_lasso(struct wmOperatorType *ot)
bool uv_find_nearest_edge_multi(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], struct UvNearestHit *hit)
void UV_OT_reset(struct wmOperatorType *ot)
bool uv_find_nearest_face(struct Scene *scene, struct Object *obedit, const float co[2], struct UvNearestHit *hit)
void UV_OT_average_islands_scale(struct wmOperatorType *ot)
void UV_OT_select_linked_pick(struct wmOperatorType *ot)
void UV_OT_select_circle(struct wmOperatorType *ot)
void UV_OT_project_from_view(struct wmOperatorType *ot)
void UV_OT_pack_islands(struct wmOperatorType *ot)
void UV_OT_minimize_stretch(struct wmOperatorType *ot)
void UV_OT_select_edge_ring(struct wmOperatorType *ot)
uint len
wmOperatorType * ot
Definition: wm_files.c:3156