2.5
[blender-staging.git] / source / blender / editors / include / ED_view3d.h
index 9b0dec908a8e7a82c6abca3ed27c04cdfced3a08..4f4afd2abb4f1526f1ab88d1c3caea5994982aaa 100644 (file)
 /* ********* exports for space_view3d/ module ********** */
 struct ARegion;
 struct View3D;
+struct ViewContext;
+struct BPoint;
+struct Nurb;
+struct BezTriple;
+struct EditVert;
+struct EditEdge;
+struct EditFace;
+struct ImBuf;
+struct Scene;
+struct bContext;
 
+/* for derivedmesh drawing callbacks, for view3d_select, .... */
+typedef struct ViewContext {
+       Scene *scene;
+       Object *obact;
+       Object *obedit;
+       struct ARegion *ar;
+       struct View3D *v3d;
+       struct EditMesh *em;
+       short mval[2];
+} ViewContext;
 
-float *give_cursor(Scene *scene, View3D *v3d);
+
+float *give_cursor(struct Scene *scene, struct View3D *v3d);
 
 void initgrabz(struct View3D *v3d, float x, float y, float z);
 void window_to_3d(struct ARegion *ar, struct View3D *v3d, float *vec, short mx, short my);
@@ -52,5 +73,28 @@ void project_float_noclip(struct ARegion *ar, struct View3D *v3d, float *vec, fl
 void viewline(struct ARegion *ar, struct View3D *v3d, short mval[2], float ray_start[3], float ray_end[3]);
 void viewray(struct ARegion *ar, struct View3D *v3d, short mval[2], float ray_start[3], float ray_normal[3]);
 
+/* drawobject.c itterators */
+void mesh_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct EditVert *eve, int x, int y, int index), void *userData, int clipVerts);
+void mesh_foreachScreenEdge(struct ViewContext *vc, void (*func)(void *userData, struct EditEdge *eed, int x0, int y0, int x1, int y1, int index), void *userData, int clipVerts);
+void mesh_foreachScreenFace(struct ViewContext *vc, void (*func)(void *userData, struct EditFace *efa, int x, int y, int index), void *userData);
+void nurbs_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct Nurb *nu, struct BPoint *bp, struct BezTriple *bezt, int beztindex, int x, int y), void *userData);
+void lattice_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct BPoint *bp, int x, int y), void *userData);
+
+int view3d_test_clipping(struct View3D *v3d, float *vec);
+void view3d_align_axis_to_vector(struct Scene *scene, struct View3D *v3d, int axisidx, float vec[3]);
+
+/* backbuffer select and draw support */
+struct ImBuf *view3d_read_backbuf(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
+unsigned int view3d_sample_backbuf_rect(struct ViewContext *vc, short mval[2], int size, unsigned int min, unsigned int max, int *dist, short strict, unsigned int (*indextest)(unsigned int index));
+unsigned int view3d_sample_backbuf(struct ViewContext *vc, int x, int y);
+
+/* select */
+#define MAXPICKBUF      10000
+short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, rcti *input);
+
+/* modes */
+void ED_view3d_exit_paint_modes(struct bContext *C);
+
+
 #endif /* ED_VIEW3D_H */