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:
authorJean-Luc Peurière <jlp@nerim.net>2008-03-14 02:54:02 +0300
committerJean-Luc Peurière <jlp@nerim.net>2008-03-14 02:54:02 +0300
commita68a7f42b02ad0260220d94f36ab61c772db071a (patch)
tree620b763cd24fbfc1259f00ccb005217914af0c6f /source/blender/include
parent526d0bec4722900a86d81ff0f5d71504b2b4ad8c (diff)
parent15215493bf9d1d08e650109e6eb6189fc76e289e (diff)
resolved conflict state with HEAD r14096
blenderbuttons still bad not let this compile
Diffstat (limited to 'source/blender/include')
-rw-r--r--source/blender/include/BDR_drawaction.h40
-rw-r--r--source/blender/include/BDR_drawmesh.h3
-rw-r--r--source/blender/include/BDR_editcurve.h8
-rw-r--r--source/blender/include/BDR_editface.h4
-rw-r--r--source/blender/include/BDR_editmball.h2
-rw-r--r--source/blender/include/BDR_editobject.h11
-rw-r--r--source/blender/include/BDR_sculptmode.h72
-rw-r--r--source/blender/include/BDR_unwrapper.h1
-rw-r--r--source/blender/include/BIF_butspace.h36
-rw-r--r--source/blender/include/BIF_drawimage.h11
-rw-r--r--source/blender/include/BIF_drawseq.h1
-rw-r--r--source/blender/include/BIF_drawtext.h2
-rw-r--r--source/blender/include/BIF_editaction.h170
-rw-r--r--source/blender/include/BIF_editarmature.h22
-rw-r--r--source/blender/include/BIF_editconstraint.h23
-rw-r--r--source/blender/include/BIF_editdeform.h3
-rw-r--r--source/blender/include/BIF_editmesh.h28
-rw-r--r--source/blender/include/BIF_editmode_undo.h3
-rw-r--r--source/blender/include/BIF_editparticle.h98
-rw-r--r--source/blender/include/BIF_editseq.h46
-rw-r--r--source/blender/include/BIF_editsima.h35
-rw-r--r--source/blender/include/BIF_editsound.h2
-rw-r--r--source/blender/include/BIF_editview.h2
-rw-r--r--source/blender/include/BIF_filelist.h86
-rw-r--r--source/blender/include/BIF_fsmenu.h7
-rw-r--r--source/blender/include/BIF_gl.h13
-rw-r--r--source/blender/include/BIF_imasel.h26
-rw-r--r--source/blender/include/BIF_interface.h3
-rw-r--r--source/blender/include/BIF_interface_icons.h3
-rw-r--r--source/blender/include/BIF_language.h3
-rw-r--r--source/blender/include/BIF_meshlaplacian.h87
-rw-r--r--source/blender/include/BIF_meshtools.h4
-rw-r--r--source/blender/include/BIF_outliner.h5
-rw-r--r--source/blender/include/BIF_poselib.h55
-rw-r--r--source/blender/include/BIF_poseobject.h17
-rw-r--r--source/blender/include/BIF_radialcontrol.h62
-rw-r--r--source/blender/include/BIF_renderwin.h10
-rw-r--r--source/blender/include/BIF_resources.h44
-rw-r--r--source/blender/include/BIF_space.h8
-rw-r--r--source/blender/include/BIF_spacetypes.h3
-rw-r--r--source/blender/include/BIF_toolbox.h10
-rw-r--r--source/blender/include/BIF_transform.h30
-rw-r--r--source/blender/include/BIF_usiblender.h1
-rw-r--r--source/blender/include/BPI_script.h71
-rw-r--r--source/blender/include/BSE_drawimasel.h35
-rw-r--r--source/blender/include/BSE_drawipo.h1
-rw-r--r--source/blender/include/BSE_drawview.h2
-rw-r--r--source/blender/include/BSE_edit.h1
-rw-r--r--source/blender/include/BSE_editaction_types.h87
-rw-r--r--source/blender/include/BSE_editipo.h34
-rw-r--r--source/blender/include/BSE_filesel.h2
-rw-r--r--source/blender/include/BSE_headerbuttons.h1
-rw-r--r--source/blender/include/BSE_node.h11
-rw-r--r--source/blender/include/BSE_seqeffects.h1
-rw-r--r--source/blender/include/BSE_seqscopes.h3
-rw-r--r--source/blender/include/BSE_sequence.h30
-rw-r--r--source/blender/include/BSE_time.h21
-rw-r--r--source/blender/include/BSE_trans_types.h1
-rw-r--r--source/blender/include/BSE_view.h1
-rw-r--r--source/blender/include/blendef.h136
-rw-r--r--source/blender/include/butspace.h114
-rw-r--r--source/blender/include/datatoc.h3
-rw-r--r--source/blender/include/editmesh.h2
-rw-r--r--source/blender/include/interface.h2
-rw-r--r--source/blender/include/multires.h28
-rw-r--r--source/blender/include/mydevice.h2
-rw-r--r--source/blender/include/reeb.h127
-rw-r--r--source/blender/include/transform.h95
68 files changed, 1491 insertions, 420 deletions
diff --git a/source/blender/include/BDR_drawaction.h b/source/blender/include/BDR_drawaction.h
index fdbd710c59f..72b3de1e54d 100644
--- a/source/blender/include/BDR_drawaction.h
+++ b/source/blender/include/BDR_drawaction.h
@@ -38,9 +38,23 @@ struct Ipo;
struct IpoCurve;
struct gla2DDrawInfo;
struct bAction;
+struct bActionGroup;
struct Object;
struct ListBase;
+/* ****************************** Base Structs ****************************** */
+
+/* Keyframe Column Struct */
+typedef struct ActKeyColumn {
+ struct ActKeyColumn *next, *prev;
+ short sel, handle_type;
+ float cfra;
+
+ /* only while drawing - used to determine if long-keyframe needs to be drawn */
+ short modified;
+ short totcurve;
+} ActKeyColumn;
+
/* 'Long Keyframe' Struct */
typedef struct ActKeyBlock {
struct ActKeyBlock *next, *prev;
@@ -53,21 +67,31 @@ typedef struct ActKeyBlock {
short totcurve;
} ActKeyBlock;
-/*Action Generics */
+
+/* Inclusion-Range Limiting Struct (optional) */
+typedef struct ActKeysInc {
+ struct Object *ob; /* if present, used to find action-scaled time */
+ float start, end; /* frames (global-time) to only consider keys between */
+} ActKeysInc;
+
+/* ******************************* Methods ****************************** */
+
+/* Action Generics */
void draw_cfra_action(void);
-int count_action_levels (struct bAction *act);
/* Channel Drawing */
void draw_icu_channel(struct gla2DDrawInfo *di, struct IpoCurve *icu, float ypos);
void draw_ipo_channel(struct gla2DDrawInfo *di, struct Ipo *ipo, float ypos);
-void draw_action_channel(struct gla2DDrawInfo *di, bAction *act, float ypos);
-void draw_object_channel(struct gla2DDrawInfo *di, Object *ob, float ypos);
+void draw_agroup_channel(struct gla2DDrawInfo *di, struct bActionGroup *agrp, float ypos);
+void draw_action_channel(struct gla2DDrawInfo *di, struct bAction *act, float ypos);
+void draw_object_channel(struct gla2DDrawInfo *di, struct Object *ob, float ypos);
/* Keydata Generation */
-void icu_to_keylist(struct IpoCurve *icu, ListBase *keys, ListBase *blocks);
-int ipo_to_keylist(struct Ipo *ipo, ListBase *keys, ListBase *blocks);
-int action_to_keylist(bAction *act, ListBase *keys, ListBase *blocks);
-int ob_to_keylist(Object *ob, ListBase *keys, ListBase *blocks);
+void icu_to_keylist(struct IpoCurve *icu, ListBase *keys, ListBase *blocks, ActKeysInc *aki);
+void ipo_to_keylist(struct Ipo *ipo, ListBase *keys, ListBase *blocks, ActKeysInc *aki);
+void agroup_to_keylist(struct bActionGroup *agrp, ListBase *keys, ListBase *blocks, ActKeysInc *aki);
+void action_to_keylist(struct bAction *act, ListBase *keys, ListBase *blocks, ActKeysInc *aki);
+void ob_to_keylist(struct Object *ob, ListBase *keys, ListBase *blocks, ActKeysInc *aki);
#endif /* BDR_DRAWACTION_H */
diff --git a/source/blender/include/BDR_drawmesh.h b/source/blender/include/BDR_drawmesh.h
index 60c87308e20..998cadc18a3 100644
--- a/source/blender/include/BDR_drawmesh.h
+++ b/source/blender/include/BDR_drawmesh.h
@@ -36,6 +36,7 @@
struct Image;
struct MTFace;
struct Object;
+struct DerivedMesh;
struct Mesh;
struct EdgeHash;
@@ -75,7 +76,7 @@ int set_tpage(struct MTFace *tface);
void texpaint_enable_mipmap(void);
void texpaint_disable_mipmap(void);
-void draw_tface_mesh(struct Object *ob, struct Mesh *me, int dt);
+void draw_mesh_textured(struct Object *ob, struct DerivedMesh *dm, int facesel);
struct EdgeHash *get_tface_mesh_marked_edge_info(struct Mesh *me);
void init_realtime_GL(void);
diff --git a/source/blender/include/BDR_editcurve.h b/source/blender/include/BDR_editcurve.h
index a6319f2333c..70282aeb0c8 100644
--- a/source/blender/include/BDR_editcurve.h
+++ b/source/blender/include/BDR_editcurve.h
@@ -78,11 +78,13 @@ void extrude_nurb(void);
void makecyclicNurb(void);
void selectconnected_nurb(void);
void selectrow_nurb(void);
-void selectends_nurb(int selFirst);
+void selectend_nurb(short selfirst, short doswap, short selstatus);
void select_more_nurb(void);
void select_less_nurb(void);
void select_next_nurb(void);
void select_prev_nurb(void);
+void select_random_nurb(void);
+void select_every_nth_nurb(void);
void adduplicate_nurb(void);
void delNurb(void);
void nurb_set_smooth(short event);
@@ -94,8 +96,10 @@ void add_primitiveNurb(int type);
void clear_tilt(void);
void clever_numbuts_curve(void);
int bezt_compare (const void *e1, const void *e2);
+void setweightNurb( void );
+void setradiusNurb( void );
+void smoothradiusNurb( void );
extern void undo_push_curve(char *name);
#endif /* BDR_EDITCURVE_H */
-
diff --git a/source/blender/include/BDR_editface.h b/source/blender/include/BDR_editface.h
index 31971da292b..72b0e7352da 100644
--- a/source/blender/include/BDR_editface.h
+++ b/source/blender/include/BDR_editface.h
@@ -34,10 +34,11 @@
#define BDR_EDITFACE_H
struct MTFace;
+struct EditFace;
struct Mesh;
struct MCol;
-struct MTFace *get_active_tface(struct MCol **mcol);
+struct MTFace *get_active_mtface(struct EditFace **efa, struct MCol **mcol, short sloppy);
void calculate_uv_map(unsigned short mapmode);
void default_uv(float uv[][2], float size);
void make_tfaces(struct Mesh *me);
@@ -52,7 +53,6 @@ int minmax_tface(float *min, float *max);
void face_select(void);
void face_borderselect(void);
void uv_autocalc_tface(void);
-void set_faceselect(void);
void set_texturepaint(void);
void get_same_uv(void);
void seam_mark_clear_tface(short mode);
diff --git a/source/blender/include/BDR_editmball.h b/source/blender/include/BDR_editmball.h
index c3e9eaaf66c..e2b529acaf8 100644
--- a/source/blender/include/BDR_editmball.h
+++ b/source/blender/include/BDR_editmball.h
@@ -42,6 +42,8 @@ void load_editMball(void);
*/
void add_primitiveMball(int);
void deselectall_mball(void);
+void selectinverse_mball(void);
+void selectrandom_mball(void);
void mouse_mball(void);
void adduplicate_mball(void);
void delete_mball(void);
diff --git a/source/blender/include/BDR_editobject.h b/source/blender/include/BDR_editobject.h
index 2a96a8d65cb..3bc725f5662 100644
--- a/source/blender/include/BDR_editobject.h
+++ b/source/blender/include/BDR_editobject.h
@@ -65,6 +65,8 @@ void exit_editmode(int flag);
void check_editmode(int type);
void enter_editmode(int wc);
+void exit_paint_modes(void);
+
void docenter(int centermode);
void docenter_new(void);
void docenter_cursor(void);
@@ -77,6 +79,8 @@ void link_to_scene(unsigned short nr);
void make_links_menu(void);
void make_links(short event);
void make_duplilist_real(void);
+void apply_objects_locrot(void);
+void apply_objects_visual_tx(void);
void apply_object(void);
/* old transform */
@@ -93,6 +97,7 @@ void single_object_users(int flag);
void new_id_matar(struct Material **matar, int totcol);
void single_obdata_users(int flag);
void single_mat_users(int flag);
+void single_ipo_users(int flag);
void do_single_tex_user(struct Tex **from);
void single_tex_users_expand(void);
void single_mat_users_expand(void);
@@ -107,16 +112,20 @@ void set_ob_ipoflags(void);
void select_select_keys(void);
int vergbaseco(const void *a1, const void *a2);
void auto_timeoffs(void);
+void ofs_timeoffs(void);
+void rand_timeoffs(void);
void texspace_edit(void);
void flip_subdivison(int);
void mirrormenu(void);
void hookmenu(void); /* object mode hook menu */
-void add_hook(void);
+void add_hook_menu(void);
+void add_hook(int mode);
void hook_select(struct HookModifierData *hmd);
int hook_getIndexArray(int *tot, int **indexar, char *name, float *cent_r);
+int object_is_libdata(struct Object *ob);
int object_data_is_libdata(struct Object *ob);
void hide_objects(int select);
void show_objects(void);
diff --git a/source/blender/include/BDR_sculptmode.h b/source/blender/include/BDR_sculptmode.h
index 0e80a7f0185..e36b8674612 100644
--- a/source/blender/include/BDR_sculptmode.h
+++ b/source/blender/include/BDR_sculptmode.h
@@ -30,12 +30,12 @@
#ifndef BDR_SCULPTMODE_H
#define BDR_SCULPTMODE_H
-/* For bglMats */
-#include "BIF_glutil.h"
-
-#include "transform.h"
+#include "DNA_listBase.h"
+#include "DNA_vec_types.h"
+#include "BKE_sculpt.h"
struct uiBlock;
+struct BrushAction;
struct BrushData;
struct IndexNode;
struct KeyBlock;
@@ -45,77 +45,43 @@ struct PartialVisibility;
struct Scene;
struct ScrArea;
struct SculptData;
+struct SculptStroke;
-typedef enum PropsetMode {
- PropsetNone = 0,
- PropsetSize,
- PropsetStrength,
- PropsetTexRot
-} PropsetMode;
-typedef struct PropsetData {
- PropsetMode mode;
- unsigned int tex;
- short origloc[2];
- float *texdata;
-
- short origsize;
- char origstrength;
- float origtexrot;
-
- NumInput num;
-} PropsetData;
-
-typedef struct SculptSession {
- bglMats mats;
-
- /* An array of lists; array is sized as
- large as the number of verts in the mesh,
- the list for each vert contains the index
- for all the faces that use that vertex */
- struct ListBase *vertex_users;
- struct IndexNode *vertex_users_mem;
- int vertex_users_size;
-
- /* Used to cache the render of the active texture */
- unsigned int texcache_w, texcache_h, *texcache;
-
- PropsetData *propset;
-
- /* For rotating around a pivot point */
- vec3f pivot;
-} SculptSession;
-
-SculptSession *sculpt_session(void);
+struct SculptSession *sculpt_session(void);
struct SculptData *sculpt_data(void);
/* Memory */
-void sculptmode_init(struct Scene *);
-void sculptmode_free_all(struct Scene *);
void sculptmode_correct_state(void);
/* Interface */
void sculptmode_draw_interface_tools(struct uiBlock *block,unsigned short cx, unsigned short cy);
+void sculptmode_draw_interface_brush(struct uiBlock *block,unsigned short cx, unsigned short cy);
void sculptmode_draw_interface_textures(struct uiBlock *block,unsigned short cx, unsigned short cy);
void sculptmode_rem_tex(void*,void*);
-void sculptmode_propset_init(PropsetMode mode);
-void sculptmode_propset(const unsigned short event);
void sculptmode_selectbrush_menu(void);
void sculptmode_draw_mesh(int);
void sculpt_paint_brush(char clear);
+void sculpt_stroke_draw();
+void sculpt_radialcontrol_start(int mode);
struct BrushData *sculptmode_brush(void);
-float tex_angle(void);
+void do_symmetrical_brush_actions(struct BrushAction *a, short *, short *);
void sculptmode_update_tex(void);
char sculpt_modifiers_active(struct Object *ob);
void sculpt(void);
void set_sculptmode(void);
+/* Stroke */
+void sculpt_stroke_new(const int max);
+void sculpt_stroke_free();
+void sculpt_stroke_add_point(const short x, const short y);
+void sculpt_stroke_apply(struct BrushAction *);
+void sculpt_stroke_apply_all(struct BrushAction *);
+void sculpt_stroke_draw();
+
+
/* Partial Mesh Visibility */
-struct PartialVisibility *sculptmode_copy_pmv(struct PartialVisibility *);
-void sculptmode_pmv_free(struct PartialVisibility *);
-void sculptmode_revert_pmv(struct Mesh *me);
-void sculptmode_pmv_off(struct Mesh *me);
void sculptmode_pmv(int mode);
#endif
diff --git a/source/blender/include/BDR_unwrapper.h b/source/blender/include/BDR_unwrapper.h
index 6a2b54409c3..a6ff1b614a5 100644
--- a/source/blender/include/BDR_unwrapper.h
+++ b/source/blender/include/BDR_unwrapper.h
@@ -41,6 +41,7 @@ void select_linked_tfaces_with_seams(int mode, struct Mesh *me, unsigned int ind
void unwrap_lscm(short seamcut); /* unwrap faces selected in 3d view */
void minimize_stretch_tface_uv(void); /* optimize faces selected in uv editor */
void pack_charts_tface_uv(void);
+void average_charts_tface_uv(void);
/* for live mode: no undo pushes, caching for quicky re-unwrap */
void unwrap_lscm_live_begin(void);
diff --git a/source/blender/include/BIF_butspace.h b/source/blender/include/BIF_butspace.h
index f87e9797cb3..9d5e1961178 100644
--- a/source/blender/include/BIF_butspace.h
+++ b/source/blender/include/BIF_butspace.h
@@ -83,11 +83,13 @@ extern void validate_editbonebutton_cb(void *bonev, void *namev);
#define TAB_OBJECT_OBJECT 0
#define TAB_OBJECT_PHYSICS 1
+#define TAB_OBJECT_PARTICLE 2
#define TAB_SCENE_RENDER 0
-#define TAB_SCENE_WORLD 1
+#define TAB_SCENE_WORLD 1
#define TAB_SCENE_ANIM 2
#define TAB_SCENE_SOUND 3
+#define TAB_SCENE_SEQUENCER 4
/* buts->scaflag */
@@ -102,6 +104,38 @@ extern void validate_editbonebutton_cb(void *bonev, void *namev);
#define BUTS_ACT_LINK 256
+/* buttons grid */
+#define PANELX 320
+#define PANELY 0
+#define PANELW 318
+#define PANELH 204
+
+#define BUTW1 300
+#define BUTW2 145
+#define BUTW3 93
+#define BUTW4 67
+#define ICONBUTW 20
+#define BUTH 22
+
+#define YSPACE 6
+#define XSPACE 10
+#define PANEL_YMAX 210
+#define PANEL_XMAX 310
+
+#define X1CLM1 10
+
+#define X2CLM1 X1CLM1
+#define X2CLM2 165
+
+#define X3CLM1 X1CLM1
+#define X3CLM2 113
+#define X3CLM3 217
+
+#define X4CLM1 X1CLM1
+#define X4CLM2 77
+#define X4CLM3 165
+#define X4CLM4 232
+
#endif
diff --git a/source/blender/include/BIF_drawimage.h b/source/blender/include/BIF_drawimage.h
index 72562b76beb..5ad1978a6e2 100644
--- a/source/blender/include/BIF_drawimage.h
+++ b/source/blender/include/BIF_drawimage.h
@@ -39,12 +39,16 @@ struct Render;
struct Image;
struct ImBuf;
struct uiBlock;
+struct MTFace;
void do_imagebuts(unsigned short event);
void calc_image_view(struct SpaceImage *sima, char mode);
void drawimagespace(struct ScrArea *sa, void *spacedata);
-void draw_tfaces(void);
-void image_changed(struct SpaceImage *sima, int dotile);
+void image_changed(struct SpaceImage *sima, struct Image *image);
+int draw_uvs_face_check(void);
+void tface_center(struct MTFace *tf, float cent[2], void * isquad);
+void draw_uvs_sima(void);
+void image_set_tile(struct SpaceImage *sima, int dotile);
void image_home(void);
void image_viewmove(int mode);
void image_viewzoom(unsigned short event, int invert);
@@ -59,11 +63,10 @@ void imagespace_composite_flipbook(struct ScrArea *sa);
void imagewindow_render_callbacks(struct Render *re);
void imagewindow_toggle_render(void);
-void imagewindow_swap_render_rects(void);
-void imagewin_store_spare(void);
struct ImBuf *imagewindow_get_ibuf(struct SpaceImage *sima);
void image_editvertex_buts(struct uiBlock *block);
+void image_editcursor_buts(struct uiBlock *block);
#endif
diff --git a/source/blender/include/BIF_drawseq.h b/source/blender/include/BIF_drawseq.h
index 986044d9c7e..4571267a09c 100644
--- a/source/blender/include/BIF_drawseq.h
+++ b/source/blender/include/BIF_drawseq.h
@@ -36,6 +36,7 @@
struct ScrArea;
struct Sequence;
+void drawprefetchseqspace(struct ScrArea *sa, void *spacedata);
void drawseqspace(struct ScrArea *sa, void *spacedata);
void set_special_seq_update(int val);
diff --git a/source/blender/include/BIF_drawtext.h b/source/blender/include/BIF_drawtext.h
index a63e2bb264d..6950f3ba215 100644
--- a/source/blender/include/BIF_drawtext.h
+++ b/source/blender/include/BIF_drawtext.h
@@ -47,7 +47,7 @@ void add_text_fs(char *file);
void free_txt_data(void);
void pop_space_text(struct SpaceText *st);
-void get_format_string(void);
+void get_format_string(struct SpaceText *st);
void do_brackets(void);
#endif
diff --git a/source/blender/include/BIF_editaction.h b/source/blender/include/BIF_editaction.h
index 6e180418cd8..7fb2a6b2dde 100644
--- a/source/blender/include/BIF_editaction.h
+++ b/source/blender/include/BIF_editaction.h
@@ -25,7 +25,7 @@
*
* The Original Code is: all of this file.
*
- * Contributor(s): none yet.
+ * Contributor(s): 2007, Joshua Leung, Action Editor Recode
*
* ***** END GPL/BL DUAL LICENSE BLOCK *****
*/
@@ -33,32 +33,32 @@
#ifndef BIF_EDITACTION_H
#define BIF_EDITACTION_H
-#define SET_IPO_POPUP 0
-#define SET_IPO_CONSTANT 1
-#define SET_IPO_LINEAR 2
-#define SET_IPO_BEZIER 3
-
-#define SET_EXTEND_POPUP 0
-#define SET_EXTEND_CONSTANT 1
-#define SET_EXTEND_EXTRAPOLATION 2
-#define SET_EXTEND_CYCLIC 3
-#define SET_EXTEND_CYCLICEXTRAPOLATION 4
-
+/* some interface related sizes*/
#define CHANNELHEIGHT 16
#define CHANNELSKIP 2
-#define NAMEWIDTH 164
-#define SLIDERWIDTH 125
+#define NAMEWIDTH 164
+#define SLIDERWIDTH 125
#define ACTWIDTH (G.saction->actwidth)
/* Some types for easier type-testing */
-#define ACTTYPE_NONE 0
-#define ACTTYPE_ACHAN 1
-#define ACTTYPE_CONCHAN 2
-#define ACTTYPE_ICU 3
-#define ACTTYPE_FILLIPO 4
-#define ACTTYPE_FILLCON 5
+enum {
+ ACTTYPE_NONE= 0,
+ ACTTYPE_GROUP,
+ ACTTYPE_ACHAN,
+ ACTTYPE_CONCHAN,
+ ACTTYPE_CONCHAN2,
+ ACTTYPE_ICU,
+ ACTTYPE_FILLIPO,
+ ACTTYPE_FILLCON,
+ ACTTYPE_IPO,
+ ACTTYPE_SHAPEKEY
+};
/* Macros for easier/more consistant state testing */
+#define EDITABLE_AGRP(agrp) ((agrp->flag & AGRP_PROTECTED)==0)
+#define EXPANDED_AGRP(agrp) (agrp->flag & AGRP_EXPANDED)
+#define SEL_AGRP(agrp) ((agrp->flag & AGRP_SELECTED) || (agrp->flag & AGRP_ACTIVE))
+
#define VISIBLE_ACHAN(achan) ((achan->flag & ACHAN_HIDDEN)==0)
#define EDITABLE_ACHAN(achan) ((VISIBLE_ACHAN(achan)) && ((achan->flag & ACHAN_PROTECTED)==0))
#define EXPANDED_ACHAN(achan) ((VISIBLE_ACHAN(achan)) && (achan->flag & ACHAN_EXPANDED))
@@ -72,75 +72,127 @@
#define EDITABLE_ICU(icu) ((icu->flag & IPO_PROTECT)==0)
#define SEL_ICU(icu) (icu->flag & IPO_SELECT)
+#define NLA_ACTION_SCALED (G.saction->pin==0 && OBACT && OBACT->action)
+#define NLA_IPO_SCALED (OBACT && OBACT->action && G.sipo->pin==0 && G.sipo->actname)
+
+/* constants for setting ipo-interpolation type */
+enum {
+ SET_IPO_MENU = -1,
+ SET_IPO_POPUP = 0,
+
+ SET_IPO_CONSTANT,
+ SET_IPO_LINEAR,
+ SET_IPO_BEZIER,
+};
+
+/* constants for setting ipo-extrapolation type */
+enum {
+ SET_EXTEND_MENU = 9,
+ SET_EXTEND_POPUP = 10,
+
+ SET_EXTEND_CONSTANT,
+ SET_EXTEND_EXTRAPOLATION,
+ SET_EXTEND_CYCLIC,
+ SET_EXTEND_CYCLICEXTRAPOLATION
+};
+
+/* constants for channel rearranging */
+/* WARNING: don't change exising ones without modifying rearrange func accordingly */
+enum {
+ REARRANGE_ACTCHAN_TOP= -2,
+ REARRANGE_ACTCHAN_UP= -1,
+ REARRANGE_ACTCHAN_DOWN= 1,
+ REARRANGE_ACTCHAN_BOTTOM= 2
+};
+
+
struct bAction;
struct bActionChannel;
+struct bActionGroup;
+struct bPose;
struct bPoseChannel;
struct Object;
struct Ipo;
struct BWinEvent;
struct Key;
struct ListBase;
+struct TimeMarker;
/* Key operations */
-void delete_meshchannel_keys(struct Key *key);
-void delete_actionchannel_keys(void);
-void duplicate_meshchannel_keys(struct Key *key);
-void duplicate_actionchannel_keys(void);
-void transform_actionchannel_keys(int mode, int dummy);
-void transform_meshchannel_keys(char mode, struct Key *key);
-void snap_keys_to_frame(int snap_mode);
-void mirror_action_keys(short mirror_mode);
-void clean_shapekeys(struct Key *key);
-void clean_actionchannels(struct bAction *act);
+void transform_action_keys(int mode, int dummy);
+void duplicate_action_keys(void);
+void snap_cfra_action(void);
+void snap_action_keys(short mode);
+void mirror_action_keys(short mode);
void insertkey_action(void);
-
-/* Marker Operations */
-void column_select_shapekeys(struct Key *key, int mode);
-void column_select_actionkeys(struct bAction *act, int mode);
+void delete_action_keys(void);
+void delete_action_channels(void);
+void clean_action(void);
+void sample_action_keys(void);
+
+/* Column/Channel Key select */
+void column_select_action_keys(int mode);
+void selectall_action_keys(short mval[], short mode, short selectmode);
void markers_selectkeys_between(void);
+void nextprev_action_keyframe(short dir);
+
+/* Action Data Copying */
+void free_actcopybuf(void);
+void copy_actdata(void);
+void paste_actdata(void);
+
+/* Group/Channel Operations */
+struct bActionGroup *get_active_actiongroup(struct bAction *act);
+void set_active_actiongroup(struct bAction *act, struct bActionGroup *agrp, short select);
+void verify_pchan2achan_grouping(struct bAction *act, struct bPose *pose, char name[]);
+void action_groups_group(short add_group);
+void action_groups_ungroup(void);
-/* channel/strip operations */
-void up_sel_action(void);
-void down_sel_action(void);
-void top_sel_action(void);
-void bottom_sel_action(void);
+/* Channel/Strip Operations */
+void rearrange_action_channels(short mode);
-/* Handles */
-void sethandles_meshchannel_keys(int code, struct Key *key);
-void sethandles_actionchannel_keys(int code);
+void expand_all_action(void);
+void expand_obscuregroups_action(void);
+void openclose_level_action(short mode);
+void setflag_action_channels(short mode);
-/* Ipo type */
-void set_ipotype_actionchannels(int ipotype);
-void set_extendtype_actionchannels(int extendtype);
+/* IPO/Handle Types */
+void sethandles_action_keys(int code);
+void action_set_ipo_flags(short mode, short event);
/* Select */
-void borderselect_mesh(struct Key *key);
void borderselect_action(void);
-void deselect_actionchannel_keys(struct bAction *act, int test, int sel);
-void deselect_actionchannels (struct bAction *act, int test);
-void deselect_meshchannel_keys (struct Key *key, int test, int sel);
+void deselect_action_keys(short test, short sel);
+void deselect_action_channels(short mode);
+void deselect_actionchannels(struct bAction *act, short mode);
int select_channel(struct bAction *act, struct bActionChannel *achan, int selectmode);
-void select_actionchannel_by_name (struct bAction *act, char *name, int select);
+void select_actionchannel_by_name(struct bAction *act, char *name, int select);
+void selectkeys_leftright (short leftright, short select_mode);
-/* */
+/* Action Markers */
+void action_set_activemarker(struct bAction *act, struct TimeMarker *active, short deselect);
+void action_add_localmarker(struct bAction *act, int frame);
+void action_rename_localmarker(struct bAction *act);
+void action_remove_localmarkers(struct bAction *act);
+
+/* ShapeKey stuff */
struct Key *get_action_mesh_key(void);
int get_nearest_key_num(struct Key *key, short *mval, float *x);
+
void *get_nearest_act_channel(short mval[], short *ret_type);
/* Action */
-struct bActionChannel* get_hilighted_action_channel(struct bAction* action);
+struct bActionChannel *get_hilighted_action_channel(struct bAction* action);
struct bAction *add_empty_action(char *name);
-
-void winqreadactionspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
-
-/* contextual get action */
struct bAction *ob_get_action(struct Object *ob);
+void actdata_filter(ListBase *act_data, int filter_mode, void *data, short datatype);
+void *get_action_context(short *datatype);
+
void remake_action_ipos(struct bAction *act);
-/* this needs review badly! (ton) */
-struct bAction *bake_action_with_client (struct bAction *act, struct Object *arm, float tolerance);
-void world2bonespace(float boneSpaceMat[][4], float worldSpace[][4], float restPos[][4], float armPos[][4]);
+/* event handling */
+void winqreadactionspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
#endif
diff --git a/source/blender/include/BIF_editarmature.h b/source/blender/include/BIF_editarmature.h
index b8ae90b7cfa..935b93c8626 100644
--- a/source/blender/include/BIF_editarmature.h
+++ b/source/blender/include/BIF_editarmature.h
@@ -84,8 +84,11 @@ void delete_armature(void);
void deselectall_armature(int toggle, int doundo);
void deselectall_posearmature (struct Object *ob, int test, int doundo);
int draw_armature(struct Base *base, int dt);
+
void extrude_armature(int forked);
-void subdivide_armature(void);
+void subdivide_armature(int numcuts);
+void fill_bones_armature(void);
+void merge_armature(void);
void free_editArmature(void);
@@ -101,26 +104,32 @@ void make_trans_bones (char mode);
int do_pose_selectbuffer(struct Base *base, unsigned int *buffer, short hits);
+void generateSkeleton(void);
+
void mouse_armature(void);
void remake_editArmature(void);
void selectconnected_armature(void);
void selectconnected_posearmature(void);
void select_bone_parent(void);
-void unique_editbone_name (struct ListBase *ebones, char* name);
+void setflag_armature(short mode);
+void unique_editbone_name (struct ListBase *ebones, char *name);
-void auto_align_armature(void);
-void create_vgroups_from_armature(Object *ob, Object *par);
+void auto_align_armature(short mode);
+
+void create_vgroups_from_armature(struct Object *ob, struct Object *par);
+void add_verts_to_dgroups(struct Object *ob, struct Object *par, int heat, int mirror);
void hide_selected_pose_bones(void);
void hide_unselected_pose_bones(void);
void show_all_pose_bones(void);
-int bone_looper(Object *ob, struct Bone *bone, void *data,
- int (*bone_func)(Object *, struct Bone *, void *));
+int bone_looper(struct Object *ob, struct Bone *bone, void *data,
+ int (*bone_func)(struct Object *, struct Bone *, void *));
void undo_push_armature(char *name);
void armature_bone_rename(struct bArmature *arm, char *oldname, char *newname);
void armature_flip_names(void);
+void armature_autoside_names(short axis);
EditBone *armature_bone_get_mirrored(EditBone *ebo);
void transform_armature_mirror_update(void);
@@ -137,3 +146,4 @@ void show_all_armature_bones(void);
#endif
+
diff --git a/source/blender/include/BIF_editconstraint.h b/source/blender/include/BIF_editconstraint.h
index db55bc5c7d7..81e2356e6cb 100644
--- a/source/blender/include/BIF_editconstraint.h
+++ b/source/blender/include/BIF_editconstraint.h
@@ -38,25 +38,30 @@ struct ListBase;
struct Object;
struct bConstraint;
struct bConstraintChannel;
+struct Text;
-struct bConstraint *add_new_constraint(short type);
-
-void add_constraint_to_object(struct bConstraint *con, struct Object *ob);
-
+/* generic constraint editing functions */
struct ListBase *get_active_constraints(struct Object *ob);
struct bConstraint *get_active_constraint(struct Object *ob);
struct ListBase *get_active_constraint_channels (struct Object *ob, int forcevalid);
struct bConstraintChannel *get_active_constraint_channel(struct Object *ob);
-void object_test_constraints(struct Object *owner);
-
-void add_constraint(int only_IK);
+void add_constraint_to_object(struct bConstraint *con, struct Object *ob);
+struct bConstraint *add_new_constraint(short type);
+void add_constraint(short only_IK);
void ob_clear_constraints(void);
+void rename_constraint(struct Object *ob, struct bConstraint *con, char *newname);
-char *get_con_subtarget_name(struct bConstraint *con, struct Object *target);
+void object_test_constraints(struct Object *owner);
-void rename_constraint(struct Object *ob, struct bConstraint *con, char *newname);
+/* a few special functions for PyConstraints */
+char *buildmenu_pyconstraints(struct Text *con_text, int *pyconindex);
+void validate_pyconstraint_cb(void *arg1, void *arg2);
+void update_pyconstraint_cb(void *arg1, void *arg2);
+/* two special functions for ChildOf Constriant */
+void childof_const_setinv (void *conv, void *unused);
+void childof_const_clearinv(void *conv, void *unused);
#endif
diff --git a/source/blender/include/BIF_editdeform.h b/source/blender/include/BIF_editdeform.h
index 2a8f43c14e7..84deb134be9 100644
--- a/source/blender/include/BIF_editdeform.h
+++ b/source/blender/include/BIF_editdeform.h
@@ -50,6 +50,7 @@ void del_defgroup (struct Object *ob);
void duplicate_defgroup ( struct Object *ob );
void assign_verts_defgroup (void);
void remove_verts_defgroup (int allverts);
+void remove_verts_defgroups (int allverts);
void sel_verts_defgroup (int select);
struct MDeformWeight *get_defweight (struct MDeformVert *dv, int defgroup);
@@ -61,6 +62,8 @@ void add_vert_to_defgroup (struct Object *ob, struct bDeformGroup *dg,
int assignmode);
void remove_vert_defgroup (struct Object *ob, struct bDeformGroup *dg,
int vertnum);
+float get_vert_defgroup (struct Object *ob, struct bDeformGroup *dg,
+ int vertnum);
void create_dverts(ID *id);
void vertexgroup_select_by_name(struct Object *ob, char *name);
diff --git a/source/blender/include/BIF_editmesh.h b/source/blender/include/BIF_editmesh.h
index 931693f0889..42d581ee758 100644
--- a/source/blender/include/BIF_editmesh.h
+++ b/source/blender/include/BIF_editmesh.h
@@ -35,6 +35,8 @@
#ifndef BIF_EDITMESH_H
#define BIF_EDITMESH_H
+#include "BKE_mesh.h"
+
struct EditMesh;
struct EditFace;
struct EditEdge;
@@ -141,7 +143,10 @@ extern void righthandfaces(int select);
extern void mouse_mesh(void);
extern void deselectall_mesh(void);
-extern void selectconnected_mesh(int qual);
+extern void selectconnected_mesh_all(void);
+extern void selectconnected_mesh(void);
+extern void selectconnected_delimit_mesh(void);
+extern void selectconnected_delimit_mesh_all(void);
extern void selectswap_mesh(void);
extern void hide_mesh(int swap);
@@ -169,7 +174,9 @@ extern void selectrandom_mesh(void);
extern void editmesh_select_by_material(int index);
extern void editmesh_deselect_by_material(int index);
+extern void Vertex_Menu(void);
extern void Edge_Menu(void);
+extern void Face_Menu(void);
extern void select_mesh_group_menu(void);
extern void editmesh_mark_seam(int clear);
extern void loop_multiselect(int looptype);
@@ -199,7 +206,7 @@ extern short sharesFace(struct EditEdge* e1, struct EditEdge* e2);
#define SUBDIV_SELECT_LOOPCUT 3
extern void convert_to_triface(int direction);
-extern int removedoublesflag(short flag, float limit);
+extern int removedoublesflag(short flag, short automerge, float limit);
extern void xsortvert_flag(int flag);
extern void hashvert_flag(int flag);
@@ -216,7 +223,13 @@ extern void join_triangles(void);
extern void edge_flip(void);
extern void fill_mesh(void);
extern void bevel_menu();
+void mesh_set_face_flags(short mode);
extern void mesh_set_smooth_faces(short event);
+extern void mesh_rotate_uvs(void);
+extern void mesh_mirror_uvs(void);
+extern void mesh_rotate_colors(void);
+extern void mesh_mirror_colors(void);
+void mesh_copy_menu(void);
void edge_rotate_selected(int dir);
int EdgeSlide(short immediate, float imperc);
int EdgeLoopDelete(void);
@@ -238,4 +251,15 @@ int merge_target( int target, int uvmerge);
void pathselect(void);
void loop_to_region(void);
void region_to_loop(void);
+
+UvVertMap *make_uv_vert_map_EM(int selected, int do_face_idx_array, float *limit);
+UvMapVert *get_uv_map_vert_EM(UvVertMap *vmap, unsigned int v);
+void free_uv_vert_map_EM(UvVertMap *vmap);
+
+int EM_texFaceCheck(void); /* can we edit UV's for this mesh?*/
+int EM_vertColorCheck(void); /* can we edit colors for this mesh?*/
+
+void EM_set_actFace(struct EditFace *efa);
+struct EditFace * EM_get_actFace(void);
+
#endif
diff --git a/source/blender/include/BIF_editmode_undo.h b/source/blender/include/BIF_editmode_undo.h
index b03b4160166..5b445fef17b 100644
--- a/source/blender/include/BIF_editmode_undo.h
+++ b/source/blender/include/BIF_editmode_undo.h
@@ -39,7 +39,8 @@
extern void undo_editmode_push(char *name,
void (*freedata)(void *), // pointer to function freeing data
void (*to_editmode)(void *), // data to editmode conversion
- void *(*from_editmode)(void)); // editmode to data conversion
+ void *(*from_editmode)(void), // editmode to data conversion
+ int (*validate_undo)(void *)); // check if undo data is still valid
// Further exported for UI is:
diff --git a/source/blender/include/BIF_editparticle.h b/source/blender/include/BIF_editparticle.h
new file mode 100644
index 00000000000..6074dcd4fec
--- /dev/null
+++ b/source/blender/include/BIF_editparticle.h
@@ -0,0 +1,98 @@
+/* BIF_editparticle.h
+ *
+ *
+ * $Id: BIF_editparticle.h $
+ *
+ * ***** BEGIN GPL/BL DUAL 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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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) 2007 by Janne Karhu.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+#ifndef BIF_EDITPARTICLE_H
+#define BIF_EDITPARTICLE_H
+
+struct Object;
+struct ParticleSystem;
+struct ParticleEditSettings;
+struct RadialControl;
+
+/* particle edit mode */
+void PE_set_particle_edit(void);
+void PE_create_particle_edit(struct Object *ob, struct ParticleSystem *psys);
+void PE_free_particle_edit(struct ParticleSystem *psys);
+
+void PE_change_act(void *ob_v, void *act_v);
+int PE_can_edit(struct ParticleSystem *psys);
+
+/* access */
+struct ParticleSystem *PE_get_current(struct Object *ob);
+short PE_get_current_num(struct Object *ob);
+int PE_minmax(float *min, float *max);
+void PE_get_colors(char sel[4], char nosel[4]);
+struct ParticleEditSettings *PE_settings(void);
+struct RadialControl **PE_radialcontrol();
+
+/* update calls */
+void PE_hide_keys_time(struct ParticleSystem *psys, float cfra);
+void PE_update_object(struct Object *ob, int useflag);
+void PE_update_selection(struct Object *ob, int useflag);
+void PE_recalc_world_cos(struct Object *ob, struct ParticleSystem *psys);
+
+/* selection tools */
+void PE_select_root(void);
+void PE_select_tip(void);
+void PE_deselectall(void);
+void PE_select_linked(void);
+void PE_select_less(void);
+void PE_select_more(void);
+
+void PE_mouse_particles(void);
+void PE_borderselect(void);
+void PE_selectionCB(short selecting, struct Object *editobj, short *mval, float rad);
+void PE_do_lasso_select(short mcords[][2], short moves, short select);
+
+/* tools */
+void PE_hide(int mode);
+void PE_rekey(void);
+void PE_subdivide(void);
+int PE_brush_particles(void);
+void PE_delete_particle(void);
+void PE_remove_doubles(void);
+void PE_mirror_x(int tagged);
+void PE_selectbrush_menu(void);
+void PE_remove_doubles(void);
+void PE_radialcontrol_start(const int mode);
+
+/* undo */
+void PE_undo_push(char *str);
+void PE_undo_step(int step);
+void PE_undo(void);
+void PE_redo(void);
+void PE_undo_menu(void);
+
+#endif
+
diff --git a/source/blender/include/BIF_editseq.h b/source/blender/include/BIF_editseq.h
index 3999b4311d4..ff6c7882b76 100644
--- a/source/blender/include/BIF_editseq.h
+++ b/source/blender/include/BIF_editseq.h
@@ -40,32 +40,74 @@ void add_sequence(int type);
void borderselect_seq(void);
void boundbox_seq(void);
void change_sequence(void);
+void reload_sequence(void);
void update_seq_ipo_rect(struct Sequence * seq);
void update_seq_icu_rects(struct Sequence * seq);
struct Sequence* get_last_seq();
+struct Sequence* get_forground_frame_seq( int frame );
void set_last_seq(struct Sequence * seq);
void clear_last_seq();
void del_seq(void);
void enter_meta(void);
void exit_meta(void);
+struct Sequence* find_neighboring_sequence(struct Sequence *test, int lr, int sel);
+struct Sequence* find_next_prev_sequence(struct Sequence *test, int lr, int sel);
struct Sequence* find_nearest_seq(int *hand);
int insert_gap(int gap, int cfra);
void make_meta(void);
+void select_channel_direction(struct Sequence *test,int lr);
+void select_more_seq(void);
+void select_less_seq(void);
void mouse_select_seq(void);
void no_gaps(void);
void seq_snap(short event);
void seq_snap_menu(void);
+void seq_mute_sel( int mute );
+void seq_lock_sel(int lock);
void set_filter_seq(void);
void swap_select_seq(void);
void touch_seq_files(void);
+void seq_remap_paths(void);
void transform_seq(int mode, int context);
+void transform_seq_nomarker(int mode, int context);
void un_meta(void);
void seq_cut(int cutframe);
+void seq_separate_images(void);
void reassign_inputs_seq_effect(void);
+void select_surrounding_handles(struct Sequence *test);
+void select_surround_from_last();
+void select_dir_from_last(int lr);
+void select_neighbor_from_last(int lr);
+void select_linked_seq(int mode);
+int test_overlap_seq(struct Sequence *test);
+void shuffle_seq(struct Sequence *test);
struct Sequence* alloc_sequence(ListBase *lb, int cfra, int machine); /*used from python*/
+int check_single_seq(struct Sequence *seq);
+
+/* seq funcs for transform
+ notice the difference between start/end and left/right.
+
+ left and right are the bounds at which the setuence is rendered,
+start and end are from the start and fixed length of the sequence.
+*/
+
+/* sequence transform functions, for internal used */
+int seq_tx_get_start(struct Sequence *seq);
+int seq_tx_get_end(struct Sequence *seq);
+
+int seq_tx_get_final_left(struct Sequence *seq);
+int seq_tx_get_final_right(struct Sequence *seq);
+
+void seq_tx_set_final_left(struct Sequence *seq, int i);
+void seq_tx_set_final_right(struct Sequence *seq, int i);
+
+/* check if one side can be transformed */
+int seq_tx_check_left(struct Sequence *seq);
+int seq_tx_check_right(struct Sequence *seq);
+
+#define SEQ_DEBUG_INFO(seq) printf("seq into '%s' -- len:%i start:%i startstill:%i endstill:%i startofs:%i endofs:%i depth:%i\n",\
+ seq->name, seq->len, seq->start, seq->startstill, seq->endstill, seq->startofs, seq->endofs, seq->depth)
-/* drawseq.c */
-void do_seqbuttons(short);
#endif
diff --git a/source/blender/include/BIF_editsima.h b/source/blender/include/BIF_editsima.h
index 6a67ebc7009..fe6846e4b36 100644
--- a/source/blender/include/BIF_editsima.h
+++ b/source/blender/include/BIF_editsima.h
@@ -31,7 +31,12 @@
*/
struct Mesh;
+struct EditMesh;
+struct SpaceImage;
+struct EditFace;
+struct MTFace;
+/* id can be from 0 to 3 */
#define TF_PIN_MASK(id) (TF_PIN1 << id)
#define TF_SEL_MASK(id) (TF_SEL1 << id)
@@ -45,27 +50,34 @@ int is_uv_tface_editing_allowed_silent(void);
void get_connected_limit_tface_uv(float *limit);
int minmax_tface_uv(float *min, float *max);
+int cent_tface_uv(float *cent, int mode);
void transform_width_height_tface_uv(int *width, int *height);
void transform_aspect_ratio_tface_uv(float *aspx, float *aspy);
+void mouseco_to_cursor_sima(void);
void borderselect_sima(short whichuvs);
void mouseco_to_curtile(void);
void mouse_select_sima(void);
+void snap_menu_sima(void);
+void aspect_sima(struct SpaceImage *sima, float *x, float *y);
+
+void select_invert_tface_uv(void);
void select_swap_tface_uv(void);
void mirrormenu_tface_uv(void);
-void mirror_tface_uv(char mirroraxis);
void hide_tface_uv(int swap);
void reveal_tface_uv(void);
-void stitch_uv_tface(int mode);
+void stitch_limit_uv_tface(void);
+void stitch_vert_uv_tface(void);
void unlink_selection(void);
+void uvface_setsel__internal(short select);
void select_linked_tface_uv(int mode);
-void toggle_uv_select(int mode);
void pin_tface_uv(int mode);
void weld_align_menu_tface_uv(void);
void weld_align_tface_uv(char tool);
-void be_square_tface_uv(struct Mesh *me);
+void be_square_tface_uv(struct EditMesh *em);
void select_pinned_tface_uv(void);
+void select_edgeloop_tface_uv(struct EditFace *efa, int a, int shift, int *flush);
void sima_sample_color(void);
@@ -83,3 +95,18 @@ void pack_image_sima(void);
/* checks images for forced updates on frame change */
void BIF_image_update_frame(void);
+
+void find_nearest_uv(struct MTFace **nearesttf, struct EditFace **nearestefa, unsigned int *nearestv, int *nearestuv);
+
+/* face selection check functions */
+
+int simaFaceDraw_Check_nolocal( struct EditFace *efa );
+int simaFaceDraw_Check( struct EditFace *efa, struct MTFace *tf );
+
+int simaFaceSel_Check( struct EditFace *efa, struct MTFace *tf );
+void simaFaceSel_Set( struct EditFace *efa, struct MTFace *tf );
+void simaFaceSel_UnSet( struct EditFace *efa, struct MTFace *tf );
+
+int simaUVSel_Check( struct EditFace *efa, struct MTFace *tf, int i);
+void simaUVSel_Set( struct EditFace *efa, struct MTFace *tf, int i);
+void simaUVSel_UnSet( struct EditFace *efa, struct MTFace *tf, int i);
diff --git a/source/blender/include/BIF_editsound.h b/source/blender/include/BIF_editsound.h
index abeabdc3e06..6e341bfb204 100644
--- a/source/blender/include/BIF_editsound.h
+++ b/source/blender/include/BIF_editsound.h
@@ -71,7 +71,7 @@ void sound_set_position(void *object,
struct hdaudio * sound_open_hdaudio(char * name);
struct hdaudio * sound_copy_hdaudio(struct hdaudio * c);
-long sound_hdaudio_get_duration(struct hdaudio * hdaudio, int frame_rate);
+long sound_hdaudio_get_duration(struct hdaudio * hdaudio, double frame_rate);
void sound_hdaudio_extract(struct hdaudio * hdaudio,
short * target_buffer,
int sample_position /* units of target_rate */,
diff --git a/source/blender/include/BIF_editview.h b/source/blender/include/BIF_editview.h
index 676bc3bd9f0..d47bd82332f 100644
--- a/source/blender/include/BIF_editview.h
+++ b/source/blender/include/BIF_editview.h
@@ -39,10 +39,12 @@ struct Camera;
struct View3D;
void arrows_move_cursor(unsigned short event);
+int lasso_inside(short mcords[][2], short moves, short sx, short sy);
void borderselect(void);
void circle_select(void);
void deselectall(void);
void selectswap(void);
+void selectrandom(void);
void selectall_type(short obtype);
void selectall_layer(unsigned int layernum);
void draw_sel_circle(short *mval, short *mvalo, float rad, float rado, int selecting);
diff --git a/source/blender/include/BIF_filelist.h b/source/blender/include/BIF_filelist.h
new file mode 100644
index 00000000000..730a41c22e9
--- /dev/null
+++ b/source/blender/include/BIF_filelist.h
@@ -0,0 +1,86 @@
+/**
+ * $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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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) 2007 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BIF_FILELIST_H
+#define BIF_FILELIST_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct FileList;
+struct direntry;
+struct BlendHandle;
+
+struct FileList * BIF_filelist_new();
+void BIF_filelist_init_icons();
+void BIF_filelist_free_icons();
+struct FileList * BIF_filelist_copy(struct FileList* filelist);
+int BIF_filelist_find(struct FileList* filelist, char *file);
+void BIF_filelist_free(struct FileList* filelist);
+void BIF_filelist_freelib(struct FileList* filelist);
+void BIF_filelist_sort(struct FileList* filelist, short sort);
+int BIF_filelist_numfiles(struct FileList* filelist);
+const char * BIF_filelist_dir(struct FileList* filelist);
+void BIF_filelist_setdir(struct FileList* filelist, const char *dir);
+struct direntry * BIF_filelist_file(struct FileList* filelist, int index);
+void BIF_filelist_hidedot(struct FileList* filelist, short hide);
+void BIF_filelist_setfilter(struct FileList* filelist, unsigned int filter);
+void BIF_filelist_filter(struct FileList* filelist);
+void BIF_filelist_swapselect(struct FileList* filelist);
+void BIF_filelist_imgsize(struct FileList* filelist, short w, short h);
+void BIF_filelist_loadimage(struct FileList* filelist, int index);
+struct ImBuf * BIF_filelist_getimage(struct FileList* filelist, int index);
+
+void BIF_filelist_readdir(struct FileList* filelist);
+
+int BIF_filelist_empty(struct FileList* filelist);
+void BIF_filelist_parent(struct FileList* filelist);
+void BIF_filelist_setfiletypes(struct FileList* filelist, short has_quicktime);
+int BIF_filelist_islibrary (struct FileList* filelist, char* dir, char* group);
+void BIF_filelist_from_main(struct FileList* filelist);
+void BIF_filelist_from_library(struct FileList* filelist);
+void BIF_filelist_append_library(struct FileList* filelist, char *dir, char* file, short flag, int idcode);
+void BIF_filelist_settype(struct FileList* filelist, int type);
+short BIF_filelist_gettype(struct FileList* filelist);
+void BIF_filelist_setipotype(struct FileList* filelist, short ipotype);
+void BIF_filelist_hasfunc(struct FileList* filelist, int has_func);
+
+struct BlendHandle *BIF_filelist_lib(struct FileList* filelist);
+int BIF_groupname_to_code(char *group); /* TODO: where should this go */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/source/blender/include/BIF_fsmenu.h b/source/blender/include/BIF_fsmenu.h
index b32dee01854..1c5280c14f8 100644
--- a/source/blender/include/BIF_fsmenu.h
+++ b/source/blender/include/BIF_fsmenu.h
@@ -55,17 +55,20 @@ char* fsmenu_build_menu (void);
/** Append a seperator to the FSMenu, inserts always follow the
* last seperator.
*/
-void fsmenu_append_seperator (void);
+void fsmenu_append_separator (void);
/** Inserts a new fsmenu entry with the given @a path.
* Duplicate entries are not added.
* @param sorted Should entry be inserted in sorted order?
*/
-void fsmenu_insert_entry (char *path, int sorted);
+void fsmenu_insert_entry (char *path, int sorted, short save);
/** Removes the fsmenu entry at the given @a index. */
void fsmenu_remove_entry (int index);
+ /** saves the 'favourites' to the specified file */
+void fsmenu_write_file(const char *filename);
+
/** Free's all the memory associated with the fsmenu */
void fsmenu_free (void);
diff --git a/source/blender/include/BIF_gl.h b/source/blender/include/BIF_gl.h
index 215e88dc002..67d51edc531 100644
--- a/source/blender/include/BIF_gl.h
+++ b/source/blender/include/BIF_gl.h
@@ -53,11 +53,16 @@
#endif
#ifdef __APPLE__
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
+ #include <OpenGL/gl.h>
+ #include <OpenGL/glu.h>
#else
-#include <GL/gl.h>
-#include <GL/glu.h>
+ #if defined (__sun) || defined (__sun__)
+ #include <GL/gl.h>
+ #include <mesa/glu.h>
+ #else
+ #include <GL/gl.h>
+ #include <GL/glu.h>
+ #endif
#endif
/*
* these should be phased out. cpack should be replaced in
diff --git a/source/blender/include/BIF_imasel.h b/source/blender/include/BIF_imasel.h
index d6a1800730b..fb332022ba4 100644
--- a/source/blender/include/BIF_imasel.h
+++ b/source/blender/include/BIF_imasel.h
@@ -33,28 +33,20 @@
#define BIF_IMASEL_H
struct SpaceImaSel;
-struct OneSelectableIma;
struct ScrArea;
-struct ImaDir;
+struct ID;
-void imadir_parent(struct SpaceImaSel *simasel);
-int bitset(int l, int bit);
-void free_sel_ima(struct OneSelectableIma *firstima);
-
-void write_new_pib(struct SpaceImaSel *simasel);
-void free_ima_dir(struct ImaDir *firstdir);
-void check_for_pib(struct SpaceImaSel *simasel);
-void clear_ima_dir(struct SpaceImaSel *simasel);
-void check_ima_dir_name(char *dir);
-int get_ima_dir(char *dirname, int dtype, int *td, struct ImaDir **first);
-void get_next_image(struct SpaceImaSel *simasel);
-void get_file_info(struct SpaceImaSel *simasel);
-void get_pib_file(struct SpaceImaSel *simasel);
-void change_imadir(struct SpaceImaSel *simasel);
-void check_imasel_copy(struct SpaceImaSel *simasel);
void free_imasel(struct SpaceImaSel *simasel);
void clever_numbuts_imasel(void);
+void activate_imageselect(int type, char *title, char *file, void (*func)(char *));
+void activate_imageselect_menu(int type, char *title, char *file, char *pupmenu, short *menup, void (*func)(char *));
+void activate_imageselect_args(int type, char *title, char *file, void (*func)(char *, void *, void *), void *arg1, void *arg2);
+
+void activate_databrowse_imasel(struct ID *id, int idcode, int fromcode, int retval, short *menup, void (*func)(unsigned short));
+/*
+void activate_databrowse_imasel_args(struct ID *id, int idcode, int fromcode, short *menup, void (*func)(char *, void *, void *), void *arg1, void *arg2);
+*/
#endif
diff --git a/source/blender/include/BIF_interface.h b/source/blender/include/BIF_interface.h
index ad2c8988343..4fadfe12297 100644
--- a/source/blender/include/BIF_interface.h
+++ b/source/blender/include/BIF_interface.h
@@ -166,6 +166,7 @@ struct AutoComplete;
#define BUT_CURVE (32<<9)
#define BUT_TOGDUAL (33<<9)
#define ICONTOGN (34<<9)
+#define FTPREVIEW (35<<9)
#define BUTTYPE (63<<9)
@@ -187,7 +188,7 @@ void uiGetMouse(int win, short *adr);
void uiComposeLinks(uiBlock *block);
void uiSetButLock(int val, char *lockstr);
void uiClearButLock(void);
-int uiDoBlocks(struct ListBase *lb, int event);
+int uiDoBlocks(struct ListBase *lb, int event, int movemouse_quit);
void uiSetCurFont(uiBlock *block, int index);
void uiDefFont(unsigned int index, void *xl, void *large, void *medium, void *small);
void uiFreeBlock(uiBlock *block);
diff --git a/source/blender/include/BIF_interface_icons.h b/source/blender/include/BIF_interface_icons.h
index c69fa122099..c628d68e9db 100644
--- a/source/blender/include/BIF_interface_icons.h
+++ b/source/blender/include/BIF_interface_icons.h
@@ -48,6 +48,7 @@ typedef struct IconFile {
#define ICON_DEFAULT_HEIGHT 16
+#define PREVIEW_DEFAULT_HEIGHT 96
/*
Resizable Icons for Blender
@@ -57,6 +58,8 @@ int BIF_icon_get_width(int icon_id);
int BIF_icon_get_height(int icon_id);
void BIF_icon_draw(float x, float y, int icon_id);
+void BIF_icon_draw_preview(float x, float y, int icon_id, int nocreate);
+
void BIF_icon_draw_aspect(float x, float y, int icon_id, float aspect);
void BIF_icon_draw_aspect_blended(float x, float y, int icon_id, float aspect, int shade);
void BIF_icons_free();
diff --git a/source/blender/include/BIF_language.h b/source/blender/include/BIF_language.h
index 9a6ddfc7fc5..6ed8a8d1574 100644
--- a/source/blender/include/BIF_language.h
+++ b/source/blender/include/BIF_language.h
@@ -33,6 +33,8 @@
#ifndef BIF_LANGUAGE_H
#define BIF_LANGUAGE_H
+#include "DNA_vec_types.h"
+
struct BMF_Font;
int read_languagefile(void); /* usiblender.c */
@@ -47,6 +49,7 @@ char *fontsize_pup(void);
int BIF_DrawString(struct BMF_Font* font, char *str, int translate);
float BIF_GetStringWidth(struct BMF_Font* font, char *str, int translate);
+void BIF_GetBoundingBox(struct BMF_Font* font, char* str, int translate, rctf* bbox);
void BIF_RasterPos(float x, float y);
void BIF_SetScale(float aspect);
diff --git a/source/blender/include/BIF_meshlaplacian.h b/source/blender/include/BIF_meshlaplacian.h
new file mode 100644
index 00000000000..74e4fef0937
--- /dev/null
+++ b/source/blender/include/BIF_meshlaplacian.h
@@ -0,0 +1,87 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL/BL DUAL 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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * BIF_meshlaplacian.h: Algorithms using the mesh laplacian.
+ */
+
+#ifndef BIF_MESHLAPLACIAN_H
+#define BIF_MESHLAPLACIAN_H
+
+//#define RIGID_DEFORM
+
+struct Object;
+struct Mesh;
+struct bDeformGroup;
+struct MeshDeformModifierData;
+
+#ifdef RIGID_DEFORM
+struct EditMesh;
+#endif
+
+/* Laplacian System */
+
+struct LaplacianSystem;
+typedef struct LaplacianSystem LaplacianSystem;
+
+LaplacianSystem *laplacian_construct_begin(int totvert, int totface);
+
+void laplacian_add_vertex(LaplacianSystem *sys, float *co, int pinned);
+void laplacian_add_triangle(LaplacianSystem *sys, int v1, int v2, int v3);
+
+void laplacian_construct_end(LaplacianSystem *sys);
+void laplacian_delete(LaplacianSystem *sys);
+
+void laplacian_begin_solve(LaplacianSystem *sys, int index);
+void laplacian_add_right_hand_side(LaplacianSystem *sys, int v, float value);
+int laplacian_system_solve(LaplacianSystem *sys);
+float laplacian_system_get_solution(int v);
+
+/* Heat Weighting */
+
+void heat_bone_weighting(struct Object *ob, struct Mesh *me, float (*verts)[3],
+ int numbones, struct bDeformGroup **dgrouplist,
+ struct bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3],
+ int *selected);
+
+#ifdef RIGID_DEFORM
+/* As-Rigid-As-Possible Deformation */
+
+void rigid_deform_begin(struct EditMesh *em);
+void rigid_deform_iteration(void);
+void rigid_deform_end(int cancel);
+#endif
+
+/* Harmonic Coordinates */
+
+void harmonic_coordinates_bind(struct MeshDeformModifierData *mmd,
+ float (*vertexcos)[3], int totvert, float cagemat[][4]);
+
+#endif
+
diff --git a/source/blender/include/BIF_meshtools.h b/source/blender/include/BIF_meshtools.h
index a08f800d7b6..15782aa8f3c 100644
--- a/source/blender/include/BIF_meshtools.h
+++ b/source/blender/include/BIF_meshtools.h
@@ -40,11 +40,13 @@ extern int join_mesh(void);
extern void sort_faces(void);
extern void objects_bake_render_menu(void);
-extern void objects_bake_render(short event);
+extern void objects_bake_render_ui(short event);
+extern void objects_bake_render(short event, char **error_msg);
extern long mesh_octree_table(struct Object *ob, float *co, char mode);
extern int mesh_get_x_mirror_vert(struct Object *ob, int index);
extern struct EditVert *editmesh_get_x_mirror_vert(struct Object *ob, float *co);
+extern int *mesh_get_x_mirror_faces(struct Object *ob);
#endif
diff --git a/source/blender/include/BIF_outliner.h b/source/blender/include/BIF_outliner.h
index 34ed7950421..582b2cc1ada 100644
--- a/source/blender/include/BIF_outliner.h
+++ b/source/blender/include/BIF_outliner.h
@@ -78,6 +78,8 @@ typedef struct TreeElement {
#define TSE_LINKED_MAT 22
/* NOTE, is used for light group */
#define TSE_LINKED_LAMP 23
+#define TSE_POSEGRP_BASE 24
+#define TSE_POSEGRP 25
/* outliner search flags */
#define OL_FIND 0
@@ -97,6 +99,9 @@ extern void outliner_show_hierarchy(struct ScrArea *sa);
extern void outliner_one_level(struct ScrArea *sa, int add);
extern void outliner_select(struct ScrArea *sa);
extern void outliner_toggle_selected(struct ScrArea *sa);
+extern void outliner_toggle_visibility(struct ScrArea *sa);
+extern void outliner_toggle_selectability(struct ScrArea *sa);
+extern void outliner_toggle_renderability(struct ScrArea *sa);
extern void outliner_del(struct ScrArea *sa);
extern void outliner_operation_menu(struct ScrArea *sa);
extern void outliner_page_up_down(struct ScrArea *sa, int up);
diff --git a/source/blender/include/BIF_poselib.h b/source/blender/include/BIF_poselib.h
new file mode 100644
index 00000000000..209c386d2d6
--- /dev/null
+++ b/source/blender/include/BIF_poselib.h
@@ -0,0 +1,55 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL/BL DUAL 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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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) 2007 Blender Foundation
+ * All rights reserved.
+ *
+ * The Original Code is: this is a new part of Blender
+ *
+ * Contributor(s): Joshua Leung
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+#ifndef BIF_POSELIB_H
+#define BIF_POSELIB_H
+
+struct Object;
+struct bAction;
+struct TimeMarker;
+
+char *poselib_build_poses_menu(struct bAction *act, char title[]);
+int poselib_get_free_index(struct bAction *act);
+struct TimeMarker *poselib_get_active_pose(struct bAction *act);
+
+struct bAction *poselib_init_new(struct Object *ob);
+struct bAction *poselib_validate(struct Object *ob);
+
+void poselib_validate_act(struct bAction *act);
+
+void poselib_remove_pose(struct Object *ob, struct TimeMarker *marker);
+void poselib_rename_pose(struct Object *ob);
+void poselib_add_current_pose(struct Object *ob, int mode);
+
+void poselib_preview_poses(struct Object *ob, short apply_active);
+
+#endif
diff --git a/source/blender/include/BIF_poseobject.h b/source/blender/include/BIF_poseobject.h
index 835b808c9ba..bf60fdb6038 100644
--- a/source/blender/include/BIF_poseobject.h
+++ b/source/blender/include/BIF_poseobject.h
@@ -35,6 +35,7 @@
struct Object;
+struct bPose;
struct bPoseChannel;
void enter_posemode(void);
@@ -58,14 +59,28 @@ void free_posebuf(void);
void copy_posebuf (void);
void paste_posebuf (int flip);
-void pose_adds_vgroups(struct Object *meshobj);
+void pose_adds_vgroups(struct Object *meshobj, int heatweights);
+
+void pose_add_posegroup(void);
+void pose_remove_posegroup(void);
+char *build_posegroups_menustr(struct bPose *pose, short for_pupmenu);
+void pose_assign_to_posegroup(short active);
+void pose_remove_from_posegroups(void);
+void pgroup_operation_with_menu(void);
+
+void pose_select_grouped(short nr);
+void pose_select_grouped_menu(void);
void pose_calculate_path(struct Object *ob);
+void pose_recalculate_paths(struct Object *ob);
void pose_clear_paths(struct Object *ob);
void pose_flip_names(void);
+void pose_autoside_names(short axis);
void pose_activate_flipped_bone(void);
void pose_movetolayer(void);
+void pose_relax(void);
+void pose_flipquats(void);
#endif
diff --git a/source/blender/include/BIF_radialcontrol.h b/source/blender/include/BIF_radialcontrol.h
new file mode 100644
index 00000000000..81181a3a91e
--- /dev/null
+++ b/source/blender/include/BIF_radialcontrol.h
@@ -0,0 +1,62 @@
+/*
+ * $Id: multires.h 13015 2007-12-27 07:27:03Z nicholasbishop $
+ *
+ * ***** 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 by Nicholas Bishop
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef RADIALCONTROL_H
+#define RADIALCONTROL_H
+
+struct NumInput;
+
+#define RADIALCONTROL_NONE 0
+#define RADIALCONTROL_SIZE 1
+#define RADIALCONTROL_STRENGTH 2
+#define RADIALCONTROL_ROTATION 3
+
+typedef void (*RadialControlCallback)(const int, const int);
+
+typedef struct RadialControl {
+ int mode;
+ short origloc[2];
+
+ unsigned int tex;
+
+ int new_value;
+ int original_value;
+ int max_value;
+ RadialControlCallback callback;
+
+ struct NumInput *num;
+} RadialControl;
+
+RadialControl *radialcontrol_start(const int mode, RadialControlCallback callback,
+ const int original_value, const int max_value,
+ const unsigned int tex);
+void radialcontrol_do_events(RadialControl *rc, const unsigned short event);
+void radialcontrol_draw(RadialControl *rc);
+
+#endif
diff --git a/source/blender/include/BIF_renderwin.h b/source/blender/include/BIF_renderwin.h
index 789c3661db7..9bddafac701 100644
--- a/source/blender/include/BIF_renderwin.h
+++ b/source/blender/include/BIF_renderwin.h
@@ -33,6 +33,7 @@
struct Render;
struct ScrArea;
struct RenderStats;
+struct ImBuf;
void calc_renderwin_rectangle(int rectx, int recty, int posmask, int renderpos_r[2], int rendersize_r[2]);
@@ -40,6 +41,15 @@ void BIF_close_render_display(void);
void BIF_do_render(int anim);
+/* render text */
+void BIF_make_render_text(struct RenderStats *rs);
+char *BIF_render_text(void);
+
+/* render spare buffer */
+int BIF_show_render_spare(void);
+struct ImBuf *BIF_render_spare_imbuf(void);
+void BIF_free_render_spare(void);
+
/**
* @param v3d The View3D space to render.
*/
diff --git a/source/blender/include/BIF_resources.h b/source/blender/include/BIF_resources.h
index 7f3b27fcf2f..1649287297b 100644
--- a/source/blender/include/BIF_resources.h
+++ b/source/blender/include/BIF_resources.h
@@ -58,24 +58,24 @@ typedef enum {
ICON_SPACE4,
ICON_TRIA_LEFT,
ICON_TRIA_UP,
- ICON_NDOF_TURN,
- ICON_NDOF_FLY,
- ICON_NDOF_TRANS,
- ICON_NDOF_DOM,
+ ICON_FONTPREVIEW,
+ ICON_BLANK4,
+ ICON_BLANK5,
+ ICON_BLANK6,
ICON_ORTHO,
ICON_PERSP,
ICON_CAMERA,
- ICON_EFFECTS,
+ ICON_PARTICLES,
ICON_BBOX,
ICON_WIRE,
ICON_SOLID,
ICON_SMOOTH,
ICON_POTATO,
ICON_MARKER_HLT,
- ICON_NORMALVIEW,
- ICON_LOCALVIEW,
- ICON_UNUSEDVIEW,
+ ICON_PMARKER_ACT,
+ ICON_PMARKER_SEL,
+ ICON_PMARKER,
ICON_VIEWZOOM,
ICON_SORTALPHA,
ICON_SORTTIME,
@@ -84,10 +84,10 @@ typedef enum {
ICON_SHORTDISPLAY,
ICON_TRIA_DOWN,
ICON_TRIA_RIGHT,
- ICON_BLANK7,
- ICON_BLANK8,
- ICON_BLANK9,
- ICON_BLANK10,
+ ICON_NDOF_TURN,
+ ICON_NDOF_FLY,
+ ICON_NDOF_TRANS,
+ ICON_NDOF_DOM,
ICON_VIEW_AXIS_ALL,
ICON_VIEW_AXIS_NONE,
@@ -123,9 +123,9 @@ typedef enum {
ICON_AXIS_SIDE,
ICON_AXIS_FRONT,
ICON_AXIS_TOP,
- ICON_DRAW_UVFACES,
- ICON_STICKY_UVS,
- ICON_STICKY2_UVS,
+ ICON_STICKY_UVS_LOC,
+ ICON_STICKY_UVS_DISABLE,
+ ICON_STICKY_UVS_VERT,
ICON_PREV_KEYFRAME,
ICON_NEXT_KEYFRAME,
ICON_ENVMAP,
@@ -164,7 +164,7 @@ typedef enum {
ICON_FACESEL_DEHLT,
ICON_FACESEL_HLT,
ICON_EDIT_DEHLT,
- ICON_BLANK19,
+ ICON_BOOKMARKS,
ICON_BLANK20,
ICON_BLANK21,
ICON_BLANK22,
@@ -268,7 +268,7 @@ typedef enum {
ICON_EYEDROPPER,
ICON_WINDOW_WINDOW,
ICON_PANEL_CLOSE,
- ICON_BLANK35,
+ ICON_PHYSICS,
ICON_BLANK36,
ICON_BLANK37,
ICON_BLANK38,
@@ -317,13 +317,13 @@ typedef enum {
ICON_HOME,
ICON_CLIPUV_DEHLT,
ICON_CLIPUV_HLT,
- ICON_SOME_WACKY_VERTS_AND_LINES,
- ICON_A_WACKY_VERT_AND_SOME_LINES,
+ ICON_BLANK2,
+ ICON_BLANK3,
ICON_VPAINT_COL,
ICON_RESTRICT_SELECT_OFF,
ICON_RESTRICT_SELECT_ON,
- ICON_BLANK45,
- ICON_BLANK46,
+ ICON_MUTE_IPO_OFF,
+ ICON_MUTE_IPO_ON,
ICON_MAN_TRANS,
ICON_MAN_ROT,
@@ -494,6 +494,7 @@ enum {
TH_NORMAL,
TH_FACE_DOT,
TH_FACEDOT_SIZE,
+ TH_CFRAME,
TH_SYNTAX_B,
TH_SYNTAX_V,
@@ -525,6 +526,7 @@ enum {
TH_SEQ_META,
TH_EDGE_SHARP,
+ TH_EDITMESH_ACTIVE,
};
/* XXX WARNING: previous is saved in file, so do not change order! */
diff --git a/source/blender/include/BIF_space.h b/source/blender/include/BIF_space.h
index 884f0459abf..43f0629f935 100644
--- a/source/blender/include/BIF_space.h
+++ b/source/blender/include/BIF_space.h
@@ -55,6 +55,7 @@ struct SpaceOops;
#define VIEW3D_HANDLER_OBJECT 3
#define VIEW3D_HANDLER_PREVIEW 4
#define VIEW3D_HANDLER_MULTIRES 5
+#define VIEW3D_HANDLER_TRANSFORM 6
/* ipo handler codes */
#define IPO_HANDLER_PROPERTIES 20
@@ -65,6 +66,8 @@ struct SpaceOops;
#define IMAGE_HANDLER_CURVES 32
#define IMAGE_HANDLER_PREVIEW 33
#define IMAGE_HANDLER_GAME_PROPERTIES 34
+#define IMAGE_HANDLER_VIEW_PROPERTIES 35
+/*#define IMAGE_HANDLER_TRANSFORM_PROPERTIES 36*/
/* action handler codes */
#define ACTION_HANDLER_PROPERTIES 40
@@ -75,6 +78,9 @@ struct SpaceOops;
/* sequence handler codes */
#define SEQ_HANDLER_PROPERTIES 60
+/* imasel handler codes */
+#define IMASEL_HANDLER_IMAGE 70
+
/* theme codes */
#define B_ADD_THEME 3301
#define B_DEL_THEME 3302
@@ -89,6 +95,7 @@ struct SpaceOops;
#define B_RECALCLIGHT 3310
+void scrarea_do_winprefetchdraw (struct ScrArea *sa);
void scrarea_do_windraw (struct ScrArea *sa);
void scrarea_do_winchange (struct ScrArea *sa);
void scrarea_do_winhandle (struct ScrArea *sa, struct BWinEvent *evt);
@@ -114,6 +121,7 @@ extern void force_draw_plus(int type, int header);
extern void freespacelist(struct ScrArea *sa);
extern void handle_view3d_around(void);
extern void handle_view3d_lock(void);
+extern void handle_view_middlemouse(void);
extern void init_v2d_oops(struct ScrArea *, struct SpaceOops *);
extern void initipo(struct ScrArea *sa);
extern void newspace(struct ScrArea *sa, int type);
diff --git a/source/blender/include/BIF_spacetypes.h b/source/blender/include/BIF_spacetypes.h
index e825acf676f..6125cfd5926 100644
--- a/source/blender/include/BIF_spacetypes.h
+++ b/source/blender/include/BIF_spacetypes.h
@@ -35,6 +35,7 @@ struct BWinEvent;
typedef struct _SpaceType SpaceType;
+typedef void (*SpacePrefetchDrawFP) (struct ScrArea *sa, void *spacedata);
typedef void (*SpaceDrawFP) (struct ScrArea *sa, void *spacedata);
typedef void (*SpaceChangeFP) (struct ScrArea *sa, void *spacedata);
typedef void (*SpaceHandleFP) (struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
@@ -43,7 +44,7 @@ typedef void (*SpaceHandleFP) (struct ScrArea *sa, void *spacedata, struct BWinE
SpaceType* spacetype_new (char *name);
-void spacetype_set_winfuncs (SpaceType *st, SpaceDrawFP draw, SpaceChangeFP change, SpaceHandleFP handle);
+void spacetype_set_winfuncs (SpaceType *st, SpacePrefetchDrawFP prefetch, SpaceDrawFP draw, SpaceChangeFP change, SpaceHandleFP handle);
/***/
diff --git a/source/blender/include/BIF_toolbox.h b/source/blender/include/BIF_toolbox.h
index 72867cbfa05..39f86aefe73 100644
--- a/source/blender/include/BIF_toolbox.h
+++ b/source/blender/include/BIF_toolbox.h
@@ -65,4 +65,14 @@ void replace_names_but (void);
void BIF_screendump(int fscreen);
void write_screendump(char *name);
+typedef struct TBitem {
+ int icon;
+ char *name;
+ int retval;
+ void *poin;
+} TBitem;
+void toolbox_generic( struct TBitem *generic_menu ); /* for external toolbox - python only for now */
+
+void toolbox_mousepos( short *mpos, int save ); /* saves/restores mouse position when entering/exiting menus */
+
#endif
diff --git a/source/blender/include/BIF_transform.h b/source/blender/include/BIF_transform.h
index a8abcabc4cb..82d6bb84281 100644
--- a/source/blender/include/BIF_transform.h
+++ b/source/blender/include/BIF_transform.h
@@ -55,6 +55,14 @@
#define TFM_BONE_ENVELOPE 16
#define TFM_CURVE_SHRINKFATTEN 17
#define TFM_BONE_ROLL 18
+#define TFM_TIME_TRANSLATE 19
+#define TFM_TIME_SLIDE 20
+#define TFM_TIME_SCALE 21
+#define TFM_TIME_EXTEND 22
+#define TFM_BAKE_TIME 23
+#define TFM_BEVEL 24
+#define TFM_BWEIGHT 25
+#define TFM_ALIGN 26
/* TRANSFORM CONTEXTS */
#define CTX_NONE 0
@@ -62,11 +70,13 @@
#define CTX_EDGE 2
#define CTX_NO_PET 4
#define CTX_TWEAK 8
-#define CTX_NDOF 16
+#define CTX_NO_MIRROR 16
+#define CTX_AUTOCONFIRM 32
+#define CTX_BMESH 64
+#define CTX_NDOF 128
void initTransform(int mode, int context);
void Transform(void);
-void Mirror(short mode);
void NDofTransform();
/* Standalone call to get the transformation center corresponding to the current situation
@@ -77,6 +87,8 @@ int calculateTransformCenter(int centerMode, float *vec);
struct TransInfo;
struct ScrArea;
+struct Base;
+struct Scene;
struct TransInfo * BIF_GetTransInfo(void);
void BIF_setSingleAxisConstraint(float vec[3], char *text);
@@ -84,6 +96,20 @@ void BIF_setDualAxisConstraint(float vec1[3], float vec2[3], char *text);
void BIF_setLocalAxisConstraint(char axis, char *text);
void BIF_setLocalLockConstraint(char axis, char *text);
+int BIF_snappingSupported(void);
+
+struct TransformOrientation;
+
+void BIF_clearTransformOrientation(void);
+void BIF_removeTransformOrientation(struct TransformOrientation *ts);
+void BIF_manageTransformOrientation(int confirm, int set);
+int BIF_menuselectTransformOrientation(void);
+void BIF_selectTransformOrientation(struct TransformOrientation *ts);
+void BIF_selectTransformOrientationFromIndex(int index);
+
+char * BIF_menustringTransformOrientation(); /* the returned value was allocated and needs to be freed after use */
+int BIF_countTransformOrientation();
+
/* Drawing callbacks */
void BIF_drawConstraint(void);
void BIF_drawPropCircle(void);
diff --git a/source/blender/include/BIF_usiblender.h b/source/blender/include/BIF_usiblender.h
index e7475af3ab7..42261ce09d3 100644
--- a/source/blender/include/BIF_usiblender.h
+++ b/source/blender/include/BIF_usiblender.h
@@ -49,6 +49,7 @@ void BIF_read_autosavefile(void);
void BIF_write_file(char *target);
void BIF_write_homefile(void);
void BIF_write_autosave(void);
+void BIF_clear_tempfiles(void);
#endif
diff --git a/source/blender/include/BPI_script.h b/source/blender/include/BPI_script.h
deleted file mode 100644
index 80ac8b46900..00000000000
--- a/source/blender/include/BPI_script.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * include/BPI_script.h (jan-2004 ianwill)
- *
- * $Id$
- *
- * Header for BPython's script structure. BPI: Blender Python external include
- * file.
- *
- * ***** BEGIN GPL/BL DUAL 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. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License. See http://www.blender.org/BL/ for information
- * about this.
- *
- * 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) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * This is a new part of Blender.
- *
- * Contributor(s): Willian P. Germano.
- *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
- */
-
-#ifndef BPI_SCRIPT_H
-#define BPI_SCRIPT_H
-
-//#include "DNA_listBase.h"
-#include "DNA_ID.h"
-
-typedef struct Script {
- ID id;
-
- void *py_draw;
- void *py_event;
- void *py_button;
- void *py_browsercallback;
- void *py_globaldict;
-
- int flags, lastspace;
-
-} Script;
-
-/* Note: a script that registers callbacks in the script->py_* pointers
- * above (or calls the file or image selectors) needs to keep its global
- * dictionary until Draw.Exit() is called and the callbacks removed.
- * Unsetting SCRIPT_RUNNING means the interpreter reached the end of the
- * script and returned control to Blender, but we can't get rid of its
- * namespace (global dictionary) while SCRIPT_GUI or SCRIPT_FILESEL is set,
- * because of the callbacks. The flags and the script name are saved in
- * each running script's global dictionary, under '__script__'. */
-
-/* Flags */
-#define SCRIPT_RUNNING 0x01
-#define SCRIPT_GUI 0x02
-#define SCRIPT_FILESEL 0x04
-
-#endif /* BPI_SCRIPT_H */
diff --git a/source/blender/include/BSE_drawimasel.h b/source/blender/include/BSE_drawimasel.h
index f412ca08584..6c68ba79bb9 100644
--- a/source/blender/include/BSE_drawimasel.h
+++ b/source/blender/include/BSE_drawimasel.h
@@ -33,27 +33,28 @@
#ifndef BSE_DRAWIMASEL_H
#define BSE_DRAWIMASEL_H
+
+/* button events */
+#define B_FS_FILENAME 1
+#define B_FS_DIRNAME 2
+#define B_FS_DIR_MENU 3
+#define B_FS_PARDIR 4
+#define B_FS_LOAD 5
+#define B_FS_CANCEL 6
+#define B_FS_LIBNAME 7
+#define B_FS_BOOKMARK 8
+
+/* ui geometry */
+#define IMASEL_BUTTONS_HEIGHT 60
+#define TILE_BORDER_X 8
+#define TILE_BORDER_Y 8
+
struct ScrArea;
struct SpaceImaSel;
-void viewgate(short sx, short sy, short ex, short ey);
-void areaview (void);
-void calc_hilite(struct SpaceImaSel *simasel);
-void make_sima_area(struct SpaceImaSel *simasel);
-void draw_sima_area(struct SpaceImaSel *simasel);
-void select_ima_files(struct SpaceImaSel *simasel);
-void move_imadir_sli(struct SpaceImaSel *simasel);
-void move_imafile_sli(struct SpaceImaSel *simasel);
-void ima_select_all(struct SpaceImaSel *simasel);
-void pibplay(struct SpaceImaSel *simasel);
void drawimaselspace(struct ScrArea *sa, void *spacedata);
-
-/* void calc_hilite(SpaceImaSel *simasel); */
-/* void ima_select_all(SpaceImaSel *simasel); */
-/* void move_imadir_sli(SpaceImaSel *simasel); */
-/* void move_imafile_sli(SpaceImaSel *simasel); */
-/* void pibplay(SpaceImaSel *simasel); */
-/* void select_ima_files(SpaceImaSel *simasel); */
+void calc_imasel_rcts(SpaceImaSel *simasel, int winx, int winy);
+void do_imasel_buttonevents(short event, SpaceImaSel *simasel);
#endif /* BSE_DRAWIMASEL_H */
diff --git a/source/blender/include/BSE_drawipo.h b/source/blender/include/BSE_drawipo.h
index 07f116d8d67..2053f41a178 100644
--- a/source/blender/include/BSE_drawipo.h
+++ b/source/blender/include/BSE_drawipo.h
@@ -55,6 +55,7 @@ void ipoco_to_areaco_noclip (struct View2D *v2d, float *vec, short *mval);
void view2d_do_locks (struct ScrArea *cursa, int flag);
void view2d_zoom (struct View2D *v2d, float factor, int winx, int winy);
+void view2d_getscale (struct View2D *v2d, float *x, float *y);
void test_view2d (struct View2D *v2d, int winx, int winy);
void calc_scrollrcts (struct ScrArea *sa, struct View2D *v2d, int winx, int winy);
diff --git a/source/blender/include/BSE_drawview.h b/source/blender/include/BSE_drawview.h
index 9c577746da9..c425cbc62ea 100644
--- a/source/blender/include/BSE_drawview.h
+++ b/source/blender/include/BSE_drawview.h
@@ -58,7 +58,7 @@ struct ImBuf *read_backbuf(short xmin, short ymin, short xmax, short ymax);
unsigned int sample_backbuf_rect(short mval[2], int size, unsigned int min, unsigned int max, int *dist, short strict, unsigned int (*indextest)(unsigned int index));
void drawview3dspace(struct ScrArea *sa, void *spacedata);
-void drawview3d_render(struct View3D *v3d, int winx, int winy);
+void drawview3d_render(struct View3D *v3d, int winx, int winy, float winmat[][4]);
int update_time(void);
void calc_viewborder(struct View3D *v3d, struct rctf *viewborder_r);
diff --git a/source/blender/include/BSE_edit.h b/source/blender/include/BSE_edit.h
index 048d4d012b2..71f6b275fd8 100644
--- a/source/blender/include/BSE_edit.h
+++ b/source/blender/include/BSE_edit.h
@@ -50,6 +50,7 @@ void snap_sel_to_curs(void);
void snap_curs_to_grid(void);
void snap_curs_to_sel(void);
void snap_to_center(void);
+void snap_curs_to_active(void);
#endif /* BSE_EDIT_H */
diff --git a/source/blender/include/BSE_editaction_types.h b/source/blender/include/BSE_editaction_types.h
new file mode 100644
index 00000000000..c347c04d7c2
--- /dev/null
+++ b/source/blender/include/BSE_editaction_types.h
@@ -0,0 +1,87 @@
+/**
+ * $Id: BIF_editaction.h 10519 2007-04-13 11:15:08Z aligorith $
+ *
+ * ***** BEGIN GPL/BL DUAL 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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): 2007, Joshua Leung (major Action Editor recode)
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+#ifndef BIF_EDITACTION_TYPES_H
+#define BIF_EDITACTION_TYPES_H
+
+/******************************************************* */
+/* FILTERED ACTION DATA - TYPES */
+
+/* types of keyframe data in ActListElem */
+typedef enum ALE_KEYTYPE {
+ ALE_NONE = 0,
+ ALE_IPO,
+ ALE_ICU,
+ ALE_GROUP
+} ALE_KEYTYPE;
+
+/* This struct defines a structure used for quick access */
+typedef struct bActListElem {
+ struct bActListElem *next, *prev;
+
+ void *data; /* source data this elem represents */
+ int type; /* one of the ACTTYPE_* values */
+ int flag; /* copy of elem's flags for quick access */
+ int index; /* copy of adrcode where applicable */
+
+ void *key_data; /* motion data - ipo or ipo-curve */
+ short datatype; /* type of motion data to expect */
+
+ struct bActionGroup *grp; /* action group that owns the channel */
+
+ void *owner; /* will either be an action channel or fake ipo-channel (for keys) */
+ short ownertype; /* type of owner */
+} bActListElem;
+
+/******************************************************* */
+/* FILTER ACTION DATA - METHODS/TYPES */
+
+/* filtering flags - under what circumstances should a channel be added */
+typedef enum ACTFILTER_FLAGS {
+ ACTFILTER_VISIBLE = (1<<0), /* should channels be visible */
+ ACTFILTER_SEL = (1<<1), /* should channels be selected */
+ ACTFILTER_FOREDIT = (1<<2), /* does editable status matter */
+ ACTFILTER_CHANNELS = (1<<3), /* do we only care that it is a channel */
+ ACTFILTER_IPOKEYS = (1<<4), /* only channels referencing ipo's */
+ ACTFILTER_ONLYICU = (1<<5), /* only reference ipo-curves */
+ ACTFILTER_FORDRAWING = (1<<6), /* make list for interface drawing */
+ ACTFILTER_ACTGROUPED = (1<<7) /* belongs to the active group */
+} ACTFILTER_FLAGS;
+
+/* Action Editor - Main Data types */
+typedef enum ACTCONT_TYPES {
+ ACTCONT_NONE = 0,
+ ACTCONT_ACTION,
+ ACTCONT_SHAPEKEY
+} ACTCONT_TYPES;
+
+#endif
diff --git a/source/blender/include/BSE_editipo.h b/source/blender/include/BSE_editipo.h
index 01f985018ed..99a7930ddb1 100644
--- a/source/blender/include/BSE_editipo.h
+++ b/source/blender/include/BSE_editipo.h
@@ -44,6 +44,7 @@ struct Object;
struct IpoKey;
struct TransOb;
struct Tex;
+struct TransInfo;
void remake_object_ipos(struct Object *ob);
char *getname_ac_ei(int nr);
@@ -59,14 +60,15 @@ char *getname_la_ei(int nr);
char *getname_cam_ei(int nr);
char *getname_snd_ei(int nr);
char *getname_fluidsim_ei(int nr);
+char *getname_part_ei(int nr);
-char *getname_ipocurve(struct IpoCurve *icu);
+char *getname_ipocurve(struct IpoCurve *icu, struct Object *ob);
int geticon_ipo_blocktype(short blocktype);
struct EditIpo *get_active_editipo(void);
-void boundbox_ipocurve(struct IpoCurve *icu);
-void boundbox_ipo(struct Ipo *ipo, struct rctf *bb);
+void boundbox_ipocurve(struct IpoCurve *icu, int selectedonly);
+void boundbox_ipo(struct Ipo *ipo, struct rctf *bb, int selectedonly);
void editipo_changed(struct SpaceIpo *si, int doredraw);
void scale_editipo(void);
@@ -87,12 +89,14 @@ void do_ipo_selectbuttons(void);
/* gets ipo curve, creates if needed */
-struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, int);
-struct Ipo *verify_ipo(struct ID *, short, char *, char *);
+struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, char *, int);
+struct Ipo *verify_ipo(struct ID *, short, char *, char *, char *);
int texchannel_to_adrcode(int channel);
-void insert_vert_ipo(struct IpoCurve *icu, float x, float y);
+int insert_bezt_icu(struct IpoCurve *icu, struct BezTriple *bezt);
+void insert_vert_icu(struct IpoCurve *icu, float x, float y, short fast);
void add_vert_ipo(void);
+
void add_duplicate_editipo(void);
void remove_doubles_ipo(void);
void clean_ipo(void);
@@ -107,6 +111,7 @@ void ipo_mirror(short event);
void mouse_select_ipo(void);
void sethandles_ipo(int code);
void select_ipo_bezier_keys(struct Ipo *ipo, int selectmode);
+void select_icu_bezier_keys(struct IpoCurve *icu, int selectmode);
void set_ipotype(void);
void borderselect_ipo(void);
void del_ipo(int need_check);
@@ -118,7 +123,7 @@ void paste_editipo(void);
void set_exprap_ipo(int mode);
void set_speed_editipo(float speed);
-void insertkey(ID *id, int blocktype, char *actname, char *constname, int adrcode);
+void insertkey(ID *id, int blocktype, char *actname, char *constname, int adrcode, short fast);
void insertkey_smarter(ID *id, int blocktype, char *actname, char *constname, int adrcode);
void insertkey_editipo(void);
void common_insertkey(void);
@@ -135,21 +140,24 @@ void movekey_ipo(int dir);
void movekey_obipo(int dir);
void nextkey_ipo(int dir);
void nextkey_obipo(int dir);
-void remake_ipo_transverts(struct TransVert *transmain, float *dvec, int tot);
-void transform_ipo(int mode);
void filter_sampledata(float *data, int sfra, int efra);
void sampledata_to_ipocurve(float *data, int sfra, int efra, struct IpoCurve *icu);
-void ipo_record(void);
+void ipo_record(void);
+
+void make_ipo_transdata(struct TransInfo *t);
+void remake_ipo_transdata(struct TransInfo *t);
+void transform_ipo(int mode);
void actstrip_map_ipo_keys(struct Object *ob, struct Ipo *ipo, short restore, short only_keys);
void sethandles_ipo_keys(struct Ipo *ipo, int code);
+void snap_cfra_ipo_keys(struct Ipo *ipo, short mode);
void snap_ipo_keys(struct Ipo *ipo, short snaptype);
void mirror_ipo_keys(struct Ipo *ipo, short mirror_mode);
void setipotype_ipo(struct Ipo *ipo, int code);
void set_ipo_key_selection(struct Ipo *ipo, int sel);
int is_ipo_key_selected(struct Ipo *ipo);
-void delete_icu_key(struct IpoCurve *icu, int index);
+void delete_icu_key(struct IpoCurve *icu, int index, short do_recalc);
void delete_ipo_keys(struct Ipo *ipo);
int fullselect_ipo_keys(struct Ipo *ipo);
int add_trans_ipo_keys(struct Ipo *ipo, struct TransVert *tv, int tvtot);
@@ -157,8 +165,8 @@ void duplicate_ipo_keys(struct Ipo *ipo);
void borderselect_ipo_key(struct Ipo *ipo, float xmin, float xmax, int val);
void borderselect_icu_key(struct IpoCurve *icu, float xmin, float xmax,
int (*select_function)(struct BezTriple *));
-void insertmatrixkey(ID *id, int blocktype, char *actname, char *constname, int adrcode, float matrixvalue);
-
+int insertmatrixkey(ID *id, int blocktype, char *actname, char *constname, int adrcode);
+void insertfloatkey(ID *id, int blocktype, char *actname, char *constname, int adrcode, float floatkey);
void select_ipo_key(struct Ipo *ipo, float selx, int sel);
void select_icu_key(struct IpoCurve *icu, float selx, int selectmode);
void setexprap_ipoloop(struct Ipo *ipo, int code);
diff --git a/source/blender/include/BSE_filesel.h b/source/blender/include/BSE_filesel.h
index 6934899062e..a41eea32040 100644
--- a/source/blender/include/BSE_filesel.h
+++ b/source/blender/include/BSE_filesel.h
@@ -53,8 +53,6 @@ void activate_fileselect(int type, char *title, char *file, void (*func)(char *)
void activate_fileselect_menu(int type, char *title, char *file, char *pupmenu, short *menup, void (*func)(char *));
void activate_fileselect_args(int type, char *title, char *file, void (*func)(char *, void *, void *), void *arg1, void *arg2);
-void activate_imageselect(int type, char *title, char *file, void (*func)(char *));
-
void activate_databrowse(struct ID *id, int idcode, int fromcode, int retval, short *menup, void (*func)(unsigned short));
void activate_databrowse_args(struct ID *id, int idcode, int fromcode, short *menup, void (*func)(char *, void *, void *), void *arg1, void *arg2);
diff --git a/source/blender/include/BSE_headerbuttons.h b/source/blender/include/BSE_headerbuttons.h
index b0daf106ca8..112517dbe7f 100644
--- a/source/blender/include/BSE_headerbuttons.h
+++ b/source/blender/include/BSE_headerbuttons.h
@@ -141,6 +141,7 @@ void do_view3d_select_object_typemenu(void *arg, int event);
void do_view3d_select_faceselmenu(void *arg, int event);
void do_view3d_select_meshmenu(void *arg, int event);
void do_view3d_select_curvemenu(void *arg, int event);
+void do_view3d_select_metaballmenu(void *arg, int event);
void do_view3d_edit_snapmenu(void *arg, int event);
void do_view3d_edit_mirrormenu(void *arg, int event);
void do_view3d_transform_moveaxismenu(void *arg, int event);
diff --git a/source/blender/include/BSE_node.h b/source/blender/include/BSE_node.h
index 243cac56152..0e9e511e9e6 100644
--- a/source/blender/include/BSE_node.h
+++ b/source/blender/include/BSE_node.h
@@ -54,6 +54,8 @@ struct Material *editnode_get_active_material(struct Material *ma);
struct bNode *editnode_get_active_idnode(struct bNodeTree *ntree, short id_code);
struct bNode *editnode_get_active(struct bNodeTree *ntree);
+void node_rename(struct SpaceNode *snode);
+
void snode_tag_dirty(struct SpaceNode *snode);
void snode_set_context(struct SpaceNode *snode);
@@ -71,6 +73,10 @@ void node_ungroup(struct SpaceNode *snode);
void snode_make_group_editable(struct SpaceNode *snode, struct bNode *gnode);
void node_hide(struct SpaceNode *snode);
void node_read_renderlayers(struct SpaceNode *snode);
+void node_read_fullsamplelayers(struct SpaceNode *snode);
+void clear_scene_in_nodes(struct Scene *sce);
+void node_make_link(struct SpaceNode *snode);
+void node_active_link_viewer(struct SpaceNode *snode);
void node_transform_ext(int mode, int unused);
void node_shader_default(struct Material *ma);
@@ -95,8 +101,13 @@ struct SpaceNode;
struct bNodeLink;
void node_draw_link(struct SpaceNode *snode, struct bNodeLink *link);
+void node_rename_but(char *s);
+
void init_node_butfuncs(void);
+void node_curvemap_sample(float *col);
+
+
/* exported to CMP and SHD nodes */
//void node_ID_title_cb(void *node_v, void *unused_v);
//void node_but_title_cb(void *node_v, void *but_v);
diff --git a/source/blender/include/BSE_seqeffects.h b/source/blender/include/BSE_seqeffects.h
index 2962bbf3676..2dde9d3cc79 100644
--- a/source/blender/include/BSE_seqeffects.h
+++ b/source/blender/include/BSE_seqeffects.h
@@ -89,6 +89,7 @@ struct SeqEffectHandle {
};
struct SeqEffectHandle get_sequence_effect(struct Sequence * seq);
+struct SeqEffectHandle get_sequence_blend(struct Sequence * seq);
int get_sequence_effect_num_inputs(int seq_type);
void sequence_effect_speed_rebuild_map(struct Sequence * seq, int force);
diff --git a/source/blender/include/BSE_seqscopes.h b/source/blender/include/BSE_seqscopes.h
index 3dd5e495928..a2b3c65d6e9 100644
--- a/source/blender/include/BSE_seqscopes.h
+++ b/source/blender/include/BSE_seqscopes.h
@@ -32,7 +32,10 @@
struct ImBuf;
struct ImBuf *make_waveform_view_from_ibuf(struct ImBuf * ibuf);
+struct ImBuf *make_sep_waveform_view_from_ibuf(struct ImBuf * ibuf);
struct ImBuf *make_vectorscope_view_from_ibuf(struct ImBuf * ibuf);
+struct ImBuf *make_zebra_view_from_ibuf(struct ImBuf * ibuf, float perc);
+struct ImBuf *make_histogram_view_from_ibuf(struct ImBuf * ibuf);
#endif
diff --git a/source/blender/include/BSE_sequence.h b/source/blender/include/BSE_sequence.h
index c975e8de8ff..9f15b729e1c 100644
--- a/source/blender/include/BSE_sequence.h
+++ b/source/blender/include/BSE_sequence.h
@@ -37,6 +37,7 @@
struct PluginSeq;
struct StripElem;
+struct TStripElem;
struct Strip;
struct Sequence;
struct ListBase;
@@ -44,21 +45,46 @@ struct Editing;
struct ImBuf;
struct Scene;
-void free_stripdata(int len, struct StripElem *se);
+void free_tstripdata(int len, struct TStripElem *se);
void free_strip(struct Strip *strip);
-void new_stripdata(struct Sequence *seq);
+void new_tstripdata(struct Sequence *seq);
void free_sequence(struct Sequence *seq);
void build_seqar(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq);
+
+#define BUILD_SEQAR_COUNT_NOTHING 0
+#define BUILD_SEQAR_COUNT_CURRENT 1
+#define BUILD_SEQAR_COUNT_CHILDREN 2
+
+void build_seqar_cb(struct ListBase *seqbase, struct Sequence ***seqar,
+ int *totseq, int (*test_func)(struct Sequence * seq));
void free_editing(struct Editing *ed);
void calc_sequence(struct Sequence *seq);
+void calc_sequence_disp(struct Sequence *seq);
+void reload_sequence_new_file(struct Sequence * seq);
+void seq_proxy_rebuild(struct Sequence * seq);
void sort_seq(void);
void clear_scene_in_allseqs(struct Scene *sce);
+char *give_seqname_by_type(int type);
+char *give_seqname(struct Sequence *seq);
+
int evaluate_seq_frame(int cfra);
struct StripElem *give_stripelem(struct Sequence *seq, int cfra);
+struct TStripElem *give_tstripelem(struct Sequence *seq, int cfra);
void set_meta_stripdata(struct Sequence *seqm);
struct ImBuf *give_ibuf_seq(int rectx, int recty, int cfra, int chansel);
/* chansel: render this channel. Default=0 (renders end result)*/
+struct ImBuf *give_ibuf_seq_direct(int rectx, int recty, int cfra,
+ struct Sequence * seq);
+
+/* sequence prefetch API */
+void seq_start_threads();
+void seq_stop_threads();
+void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown);
+void seq_wait_for_prefetch_ready();
+struct ImBuf * give_ibuf_seq_threaded(int rectx, int recty, int cfra,
+ int chanshown);
+
void free_imbuf_seq_except(int cfra);
void free_imbuf_seq_with_ipo(struct Ipo * ipo);
diff --git a/source/blender/include/BSE_time.h b/source/blender/include/BSE_time.h
index 459101f592d..27560c09e75 100644
--- a/source/blender/include/BSE_time.h
+++ b/source/blender/include/BSE_time.h
@@ -35,8 +35,14 @@
struct ListBase;
struct View2D;
+struct TimeMarker;
-/* ******** Markers - General Api ********* */
+/* ****** Marker Macros - General API ****** */
+
+/* macro for getting the scene's set of markers */
+#define SCE_MARKERS (&(G.scene->markers))
+
+/* ******** Markers - General API ********* */
void add_marker(int frame);
void duplicate_marker(void);
void remove_marker(void);
@@ -45,16 +51,25 @@ void transform_markers(int mode, int smode);
void borderselect_markers(void);
void deselect_markers(short test, short sel);
-struct TimeMarker *find_nearest_marker(int clip_y);
+struct TimeMarker *find_nearest_marker(struct ListBase *markers, int clip_y);
void nextprev_marker(short dir);
void get_minmax_markers(short sel, float *first, float *last);
int find_nearest_marker_time(float dx);
+struct TimeMarker *get_frame_marker(int frame);
void add_marker_to_cfra_elem(struct ListBase *lb, struct TimeMarker *marker, short only_sel);
void make_marker_cfra_list(struct ListBase *lb, short only_sel);
-void draw_markers_timespace(void);
+/* ********* Markers - Drawing API ********* */
+
+/* flags for drawing markers */
+enum {
+ DRAW_MARKERS_LINES = (1<<0),
+ DRAW_MARKERS_LOCAL = (1<<1)
+};
+
+void draw_markers_timespace(struct ListBase *markers, int flag);
/* ******** Animation - Preview Range ************* */
void anim_previewrange_set(void);
diff --git a/source/blender/include/BSE_trans_types.h b/source/blender/include/BSE_trans_types.h
index d75da302436..9c8b9e5595f 100644
--- a/source/blender/include/BSE_trans_types.h
+++ b/source/blender/include/BSE_trans_types.h
@@ -35,6 +35,7 @@
struct Object;
struct MDeformVert;
+struct ColorBand;
typedef struct TransOb {
float *loc;
diff --git a/source/blender/include/BSE_view.h b/source/blender/include/BSE_view.h
index 94834d2c771..0e88b2467f7 100644
--- a/source/blender/include/BSE_view.h
+++ b/source/blender/include/BSE_view.h
@@ -78,6 +78,7 @@ void calctrackballvec(struct rcti *area, short *mval, float *vec);
void viewmove(int mode);
void viewmoveNDOFfly(int mode);
void viewmoveNDOF(int mode);
+void view_zoom_mouseloc(float dfac, short *mouseloc);
int get_view3d_viewplane(int winxi, int winyi, rctf *viewplane, float *clipsta, float *clipend, float *pixsize);
void setwinmatrixview3d(int winx, int winy, struct rctf *rect);
diff --git a/source/blender/include/blendef.h b/source/blender/include/blendef.h
index e2d4d0c67ad..8ed23e10641 100644
--- a/source/blender/include/blendef.h
+++ b/source/blender/include/blendef.h
@@ -40,7 +40,6 @@
#define MINFRAME 1
#define MINFRAMEF 1.0
-#define MAXLAMP 32765
/* max length material array, 16 because of bits in matfrom */
#define MAXPICKBUF 10000
#define MAXSEQ 32
@@ -54,7 +53,7 @@
/* also fill in structs itself, dna cannot handle defines, duplicate with utildefines.h still */
#ifndef FILE_MAXDIR
-#define FILE_MAXDIR 160
+#define FILE_MAXDIR 160
#define FILE_MAXFILE 80
#endif
@@ -87,13 +86,16 @@
#endif
#define SELECT 1
+#define HIDDEN 1
+#define FIRST 1
#define ACTIVE 2
/*#ifdef WITH_VERSE*/
#define VERSE 3
/*#endif*/
#define DESELECT 0
#define NOT_YET 0
-
+#define VISIBLE 0
+#define LAST 0
#define TESTBASE(base) ( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
#define TESTBASELIB(base) ( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
@@ -111,12 +113,17 @@
#define EFRA (G.scene->r.efra)
#define PSFRA ((G.scene->r.psfra != 0)? (G.scene->r.psfra): (G.scene->r.sfra))
#define PEFRA ((G.scene->r.psfra != 0)? (G.scene->r.pefra): (G.scene->r.efra))
+#define FRA2TIME(a) ((((double) G.scene->r.frs_sec_base) * (a)) / G.scene->r.frs_sec)
+#define TIME2FRA(a) ((((double) G.scene->r.frs_sec) * (a)) / G.scene->r.frs_sec_base)
+#define FPS (((double) G.scene->r.frs_sec) / G.scene->r.frs_sec_base)
#define ISPOIN(a, b, c) ( (a->b) && (a->c) )
#define ISPOIN3(a, b, c, d) ( (a->b) && (a->c) && (a->d) )
#define ISPOIN4(a, b, c, d, e) ( (a->b) && (a->c) && (a->d) && (a->e) )
-#define BEZSELECTED(bezt) (((bezt)->f1 & 1) || ((bezt)->f2 & 1) || ((bezt)->f3 & 1))
+#define BEZSELECTED(bezt) (((bezt)->f1 & SELECT) || ((bezt)->f2 & SELECT) || ((bezt)->f3 & SELECT))
+/* for curve objects in editmode that can have hidden handles - may use for IPO's later */
+#define BEZSELECTED_HIDDENHANDLES(bezt) ((G.f & G_HIDDENHANDLES) ? (bezt)->f2 & SELECT : BEZSELECTED(bezt))
/* psfont */
#define FNT_PDRAW 1
@@ -158,7 +165,6 @@
#define B_TEXALONE 47
#define B_MESHALONE 48
#define B_CURVEALONE 49
-#define B_HEMESHALONE 50
/* EVENT < 50: alones en locals */
@@ -171,7 +177,7 @@
#define B_PLAINMENUS 66
-#define B_GLRESLIMITCHANGED 69
+#define B_GLRESLIMITCHANGED 69
#define B_SHOWSPLASH 70
#define B_RESETAUTOSAVE 71
#define B_SOUNDTOGGLE 72
@@ -212,17 +218,15 @@
#define B_AUTOKEY 139
#define B_SCENELOCK 140
#define B_LOCALVIEW 141
-#define B_U_CAPSLOCK 142
+#define B_U_CAPSLOCK 142
#define B_VIEWBUT 146
#define B_PERSP 147
#define B_PROPTOOL 148
-#define B_VIEWRENDER 149
-#define B_VIEWTRANS 150
-#define B_VIEWZOOM 151
-#define B_STARTGAME 152
+#define B_VIEWRENDER 149
+#define B_STARTGAME 150
-#define B_MODESELECT 156
+#define B_MODESELECT 156
#define B_AROUND 157
#define B_SEL_VERT 158
#define B_SEL_EDGE 159
@@ -230,9 +234,11 @@
#define B_MAN_TRANS 161
#define B_MAN_ROT 162
#define B_MAN_SCALE 163
-#define B_HEMESHBROWSE 164
-#define B_HEMESHLOCAL 165
-#define B_NDOF 166
+#define B_SEL_PATH 166
+#define B_SEL_POINT 167
+#define B_SEL_END 168
+#define B_MAN_MODE 169
+#define B_NDOF 170
/* IPO: 200 */
#define B_IPOHOME 201
@@ -243,14 +249,16 @@
#define B_IPOEXTRAP 206
#define B_IPOCYCLIC 207
#define B_IPOMAIN 208
-#define B_IPOSHOWKEY 209
-#define B_IPOCYCLICX 210
+#define B_IPOSHOWKEY 209
+#define B_IPOCYCLICX 210
/* warn: also used for oops and seq */
-#define B_VIEW2DZOOM 211
+#define B_VIEW2DZOOM 211
#define B_IPOPIN 212
#define B_IPO_ACTION_OB 213
#define B_IPO_ACTION_KEY 214
-
+#define B_IPOVIEWCENTER 215
+#define B_IPOVIEWALL 216
+#define B_IPOREDRAW 217
/* OOPS: 250 */
#define B_OOPSHOME 251
@@ -261,15 +269,15 @@
/* INFO: 300 */
/* watch: also in filesel.c and editobject.c */
#define B_INFOSCR 301
-#define B_INFODELSCR 302
+#define B_INFODELSCR 302
#define B_INFOSCE 304
-#define B_INFODELSCE 305
+#define B_INFODELSCE 305
#define B_FILEMENU 306
#define B_PACKFILE 307
#define B_CONSOLEOUT 308
#define B_CONSOLENUMLINES 309
-#define B_USERPREF 310
+#define B_USERPREF 310
#define B_LOADUIFONT 311
#define B_SETLANGUAGE 312
#define B_SETFONTSIZE 313
@@ -285,32 +293,33 @@
#define B_UITHEMEIMPORT 323
#define B_UITHEMEEXPORT 324
-#define B_MEMCACHELIMIT 325
+#define B_MEMCACHELIMIT 325
+#define B_WPAINT_RANGE 326
/* Definitions for the fileselect buttons in user prefs */
#define B_FONTDIRFILESEL 330
#define B_TEXTUDIRFILESEL 331
-#define B_PLUGTEXDIRFILESEL 332
-#define B_PLUGSEQDIRFILESEL 333
-#define B_RENDERDIRFILESEL 334
-#define B_PYTHONDIRFILESEL 335
+#define B_PLUGTEXDIRFILESEL 332
+#define B_PLUGSEQDIRFILESEL 333
+#define B_RENDERDIRFILESEL 334
+#define B_PYTHONDIRFILESEL 335
#define B_SOUNDDIRFILESEL 336
#define B_TEMPDIRFILESEL 337
/* yafray: for exportdir select */
#define B_YAFRAYDIRFILESEL 338
-#define B_PYMENUEVAL 339 /* re-eval scripts registration in menus */
+#define B_PYMENUEVAL 339 /* re-eval scripts registration in menus */
/* END Definitions for the fileselect buttons in user prefs */
/* IMAGE: 350 */
#define B_SIMAGEHOME 351
#define B_SIMABROWSE 352
#define B_SIMAGELOAD 353
-#define B_SIMAGEDRAW 354
-#define B_BE_SQUARE 355
-#define B_SIMAGEDRAW1 356
-#define B_TWINANIM 357
+#define B_SIMA_REDR_IMA_3D 354
+#define B_SIMAGETILE 355
+#define B_BE_SQUARE 356
+#define B_TWINANIM 357
#define B_SIMAGEREPLACE 358
-#define B_CLIP_UV 359
+#define B_CLIP_UV 359
#define B_SIMAGELOAD1 360
#define B_SIMAGEREPLACE1 361
#define B_SIMAGEPAINTTOOL 362
@@ -334,20 +343,27 @@
#define B_SIMANAME 381
#define B_SIMAMULTI 382
#define B_TRANS_IMAGE 383
-#define B_SIMA_REPACK 384
-#define B_SIMA_PLAY 385
-#define B_SIMA_RECORD 386
+#define B_CURSOR_IMAGE 384
+#define B_SIMA_REPACK 385
+#define B_SIMA_PLAY 386
+#define B_SIMA_RECORD 387
+#define B_SIMAPIN 388
+#define B_SIMA3DVIEWDRAW 389
+
/* BUTS: 400 */
-#define B_BUTSHOME 401
-#define B_BUTSPREVIEW 402
-#define B_MATCOPY 403
-#define B_MATPASTE 404
-#define B_MESHTYPE 405
+#define B_BUTSHOME 401
+#define B_BUTSPREVIEW 402
+#define B_MATCOPY 403
+#define B_MATPASTE 404
+#define B_MESHTYPE 405
#define B_CONTEXT_SWITCH 406
/* IMASEL: 450 */
-/* in imasel.h */
+/* in imasel.h - not any more - elubie */
+#define B_SORTIMASELLIST 451
+#define B_RELOADIMASELDIR 452
+#define B_FILTERIMASELDIR 453
/* TEXT: 500 */
#define B_TEXTBROWSE 501
@@ -361,8 +377,8 @@
#define B_SYNTAX 509
/* SCRIPT: 525 */
-#define B_SCRIPTBROWSE 526
-#define B_SCRIPT2PREV 527
+#define B_SCRIPTBROWSE 526
+#define B_SCRIPT2PREV 527
/* FILE: 550 */
#define B_SORTFILELIST 551
@@ -382,34 +398,35 @@
#define B_ACTHOME 701
#define B_ACTCOPY 702
#define B_ACTPASTE 703
-#define B_ACTPASTEFLIP 704
+#define B_ACTPASTEFLIP 704
#define B_ACTCYCLIC 705
#define B_ACTCONT 706
#define B_ACTMAIN 707
#define B_ACTPIN 708
#define B_ACTBAKE 709
+#define B_ACTCOPYKEYS 710
+#define B_ACTPASTEKEYS 711
/* TIME: 751 - 800 */
#define B_TL_REW 751
#define B_TL_PLAY 752
#define B_TL_FF 753
-#define B_TL_PREVKEY 754
-#define B_TL_NEXTKEY 755
+#define B_TL_PREVKEY 754
+#define B_TL_NEXTKEY 755
#define B_TL_STOP 756
-#define B_TL_PREVIEWON 757
+#define B_TL_PREVIEWON 757
/* NLA: 801-850 */
#define B_NLAHOME 801
/* NODE: 851-900 */
-#define B_NODEHOME 851
+#define B_NODEHOME 851
#define B_NODE_USEMAT 852
#define B_NODE_USESCENE 853
/* FREE 901 - 999 */
-#define B_NOTHING -1
#define B_NOP -1
@@ -418,22 +435,22 @@
#define B_KEEPORIG 2
#define B_BEAUTY 4
#define B_SMOOTH 8
-#define B_BEAUTY_SHORT 16
+#define B_BEAUTY_SHORT 16
#define B_AUTOFGON 32
#define B_KNIFE 0x80
-#define B_PERCENTSUBD 0x40
-#define B_MESH_X_MIRROR 0x100
-#define B_JOINTRIA_UV 0x200
-#define B_JOINTRIA_VCOL 0X400
-#define B_JOINTRIA_SHARP 0X800
-#define B_JOINTRIA_MAT 0X1000
+#define B_PERCENTSUBD 0x40
+#define B_MESH_X_MIRROR 0x100
+#define B_JOINTRIA_UV 0x200
+#define B_JOINTRIA_VCOL 0X400
+#define B_JOINTRIA_SHARP 0X800
+#define B_JOINTRIA_MAT 0X1000
/* DISPLAYMODE */
#define R_DISPLAYIMAGE 0
#define R_DISPLAYWIN 1
#define R_DISPLAYSCREEN 2
- /* Gvp.flag and Gwp.flag */
+/* Gvp.flag and Gwp.flag */
#define VP_COLINDEX 1
#define VP_AREA 2
#define VP_SOFT 4
@@ -441,10 +458,11 @@
#define VP_SPRAY 16
#define VP_MIRROR_X 32
#define VP_HARD 64
-#define VP_ONLYVGROUP 128
+#define VP_ONLYVGROUP 128
/* Error messages */
#define ERROR_LIBDATA_MESSAGE "Can't edit external libdata"
+#define MAX_RENDER_PASS 100
#endif
diff --git a/source/blender/include/butspace.h b/source/blender/include/butspace.h
index 142d2ae1d0b..739cec7b9f3 100644
--- a/source/blender/include/butspace.h
+++ b/source/blender/include/butspace.h
@@ -64,10 +64,13 @@ extern void do_render_panels(unsigned short event);
extern void anim_panels(void);
extern void sound_panels(void);
extern void do_soundbuts(unsigned short event);
+extern void sequencer_panels(void);
+extern void do_sequencer_panels(unsigned short event);
/* object */
extern void object_panels(void);
extern void physics_panels(void);
+extern void particle_panels(void);
extern void do_object_panels(unsigned short event);
extern void do_constraintbuts(unsigned short event);
extern void object_panel_constraint(char *context);
@@ -86,8 +89,6 @@ extern int mod_moveDown(void *ob_v, void *md_v);
extern void const_moveUp(void *ob_v, void *con_v);
extern void const_moveDown(void *ob_v, void *con_v);
extern void del_constr_func (void *ob_v, void *con_v);
-extern void get_constraint_typestring(char *str, void *con_v);
-extern void get_constraint_ipo_context(void *ob_v, char *actname);
/* editing */
extern void editing_panels(void);
@@ -103,6 +104,7 @@ extern void do_cambuts(unsigned short event);
extern void do_armbuts(unsigned short event);
extern void do_uvcalculationbuts(unsigned short event);
extern void weight_paint_buttons(struct uiBlock *);
+extern void particle_edit_buttons(struct uiBlock *);
extern char *get_vertexgroup_menustr(struct Object *ob); // used in object buttons
@@ -168,6 +170,8 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_ARMATUREPANEL3 1013
#define B_OBJECTPANELSCALE 1014
#define B_OBJECTPANELDIMS 1015
+#define B_TRANSFORMSPACEADD 1016
+#define B_TRANSFORMSPACECLEAR 1017
/* *********************** */
#define B_LAMPBUTS 1200
@@ -180,6 +184,9 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_SHADRAY 1106
#define B_LMTEXPASTE 1107
#define B_LMTEXCOPY 1108
+#define B_LFALLOFFCHANGED 1109
+#define B_LMTEXMOVEUP 1110
+#define B_LMTEXMOVEDOWN 1111
/* *********************** */
#define B_MATBUTS 1300
@@ -209,6 +216,14 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_MAT_VCOL_PAINT 1222
#define B_MAT_VCOL_LIGHT 1223
+ /* world buttons: buttons-preview update, and redraw 3dview */
+#define B_WORLDPRV2 1224
+
+#define B_MAT_PARTICLE 1225
+
+#define B_MTEXMOVEUP 1226
+#define B_MTEXMOVEDOWN 1227
+
/* *********************** */
#define B_TEXBUTS 1400
@@ -277,6 +292,15 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_FLUIDSIM_MAKEPART 1453
#define B_GROUP_RELINK 1460
+#define B_OBJECT_IPOFLAG 1461
+
+#define B_BAKEABLE_CHANGE 1470
+
+/* Cloth sim button defines */
+#define B_CLOTH_CLEARCACHEALL 1480
+#define B_CLOTH_CLEARCACHEFRAME 1481
+#define B_CLOTH_CHANGEPREROLL 1482
+#define B_CLOTH_RENEW 1483
/* *********************** */
#define B_WORLDBUTS 1600
@@ -286,15 +310,18 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_COLZEN 1503
#define B_WMTEXPASTE 1504
#define B_WMTEXCOPY 1505
-#define B_AO_DISTANCES 1506
+#define B_AO_FALLOFF 1506
+#define B_WMTEXMOVEUP 1507
+#define B_WMTEXMOVEDOWN 1508
/* *********************** */
-#define B_RENDERBUTS 1700
+#define B_RENDERBUTS 1690
+#define B_SEQUENCERBUTS 1699
#define B_FS_PIC 1601
#define B_FS_BACKBUF 1602
-#define B_FS_FTYPE 1604
+#define B_FS_FTYPE 1604 /* FTYPE is no more */
#define B_DORENDER 1605
#define B_DOANIM 1606
#define B_PLAYANIM 1607
@@ -311,7 +338,7 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_PR_PANO 1619
#define B_PR_NTSC 1620
-#define B_IS_FTYPE 1622
+#define B_IS_FTYPE 1622 /* FTYPE is nomore */
#define B_IS_BACKBUF 1623
#define B_PR_PC 1624
@@ -338,6 +365,14 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_ADD_RENDERLAYER 1645
#define B_SET_PASS 1646
+#define B_SEQ_BUT_PLUGIN 1691
+#define B_SEQ_BUT_RELOAD 1692
+#define B_SEQ_BUT_EFFECT 1693
+#define B_SEQ_BUT_RELOAD_ALL 1694
+#define B_SEQ_BUT_TRANSFORM 1695
+#define B_SEQ_BUT_RELOAD_FILE 1696
+#define B_SEQ_BUT_REBUILD_PROXY 1697
+
/* *********************** */
#define B_ARMATUREBUTS 1800
#define B_POSE 1701
@@ -361,6 +396,7 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_DOCENTER 2015
#define B_DOCENTERNEW 2016
#define B_DOCENTERCURSOR 2017
+#define B_MATASS_BROWSE 2018
/* 20 values! */
#define B_OBLAY 2019
@@ -372,6 +408,7 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_PREVKEY 2045
#define B_NEXTKEY 2046
#define B_LOCKKEY 2047
+#define B_MATCOL2 2048
#define B_MESHBUTS 2090
@@ -408,6 +445,9 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_JOINTRIA 2081
#define B_SETTFACE_RND 2082
#define B_SETMCOL_RND 2083
+#define B_DRAWBWEIGHTS 2084
+
+#define B_GEN_SKELETON 2090
/* *********************** */
#define B_VGROUPBUTS 2100
@@ -450,6 +490,11 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_SETRESOLU 2121
#define B_SETW4 2122
#define B_SUBSURFTYPE 2123
+#define B_TILTINTERP 2124
+#define B_SETPT_AUTO 2125
+#define B_SETPT_VECTOR 2126
+#define B_SETPT_ALIGN 2127
+#define B_SETPT_FREE 2128
/* *********************** */
#define B_FONTBUTS 2300
@@ -483,6 +528,23 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_ARM_CALCPATHS 2303
#define B_ARM_CLEARPATHS 2304
+#define B_POSELIB_VALIDATE 2310
+#define B_POSELIB_ADDPOSE 2311
+#define B_POSELIB_REPLACEP 2312
+#define B_POSELIB_REMOVEP 2313
+#define B_POSELIB_APPLYP 2314
+
+ /* these shouldn't be here... */
+#define B_POSELIB_BROWSE 2320
+#define B_POSELIB_ALONE 2321
+#define B_POSELIB_DELETE 2322
+
+
+#define B_POSEGRP_RECALC 2330
+#define B_POSEGRP_ADD 2331
+#define B_POSEGRP_REMOVE 2332
+#define B_POSEGRP_MCUSTOM 2333
+
/* *********************** */
#define B_CAMBUTS 2500
@@ -569,6 +631,14 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
/* Sculptmode */
#define B_SCULPT_TEXBROWSE 2860
+/* Particles */
+#define B_BAKE_OLENGTH 2870
+#define B_BAKE_APPLY_AV 2871
+#define B_BAKE_KEYTIME 2872
+#define B_BAKE_AV_CHANGE 2873
+#define B_BAKE_REDRAWEDIT 2874
+#define B_BAKE_RECACHE 2875
+
/* *********************** */
#define B_RADIOBUTS 3000
@@ -640,7 +710,7 @@ enum {
B_CONSTRAINT_ADD_ACTION,
B_CONSTRAINT_ADD_LOCKTRACK,
B_CONSTRAINT_ADD_FOLLOWPATH,
- B_CONSTRAINT_ADD_DISTANCELIMIT,
+ B_CONSTRAINT_ADD_DISTLIMIT,
B_CONSTRAINT_ADD_STRETCHTO,
B_CONSTRAINT_ADD_LOCLIMIT,
B_CONSTRAINT_ADD_ROTLIMIT,
@@ -649,6 +719,7 @@ enum {
B_CONSTRAINT_ADD_CHILDOF,
B_CONSTRAINT_ADD_PYTHON,
B_CONSTRAINT_ADD_CLAMPTO,
+ B_CONSTRAINT_ADD_TRANSFORM,
B_CONSTRAINT_INF
};
@@ -675,7 +746,7 @@ enum {
#define B_EFFECTSBUTS 3500
-#define B_AUTOTIMEOFS 3403
+#define B_AUTOTIMEOFS 3403 /* see B_OFSTIMEOFS, B_RANDTIMEOFS also */
#define B_FRAMEMAP 3404
#define B_NEWEFFECT 3405
#define B_PREVEFFECT 3406
@@ -690,6 +761,29 @@ enum {
#define B_FIELD_CHANGE 3415
#define B_PAF_SET_VG 3416
#define B_PAF_SET_VG1 3417
+#define B_PARTBROWSE 3418
+#define B_PARTDELETE 3419
+#define B_PARTALONE 3420
+#define B_PARTLOCAL 3421
+#define B_PARTAUTONAME 3422
+#define B_PART_ALLOC 3423
+#define B_PART_DISTR 3424
+#define B_PART_INIT 3425
+#define B_PART_RECALC 3426
+#define B_PART_REDRAW 3427
+#define B_PARTTYPE 3428
+#define B_PARTACT 3429
+#define B_PARTTARGET 3430
+#define B_PART_ALLOC_CHILD 3431
+#define B_PART_DISTR_CHILD 3432
+#define B_PART_INIT_CHILD 3433
+#define B_PART_RECALC_CHILD 3434
+#define B_PART_EDITABLE 3435
+#define B_PART_REKEY 3436
+#define B_PART_ENABLE 3437
+#define B_OFSTIMEOFS 3438 /* see B_AUTOTIMEOFS too */
+#define B_RANDTIMEOFS 3439
+#define B_PART_REDRAW_DEPS 3440
#define B_MODIFIER_BUTS 3600
@@ -700,7 +794,9 @@ enum {
#define B_NODE_BUTS 4000
/* 400 slots reserved, we want an exec event for each node */
#define B_NODE_LOADIMAGE 3601
-#define B_NODE_TREE_EXEC 3602
+#define B_NODE_SETIMAGE 3602
+#define B_NODE_TREE_EXEC 3603
+
/* exec should be last in this list */
#define B_NODE_EXEC 3610
diff --git a/source/blender/include/datatoc.h b/source/blender/include/datatoc.h
index d7a1aa5c78c..7afd4428d70 100644
--- a/source/blender/include/datatoc.h
+++ b/source/blender/include/datatoc.h
@@ -44,6 +44,9 @@ extern char datatoc_Bfs[];
extern int datatoc_blenderbuttons_size;
extern char datatoc_blenderbuttons[];
+extern int datatoc_prvicons_size;
+extern char datatoc_prvicons[];
+
extern int datatoc_Bfont_size;
extern char datatoc_Bfont[];
diff --git a/source/blender/include/editmesh.h b/source/blender/include/editmesh.h
index 50115e52a21..1b2d91e22b8 100644
--- a/source/blender/include/editmesh.h
+++ b/source/blender/include/editmesh.h
@@ -90,6 +90,7 @@ extern int convex(float *v1, float *v2, float *v3, float *v4);
/* ******************* editmesh_mods.c */
extern EditEdge *findnearestedge(int *dist);
+extern void EM_automerge(int update);
/**
* findnearestvert
@@ -104,5 +105,6 @@ extern EditVert *findnearestvert(int *dist, short sel, short strict);
/* ******************* editmesh_tools.c */
+
#endif
diff --git a/source/blender/include/interface.h b/source/blender/include/interface.h
index d7be02c6fc5..d8e779b9af8 100644
--- a/source/blender/include/interface.h
+++ b/source/blender/include/interface.h
@@ -230,7 +230,7 @@ extern void ui_draw_but(uiBut *but);
extern void ui_rasterpos_safe(float x, float y, float aspect);
extern void ui_draw_tria_icon(float x, float y, float aspect, char dir);
extern void ui_draw_anti_x(float x1, float y1, float x2, float y2);
-
+extern void ui_dropshadow(rctf *rct, float radius, float aspect, int select);
#endif
diff --git a/source/blender/include/multires.h b/source/blender/include/multires.h
index 069dbee802f..e4726c02d7e 100644
--- a/source/blender/include/multires.h
+++ b/source/blender/include/multires.h
@@ -43,37 +43,17 @@ struct uiBlock;
int multires_test();
int multires_level1_test();
-struct MultiresLevel *multires_level_n(struct Multires *mr, int n);
-
void multires_draw_interface(struct uiBlock *block, unsigned short cx, unsigned short cy);
-void multires_disp_map(void *, void*);
void multires_make(void *ob, void *me);
void multires_delete(void *ob, void *me);
-struct Multires *multires_copy(struct Multires *orig);
-void multires_free(struct Multires *mr);
-void multires_free_level(struct MultiresLevel *lvl);
+void multires_level_to_editmesh(struct Object *ob, struct Mesh *me, const int render);
+void multires_finish_mesh_update(struct Object *ob);
+void multires_subdivide(void *ob, void *me);
void multires_del_lower(void *ob, void *me);
void multires_del_higher(void *ob, void *me);
-void multires_add_level(void *ob, void *me);
void multires_set_level_cb(void *ob, void *me);
-void multires_set_level(struct Object *ob, struct Mesh *me, const int render);
-void multires_update_levels(struct Mesh *me, const int render);
-void multires_level_to_mesh(struct Object *ob, struct Mesh *me, const int render);
-void multires_calc_level_maps(struct MultiresLevel *lvl);
-void multires_edge_level_update(void *ob, void *me);
+void multires_edge_level_update_cb(void *ob, void *me);
int multires_modifier_warning();
-/* multires-firstlevel.c */
-/* Generic */
-void multires_update_first_level(struct Mesh *me, struct EditMesh *em);
-void multires_update_customdata(struct MultiresLevel *lvl1, struct CustomData *src,
- struct CustomData *dst, const int type);
-void multires_customdata_to_mesh(struct Mesh *me, struct EditMesh *em, struct MultiresLevel *lvl,
- struct CustomData *src, struct CustomData *dst, const int type);
-void multires_del_lower_customdata(struct Multires *mr, struct MultiresLevel *cr_lvl);
-
-void multires_add_layer(struct Mesh *me, struct CustomData *cd, const int type, const int n);
-void multires_delete_layer(struct Mesh *me, struct CustomData *cd, const int type, int n);
-
#endif
diff --git a/source/blender/include/mydevice.h b/source/blender/include/mydevice.h
index 9a8d154e030..949c9f57851 100644
--- a/source/blender/include/mydevice.h
+++ b/source/blender/include/mydevice.h
@@ -257,6 +257,8 @@
#define REDRAWANIM 0x4037
#define REDRAWNODE 0x4038
#define RECALC_COMPOSITE 0x4039
+#define REDRAWMARKER 0x4040 /* all views that display markers */
+#define REDRAWVIEW3D_IMAGE 0x4041
#endif /* !__MYDEVICE_H__ */
diff --git a/source/blender/include/reeb.h b/source/blender/include/reeb.h
new file mode 100644
index 00000000000..c8352aedec5
--- /dev/null
+++ b/source/blender/include/reeb.h
@@ -0,0 +1,127 @@
+/**
+ * $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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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.
+ *
+ * Contributor(s): Martin Poirier
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef REEB_H_
+#define REEB_H_
+
+#include "DNA_listBase.h"
+
+struct EdgeHash;
+struct ReebArc;
+struct ReebEdge;
+struct ReebNode;
+
+typedef struct ReebGraph {
+ ListBase arcs;
+ ListBase nodes;
+ int totnodes;
+ struct EdgeHash *emap;
+} ReebGraph;
+
+typedef struct EmbedBucket {
+ float val;
+ int nv;
+ float p[3];
+} EmbedBucket;
+
+typedef struct ReebNode {
+ struct ReebNode *next, *prev;
+ struct ReebArc **arcs;
+ int index;
+ int degree;
+ float weight;
+ float p[3];
+ int flags;
+} ReebNode;
+
+typedef struct ReebEdge {
+ struct ReebEdge *next, *prev;
+ struct ReebArc *arc;
+ struct ReebNode *v1, *v2;
+ struct ReebEdge *nextEdge;
+} ReebEdge;
+
+typedef struct ReebArc {
+ struct ReebArc *next, *prev;
+ ListBase edges;
+ struct ReebNode *v1, *v2;
+ struct EmbedBucket *buckets;
+ int bcount;
+ int flags;
+} ReebArc;
+
+typedef struct ReebArcIterator {
+ struct ReebArc *arc;
+ int index;
+ int start;
+ int end;
+ int stride;
+} ReebArcIterator;
+
+struct EditMesh;
+
+int weightToHarmonic(struct EditMesh *em);
+int weightFromDistance(struct EditMesh *em);
+int weightFromLoc(struct EditMesh *me, int axis);
+void weightToVCol(struct EditMesh *em);
+void renormalizeWeight(struct EditMesh *em, float newmax);
+
+ReebGraph * generateReebGraph(struct EditMesh *me, int subdivisions);
+void freeGraph(ReebGraph *rg);
+void exportGraph(ReebGraph *rg, int count);
+
+#define OTHER_NODE(arc, node) ((arc->v1 == node) ? arc->v2 : arc->v1)
+
+void initArcIterator(struct ReebArcIterator *iter, struct ReebArc *arc, struct ReebNode *head);
+void initArcIterator2(struct ReebArcIterator *iter, struct ReebArc *arc, int start, int end);
+struct EmbedBucket * nextBucket(struct ReebArcIterator *iter);
+
+/* Filtering */
+void filterNullReebGraph(ReebGraph *rg);
+int filterExternalReebGraph(ReebGraph *rg, float threshold);
+int filterInternalReebGraph(ReebGraph *rg, float threshold);
+
+/* Post-Build processing */
+void repositionNodes(ReebGraph *rg);
+void postprocessGraph(ReebGraph *rg, char mode);
+void removeNormalNodes(ReebGraph *rg);
+
+/* Graph processing */
+void buildAdjacencyList(ReebGraph *rg);
+
+void sortNodes(ReebGraph *rg);
+void sortArcs(ReebGraph *rg);
+
+int subtreeDepth(ReebNode *node, ReebArc *rootArc);
+int countConnectedArcs(ReebGraph *rg, ReebNode *node);
+int hasAdjacencyList(ReebGraph *rg);
+int isGraphCyclic(ReebGraph *rg);
+
+/* Sanity check */
+void verifyBuckets(ReebGraph *rg);
+
+#endif /*REEB_H_*/
diff --git a/source/blender/include/transform.h b/source/blender/include/transform.h
index 6f3ba36a497..cfe85916eb4 100644
--- a/source/blender/include/transform.h
+++ b/source/blender/include/transform.h
@@ -44,6 +44,8 @@ struct NumInput;
struct Object;
struct View3D;
struct ScrArea;
+struct bPose;
+struct bConstraint;
typedef struct NDofInput {
@@ -127,7 +129,7 @@ typedef struct TransDataExtension {
float iquat[4]; /* Initial rotation quaternion */
float *size; /* Size of the data to transform (Faculative) */
float isize[3]; /* Initial size */
- float obmat[3][3]; /* Object matrix */
+ float obmat[4][4]; /* Object matrix */
} TransDataExtension;
typedef struct TransData2D {
@@ -148,6 +150,7 @@ typedef struct TransData {
float smtx[3][3]; /* Transformation matrix from global space to data space */
float axismtx[3][3];/* Axis orientation matrix of the data */
struct Object *ob;
+ struct bConstraint *con; /* for objects/bones, the first constraint in its constraint stack */
TransDataExtension *ext; /* for objects, poses. 1 single malloc per TransInfo! */
TransDataIpokey *tdi; /* for objects, ipo keys. per transdata a malloc */
void *tdmir; /* mirrored element pointer, in editmode mesh to EditVert */
@@ -238,7 +241,7 @@ typedef struct TransInfo {
// for manipulator exceptions, like scaling using center point, drawing help lines
#define T_USES_MANIPULATOR (1 << 7)
-/* restrictions flags */
+ /* restrictions flags */
#define T_ALL_RESTRICTIONS ((1 << 8)|(1 << 9)|(1 << 10))
#define T_NO_CONSTRAINT (1 << 8)
#define T_NULL_ONE (1 << 9)
@@ -247,14 +250,17 @@ typedef struct TransInfo {
#define T_PROP_EDIT (1 << 11)
#define T_PROP_CONNECTED (1 << 12)
-/* if MMB is pressed or not */
+ /* if MMB is pressed or not */
#define T_MMB_PRESSED (1 << 13)
#define T_V3D_ALIGN (1 << 14)
-#define T_2D_EDIT (1 << 15) /* for 2d views like uv or ipo */
+ /* for 2d views like uv or ipo */
+#define T_2D_EDIT (1 << 15)
#define T_CLIP_UV (1 << 16)
#define T_FREE_CUSTOMDATA (1 << 17)
+ /* auto-ik is on */
+#define T_AUTOIK (1 << 18)
/* ******************************************************************************** */
@@ -270,14 +276,19 @@ typedef struct TransInfo {
/* transdata->flag */
#define TD_SELECTED 1
-#define TD_NOACTION 2
-#define TD_USEQUAT 4
-#define TD_NOTCONNECTED 8
-#define TD_SINGLESIZE 16 /* used for scaling of MetaElem->rad */
+#define TD_ACTIVE (1 << 1)
+#define TD_NOACTION (1 << 2)
+#define TD_USEQUAT (1 << 3)
+#define TD_NOTCONNECTED (1 << 4)
+#define TD_SINGLESIZE (1 << 5) /* used for scaling of MetaElem->rad */
#ifdef WITH_VERSE
-#define TD_VERSE_OBJECT 32
-#define TD_VERSE_VERT 64
+ #define TD_VERSE_OBJECT (1 << 6)
+ #define TD_VERSE_VERT (1 << 7)
#endif
+#define TD_TIMEONLY (1 << 8)
+#define TD_NOCENTER (1 << 9)
+#define TD_NO_EXT (1 << 10) /* ext abused for particle key timing */
+#define TD_SKIP (1 << 11) /* don't transform this data */
/* transsnap->status */
#define SNAP_ON 1
@@ -292,6 +303,7 @@ typedef struct TransInfo {
#define SNAP_CLOSEST 0
#define SNAP_CENTER 1
#define SNAP_MEDIAN 2
+#define SNAP_ACTIVE 3
void checkFirstTime(void);
@@ -304,6 +316,7 @@ void convertVecToDisplayNum(float *vec, float *num);
void convertDisplayNumToVec(float *num, float *vec);
void initWarp(TransInfo *t);
+int handleEventWarp(TransInfo *t, unsigned short event, short val);
int Warp(TransInfo *t, short mval[2]);
void initShear(TransInfo *t);
@@ -337,6 +350,13 @@ int Trackball(TransInfo *t, short mval[2]);
void initPushPull(TransInfo *t);
int PushPull(TransInfo *t, short mval[2]);
+void initBevel(TransInfo *t);
+int handleEventBevel(TransInfo *t, unsigned short evenl, short val);
+int Bevel(TransInfo *t, short mval[2]);
+
+void initBevelWeight(TransInfo *t);
+int BevelWeight(TransInfo *t, short mval[2]);
+
void initCrease(TransInfo *t);
int Crease(TransInfo *t, short mval[2]);
@@ -349,15 +369,35 @@ int BoneEnvelope(TransInfo *t, short mval[2]);
void initBoneRoll(TransInfo *t);
int BoneRoll(TransInfo *t, short mval[2]);
+void initTimeTranslate(TransInfo *t);
+int TimeTranslate(TransInfo *t, short mval[2]);
+
+void initTimeSlide(TransInfo *t);
+int TimeSlide(TransInfo *t, short mval[2]);
+
+void initTimeScale(TransInfo *t);
+int TimeScale(TransInfo *t, short mval[2]);
+
+void initBakeTime(TransInfo *t);
+int BakeTime(TransInfo *t, short mval[2]);
+
+void initMirror(TransInfo *t);
+int Mirror(TransInfo *t, short mval[2]);
+
+void initAlign(TransInfo *t);
+int Align(TransInfo *t, short mval[2]);
+
/*********************** transform_conversions.c ********** */
struct ListBase;
+void flushTransIpoData(TransInfo *t);
void flushTransUVs(TransInfo *t);
+void flushTransParticles(TransInfo *t);
int clipUVTransform(TransInfo *t, float *vec, int resize);
/*********************** exported from transform_manipulator.c ********** */
void draw_manipulator_ext(struct ScrArea *sa, int type, char axis, int col, float vec[3], float mat[][3]);
int calc_manipulator_stats(struct ScrArea *sa);
-float get_drawsize(struct View3D *v3d);
+float get_drawsize(struct View3D *v3d, float *co);
/*********************** TransData Creation and General Handling *********** */
void createTransData(TransInfo *t);
@@ -365,6 +405,13 @@ void sort_trans_data_dist(TransInfo *t);
void add_tdi_poin(float *poin, float *old, float delta);
void special_aftertrans_update(TransInfo *t);
+void transform_autoik_update(TransInfo *t, short mode);
+
+/* auto-keying stuff used by special_aftertrans_update */
+short autokeyframe_cfra_can_key(struct Object *ob);
+void autokeyframe_ob_cb_func(struct Object *ob, int tmode);
+void autokeyframe_pose_cb_func(struct Object *ob, int tmode, short targetless_ik);
+
/*********************** Constraints *****************************/
void getConstraintMatrix(TransInfo *t);
@@ -428,6 +475,7 @@ void calculateCenterBound(TransInfo *t);
void calculateCenterMedian(TransInfo *t);
void calculateCenterCursor(TransInfo *t);
+void calculateCenterCursor2D(TransInfo *t);
void calculatePropRatio(TransInfo *t);
void getViewVector(float coord[3], float vec[3]);
@@ -455,5 +503,30 @@ int handleNDofInput(NDofInput *n, unsigned short event, short val);
#define NDOF_CANCEL 4
+/*********************** TransSpace ******************************/
+
+int manageObjectSpace(int confirm, int set);
+int manageMeshSpace(int confirm, int set);
+
+/* Those two fill in mat and return non-zero on success */
+int createSpaceNormal(float mat[3][3], float normal[3]);
+int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3]);
+
+int addMatrixSpace(float mat[3][3], char name[]);
+int addObjectSpace(struct Object *ob);
+void applyTransformOrientation(void);
+
+
+#define ORIENTATION_NONE 0
+#define ORIENTATION_NORMAL 1
+#define ORIENTATION_VERT 2
+#define ORIENTATION_EDGE 3
+#define ORIENTATION_FACE 4
+
+int getTransformOrientation(float normal[3], float plane[3], int activeOnly);
+int createSpaceNormal(float mat[3][3], float normal[3]);
+int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3]);
+
#endif
+