diff options
author | Martin Poirier <theeth@yahoo.com> | 2007-11-07 01:29:20 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2007-11-07 01:29:20 +0300 |
commit | 0de103c1cdf1e4c40cfad4e233a42a6d1165953d (patch) | |
tree | a57039fa592cf0f5af3738a9624d0b0ccbf20ec0 /source/blender/include |
Filling in branch from trunk
Diffstat (limited to 'source/blender/include')
108 files changed, 11148 insertions, 0 deletions
diff --git a/source/blender/include/BDR_drawaction.h b/source/blender/include/BDR_drawaction.h new file mode 100644 index 00000000000..673b13672c1 --- /dev/null +++ b/source/blender/include/BDR_drawaction.h @@ -0,0 +1,88 @@ +/** + * $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 ***** + */ + +#ifndef BDR_DRAWACTION_H +#define BDR_DRAWACTION_H + +struct BezTriple; +struct Ipo; +struct IpoCurve; +struct gla2DDrawInfo; +struct bAction; +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; + short sel, handle_type; + float val; + float start, end; + + /* only while drawing - used to determine if block needs to be drawn */ + short modified; + short totcurve; +} ActKeyBlock; + + +/* ******************************* Methods ****************************** */ + +/* Action Generics */ +void draw_cfra_action(void); + +/* 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); + +/* Keydata Generation */ +void icu_to_keylist(struct IpoCurve *icu, ListBase *keys, ListBase *blocks); +void ipo_to_keylist(struct Ipo *ipo, ListBase *keys, ListBase *blocks); +void action_to_keylist(bAction *act, ListBase *keys, ListBase *blocks); +void ob_to_keylist(Object *ob, ListBase *keys, ListBase *blocks); + +#endif /* BDR_DRAWACTION_H */ + diff --git a/source/blender/include/BDR_drawmesh.h b/source/blender/include/BDR_drawmesh.h new file mode 100644 index 00000000000..998cadc18a3 --- /dev/null +++ b/source/blender/include/BDR_drawmesh.h @@ -0,0 +1,84 @@ +/** + * $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 ***** + */ + +#ifndef BDR_DRAWMESH_H +#define BDR_DRAWMESH_H + +struct Image; +struct MTFace; +struct Object; +struct DerivedMesh; +struct Mesh; +struct EdgeHash; + +/** + * Enables or disable mipmapping for realtime images (textures). + * Note that this will will destroy all texture bindings in OpenGL. + * @see free_realtime_image() + * @param mipmap Turn mipmapping on (mipmap!=0) or off (mipmap==0). + */ +void set_mipmap(int mipmap); + +/** + * Enables or disable linear mipmap setting for realtime images (textures). + * Note that this will will destroy all texture bindings in OpenGL. + * @see free_realtime_image() + * @param mipmap Turn linear mipmapping on (linear!=0) or off (linear==0). + */ +void set_linear_mipmap(int linear); + +/** + * Returns the current setting for linear mipmapping. + */ +int get_linear_mipmap(void); + +/** + * Resets the realtime image cache variables. + */ +void clear_realtime_image_cache(void); + + +void update_realtime_image(struct Image *ima, int x, int y, int w, int h); +void free_realtime_image(struct Image *ima); +void free_all_realtime_images(void); +void make_repbind(struct Image *ima); +int set_tpage(struct MTFace *tface); + +void texpaint_enable_mipmap(void); +void texpaint_disable_mipmap(void); + +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); + +#endif /* BDR_DRAWMESH_H */ + diff --git a/source/blender/include/BDR_drawobject.h b/source/blender/include/BDR_drawobject.h new file mode 100644 index 00000000000..05bf4d75e88 --- /dev/null +++ b/source/blender/include/BDR_drawobject.h @@ -0,0 +1,82 @@ +/** + * $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 ***** + */ + +#ifndef BDR_DRAWOBJECT_H +#define BDR_DRAWOBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + + +struct Object; +struct Nurb; +struct Lamp; +struct ListBase; +struct BoundBox; +struct Base; +struct BPoint; +struct BezTriple; +struct EditVert; +struct EditFace; +struct EditEdge; + +int set_gl_material(int nr); +int init_gl_materials(struct Object *ob, int check_alpha); + +void mesh_foreachScreenVert(void (*func)(void *userData, struct EditVert *eve, int x, int y, int index), void *userData, int clipVerts); +void mesh_foreachScreenEdge(void (*func)(void *userData, struct EditEdge *eed, int x0, int y0, int x1, int y1, int index), void *userData, int clipVerts); +void mesh_foreachScreenFace(void (*func)(void *userData, struct EditFace *efa, int x, int y, int index), void *userData); + +void lattice_foreachScreenVert(void (*func)(void *userData, struct BPoint *bp, int x, int y), void *userData); +void nurbs_foreachScreenVert(void (*func)(void *userData, struct Nurb *nu, struct BPoint *bp, struct BezTriple *bezt, int beztindex, int x, int y), void *userData); + +void drawcircball(int mode, float *cent, float rad, float tmat[][4]); +void get_local_bounds(struct Object *ob, float *center, float *size); + +/* drawing flags: */ +#define DRAW_PICKING 1 +#define DRAW_CONSTCOLOR 2 +void draw_object(struct Base *base, int flag); +void drawaxes(float size, int flag, char drawtype); + +void draw_object_ext(struct Base *base); +void drawsolidcube(float size); +extern void draw_object_backbufsel(struct Object *ob); +void draw_object_instance(struct Object *ob, int dt, int outline); + +#ifdef __cplusplus +} +#endif + +#endif /* BDR_DRAWOBJECT_H */ + diff --git a/source/blender/include/BDR_editcurve.h b/source/blender/include/BDR_editcurve.h new file mode 100644 index 00000000000..a8c36c3485b --- /dev/null +++ b/source/blender/include/BDR_editcurve.h @@ -0,0 +1,102 @@ +/** + * $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 ***** + */ + +#ifndef BDR_EDITCURVE_H +#define BDR_EDITCURVE_H + +struct Object; +struct Curve; +struct Nurb; +struct BezTriple; +struct BPoint; +struct BezTripleNurb; + +short isNurbsel(struct Nurb *nu); +int isNurbsel_count(struct Nurb *nu); +void printknots(void); +void load_editNurb(void); +void make_editNurb(void); +void remake_editNurb(void); +void separate_nurb(void); +short isNurbselUV(struct Nurb *nu, int *u, int *v, int flag); +void setflagsNurb(short flag); +void rotateflagNurb(short flag, float *cent, float rotmat[][3]); +void translateflagNurb(short flag, float *vec); +void weightflagNurb(short flag, float w, int mode); +void deleteflagNurb(short flag); +short extrudeflagNurb(int flag); +void adduplicateflagNurb(short flag); +void switchdirectionNurb2(void); +void switchdirection_knots(float *base, int tot); +void deselectall_nurb(void); +void hideNurb(int swap); +void revealNurb(void); +void selectswapNurb(void); +void subdivideNurb(void); + +int convertspline(short type, struct Nurb *nu); +void setsplinetype(short type); +void rotate_direction_nurb(struct Nurb *nu); +int is_u_selected(struct Nurb *nu, int u); +void make_selection_list_nurb(void); +void merge_2_nurb(struct Nurb *nu1, struct Nurb *nu2); +void merge_nurb(void); +void addsegment_nurb(void); +void mouse_nurb(void); +void spinNurb(float *dvec, short mode); +void addvert_Nurb(int mode); +void extrude_nurb(void); +void makecyclicNurb(void); +void selectconnected_nurb(void); +void selectrow_nurb(void); +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); +int join_curve(int type); +struct Nurb *addNurbprim(int type, int stype, int newname); +void default_curve_ipo(struct Curve *cu); +void add_primitiveCurve(int stype); +void add_primitiveNurb(int type); +void clear_tilt(void); +void clever_numbuts_curve(void); +int bezt_compare (const void *e1, const void *e2); + +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 new file mode 100644 index 00000000000..72b0e7352da --- /dev/null +++ b/source/blender/include/BDR_editface.h @@ -0,0 +1,61 @@ +/** + * $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 ***** + */ + +#ifndef BDR_EDITFACE_H +#define BDR_EDITFACE_H + +struct MTFace; +struct EditFace; +struct Mesh; +struct 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); +void reveal_tface(void); +void hide_tface(void); +void select_linked_tfaces(int mode); +void deselectall_tface(void); +void selectswap_tface(void); +void rotate_uv_tface(void); +void mirror_uv_tface(void); +int minmax_tface(float *min, float *max); +void face_select(void); +void face_borderselect(void); +void uv_autocalc_tface(void); +void set_texturepaint(void); +void get_same_uv(void); +void seam_mark_clear_tface(short mode); + +#endif /* BDR_EDITFACE_H */ + diff --git a/source/blender/include/BDR_editmball.h b/source/blender/include/BDR_editmball.h new file mode 100644 index 00000000000..e2b529acaf8 --- /dev/null +++ b/source/blender/include/BDR_editmball.h @@ -0,0 +1,56 @@ +/** + * $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 ***** + */ + +#ifndef BDR_EDITMBALL_H +#define BDR_EDITMBALL_H + +void make_editMball(void); +void load_editMball(void); + +/** + * @attention The argument is discarded. It is there for + * compatibility. + */ +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); +void freeMetaElemlist(struct ListBase *lb); +void undo_push_mball(char *name); +void hide_mball(char hide); +void reveal_mball(void); + +#endif /* BDR_EDITMBALL_H */ + diff --git a/source/blender/include/BDR_editobject.h b/source/blender/include/BDR_editobject.h new file mode 100644 index 00000000000..2a96a8d65cb --- /dev/null +++ b/source/blender/include/BDR_editobject.h @@ -0,0 +1,125 @@ +/** + * $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 ***** + */ + +#ifndef BDR_EDITOBJECT_H +#define BDR_EDITOBJECT_H + +struct Object; +struct Tex; +struct Material; +struct Base; +struct HookModifierData; +struct Scene; + +void add_object_draw(int type); +void add_objectLamp(short type); +void free_and_unlink_base_from_scene(struct Scene *scene, struct Base *base); +void free_and_unlink_base(struct Base *base); +void delete_obj(int ok); +void make_track(void); +void apply_obmat(struct Object *ob); +void clear_parent(void); +void clear_track(void); +void clear_object(char mode); +void reset_slowparents(void); +void set_slowparent(void); +void make_vertex_parent(void); +int test_parent_loop(struct Object *par, struct Object *ob); +void make_parent(void); +void make_proxy(void); + +#define EM_WAITCURSOR (1 << 0) +#define EM_FREEDATA (1 << 1) +#define EM_FREEUNDO (1 << 2) + +void exit_editmode(int flag); +void check_editmode(int type); +void enter_editmode(int wc); + +void docenter(int centermode); +void docenter_new(void); +void docenter_cursor(void); +void movetolayer(void); +void special_editmenu(void); +void convertmenu(void); +void copy_attr_menu(void); +void copy_attr(short event); +void link_to_scene(unsigned short nr); +void make_links_menu(void); +void make_links(short event); +void make_duplilist_real(void); +void apply_object(void); + +/* old transform */ +void apply_keyb_grid(float *val, float fac1, float fac2, float fac3, int invert); +void headerprint(char *str); +/* used for old game engine collision optimize */ +int cylinder_intersect_test(void); +int sphere_intersect_test(void); + + +void std_rmouse_transform(void (*xf_func)(int, int)); +void rightmouse_transform(void); +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 do_single_tex_user(struct Tex **from); +void single_tex_users_expand(void); +void single_mat_users_expand(void); +void single_user(void); +void make_local_menu(void); +void make_local(int mode); +void adduplicate(int mode, int dupflag); /* when the dupflag is 0 no data is duplicated */ +void selectlinks_menu(void); +void selectlinks(int nr); +void image_aspect(void); +void set_ob_ipoflags(void); +void select_select_keys(void); +int vergbaseco(const void *a1, const void *a2); +void auto_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 hook_select(struct HookModifierData *hmd); +int hook_getIndexArray(int *tot, int **indexar, char *name, float *cent_r); + +int object_data_is_libdata(struct Object *ob); +void hide_objects(int select); +void show_objects(void); + +#endif /* BDR_EDITOBJECT_H */ + diff --git a/source/blender/include/BDR_imagepaint.h b/source/blender/include/BDR_imagepaint.h new file mode 100644 index 00000000000..e687d220906 --- /dev/null +++ b/source/blender/include/BDR_imagepaint.h @@ -0,0 +1,44 @@ +/** + * $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 ***** + */ + +#ifndef BDR_IMAGEPAINT_H +#define BDR_IMAGEPAINT_H + +void imagepaint_redraw_tool(void); +void imagepaint_pick(short mousebutton); +void imagepaint_paint(short mousebutton, short texturepaint); + +void imagepaint_undo(); +void free_imagepaint(); + +#endif /* BDR_IMAGEPAINT_H */ + diff --git a/source/blender/include/BDR_sculptmode.h b/source/blender/include/BDR_sculptmode.h new file mode 100644 index 00000000000..c80f9ea8626 --- /dev/null +++ b/source/blender/include/BDR_sculptmode.h @@ -0,0 +1,142 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2006 by Nicholas Bishop + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BDR_SCULPTMODE_H +#define BDR_SCULPTMODE_H + +#include "DNA_listBase.h" +#include "DNA_vec_types.h" +/* For bglMats */ +#include "BIF_glutil.h" +#include "transform.h" + +struct uiBlock; +struct BrushData; +struct EditData; +struct IndexNode; +struct KeyBlock; +struct Mesh; +struct Object; +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 temporarily per-stroke */ + float *vertexcosnos; + ListBase damaged_rects; + ListBase damaged_verts; + + /* 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; + + struct SculptStroke *stroke; +} SculptSession; + +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_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(); + +struct BrushData *sculptmode_brush(void); +float tex_angle(void); +void do_symmetrical_brush_actions(struct EditData *e, 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 EditData *); +void sculpt_stroke_apply_all(struct EditData *e); +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 new file mode 100644 index 00000000000..6a2b54409c3 --- /dev/null +++ b/source/blender/include/BDR_unwrapper.h @@ -0,0 +1,51 @@ +/** + * $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 ***** + */ + +#ifndef BDR_UNWRAPPER_H +#define BDR_UNWRAPPER_H + +struct Mesh; + +void set_seamtface(void); /* set TF_SEAM flags in tfaces */ +void select_linked_tfaces_with_seams(int mode, struct Mesh *me, unsigned int index); + +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); + +/* for live mode: no undo pushes, caching for quicky re-unwrap */ +void unwrap_lscm_live_begin(void); +void unwrap_lscm_live_re_solve(void); +void unwrap_lscm_live_end(short cancel); + +#endif /* BDR_UNWRAPPER_H */ + diff --git a/source/blender/include/BDR_vpaint.h b/source/blender/include/BDR_vpaint.h new file mode 100644 index 00000000000..dcf9d4ce51a --- /dev/null +++ b/source/blender/include/BDR_vpaint.h @@ -0,0 +1,58 @@ +/** + * $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 ***** + */ + +#ifndef BDR_VPAINT_H +#define BDR_VPAINT_H + +struct Mesh; +struct MDeformVert; /* __NLA */ + +unsigned int rgba_to_mcol(float r, float g, float b, float a); +void do_shared_vertexcol(struct Mesh *me); +void make_vertexcol(int shade); + +void clear_vpaint(void); +void clear_vpaint_selectedfaces(void); +void vpaint_dogamma(void); +void sample_vpaint(void); + +void free_vertexpaint(void); +void vertex_paint(void); +void set_vpaint(void); + +void set_wpaint(void); +void clear_wpaint_selectedfaces(void); +void weight_paint(void); + + +#endif /* BDR_VPAINT_H */ + diff --git a/source/blender/include/BIF_butspace.h b/source/blender/include/BIF_butspace.h new file mode 100644 index 00000000000..eb2cafad792 --- /dev/null +++ b/source/blender/include/BIF_butspace.h @@ -0,0 +1,139 @@ +/** + * $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 ***** + */ +#ifndef BIF_BUTSPACE_H +#define BIF_BUTSPACE_H + +/* all internal/external calls and event codes for buttons space */ +/* should be split in 2 parts... */ + +struct Base; +struct ID; + +/* external, butspace.c */ +extern void do_butspace(unsigned short event); +extern void redraw_test_buttons(struct Object *new); + +extern char *image_type_pup(void); + +/* buttons_editing.c */ +extern void validate_editbonebutton_cb(void *bonev, void *namev); + +/* buts->mainb old */ +#define BUTS_VIEW 0 +#define BUTS_LAMP 1 +#define BUTS_MAT 2 +#define BUTS_TEX 3 +#define BUTS_ANIM 4 +#define BUTS_WORLD 5 +#define BUTS_RENDER 6 +#define BUTS_EDIT 7 +#define BUTS_GAME 8 +#define BUTS_FPAINT 9 +#define BUTS_RADIO 10 +#define BUTS_SCRIPT 11 +#define BUTS_SOUND 12 +#define BUTS_CONSTRAINT 13 +#define BUTS_EFFECTS 14 + +/* warning: the values of these defines are used in sbuts->tabs[7] */ +/* buts->mainb new */ +#define CONTEXT_SCENE 0 +#define CONTEXT_OBJECT 1 +#define CONTEXT_TYPES 2 +#define CONTEXT_SHADING 3 +#define CONTEXT_EDITING 4 +#define CONTEXT_SCRIPT 5 +#define CONTEXT_LOGIC 6 + +/* buts->tab new */ +#define TAB_SHADING_MAT 0 +#define TAB_SHADING_TEX 1 +#define TAB_SHADING_RAD 2 +#define TAB_SHADING_WORLD 3 +#define TAB_SHADING_LAMP 4 + +#define TAB_OBJECT_OBJECT 0 +#define TAB_OBJECT_PHYSICS 1 + +#define TAB_SCENE_RENDER 0 +#define TAB_SCENE_WORLD 1 +#define TAB_SCENE_ANIM 2 +#define TAB_SCENE_SOUND 3 + + +/* buts->scaflag */ +#define BUTS_SENS_SEL 1 +#define BUTS_SENS_ACT 2 +#define BUTS_SENS_LINK 4 +#define BUTS_CONT_SEL 8 +#define BUTS_CONT_ACT 16 +#define BUTS_CONT_LINK 32 +#define BUTS_ACT_SEL 64 +#define BUTS_ACT_ACT 128 +#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_cursors.h b/source/blender/include/BIF_cursors.h new file mode 100644 index 00000000000..fe3ff6e2506 --- /dev/null +++ b/source/blender/include/BIF_cursors.h @@ -0,0 +1,103 @@ +/** + * $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 ***** + */ + + + +#ifndef __BLI_CURSORS_DOT_H__ +#define __BLI_CURSORS_DOT_H__ + +void InitCursorData(void); +short GetBlenderCursor(void); +void SetBlenderCursor(short cursornum); + +//typedef struct BCursor_s BCursor; +typedef struct BCursor { + + char *small_bm; + char *small_mask; + + char small_sizex; + char small_sizey; + char small_hotx; + char small_hoty; + + char *big_bm; + char *big_mask; + + char big_sizex; + char big_sizey; + char big_hotx; + char big_hoty; + + char fg_color; + char bg_color; + +} BCursor; + +#define LASTCURSOR -2 +#define SYSCURSOR -1 +enum { + BC_NW_ARROWCURSOR=0, + BC_NS_ARROWCURSOR, + BC_EW_ARROWCURSOR, + BC_WAITCURSOR, + BC_CROSSCURSOR, + BC_EDITCROSSCURSOR, + BC_BOXSELCURSOR, + BC_KNIFECURSOR, + BC_VLOOPCURSOR, + BC_TEXTEDITCURSOR, + BC_PAINTBRUSHCURSOR, + BC_HANDCURSOR, + BC_NSEW_SCROLLCURSOR, + BC_NS_SCROLLCURSOR, + BC_EW_SCROLLCURSOR, + BC_EYEDROPPER_CURSOR, +/* --- ALWAYS LAST ----- */ + BC_NUMCURSORS, +}; + + +enum { + BC_BLACK=0, + BC_WHITE, + BC_RED, + BC_BLUE, + BC_GREEN, + BC_YELLOW +}; + +#define SMALL_CURSOR 0 +#define BIG_CURSOR 1 + +#endif + diff --git a/source/blender/include/BIF_drawimage.h b/source/blender/include/BIF_drawimage.h new file mode 100644 index 00000000000..44e40b8cabb --- /dev/null +++ b/source/blender/include/BIF_drawimage.h @@ -0,0 +1,74 @@ +/** + * $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 ***** + */ + +#ifndef BIF_DRAWIMAGE_H +#define BIF_DRAWIMAGE_H + +struct ScrArea; +struct SpaceImage; +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 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); +void image_viewcenter(void); +void uvco_to_areaco(float *vec, short *mval); +void uvco_to_areaco_noclip(float *vec, int *mval); +void what_image(struct SpaceImage *sima); +void image_preview_event(int event); + +void image_info(struct Image *ima, struct ImBuf *ibuf, char *str); +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_drawoops.h b/source/blender/include/BIF_drawoops.h new file mode 100644 index 00000000000..b42158d14fe --- /dev/null +++ b/source/blender/include/BIF_drawoops.h @@ -0,0 +1,41 @@ +/** + * $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 ***** + */ + +#ifndef BIF_DRAWOOPS_H +#define BIF_DRAWOOPS_H + +void give_oopslink_line(Oops *oops, OopsLink *ol, float *v1, float *v2); +void mysbox(float x1, float y1, float x2, float y2); +void boundbox_oops(short sel); + +#endif + diff --git a/source/blender/include/BIF_drawscene.h b/source/blender/include/BIF_drawscene.h new file mode 100644 index 00000000000..ad18542ebb4 --- /dev/null +++ b/source/blender/include/BIF_drawscene.h @@ -0,0 +1,35 @@ +/** + * $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 ***** + */ + +struct Scene; +void set_scene(struct Scene *sce); + diff --git a/source/blender/include/BIF_drawscript.h b/source/blender/include/BIF_drawscript.h new file mode 100644 index 00000000000..b50f12e836b --- /dev/null +++ b/source/blender/include/BIF_drawscript.h @@ -0,0 +1,41 @@ +/** + * + * + * ***** 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 BIF_DRAWSCRIPT_H +#define BIF_DRAWSCRIPT_H + +struct ScrArea; +struct SpaceScript; + +void free_scriptspace(struct SpaceScript *sc); + +#endif /* BIF_DRAWSCRIPT_H */ diff --git a/source/blender/include/BIF_drawseq.h b/source/blender/include/BIF_drawseq.h new file mode 100644 index 00000000000..4571267a09c --- /dev/null +++ b/source/blender/include/BIF_drawseq.h @@ -0,0 +1,46 @@ +/** + * $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 ***** + */ + +#ifndef BIF_DRAWSEQ_H +#define BIF_DRAWSEQ_H + +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); + +void seq_viewmove(SpaceSeq *sseq); +void seq_reset_imageofs(SpaceSeq *sseq); +#endif + diff --git a/source/blender/include/BIF_drawtext.h b/source/blender/include/BIF_drawtext.h new file mode 100644 index 00000000000..a63e2bb264d --- /dev/null +++ b/source/blender/include/BIF_drawtext.h @@ -0,0 +1,54 @@ +/** + * $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 ***** + */ + +#ifndef BIF_DRAWTEXT_H +#define BIF_DRAWTEXT_H + +struct ScrArea; +struct SpaceText; +struct Text; + +void unlink_text(struct Text *text); + +void free_textspace(struct SpaceText *st); + +void txt_write_file(struct Text *text); +void add_text_fs(char *file); + +void free_txt_data(void); +void pop_space_text(struct SpaceText *st); + +void get_format_string(void); +void do_brackets(void); + +#endif + diff --git a/source/blender/include/BIF_editaction.h b/source/blender/include/BIF_editaction.h new file mode 100644 index 00000000000..fe6f81b9416 --- /dev/null +++ b/source/blender/include/BIF_editaction.h @@ -0,0 +1,162 @@ +/** + * $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): 2007, Joshua Leung, Action Editor Recode + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +#ifndef BIF_EDITACTION_H +#define BIF_EDITACTION_H + +/* some interface related sizes*/ +#define CHANNELHEIGHT 16 +#define CHANNELSKIP 2 +#define NAMEWIDTH 164 +#define SLIDERWIDTH 125 +#define ACTWIDTH (G.saction->actwidth) + +/* Some types for easier type-testing */ +enum { + ACTTYPE_NONE= 0, + ACTTYPE_ACHAN, + ACTTYPE_CONCHAN, + ACTTYPE_ICU, + ACTTYPE_FILLIPO, + ACTTYPE_FILLCON, + ACTTYPE_IPO, + ACTTYPE_SHAPEKEY +}; + +/* Macros for easier/more consistant state testing */ +#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)) +#define SEL_ACHAN(achan) ((achan->flag & ACHAN_SELECTED) || (achan->flag & ACHAN_HILIGHTED)) +#define FILTER_IPO_ACHAN(achan) ((achan->flag & ACHAN_SHOWIPO)) +#define FILTER_CON_ACHAN(achan) ((achan->flag & ACHAN_SHOWCONS)) + +#define EDITABLE_CONCHAN(conchan) ((conchan->flag & CONSTRAINT_CHANNEL_PROTECTED)==0) +#define SEL_CONCHAN(conchan) (conchan->flag & CONSTRAINT_CHANNEL_SELECT) + +#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 +}; + + +struct bAction; +struct bActionChannel; +struct bPoseChannel; +struct Object; +struct Ipo; +struct BWinEvent; +struct Key; +struct ListBase; + +/* Key operations */ +void transform_action_keys(int mode, int dummy); +void duplicate_action_keys(void); +void snap_action_keys(short mode); +void mirror_action_keys(short mode); +void insertkey_action(void); +void delete_action_keys(void); +void delete_action_channels(void); +void clean_action(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); + +/* Action Data Copying */ +void free_actcopybuf(void); +void copy_actdata(void); +void paste_actdata(void); + +/* channel/strip operations */ +void up_sel_action(void); +void down_sel_action(void); +void top_sel_action(void); +void bottom_sel_action(void); + +/* IPO/Handle Types */ +void sethandles_action_keys(int code); +void action_set_ipo_flags(short mode, short event); + +/* Select */ +void borderselect_action(void); +void deselect_action_keys(short test, short sel); +void deselect_action_channels(short test); +void deselect_actionchannels(struct bAction *act, short test); +int select_channel(struct bAction *act, struct bActionChannel *achan, int selectmode); +void select_actionchannel_by_name(struct bAction *act, char *name, int select); + +/* 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 bAction *add_empty_action(char *name); +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); + +/* 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 new file mode 100644 index 00000000000..903c663e5f3 --- /dev/null +++ b/source/blender/include/BIF_editarmature.h @@ -0,0 +1,142 @@ +/** + * $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 ***** + */ +#ifndef BIF_EDITARMATURE_H +#define BIF_EDITARMATURE_H + +struct Object; +struct Base; +struct Bone; +struct bArmature; +struct ListBase; + +typedef struct EditBone +{ + struct EditBone *next, *prev; + struct EditBone *parent;/* Editbones have a one-way link (i.e. children refer + to parents. This is converted to a two-way link for + normal bones when leaving editmode. */ + void *temp; /* Used to store temporary data */ + + char name[32]; + float roll; /* Roll along axis. We'll ultimately use the axis/angle method + for determining the transformation matrix of the bone. The axis + is tail-head while roll provides the angle. Refer to Graphics + Gems 1 p. 466 (section IX.6) if it's not already in here somewhere*/ + + float head[3]; /* Orientation and length is implicit during editing */ + float tail[3]; + /* All joints are considered to have zero rotation with respect to + their parents. Therefore any rotations specified during the + animation are automatically relative to the bones' rest positions*/ + int flag; + + int parNr; /* Used for retrieving values from the menu system */ + + float dist, weight; + float xwidth, length, zwidth; /* put them in order! transform uses this as scale */ + float ease1, ease2; + float rad_head, rad_tail; + short layer, segments; + + float oldlength; /* for envelope scaling */ + +} EditBone; + + +void adduplicate_armature(void); +void addvert_armature(void); +void add_primitiveArmature(int type); +void apply_rot_armature (struct Object *ob, float mat[3][3]); +void docenter_armature (struct Object *ob, int centermode); + +void clear_armature(struct Object *ob, char mode); + +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(int numcuts); + +void free_editArmature(void); + +int join_armature(void); +void load_editArmature(void); + +void make_bone_parent(void); +void clear_bone_parent(void); +struct Bone *get_indexed_bone (struct Object *ob, int index); + +void make_editArmature(void); +void make_trans_bones (char mode); + +int do_pose_selectbuffer(struct Base *base, unsigned int *buffer, short hits); + +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 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 *)); + +void undo_push_armature(char *name); +void armature_bone_rename(struct bArmature *arm, char *oldname, char *newname); +void armature_flip_names(void); +EditBone *armature_bone_get_mirrored(EditBone *ebo); +void transform_armature_mirror_update(void); + +void hide_selected_armature_bones(void); +void hide_unselected_armature_bones(void); +void show_all_armature_bones(void); + +#define BONESEL_ROOT 0x10000000 +#define BONESEL_TIP 0x20000000 +#define BONESEL_BONE 0x40000000 +#define BONESEL_ANY (BONESEL_TIP|BONESEL_ROOT|BONESEL_BONE) + +#define BONESEL_NOSEL 0x80000000 /* Indicates a negative number */ + +#endif + + diff --git a/source/blender/include/BIF_editconstraint.h b/source/blender/include/BIF_editconstraint.h new file mode 100644 index 00000000000..b8977c00d89 --- /dev/null +++ b/source/blender/include/BIF_editconstraint.h @@ -0,0 +1,72 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITCONSTRAINT_H +#define BIF_EDITCONSTRAINT_H + +struct ID; +struct ListBase; +struct Object; +struct bConstraint; +struct bConstraintChannel; +struct Text; + +/* generic constraint editing functions */ + +struct bConstraint *add_new_constraint(short type); + +void add_constraint_to_object(struct bConstraint *con, struct Object *ob); + +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 ob_clear_constraints(void); + +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 new file mode 100644 index 00000000000..2a8f43c14e7 --- /dev/null +++ b/source/blender/include/BIF_editdeform.h @@ -0,0 +1,74 @@ +/** + * $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 ***** + */ + +#ifndef BIF_DEFORM_H +#define BIF_DEFORM_H + +#define WEIGHT_REPLACE 1 +#define WEIGHT_ADD 2 +#define WEIGHT_SUBTRACT 3 + +struct Object; +struct Mesh; +struct MDeformVert; +struct MDeformWeight; +struct bDeformGroup; + +struct bDeformGroup *add_defgroup_name (struct Object *ob, char *name); +void add_defgroup (struct Object *ob); +void del_defgroup_in_object_mode ( Object *ob ); +void del_defgroup (struct Object *ob); +void duplicate_defgroup ( struct Object *ob ); +void assign_verts_defgroup (void); +void remove_verts_defgroup (int allverts); +void sel_verts_defgroup (int select); + +struct MDeformWeight *get_defweight (struct MDeformVert *dv, int defgroup); +struct MDeformWeight *verify_defweight (struct MDeformVert *dv, int defgroup); + + +void add_vert_to_defgroup (struct Object *ob, struct bDeformGroup *dg, + int vertnum, float weight, + int assignmode); +void remove_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); + +extern void object_apply_deform(struct Object *ob); + +void vgroup_assign_with_menu(void); +void vgroup_operation_with_menu(void); + +#endif + diff --git a/source/blender/include/BIF_editfont.h b/source/blender/include/BIF_editfont.h new file mode 100644 index 00000000000..0c2c9d2779f --- /dev/null +++ b/source/blender/include/BIF_editfont.h @@ -0,0 +1,73 @@ +/** + * $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 ***** + */ + +#include <wchar.h> + +#ifndef BIF_EDITFONT_H +#define BIF_EDITFONT_H + +struct Text; + +extern char *BIF_lorem; +extern wchar_t *copybuf; +extern wchar_t *copybufinfo; + +typedef struct unicodect +{ + char *name; + char *longname; + int start; + int end; +} unicodect; + +void do_textedit(unsigned short event, short val, unsigned long _ascii); +void make_editText(void); +void load_editText(void); +void remake_editText(void); +void free_editText(void); +void paste_editText(void); +void txt_export_to_object(struct Text *text); +void txt_export_to_objects(struct Text *text); +void undo_push_font(char *); +void load_3dtext_fs(char *); +void add_lorem(void); +void paste_unicodeText(char *filename); + +/** + * @attention The argument is discarded. It is there for + * compatibility. + */ +void add_primitiveFont(int); +void to_upper(void); + +#endif + diff --git a/source/blender/include/BIF_editgroup.h b/source/blender/include/BIF_editgroup.h new file mode 100644 index 00000000000..9873a7aaef3 --- /dev/null +++ b/source/blender/include/BIF_editgroup.h @@ -0,0 +1,40 @@ +/** + * $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 ***** + */ + +struct Group; +struct Base; + +void add_selected_to_group(struct Group *group); +void rem_selected_from_group(void); +void group_operation_with_menu(void); +void group_operation(int mode); + diff --git a/source/blender/include/BIF_editkey.h b/source/blender/include/BIF_editkey.h new file mode 100644 index 00000000000..6c03e62a24c --- /dev/null +++ b/source/blender/include/BIF_editkey.h @@ -0,0 +1,70 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITKEY_H +#define BIF_EDITKEY_H + +struct Key; +struct KeyBlock; +struct Mesh; +struct Object; +struct Lattice; +struct Curve; +struct uiBlock; +struct BezTriple; +struct IpoCurve; + +void mesh_to_key(struct Mesh *me, struct KeyBlock *kb); +void key_to_mesh(struct KeyBlock *kb, struct Mesh *me); +void insert_meshkey(struct Mesh *me, short rel); + +void latt_to_key(struct Lattice *lt, struct KeyBlock *kb); +void key_to_latt(struct KeyBlock *kb, struct Lattice *lt); +void insert_lattkey(struct Lattice *lt, short rel); + +void curve_to_key(struct Curve *cu, struct KeyBlock *kb, ListBase *nurb); +void key_to_curve(struct KeyBlock *kb, struct Curve *cu, ListBase *nurb); +void insert_curvekey(struct Curve *cu, short rel); + +void insert_shapekey(struct Object *ob); + +void delete_key(struct Object *ob); +void move_keys(struct Object *ob); + +void make_rvk_slider(struct uiBlock *block, struct Object *ob, int keynum, + int x, int y, int w, int h, char *tip); + +// FIXME: move me somewhere else +struct BezTriple *get_bezt_icu_time(struct IpoCurve *icu, float *frame, float *val); + +#endif + diff --git a/source/blender/include/BIF_editlattice.h b/source/blender/include/BIF_editlattice.h new file mode 100644 index 00000000000..c7cf6c570ac --- /dev/null +++ b/source/blender/include/BIF_editlattice.h @@ -0,0 +1,45 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITLATTICE_H +#define BIF_EDITLATTICE_H + +void free_editLatt(void); +void make_editLatt(void); +void load_editLatt(void); +void remake_editLatt(void); +void deselectall_Latt(void); +void mouse_lattice(void); +void undo_push_lattice(char *name); + +#endif + diff --git a/source/blender/include/BIF_editmesh.h b/source/blender/include/BIF_editmesh.h new file mode 100644 index 00000000000..42d581ee758 --- /dev/null +++ b/source/blender/include/BIF_editmesh.h @@ -0,0 +1,265 @@ +/** + * $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 ***** + */ + +/* External for editmesh_xxxx.c functions */ + +#ifndef BIF_EDITMESH_H +#define BIF_EDITMESH_H + +#include "BKE_mesh.h" + +struct EditMesh; +struct EditFace; +struct EditEdge; +struct EditVert; +struct Mesh; +struct bDeformGroup; +struct View3D; +struct EditSelection; +struct CustomData; + +// edge and face flag both +#define EM_FGON 2 +// face flag +#define EM_FGON_DRAW 1 + +extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs; + +/* ******************* editmesh.c */ +extern void make_editMesh(void); +extern void load_editMesh(void); +extern void free_editMesh(struct EditMesh *); +extern void remake_editMesh(void); + + /* Editmesh Undo code */ +extern void undo_push_mesh(char *name); + +extern void separatemenu(void); +extern void separate_mesh(void); +extern void separate_mesh_loose(void); +extern void separate_material(void); + +/* ******************* editmesh_add.c */ +extern void make_prim(int type, float imat[3][3], int tot, int seg, + int subdiv, float dia, float d, int ext, int fill, + float cent[3] ); +extern void add_primitiveMesh(int type); +extern void adduplicate_mesh(void); +extern void add_click_mesh(void); +extern void addedgeface_mesh(void); +void addfaces_from_edgenet(); + +/* ******************* editmesh_lib.c */ + +extern void EM_set_flag_all(int flag); +extern void EM_clear_flag_all(int flag); + +extern void EM_select_face(struct EditFace *efa, int sel); +extern void EM_select_edge(struct EditEdge *eed, int sel); +extern float EM_face_area(struct EditFace *efa); +extern float EM_face_perimeter(struct EditFace *efa); +extern void EM_editselection_center(float *center, struct EditSelection *ese); +extern void EM_editselection_normal(float *normal, struct EditSelection *ese); +extern void EM_editselection_plane(float *plane, struct EditSelection *ese); + +extern void EM_deselect_flush(void); // vertices to edges/faces (exception!) +extern void EM_select_flush(void); // vertices to edges/faces (exception!) +extern void EM_selectmode_set(void); // when mode changes +extern void EM_selectmode_flush(void); // when selection changes +extern void EM_convertsel(short oldmode, short selectmode); +extern void EM_remove_selection(void *data, int type); +extern void EM_store_selection(void *data, int type); +extern void EM_validate_selections(void); + +extern int EM_nfaces_selected(void); +extern int EM_nvertices_selected(void); + +extern int faceselectedAND(struct EditFace *efa, int flag); +extern void recalc_editnormals(void); +extern void flip_editnormals(void); + +extern void EM_data_interp_from_verts(struct EditVert *v1, + struct EditVert *v2, struct EditVert *eve, float fac); +extern struct EditFace *EM_face_from_faces(struct EditFace *efa1, + struct EditFace *efa2, int i1, int i2, int i3, int i4); +extern void EM_data_interp_from_faces(struct EditFace *efa1, + struct EditFace *efa2, struct EditFace *efan, int i1, int i2, int i3, int i4); + +void EM_add_data_layer(struct CustomData *data, int type); +void EM_free_data_layer(struct CustomData *data, int type); + +/* ******************* editmesh_mods.c */ + +extern void EM_init_index_arrays(int forVert, int forEdge, int forFace); +extern void EM_free_index_arrays(void); + +extern struct EditVert *EM_get_vert_for_index(int index); +extern struct EditEdge *EM_get_edge_for_index(int index); +extern struct EditFace *EM_get_face_for_index(int index); + +extern void EM_select_face_fgon(struct EditFace *efa, int sel); + +extern int EM_init_backbuf_border(short xmin, short ymin, short xmax, short ymax); +extern int EM_mask_init_backbuf_border(short mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax); +extern int EM_init_backbuf_circle(short xs, short ys, short rads); +extern int EM_check_backbuf(unsigned int index); +extern void EM_free_backbuf(void); + +extern void EM_selectmode_menu(void); + + +extern void vertexnoise(void); +extern void vertexsmooth(void); +extern void righthandfaces(int select); +extern void mouse_mesh(void); + +extern void deselectall_mesh(void); +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); +extern void reveal_mesh(void); + +extern void vertices_to_sphere(void); + + /** Aligns the selected MTFace's of @a me to the @a v3d, + * using the given axis (0-2). Can give a user error. + */ +extern void faceselect_align_view_to_selected(struct View3D *v3d, struct Mesh *me, int axis); + /** Aligns the selected faces or vertices of @a me to the @a v3d, + * using the given axis (0-2). Can give a user error. + */ +extern void editmesh_align_view_to_selected(struct View3D *v3d, int axis); + + /* Selection */ +extern void select_non_manifold(void); +extern void select_sharp_edges(void); +extern void select_linked_flat_faces(void); +extern void select_faces_by_numverts(int numverts); +extern void select_more(void); +extern void select_less(void); +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); + + +/* ******************* editmesh_loop.c */ + +#define KNIFE_PROMPT 0 +#define KNIFE_EXACT 1 +#define KNIFE_MIDPOINT 2 +#define KNIFE_MULTICUT 3 + +extern void CutEdgeloop(int numcuts); +extern void KnifeSubdivide(char mode); +extern void LoopMenu(void); + +#define LOOP_SELECT 1 +#define LOOP_CUT 2 + +extern short sharesFace(struct EditEdge* e1, struct EditEdge* e2); + +/* ******************* editmesh_tools.c */ + +#define SUBDIV_SELECT_ORIG 0 +#define SUBDIV_SELECT_INNER 1 +#define SUBDIV_SELECT_INNER_SEL 2 +#define SUBDIV_SELECT_LOOPCUT 3 + +extern void convert_to_triface(int direction); +extern int removedoublesflag(short flag, short automerge, float limit); +extern void xsortvert_flag(int flag); +extern void hashvert_flag(int flag); + +extern void esubdivideflag(int flag, float rad, int beauty, int numcuts, int selecttype); + +extern void extrude_mesh(void); +extern void split_mesh(void); +extern void extrude_repeat_mesh(int steps, float offs); +extern void spin_mesh(int steps,float degr,float *dvec, int mode); +extern void screw_mesh(int steps,int turns); +extern void delete_mesh(void); +extern void beauty_fill(void); +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); +void mesh_rip(void); + +struct EditVert *editedge_getOtherVert(struct EditEdge *eed, struct EditVert *ev); +struct EditVert *editedge_getSharedVert(struct EditEdge *eed, struct EditEdge *eed2); +int editedge_containsVert(struct EditEdge *eed, struct EditVert *eve); +int editface_containsVert(struct EditFace *efa, struct EditVert *eve); +int editface_containsEdge(struct EditFace *efa, struct EditEdge *eed); + +void shape_copy_select_from(void); +void shape_propagate(void); + +int collapseEdges(void); +int merge_firstlast(int first, int uvmerge); +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 new file mode 100644 index 00000000000..b03b4160166 --- /dev/null +++ b/source/blender/include/BIF_editmode_undo.h @@ -0,0 +1,59 @@ +/** + * $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 ***** + */ + + +#ifndef BIF_EDITMODE_UNDO_H +#define BIF_EDITMODE_UNDO_H + +// Add this in your local code: + +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 + + +// Further exported for UI is: + +struct uiBlock; + +extern void undo_editmode_step(int step); // undo and redo +extern void undo_editmode_clear(void); // free & clear all data +extern void undo_editmode_menu(void); // history menu +extern struct uiBlock *editmode_undohistorymenu(void *arg_unused); + +/* Hack to avoid multires undo data taking up insane amounts of memory */ +struct Object; +void *undo_editmode_get_prev(struct Object *ob); + +#endif + diff --git a/source/blender/include/BIF_editnla.h b/source/blender/include/BIF_editnla.h new file mode 100644 index 00000000000..f12a313b903 --- /dev/null +++ b/source/blender/include/BIF_editnla.h @@ -0,0 +1,65 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITNLA_H +#define BIF_EDITNLA_H + +struct BWinEvent; + +extern void winqreadnlaspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt); + +/* NLA channel operations */ +void delete_nlachannel_keys(void); +void duplicate_nlachannel_keys(void); +void transform_nlachannel_keys(int mode, int dummy); + +/* Select */ +void borderselect_nla(void); +void deselect_nlachannel_keys (int test); +void deselect_nlachannels(int test); + +/* NLA Strip operations */ +void shift_nlastrips_up(void); +void shift_nlastrips_down(void); +void reset_action_strips(int val); +void synchronize_action_strips(void); +void snap_action_strips(int snap_mode); +void add_nlablock(void); +void add_empty_nlablock(void); +void convert_nla(void); +void copy_action_modifiers(void); + +/* Baking */ +void bake_all_to_action(void); + +#endif + diff --git a/source/blender/include/BIF_editoops.h b/source/blender/include/BIF_editoops.h new file mode 100644 index 00000000000..ac1badfd7bd --- /dev/null +++ b/source/blender/include/BIF_editoops.h @@ -0,0 +1,47 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITOOPS_H +#define BIF_EDITOOPS_H + +void borderselect_oops(void); +void deselect_all_area_oops(void); +void mouse_select_oops(void); +void select_backlinked_oops(void); +void select_linked_oops(void); +void set_select_flag_oops(void); +void swap_select_all_oops(void); +void transform_oops(int mode, int context); + +void clever_numbuts_oops(void); +#endif + diff --git a/source/blender/include/BIF_editsca.h b/source/blender/include/BIF_editsca.h new file mode 100644 index 00000000000..c8e8a33d475 --- /dev/null +++ b/source/blender/include/BIF_editsca.h @@ -0,0 +1,41 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITSCA_H +#define BIF_EDITSCA_H + +void make_unique_prop_names(char *str); +void do_gamebuts(unsigned short event); +void gamebuts(void); + +#endif + diff --git a/source/blender/include/BIF_editseq.h b/source/blender/include/BIF_editseq.h new file mode 100644 index 00000000000..74baf12c11a --- /dev/null +++ b/source/blender/include/BIF_editseq.h @@ -0,0 +1,134 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITSEQ_H +#define BIF_EDITSEQ_H + +struct Sequence; + +void add_duplicate_seq(void); +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(); +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 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); +struct Sequence* alloc_sequence(ListBase *lb, int cfra, int machine); /*used from python*/ +int check_single_seq(struct Sequence *seq); + +/* 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\n",\ + seq->name, seq->len, seq->start, seq->startstill, seq->endstill, seq->startofs, seq->endofs) + +/* seq macro's 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. +*/ +/* +#define SEQ_GET_START(seq) (seq->start) +#define SEQ_GET_END(seq) (seq->start+seq->len) + +#define SEQ_GET_FINAL_LEFT(seq) ((seq->start - seq->startstill) + seq->startofs) +#define SEQ_GET_FINAL_RIGHT(seq) (((seq->start+seq->len) + seq->endstill) - seq->endofs) + +#define SEQ_SET_FINAL_LEFT(seq, val) \ + if (val < (seq)->start) { \ + (seq)->startstill = abs(val - (seq)->start); \ + (seq)->startofs = 0; \ +} else { \ + (seq)->startofs = abs(val - (seq)->start); \ + (seq)->startstill = 0; \ +} + +#define SEQ_SET_FINAL_RIGHT(seq, val) \ + if (val > (seq)->start + (seq)->len) { \ + (seq)->endstill = abs(val - ((seq)->start + (seq)->len)); \ + (seq)->endofs = 0; \ +} else { \ + (seq)->endofs = abs(val - ((seq)->start + (seq)->len)); \ + (seq)->endstill = 0; \ +} +*/ +/* drawseq.c */ +void do_seqbuttons(short); + +#endif + diff --git a/source/blender/include/BIF_editsima.h b/source/blender/include/BIF_editsima.h new file mode 100644 index 00000000000..a8a5c16df1a --- /dev/null +++ b/source/blender/include/BIF_editsima.h @@ -0,0 +1,124 @@ +/** + * $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 ***** + */ + +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) + + +/* this checks weather a face is drarn without the local image check + * - warning - no check for G.sima->flag, use SIMA_FACEDRAW_CHECK + */ +#define SIMA_FACEDRAW_CHECK_NOLOCAL(efa) \ + ((G.sima->flag & SI_SYNC_UVSEL) ? (efa->h==0) : (efa->h==0 && efa->f & SELECT)) + +/* this check includes the local image check - (does the faces image match the space image?) */ +#define SIMA_FACEDRAW_CHECK(efa, tf) \ + ((G.sima && G.sima->flag & SI_LOCAL_UV) ? ((tf->tpage==G.sima->image) ? SIMA_FACEDRAW_CHECK_NOLOCAL(efa):0) : (SIMA_FACEDRAW_CHECK_NOLOCAL(efa))) + +#define SIMA_FACESEL_CHECK(efa, tf) \ + ((G.sima && G.sima->flag & SI_SYNC_UVSEL) ? (efa->f & SELECT) : (!(~tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3)) &&(!efa->v4 || tf->flag & TF_SEL4))) +#define SIMA_FACESEL_SET(efa, tf) \ + ((G.sima && G.sima->flag & SI_SYNC_UVSEL) ? (EM_select_face(efa, 1)) : (tf->flag |= (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4))) +#define SIMA_FACESEL_UNSET(efa, tf) \ + ((G.sima && G.sima->flag & SI_SYNC_UVSEL) ? (EM_select_face(efa, 0)) : (tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4))) + +#define SIMA_UVSEL_CHECK(efa, tf, i) ((G.sima && G.sima->flag & SI_SYNC_UVSEL) ? \ + (G.scene->selectmode == SCE_SELECT_FACE ? efa->f & SELECT : ((*(&efa->v1 + i))->f & SELECT) ) : (tf->flag & TF_SEL_MASK(i) )) +#define SIMA_UVSEL_SET(efa, tf, i) ((G.sima && G.sima->flag & SI_SYNC_UVSEL) ? \ + (G.scene->selectmode == SCE_SELECT_FACE ? EM_select_face(efa, 1) : ((*(&efa->v1 + i))->f |= SELECT) ) : (tf->flag |= TF_SEL_MASK(i) )) +#define SIMA_UVSEL_UNSET(efa, tf, i) ((G.sima && G.sima->flag & SI_SYNC_UVSEL) ? \ + (G.scene->selectmode == SCE_SELECT_FACE ? EM_select_face(efa, 0) : ((*(&efa->v1 + i))->f &= ~SELECT) ) : (tf->flag &= ~TF_SEL_MASK(i) )) + +struct Object; + +void object_uvs_changed(struct Object *ob); +void object_tface_flags_changed(struct Object *ob, int updateButtons); + +int is_uv_tface_editing_allowed(void); +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_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 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 EditMesh *em); +void select_pinned_tface_uv(void); + +void sima_sample_color(void); + +#define UV_SELECT_ALL 1 +#define UV_SELECT_PINNED 2 + +void new_image_sima(void); +void reload_image_sima(void); +void save_image_sima(void); +void save_as_image_sima(void); +void save_image_sequence_sima(void); +void replace_image_sima(short imageselect); +void open_image_sima(short imageselect); +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); diff --git a/source/blender/include/BIF_editsound.h b/source/blender/include/BIF_editsound.h new file mode 100644 index 00000000000..6e341bfb204 --- /dev/null +++ b/source/blender/include/BIF_editsound.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 ***** + */ + +#ifndef BIF_EDITSOUND_H +#define BIF_EDITSOUND_H + +struct bSound; +struct bSample; +struct ListBase; +struct PackedFile; +struct hdaudio; + +void sound_init_audio(void); +void sound_initialize_sounds(void); +void sound_exit_audio(void); +int sound_get_mixrate(void); + +void* sound_get_audiodevice(void); +void* sound_get_listener(void); + +int sound_set_sample(struct bSound* sound, struct bSample* sample); +int sound_sample_is_null(struct bSound* sound); +int sound_load_sample(struct bSound* sound); + +struct bSample* sound_find_sample(struct bSound* sound); +struct bSample* sound_new_sample(struct bSound* sound); + +struct bSound* sound_new_sound(char *name); +struct bSound* sound_make_copy(struct bSound* originalsound); +void sound_end_all_sounds(void); + +void sound_initialize_sample(struct bSound * sound); +void sound_load_samples(void); + +void sound_play_sound(struct bSound *sound); +void sound_stop_all_sounds(void); + +void sound_set_position(void *object, + struct bSound *sound, + float obmatrix[4][4]); + +struct hdaudio * sound_open_hdaudio(char * name); +struct hdaudio * sound_copy_hdaudio(struct hdaudio * c); + +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 */, + int target_rate, + int target_channels, + int nb_samples /* in target */); + +void sound_close_hdaudio(struct hdaudio * hdaudio); + + + +#endif + diff --git a/source/blender/include/BIF_editview.h b/source/blender/include/BIF_editview.h new file mode 100644 index 00000000000..676bc3bd9f0 --- /dev/null +++ b/source/blender/include/BIF_editview.h @@ -0,0 +1,60 @@ +/** + * $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 ***** + */ + +#ifndef BIF_EDITVIEW_H +#define BIF_EDITVIEW_H + +struct Base; +struct Object; +struct Camera; +struct View3D; + +void arrows_move_cursor(unsigned short event); +void borderselect(void); +void circle_select(void); +void deselectall(void); +void selectswap(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); +void fly(void); +int gesture(void); +void mouse_cursor(void); +void mouse_select(void); +void set_active_base(struct Base *base); +void set_active_object(struct Object *ob); +void set_render_border(void); +void view3d_border_zoom(void); +void view3d_edit_clipping(struct View3D *v3d); + +#endif + diff --git a/source/blender/include/BIF_filelist.h b/source/blender/include/BIF_filelist.h new file mode 100644 index 00000000000..b81be38da01 --- /dev/null +++ b/source/blender/include/BIF_filelist.h @@ -0,0 +1,87 @@ +/** + * $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); +void BIF_filelist_appenddir(struct FileList* filelist, const char *relname); +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 new file mode 100644 index 00000000000..1c5280c14f8 --- /dev/null +++ b/source/blender/include/BIF_fsmenu.h @@ -0,0 +1,76 @@ +/** + * $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 ***** + * + */ + +#ifndef BSE_FSMENU_H +#define BSE_FSMENU_H + + /** Returns the number of entries in the Fileselect Menu */ +int fsmenu_get_nentries (void); + + /** Returns true if the fsmenu entry at @a index exists and + * is a seperator. + */ +int fsmenu_is_entry_a_seperator (int index); + + /** Returns the fsmenu entry at @a index (or NULL if a bad index) + * or a seperator. + */ +char* fsmenu_get_entry (int index); + + /** Returns a new menu description string representing the + * fileselect menu. Should be free'd with MEM_freeN. + */ +char* fsmenu_build_menu (void); + + /** Append a seperator to the FSMenu, inserts always follow the + * last seperator. + */ +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, 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); + +#endif + diff --git a/source/blender/include/BIF_gl.h b/source/blender/include/BIF_gl.h new file mode 100644 index 00000000000..215e88dc002 --- /dev/null +++ b/source/blender/include/BIF_gl.h @@ -0,0 +1,82 @@ +/** + * $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 ***** + * os dependent include locations of gl.h + */ + +#ifndef BIF_GL_H +#define BIF_GL_H + + /* Although not really a great idea to copy these defines + * from Windows' winnt.h, this lets us use GL without including + * windows.h everywhere (or BLI_winstuff.h) which is a good thing. + */ +#ifdef WIN32 +#ifndef APIENTRY +#define APIENTRY __stdcall +#endif + +#ifndef CALLBACK +#define CALLBACK __stdcall +#endif + +#ifndef WINGDIAPI +#define WINGDIAPI __declspec(dllimport) +#endif +#endif + +#ifdef __APPLE__ +#include <OpenGL/gl.h> +#include <OpenGL/glu.h> +#else +#include <GL/gl.h> +#include <GL/glu.h> +#endif + /* + * these should be phased out. cpack should be replaced in + * code with calls to glColor3ub, lrectwrite probably should + * change to a function. - zr + */ + +/* + * + * This define converts a numerical value to the equivalent 24-bit + * color, while not being endian-sensitive. On little-endians, this + * is the same as doing a 'naive'indexing, on big-endian, it is not! + * */ +#define cpack(x) glColor3ub( ((x)&0xFF), (((x)>>8)&0xFF), (((x)>>16)&0xFF) ) + +#define glMultMatrixf(x) glMultMatrixf( (float *)(x)) +#define glLoadMatrixf(x) glLoadMatrixf( (float *)(x)) + +#define lrectwrite(a, b, c, d, rect) {glRasterPos2i(a, b);glDrawPixels((c)-(a)+1, (d)-(b)+1, GL_RGBA, GL_UNSIGNED_BYTE, rect);} + +#endif /* #ifdef BIF_GL_H */ + diff --git a/source/blender/include/BIF_glutil.h b/source/blender/include/BIF_glutil.h new file mode 100644 index 00000000000..237f7a85002 --- /dev/null +++ b/source/blender/include/BIF_glutil.h @@ -0,0 +1,225 @@ +/** + * @file BIF_glutil.h + * + * OpenGL drawing utility functions. + * + * $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 ***** + */ + +#ifndef BIF_GLUTIL_H +#define BIF_GLUTIL_H + +struct rcti; +struct rctf; + +void sdrawXORline(int x0, int y0, int x1, int y1); +void sdrawXORline4(int nr, int x0, int y0, int x1, int y1); + +void fdrawXORellipse(float xofs, float yofs, float hw, float hh); +void fdrawXORcirc(float xofs, float yofs, float rad); + + /** + * Draw an XOR'd line in the front buffer between + * the given points. + * + * @attention This function also handles flushing the GL + * pipeline, which means it is inappropriate for drawing + * a large number of lines at once. + */ +void glutil_draw_front_xor_line(int x0, int y0, int x1, int y1); + + /** + * Draw a lined (non-looping) arc with the given + * @a radius, starting at angle @a start and arcing + * through @a angle. The arc is centered at the origin + * and drawn in the XY plane. + * + * @param start The initial angle (in radians). + * @param angle The length of the arc (in radians). + * @param radius The arc radius. + * @param nsegments The number of segments to use in drawing the arc. + */ +void glutil_draw_lined_arc (float start, float angle, float radius, int nsegments); + + /** + * Draw a filled arc with the given @a radius, + * starting at angle @a start and arcing through + * @a angle. The arc is centered at the origin + * and drawn in the XY plane. + * + * @param start The initial angle (in radians). + * @param angle The length of the arc (in radians). + * @param radius The arc radius. + * @param nsegments The number of segments to use in drawing the arc. + */ +void glutil_draw_filled_arc (float start, float angle, float radius, int nsegments); + + /** + * Routines an integer value as obtained by glGetIntegerv. + * The param must cause only one value to be gotten from GL. + */ +int glaGetOneInteger (int param); + + /** + * Routines a float value as obtained by glGetIntegerv. + * The param must cause only one value to be gotten from GL. + */ +float glaGetOneFloat (int param); + + /** + * Functions like glRasterPos2i, except ensures that the resulting + * raster position is valid. @a known_good_x and @a known_good_y + * should be coordinates of a point known to be within the current + * view frustum. + * @attention This routine should be used when the distance of @a x + * and @y away from the known good point is small (ie. for small icons + * and for bitmap characters), when drawing large+zoomed images it is + * possible for overflow to occur, the glaDrawPixelsSafe routine should + * be used instead. + */ +void glaRasterPosSafe2f (float x, float y, float known_good_x, float known_good_y); + + /** + * Functions like a limited glDrawPixels, except ensures that + * the image is displayed onscreen even if the @a x and @a y + * coordinates for would be clipped. The routine respects the + * glPixelZoom values, pixel unpacking parameters are _not_ + * respected. + + * @attention This routine makes many assumptions: the rect data + * is expected to be in RGBA unsigned byte format, the coordinate + * (0.375, 0.375) is assumed to be within the view frustum, and the + * modelview and projection matrices are assumed to define a + * 1-to-1 mapping to screen space. + * @attention Furthmore, in the case of zoomed or unpixel aligned + * images extending outside the view frustum, but still within the + * window, some portion of the image may be visible left and/or + * below of the given @a x and @a y coordinates. It is recommended + * to use the glScissor functionality if images are to be drawn + * with an inset view matrix. + */ +void glaDrawPixelsSafe (float x, float y, int img_w, int img_h, int row_w, int format, int type, void *rect); + + /** + * Functions like a limited glDrawPixels, but actually draws the + * image using textures, which can be tremendously faster on low-end + * cards, and also avoids problems with the raster position being + * clipped when offscreen. The routine respects the glPixelZoom values, + * pixel unpacking parameters are _not_ respected. + + * @attention This routine makes many assumptions: the rect data + * is expected to be in RGBA byte or float format, and the + * modelview and projection matrices are assumed to define a + * 1-to-1 mapping to screen space. + */ + + /* only for float rects, converts to 32 bits and draws */ +void glaDrawPixelsSafe_to32(float fx, float fy, int img_w, int img_h, int row_w, float *rectf); + + +void glaDrawPixelsTex (float x, float y, int img_w, int img_h, int format, void *rect); + + /* 2D Drawing Assistance */ + + /** Define a 2D area (viewport, scissor, matrices) for OpenGL rendering. + * This routine sets up an OpenGL state appropriate for drawing using + * both vertice (glVertex, etc) and raster (glRasterPos, glRect) commands. + * All coordinates should be at integer positions. There is little to + * no reason to use glVertex2f etc. functions during 2D rendering, and + * thus no reason to +-0.5 the coordinates or perform other silly + * tricks. + * + * @param screen_rect The screen rectangle to be defined for 2D drawing. + */ +void glaDefine2DArea (struct rcti *screen_rect); + +typedef struct gla2DDrawInfo gla2DDrawInfo; + + /** Save the current OpenGL state and initialize OpenGL for 2D + * rendering. glaEnd2DDraw should be called on the returned structure + * to free it and to return OpenGL to its previous state. The + * scissor rectangle is set to match the viewport. + * + * This routine sets up an OpenGL state appropriate for drawing using + * both vertice (glVertex, etc) and raster (glRasterPos, glRect) commands. + * All coordinates should be at integer positions. There is little to + * no reason to use glVertex2f etc. functions during 2D rendering, and + * thus no reason to +-0.5 the coordinates or perform other silly + * tricks. + * + * @param screen_rect The screen rectangle to be used for 2D drawing. + * @param world_rect The world rectangle that the 2D area represented + * by @a screen_rect is supposed to represent. If NULL it is assumed the + * world has a 1 to 1 mapping to the screen. + */ +gla2DDrawInfo* glaBegin2DDraw (struct rcti *screen_rect, struct rctf *world_rect); + + /** Translate the (@a wo_x, @a wo_y) point from world coordinates into screen space. */ +void gla2DDrawTranslatePt (gla2DDrawInfo *di, float wo_x, float wo_y, int *sc_x_r, int *sc_y_r); + + /** Translate the @a world point from world coordiantes into screen space. */ +void gla2DDrawTranslatePtv (gla2DDrawInfo *di, float world[2], int screen_r[2]); + + /* Restores the previous OpenGL state and free's the auxilary + * gla data. + */ +void glaEnd2DDraw (gla2DDrawInfo *di); + + /** Adjust the transformation mapping of a 2d area */ +void gla2DGetMap(gla2DDrawInfo *di, struct rctf *rect); +void gla2DSetMap(gla2DDrawInfo *di, struct rctf *rect); + + +/* use this for platform hacks. glPointSize is solved here */ +void bglBegin(int mode); +void bglEnd(void); +void bglVertex3fv(float *vec); +void bglVertex3f(float x, float y, float z); +void bglVertex2fv(float *vec); +/* intel gfx cards frontbuffer problem */ +void bglFlush(void); +int is_a_really_crappy_intel_card(void); +void set_inverted_drawing(int enable); + + +/* own working polygon offset */ +void bglPolygonOffset(float dist); + +/* For caching opengl matrices (gluProject/gluUnProject) */ +typedef struct bglMats { + double modelview[16]; + double projection[16]; + int viewport[4]; +} bglMats; +void bgl_get_mats(bglMats *mats); + +#endif /* BIF_GLUTIL_H */ + diff --git a/source/blender/include/BIF_graphics.h b/source/blender/include/BIF_graphics.h new file mode 100644 index 00000000000..51aa2ceeb01 --- /dev/null +++ b/source/blender/include/BIF_graphics.h @@ -0,0 +1,59 @@ +/** + * $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 ***** + */ + +#ifndef BIF_GRAPHICS_H +#define BIF_GRAPHICS_H + + /* XXX, should move somewhere else, with collected windowing + * stuff, to be done once the proper windowing stuff has + * been formed. + */ + +enum { + CURSOR_VPAINT, + CURSOR_FACESEL, + CURSOR_WAIT, + CURSOR_EDIT, + CURSOR_X_MOVE, + CURSOR_Y_MOVE, + CURSOR_HELP, + CURSOR_STD, + CURSOR_NONE, + CURSOR_PENCIL, + CURSOR_TEXTEDIT +}; + +void set_cursor(int curs); +int get_cursor(void); + +#endif /* BIF_GRAPHICS_H */ + diff --git a/source/blender/include/BIF_imasel.h b/source/blender/include/BIF_imasel.h new file mode 100644 index 00000000000..0e92abe14e4 --- /dev/null +++ b/source/blender/include/BIF_imasel.h @@ -0,0 +1,51 @@ +/** + * $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 ***** + */ +#ifndef BIF_IMASEL_H +#define BIF_IMASEL_H + +struct SpaceImaSel; +struct ScrArea; + +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 new file mode 100644 index 00000000000..453e4e628fe --- /dev/null +++ b/source/blender/include/BIF_interface.h @@ -0,0 +1,331 @@ +/** + * $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 ***** + */ + +#ifndef BIF_INTERFACE_H +#define BIF_INTERFACE_H + +struct ID; +struct ListBase; +struct ScrArea; +struct AutoComplete; + +/* uiBlock->dt */ +#define UI_EMBOSS 0 /* use one of the themes for drawing */ +#define UI_EMBOSSN 1 /* Nothing */ +#define UI_EMBOSSM 2 /* Minimal builtin emboss, also for logic buttons */ +#define UI_EMBOSSP 3 /* Pulldown */ +#define UI_EMBOSSR 4 /* Rounded */ + +#define UI_EMBOSSX 0 /* for a python file, which i can't change.... duh! */ + +/* uiBlock->direction */ +#define UI_TOP 1 +#define UI_DOWN 2 +#define UI_LEFT 4 +#define UI_RIGHT 8 +#define UI_DIRECTION 15 +#define UI_CENTER 16 +#define UI_SHIFT_FLIPPED 32 + +/* uiBlock->autofill */ +#define UI_BLOCK_COLLUMNS 1 +#define UI_BLOCK_ROWS 2 + +/* return from uiDoBlock */ +#define UI_CONT 0 +#define UI_NOTHING 1 +#define UI_RETURN_CANCEL 2 +#define UI_RETURN_OK 4 +#define UI_RETURN_OUT 8 +#define UI_RETURN 14 +#define UI_EXIT_LOOP 16 + +/* uiBlock->flag (controls) */ +#define UI_BLOCK_LOOP 1 +#define UI_BLOCK_REDRAW 2 +#define UI_BLOCK_RET_1 4 +#define UI_BLOCK_BUSY 8 +#define UI_BLOCK_NUMSELECT 16 +#define UI_BLOCK_ENTER_OK 32 +#define UI_BLOCK_NOSHADOW 64 +#define UI_BLOCK_FRONTBUFFER 128 +#define UI_BLOCK_NO_HILITE 256 + + /* block->flag bits 12-15 are identical to but->flag bits */ + +/* block->font, for now: bold = medium+1 */ +#define UI_HELV 0 +#define UI_HELVB 1 + +/* panel controls */ +#define UI_PNL_TRANSP 1 +#define UI_PNL_SOLID 2 + +#define UI_PNL_CLOSE 32 +#define UI_PNL_STOW 64 +#define UI_PNL_TO_MOUSE 128 +#define UI_PNL_UNSTOW 256 +#define UI_PNL_SCALE 512 + +/* warning the first 4 flags are internal */ +/* but->flag */ +#define UI_TEXT_LEFT 16 +#define UI_ICON_LEFT 32 +#define UI_ICON_RIGHT 64 + /* control for button type block */ +#define UI_MAKE_TOP 128 +#define UI_MAKE_DOWN 256 +#define UI_MAKE_LEFT 512 +#define UI_MAKE_RIGHT 1024 + /* dont draw hilite on mouse over */ +#define UI_NO_HILITE 2048 + /* button align flag, for drawing groups together */ +#define UI_BUT_ALIGN (15<<12) +#define UI_BUT_ALIGN_TOP (1<<12) +#define UI_BUT_ALIGN_LEFT (1<<13) +#define UI_BUT_ALIGN_RIGHT (1<<14) +#define UI_BUT_ALIGN_DOWN (1<<15) + + +/* Button types, bits stored in 1 value... and a short even! +- bits 0-4: bitnr (0-31) +- bits 5-7: pointer type +- bit 8: for 'bit' +- bit 9-15: button type (now 6 bits, 64 types) +*/ + +#define CHA 32 +#define SHO 64 +#define INT 96 +#define FLO 128 +#define FUN 192 +#define BIT 256 + +#define BUTPOIN (128+64+32) + +#define BUT (1<<9) +#define ROW (2<<9) +#define TOG (3<<9) +#define SLI (4<<9) +#define NUM (5<<9) +#define TEX (6<<9) +#define TOG3 (7<<9) +#define TOGR (8<<9) +#define TOGN (9<<9) +#define LABEL (10<<9) +#define MENU (11<<9) +#define ICONROW (12<<9) +#define ICONTOG (13<<9) +#define NUMSLI (14<<9) +#define COL (15<<9) +#define IDPOIN (16<<9) +#define HSVSLI (17<<9) +#define SCROLL (18<<9) +#define BLOCK (19<<9) +#define BUTM (20<<9) +#define SEPR (21<<9) +#define LINK (22<<9) +#define INLINK (23<<9) +#define KEYEVT (24<<9) +#define ICONTEXTROW (25<<9) +#define HSVCUBE (26<<9) +#define PULLDOWN (27<<9) +#define ROUNDBOX (28<<9) +#define CHARTAB (29<<9) +#define BUT_COLORBAND (30<<9) +#define BUT_NORMAL (31<<9) +#define BUT_CURVE (32<<9) +#define BUT_TOGDUAL (33<<9) +#define ICONTOGN (34<<9) +#define FTPREVIEW (35<<9) +#define BUTTYPE (63<<9) + + + +typedef struct uiBut uiBut; +typedef struct uiBlock uiBlock; + +void uiEmboss(float x1, float y1, float x2, float y2, int sel); +void uiRoundBoxEmboss(float minx, float miny, float maxx, float maxy, float rad, int active); +void uiRoundBox(float minx, float miny, float maxx, float maxy, float rad); +void uiSetRoundBox(int type); +void uiRoundRect(float minx, float miny, float maxx, float maxy, float rad); + +void uiDrawMenuBox(float minx, float miny, float maxx, float maxy, short flag); +void uiTextBoundsBlock(uiBlock *block, int addval); +void uiBoundsBlock(struct uiBlock *block, int addval); +void uiDrawBlock(struct uiBlock *block); +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); +void uiSetCurFont(uiBlock *block, int index); +void uiDefFont(unsigned int index, void *xl, void *large, void *medium, void *small); +void uiFreeBlock(uiBlock *block); +void uiFreeBlocks(struct ListBase *lb); +void uiFreeBlocksWin(struct ListBase *lb, int win); +uiBlock *uiNewBlock(struct ListBase *lb, char *name, short dt, short font, short win); +uiBlock *uiGetBlock(char *name, struct ScrArea *sa); + +void uiBlockPickerButtons(struct uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval); + + +/* automatic aligning, horiz or verical */ +void uiBlockBeginAlign(uiBlock *block); +void uiBlockEndAlign(uiBlock *block); + +uiBut *uiDefBut(uiBlock *block, + int type, int retval, char *str, + short x1, short y1, + short x2, short y2, + void *poin, + float min, float max, + float a1, float a2, char *tip); +uiBut *uiDefButF(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButBitF(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButI(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButBitI(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButS(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButBitS(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButC(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefButBitC(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2, char *tip); + +uiBut *uiDefIconBut(uiBlock *block, + int type, int retval, int icon, + short x1, short y1, + short x2, short y2, + void *poin, + float min, float max, + float a1, float a2, char *tip); +uiBut *uiDefIconButF(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButBitF(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButI(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButBitI(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButS(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButBitS(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButC(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconButBitC(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2, char *tip); + +uiBut *uiDefIconTextBut(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, void *poin, float min, float max, float a1, float a2, char *tip); + +uiBut *uiDefIconTextButF(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButBitF(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButI(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButBitI(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButS(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButBitS(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButC(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2, char *tip); +uiBut *uiDefIconTextButBitC(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2, char *tip); + +typedef void (*uiIDPoinFuncFP) (char *str, struct ID **idpp); +uiBut *uiDefIDPoinBut(struct uiBlock *block, uiIDPoinFuncFP func, short blocktype, int retval, char *str, + short x1, short y1, short x2, short y2, void *idpp, char *tip); + +typedef uiBlock* (*uiBlockFuncFP) (void *arg1); +uiBut *uiDefBlockBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip); +uiBut *uiDefPulldownBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip); + +uiBut *uiDefIconTextBlockBut(uiBlock *block, uiBlockFuncFP func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip); +uiBut *uiDefIconBlockBut(uiBlock *block, uiBlockFuncFP func, void *arg, int retval, int icon, short x1, short y1, short x2, short y2, char *tip); + +void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *spoin, char *tip); + +void uiAutoBlock(struct uiBlock *block, + float minx, float miny, + float sizex, float sizey, int flag); +void uiSetButLink(struct uiBut *but, + void **poin, + void ***ppoin, + short *tot, + int from, int to); + +int uiBlocksGetYMin (ListBase *lb); +int uiBlockGetCol (uiBlock *block); +void* uiBlockGetCurFont (uiBlock *block); + +void uiBlockSetCol (uiBlock *block, int col); +void uiBlockSetEmboss (uiBlock *block, int emboss); +void uiBlockSetDirection (uiBlock *block, int direction); +void uiBlockFlipOrder (uiBlock *block); +void uiBlockSetFlag (uiBlock *block, int flag); +void uiBlockSetXOfs (uiBlock *block, int xofs); + +int uiButGetRetVal (uiBut *but); + +void uiButSetFlag (uiBut *but, int flag); +void uiButClearFlag (uiBut *but, int flag); + +void uiBlockSetButmFunc (uiBlock *block, void (*butmfunc)(void *arg, int but_a2), void *arg); + +void uiBlockSetFunc (uiBlock *block, void (*func)(void *arg1, void *arg2), void *arg1, void *arg2); +void uiButSetFunc (uiBut *but, void (*func)(void *arg1, void *arg2), void *arg1, void *arg2); + +void uiButSetCompleteFunc(uiBut *but, void (*func)(char *str, void *arg), void *arg); + +void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(struct ScrArea *sa, uiBlock *block)); + + +extern void pupmenu_set_active(int val); +extern short pupmenu(char *instr); +extern short pupmenu_col(char *instr, int maxrow); + +extern void uiFreePanels(struct ListBase *lb); +extern void uiNewPanelTabbed(char *, char *); +extern int uiNewPanel(struct ScrArea *sa, struct uiBlock *block, char *panelname, char *tabname, int ofsx, int ofsy, int sizex, int sizey); + +extern void uiSetPanel_view2d(struct ScrArea *sa); +extern void uiMatchPanel_view2d(struct ScrArea *sa); + +extern void uiDrawBlocksPanels(struct ScrArea *sa, int re_align); +extern void uiNewPanelHeight(struct uiBlock *block, int sizey); +extern void uiNewPanelTitle(struct uiBlock *block, char *str); +extern void uiPanelPush(struct uiBlock *block); +extern void uiPanelPop(struct uiBlock *block); +extern uiBlock *uiFindOpenPanelBlockName(ListBase *lb, char *name); +extern int uiAlignPanelStep(struct ScrArea *sa, float fac); +extern void uiPanelControl(int); +extern void uiSetPanelHandler(int); + +extern void uiDrawBoxShadow(unsigned char alpha, float minx, float miny, float maxx, float maxy); +extern void *uiSetCurFont_ext(float aspect); + +void shade_buttons_change_3d(void); + +typedef struct AutoComplete AutoComplete; + +AutoComplete *autocomplete_begin(char *startname, int maxlen); +void autocomplete_do_name(AutoComplete *autocpl, const char *name); +void autocomplete_end(AutoComplete *autocpl, char *autoname); + +#endif /* BIF_INTERFACE_H */ + diff --git a/source/blender/include/BIF_interface_icons.h b/source/blender/include/BIF_interface_icons.h new file mode 100644 index 00000000000..c628d68e9db --- /dev/null +++ b/source/blender/include/BIF_interface_icons.h @@ -0,0 +1,72 @@ +/** + * $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 ***** + */ + +#ifndef BIF_PREVIEW_ICONS_H +#define BIF_PREVIEW_ICONS_H + +struct Image; +struct ImBuf; +struct World; +struct Tex; +struct Lamp; +struct Material; + +typedef struct IconFile { + struct IconFile *next, *prev; + char filename[80]; // FILE_MAXFILE size + int index; +} IconFile; + + +#define ICON_DEFAULT_HEIGHT 16 +#define PREVIEW_DEFAULT_HEIGHT 96 + +/* + Resizable Icons for Blender +*/ +void BIF_icons_init(int first_dyn_id); +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(); +void BIF_icons_free_drawinfo(void *drawinfo); + +struct ListBase *BIF_iconfile_list(void); +int BIF_iconfile_get_index(char *filename); + + +#endif /* BIF_ICONS_H */ diff --git a/source/blender/include/BIF_keyval.h b/source/blender/include/BIF_keyval.h new file mode 100644 index 00000000000..7134bd2b153 --- /dev/null +++ b/source/blender/include/BIF_keyval.h @@ -0,0 +1,39 @@ +/** + * $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 ***** + */ + +#ifndef BIF_KEYVAL_H +#define BIF_KEYVAL_H + +char *key_event_to_string(unsigned short event); + +#endif + diff --git a/source/blender/include/BIF_language.h b/source/blender/include/BIF_language.h new file mode 100644 index 00000000000..6ed8a8d1574 --- /dev/null +++ b/source/blender/include/BIF_language.h @@ -0,0 +1,69 @@ +/** + * $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 ***** + */ + +#ifndef BIF_LANGUAGE_H +#define BIF_LANGUAGE_H + +#include "DNA_vec_types.h" + +struct BMF_Font; + +int read_languagefile(void); /* usiblender.c */ +void free_languagemenu(void); /* usiblender.c */ + +void set_interface_font(char *str); /* headerbuttons.c */ +void start_interface_font(void); /* headerbuttons.c */ +void lang_setlanguage(void); /* usiblender.c */ + +char *language_pup(void); +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); +void refresh_interface_font(void); + +struct LANGMenuEntry { + struct LANGMenuEntry *next; + char *line; + char *language; + char *code; + int id; +}; + +struct LANGMenuEntry *find_language(short langid); + +#endif /* BIF_LANGUAGE_H */ + diff --git a/source/blender/include/BIF_mainqueue.h b/source/blender/include/BIF_mainqueue.h new file mode 100644 index 00000000000..e2eaeea4dca --- /dev/null +++ b/source/blender/include/BIF_mainqueue.h @@ -0,0 +1,47 @@ +/* + * Central queue handling functions. + * + * $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 ***** + */ + +#ifndef BIF_MAINQUEUE_H +#define BIF_MAINQUEUE_H + +#define MAXQUEUE 4096 + +unsigned short mainqtest (void); +unsigned short mainqread (short *val, char *ascii); +void mainqenter (unsigned short event, short val); +void mainqenter_ext (unsigned short event, short val, char ascii); +void mainqpushback (unsigned short event, short val, char ascii); + +#endif /* BIF_MAINQUEUE_H */ + 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 new file mode 100644 index 00000000000..a08f800d7b6 --- /dev/null +++ b/source/blender/include/BIF_meshtools.h @@ -0,0 +1,50 @@ +/** + * $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 ***** + */ + +#ifndef BIF_MESHTOOLS_H +#define BIF_MESHTOOLS_H + +struct Object; +struct EditVert; + +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 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); + +#endif + diff --git a/source/blender/include/BIF_mywindow.h b/source/blender/include/BIF_mywindow.h new file mode 100644 index 00000000000..28de60d2bc0 --- /dev/null +++ b/source/blender/include/BIF_mywindow.h @@ -0,0 +1,145 @@ + +/** + * $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 ***** + * These are the protos for mywindow.c -- an emulation of the + * (obsolete) IrisGL command set + */ + +#ifndef BIF_MYWINDOW_H +#define BIF_MYWINDOW_H + +struct rcti; + +/*---*/ + +typedef struct BWinEvent { + unsigned short event; + short val; + char ascii; +} BWinEvent; + +/*---*/ + +int mywinget(void); +void mywinclose(int winid); +void mywinposition(int winid, + int xmin, int xmax, + int ymin, int ymax); +/*---*/ + + /** Test if there are events available on a BWin queue. + * + * @param winid The ID of the window to query. + * @return True if there is an event available for _qread'ing. + */ +int bwin_qtest(int winid); + + /** Read an event off of the BWin queue (if available). + * + * @param winid The ID of the window to read from. + * @param event_r A pointer to return the event in. + * @return True if an event was read and @a event_r filled. + */ +int bwin_qread(int winid, BWinEvent *event_r); + + /** Add an event to the BWin queue. + * + * @param winid The ID of the window to add to. + * @param event A pointer to copy the event from. + */ +void bwin_qadd(int winid, BWinEvent *event); + +/*---*/ + +void bwin_load_viewmatrix(int winid, float mat[][4]); +void bwin_load_winmatrix(int winid, float mat[][4]); + +void bwin_get_viewmatrix(int winid, float mat[][4]); +void bwin_get_winmatrix(int winid, float mat[][4]); + +void bwin_multmatrix(int winid, float mat[][4]); +void bwin_scalematrix(int winid, float x, float y, float z); + +void bwin_ortho(int winid, float x1, float x2, float y1, float y2, float n, float f); +void bwin_ortho2(int win, float x1, float x2, float y1, float y2); +void bwin_frustum(int winid, float x1, float x2, float y1, float y2, float n, float f); + +void bwin_getsize(int winid, int *x, int *y); +void bwin_getsuborigin(int winid, int *x, int *y); +void bwin_get_rect(int winid, struct rcti *rect_r); +void bwin_getsinglematrix(int winid, float mat[][4]); +void bwin_clear_viewmat(int winid); + +int myswinopen(int parentid, int xmin, int xmax, int ymin, int ymax); +int myswinopen_allowed(void); +void myswapbuffers(void); + +void mygetmatrix(float mat[][4]); +void mymultmatrix(float [][4]); + +void myloadmatrix(float mat[][4]); +void mywinset(int wid); +void myortho(float x1, float x2, float y1, float y2, float n, float f); +void myortho2(float x1, float x2, float y1, float y2); +void mywindow(float x1, float x2, float y1, float y2, float n, float f); +void mygetsingmatrix(float (*)[4]); + +void setlinestyle(int nr); + +void BIF_wait_for_statechange(void); + +#define L_MOUSE 1 +#define M_MOUSE 2 +#define R_MOUSE 4 +short get_mbut(void); +short get_qual(void); +void getmouse(short *mval); + +float get_pressure(void); +void get_tilt(float *xtilt, float *ytilt); +#define DEV_MOUSE 0 +#define DEV_STYLUS 1 +#define DEV_ERASER 2 +short get_activedevice(void); + +void warp_pointer(int x, int y); + +int framebuffer_to_index(unsigned int col); +void set_framebuffer_index_color(int index); + +int mywin_inmenu(void); +void mywin_getmenu_rect(int *x, int *y, int *sx, int *sy); + +void my_put_frontbuffer_image(void); +void my_get_frontbuffer_image(int x, int y, int sx, int sy); + +#endif + diff --git a/source/blender/include/BIF_oops.h b/source/blender/include/BIF_oops.h new file mode 100644 index 00000000000..5da088a5ea7 --- /dev/null +++ b/source/blender/include/BIF_oops.h @@ -0,0 +1,71 @@ +/** + * $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 ***** + */ + +#ifndef BIF_OOPS_H +#define BIF_OOPS_H + +struct Curve; +struct Oops; +struct OopsLink; +struct SpaceOops; +struct Material; +struct Mesh; +struct MetaBall; +struct Object; +struct Lamp; +void add_curve_oopslinks(struct Curve *cu, struct Oops *oops, short flag); +void add_from_link(struct Oops *from, struct Oops *oops); +void add_material_oopslinks(struct Material *ma, struct Oops *oops, short flag); +void add_mball_oopslinks(struct MetaBall *mb, struct Oops *oops, short flag); +void add_mesh_oopslinks(struct Mesh *me, struct Oops *oops, short flag); +void add_object_oopslinks(struct Object *ob, struct Oops *oops, short flag); +void add_lamp_oopslinks(struct Lamp *la, struct Oops *oops, short flag); +struct Oops *add_oops(void *id); +struct OopsLink *add_oopslink(char *name, struct Oops *oops, short type, void *from, float xof, float yof); +struct Oops *add_test_oops(void *id); /* incl links */ +void add_texture_oops(struct Material *ma); +void build_oops(void); +struct Oops *find_oops(ID *id); +void free_oops(struct Oops *oops); /* ook oops zelf */ +void free_oopspace(struct SpaceOops *so); +void new_oops_location(struct Oops *); +int oops_test_overlap(struct Oops *test); +int oops_test_overlaphide(struct Oops *test); +float oopslink_totlen(struct Oops *oops); +void shrink_oops(void); +void shuffle_oops(void); +int test_oops(struct Oops *oops); +void test_oopslink(struct OopsLink *ol); +void test_oopslinko(struct OopsLink *ol); + +#endif + diff --git a/source/blender/include/BIF_outliner.h b/source/blender/include/BIF_outliner.h new file mode 100644 index 00000000000..34ed7950421 --- /dev/null +++ b/source/blender/include/BIF_outliner.h @@ -0,0 +1,106 @@ +/** + * $Id: BIF_outliner.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) 2004 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +#ifndef BIF_OUTLINER_H +#define BIF_OUTLINER_H + +struct TreeStoreElem; + +typedef struct TreeElement { + struct TreeElement *next, *prev, *parent; + ListBase subtree; + float xs, ys; // do selection + int store_index; // offset in tree store + short flag, index; // flag for non-saved stuff, index for data arrays + short idcode; // from TreeStore id + short xend; // width of item display, for select + char *name; + void *directdata; // Armature Bones, Base, ... +} TreeElement; + +/* TreeElement->flag */ +#define TE_ACTIVE 1 +#define TE_ICONROW 2 + +/* TreeStoreElem types */ +#define TSE_NLA 1 +#define TSE_NLA_ACTION 2 +#define TSE_DEFGROUP_BASE 3 +#define TSE_DEFGROUP 4 +#define TSE_BONE 5 +#define TSE_EBONE 6 +#define TSE_CONSTRAINT_BASE 7 +#define TSE_CONSTRAINT 8 +#define TSE_MODIFIER_BASE 9 +#define TSE_MODIFIER 10 +#define TSE_LINKED_OB 11 +#define TSE_SCRIPT_BASE 12 +#define TSE_POSE_BASE 13 +#define TSE_POSE_CHANNEL 14 +/*#ifdef WITH_VERSE*/ +#define TSE_VERSE_SESSION 15 +#define TSE_VERSE_OBJ_NODE 16 +#define TSE_VERSE_GEOM_NODE 17 +/*#endif*/ +#define TSE_PROXY 18 +#define TSE_R_LAYER_BASE 19 +#define TSE_R_LAYER 20 +#define TSE_R_PASS 21 +#define TSE_LINKED_MAT 22 + /* NOTE, is used for light group */ +#define TSE_LINKED_LAMP 23 + +/* outliner search flags */ +#define OL_FIND 0 +#define OL_FIND_CASE 1 +#define OL_FIND_COMPLETE 2 +#define OL_FIND_COMPLETE_CASE 3 + +/* button events */ +#define OL_NAMEBUTTON 1 + +extern void draw_outliner(struct ScrArea *sa, struct SpaceOops *so); +extern void outliner_free_tree(struct ListBase *lb); +extern void outliner_mouse_event(struct ScrArea *sa, short event); +extern void outliner_toggle_visible(struct ScrArea *sa); +extern void outliner_show_active(struct ScrArea *sa); +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_del(struct ScrArea *sa); +extern void outliner_operation_menu(struct ScrArea *sa); +extern void outliner_page_up_down(struct ScrArea *sa, int up); +extern void outliner_find_panel(struct ScrArea *sa, int again, int flags); + +#endif + diff --git a/source/blender/include/BIF_poseobject.h b/source/blender/include/BIF_poseobject.h new file mode 100644 index 00000000000..a640d3abe84 --- /dev/null +++ b/source/blender/include/BIF_poseobject.h @@ -0,0 +1,71 @@ +/** + * $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 ***** + */ + +#ifndef BIF_POSEOBJECT +#define BIF_POSEOBJECT + + +struct Object; +struct bPoseChannel; + +void enter_posemode(void); +void exit_posemode(void); + + // sets chan->flag to POSE_KEY if bone selected +void set_pose_keys(struct Object *ob); + +struct bPoseChannel *get_active_posechannel (struct Object *ob); +int pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan); + +/* tools */ +void pose_select_constraint_target(void); +void pose_special_editmenu(void); +void pose_add_IK(void); +void pose_clear_IK(void); +void pose_clear_constraints(void); +void pose_copy_menu(void); + +void free_posebuf(void); +void copy_posebuf (void); +void paste_posebuf (int flip); + +void pose_adds_vgroups(struct Object *meshobj, int heatweights); + +void pose_calculate_path(struct Object *ob); +void pose_clear_paths(struct Object *ob); + +void pose_flip_names(void); +void pose_activate_flipped_bone(void); +void pose_movetolayer(void); + +#endif + diff --git a/source/blender/include/BIF_previewrender.h b/source/blender/include/BIF_previewrender.h new file mode 100644 index 00000000000..f5661fa313d --- /dev/null +++ b/source/blender/include/BIF_previewrender.h @@ -0,0 +1,94 @@ +/** + * $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 ***** + */ + +#ifndef BIF_PREVIEWRENDER_H +#define BIF_PREVIEWRENDER_H + +#include "DNA_vec_types.h" + +struct View3D; +struct SpaceButs; +struct RenderInfo; +struct Image; +struct ScrArea; +struct uiBlock; +struct Render; + +#define PREVIEW_RENDERSIZE 140 + +typedef void (*VectorDrawFunc)(int x, int y, int w, int h, float alpha); + +/* stores rendered preview - is also used for icons */ +typedef struct RenderInfo { + int pr_rectx; + int pr_recty; + short curtile, tottile, status; + rcti disprect; /* storage for view3d preview rect */ + unsigned int* rect; + struct Render *re; /* persistant render */ +} RenderInfo; + +/* ri->status */ +#define PR_DBASE 1 +#define PR_DISPRECT 2 +#define PR_PROJECTED 4 +#define PR_ROTATED 8 + +/* Render the preview + +pr_method: +- PR_DRAW_RENDER: preview is rendered and drawn, as indicated by called context (buttons panel) +- PR_ICON_RENDER: the preview is not drawn and the function is not dynamic, + so no events are processed. Hopefully fast enough for at least 32x32 +- PR_DO_RENDER: preview is rendered, not drawn, but events are processed for afterqueue, + in use for node editor now. +*/ + +#define PR_DRAW_RENDER 0 +#define PR_ICON_RENDER 1 +#define PR_DO_RENDER 2 + +void BIF_previewrender (struct ID *id, struct RenderInfo *ri, struct ScrArea *area, int pr_method); +void BIF_previewrender_buts (struct SpaceButs *sbuts); +void BIF_previewdraw (struct ScrArea *sa, struct uiBlock *block); +void BIF_preview_changed (short id_code); + +void BIF_preview_init_dbase (void); +void BIF_preview_free_dbase (void); + +void BIF_view3d_previewrender(struct ScrArea *sa); +void BIF_view3d_previewdraw (struct ScrArea *sa, struct uiBlock *block); +void BIF_view3d_previewrender_free(struct View3D *v3d); +void BIF_view3d_previewrender_clear(struct ScrArea *sa); +void BIF_view3d_previewrender_signal(struct ScrArea *sa, short signal); + +#endif diff --git a/source/blender/include/BIF_renderwin.h b/source/blender/include/BIF_renderwin.h new file mode 100644 index 00000000000..789c3661db7 --- /dev/null +++ b/source/blender/include/BIF_renderwin.h @@ -0,0 +1,67 @@ +/** + * $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 ***** + */ + +struct Render; +struct ScrArea; +struct RenderStats; + +void calc_renderwin_rectangle(int rectx, int recty, int posmask, int renderpos_r[2], int rendersize_r[2]); + +void BIF_close_render_display(void); + +void BIF_do_render(int anim); + +/** + * @param v3d The View3D space to render. + */ +void BIF_do_ogl_render(struct View3D *v3d, int anim); + +void BIF_renderwin_set_for_ogl_render(void); +void BIF_renderwin_set_custom_cursor(unsigned char mask[16][2], unsigned char bitmap[16][2]); + +void BIF_redraw_render_rect(void); +void BIF_swap_render_rects(void); +void BIF_store_spare(void); +void BIF_toggle_render_display(void); + +void BIF_init_render_callbacks(struct Render *re, int do_display); +void BIF_end_render_callbacks(void); + +/* should not be here, ~WIP~ */ +void make_renderinfo_string(struct RenderStats *rs, char *str); + +/* space for info text */ +#define RW_HEADERY 18 + +/* header print for window */ +#define RW_MAXTEXT 512 + diff --git a/source/blender/include/BIF_resources.h b/source/blender/include/BIF_resources.h new file mode 100644 index 00000000000..e63e84efcbd --- /dev/null +++ b/source/blender/include/BIF_resources.h @@ -0,0 +1,599 @@ +/** + * $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 ***** + */ + +#ifndef BIF_RESOURCES_H +#define BIF_RESOURCES_H + +/* elubie: TODO: move the typedef for icons to BIF_interface_icons.h */ +/* and add/replace include of BIF_resources.h by BIF_interface_icons.h */ +typedef enum { +#define BIFICONID_FIRST (ICON_VIEW3D) + ICON_VIEW3D, + ICON_IPO, + ICON_OOPS, + ICON_BUTS, + ICON_FILESEL, + ICON_IMAGE_COL, + ICON_INFO, + ICON_SEQUENCE, + ICON_TEXT, + ICON_IMASEL, + ICON_SOUND, + ICON_ACTION, + ICON_NLA, + ICON_SCRIPTWIN, + ICON_TIME, + ICON_NODE, + ICON_SPACE2, + ICON_SPACE3, + ICON_SPACE4, + ICON_TRIA_LEFT, + ICON_TRIA_UP, + ICON_FONTPREVIEW, + ICON_BLANK4, + ICON_BLANK5, + ICON_BLANK6, + + ICON_ORTHO, + ICON_PERSP, + ICON_CAMERA, + ICON_EFFECTS, + ICON_BBOX, + ICON_WIRE, + ICON_SOLID, + ICON_SMOOTH, + ICON_POTATO, + ICON_MARKER_HLT, + ICON_NORMALVIEW, + ICON_LOCALVIEW, + ICON_UNUSEDVIEW, + ICON_VIEWZOOM, + ICON_SORTALPHA, + ICON_SORTTIME, + ICON_SORTSIZE, + ICON_LONGDISPLAY, + ICON_SHORTDISPLAY, + ICON_TRIA_DOWN, + ICON_TRIA_RIGHT, + ICON_BLANK7, + ICON_BLANK8, + ICON_BLANK9, + ICON_BLANK10, + + ICON_VIEW_AXIS_ALL, + ICON_VIEW_AXIS_NONE, + ICON_VIEW_AXIS_NONE2, + ICON_VIEW_AXIS_TOP, + ICON_VIEW_AXIS_FRONT, + ICON_VIEW_AXIS_SIDE, + ICON_POSE_DEHLT, + ICON_POSE_HLT, + ICON_BORDERMOVE, + ICON_MAYBE_ITS_A_LASSO, + ICON_BLANK1, /* ATTENTION, someone decided to use this throughout blender + and didn't care to neither rename it nor update the PNG */ + ICON_VERSE, + ICON_MOD_BOOLEAN, + ICON_ARMATURE, + ICON_PAUSE, + ICON_ALIGN, + ICON_REC, + ICON_PLAY, + ICON_FF, + ICON_REW, + ICON_PYTHON, + ICON_BLANK11, + ICON_BLANK12, + ICON_BLANK13, + ICON_BLANK14, + + + ICON_DOTSUP, + ICON_DOTSDOWN, + ICON_MENU_PANEL, + ICON_AXIS_SIDE, + ICON_AXIS_FRONT, + ICON_AXIS_TOP, + ICON_STICKY_UVS_LOC, + ICON_STICKY_UVS_DISABLE, + ICON_STICKY_UVS_VERT, + ICON_PREV_KEYFRAME, + ICON_NEXT_KEYFRAME, + ICON_ENVMAP, + ICON_TRANSP_HLT, + ICON_TRANSP_DEHLT, + ICON_CIRCLE_DEHLT, + ICON_CIRCLE_HLT, + ICON_TPAINT_DEHLT, + ICON_TPAINT_HLT, + ICON_WPAINT_DEHLT, + ICON_WPAINT_HLT, + ICON_MARKER, + ICON_BLANK15, + ICON_BLANK16, + ICON_BLANK17, + ICON_BLANK18, + + ICON_X, + ICON_GO_LEFT, + ICON_NO_GO_LEFT, + ICON_UNLOCKED, + ICON_LOCKED, + ICON_PARLIB, + ICON_DATALIB, + ICON_AUTO, + ICON_MATERIAL_DEHLT2, + ICON_RING, + ICON_GRID, + ICON_PROPEDIT, + ICON_KEEPRECT, + ICON_DESEL_CUBE_VERTS, + ICON_EDITMODE_DEHLT, + ICON_EDITMODE_HLT, + ICON_VPAINT_DEHLT, + ICON_VPAINT_HLT, + ICON_FACESEL_DEHLT, + ICON_FACESEL_HLT, + ICON_EDIT_DEHLT, + ICON_BOOKMARKS, + ICON_BLANK20, + ICON_BLANK21, + ICON_BLANK22, + + ICON_HELP, + ICON_ERROR, + ICON_FOLDER_DEHLT, + ICON_FOLDER_HLT, + ICON_BLUEIMAGE_DEHLT, + ICON_BLUEIMAGE_HLT, + ICON_BPIBFOLDER_DEHLT, + ICON_BPIBFOLDER_HLT, + ICON_BPIBFOLDER_ERR, + ICON_UGLY_GREEN_RING, + ICON_GHOST, + ICON_SORTBYEXT, + ICON_SCULPTMODE_HLT, + ICON_VERTEXSEL, + ICON_EDGESEL, + ICON_FACESEL, + ICON_PLUS, + ICON_BPIBFOLDER_X, + ICON_BPIBFOLDERGREY, + ICON_MAGNIFY, + ICON_INFO2, + ICON_BLANK23, + ICON_BLANK24, + ICON_BLANK25, + ICON_BLANK26, + + ICON_RIGHTARROW, + ICON_DOWNARROW_HLT, + ICON_ROUNDBEVELTHING, + ICON_FULLTEXTURE, + ICON_HOOK, + ICON_DOT, + ICON_WORLD_DEHLT, + ICON_CHECKBOX_DEHLT, + ICON_CHECKBOX_HLT, + ICON_LINK, + ICON_INLINK, + ICON_ZOOMIN, + ICON_ZOOMOUT, + ICON_PASTEDOWN, + ICON_COPYDOWN, + ICON_CONSTANT, + ICON_LINEAR, + ICON_CYCLIC, + ICON_KEY_DEHLT, + ICON_KEY_HLT, + ICON_GRID2, + ICON_BLANK27, + ICON_BLANK28, + ICON_BLANK29, + ICON_BLANK30, + + ICON_EYE, + ICON_LAMP, + ICON_MATERIAL, + ICON_TEXTURE, + ICON_ANIM, + ICON_WORLD, + ICON_SCENE, + ICON_EDIT, + ICON_GAME, + ICON_PAINT, + ICON_RADIO, + ICON_SCRIPT, + ICON_SPEAKER, + ICON_PASTEUP, + ICON_COPYUP, + ICON_PASTEFLIPUP, + ICON_PASTEFLIPDOWN, + ICON_CYCLICLINEAR, + ICON_PIN_DEHLT, + ICON_PIN_HLT, + ICON_LITTLEGRID, + ICON_BLANK31, + ICON_BLANK32, + ICON_BLANK33, + ICON_BLANK34, + + ICON_FULLSCREEN, + ICON_SPLITSCREEN, + ICON_RIGHTARROW_THIN, + ICON_DISCLOSURE_TRI_RIGHT, + ICON_DISCLOSURE_TRI_DOWN, + ICON_SCENE_SEPIA, + ICON_SCENE_DEHLT, + ICON_OBJECT, + ICON_MESH, + ICON_CURVE, + ICON_MBALL, + ICON_LATTICE, + ICON_LAMP_DEHLT, + ICON_MATERIAL_DEHLT, + ICON_TEXTURE_DEHLT, + ICON_IPO_DEHLT, + ICON_LIBRARY_DEHLT, + ICON_IMAGE_DEHLT, + ICON_EYEDROPPER, + ICON_WINDOW_WINDOW, + ICON_PANEL_CLOSE, + ICON_BLANK35, + ICON_BLANK36, + ICON_BLANK37, + ICON_BLANK38, + + ICON_BLENDER, + ICON_PACKAGE, + ICON_UGLYPACKAGE, + ICON_MATPLANE, + ICON_MATSPHERE, + ICON_MATCUBE, + ICON_SCENE_HLT, + ICON_OBJECT_HLT, + ICON_MESH_HLT, + ICON_CURVE_HLT, + ICON_MBALL_HLT, + ICON_LATTICE_HLT, + ICON_LAMP_HLT, + ICON_MATERIAL_HLT, + ICON_TEXTURE_HLT, + ICON_IPO_HLT, + ICON_LIBRARY_HLT, + ICON_IMAGE_HLT, + ICON_CONSTRAINT, + ICON_CAMERA_DEHLT, + ICON_ARMATURE_DEHLT, + ICON_SNAP_GEAR, + ICON_SNAP_GEO, + ICON_BLANK41, + ICON_BLANK42, + + ICON_SMOOTHCURVE, + ICON_SPHERECURVE, + ICON_ROOTCURVE, + ICON_SHARPCURVE, + ICON_LINCURVE, + ICON_NOCURVE, + ICON_RNDCURVE, + ICON_PROP_OFF, + ICON_PROP_ON, + ICON_PROP_CON, + ICON_SYNTAX, + ICON_SYNTAX_OFF, + ICON_MONKEY, + ICON_HAIR, + ICON_VIEWMOVE, + ICON_HOME, + ICON_CLIPUV_DEHLT, + ICON_CLIPUV_HLT, + ICON_BLANK2, + ICON_BLANK3, + ICON_VPAINT_COL, + ICON_RESTRICT_SELECT_OFF, + ICON_RESTRICT_SELECT_ON, + ICON_MUTE_IPO_OFF, + ICON_MUTE_IPO_ON, + + ICON_MAN_TRANS, + ICON_MAN_ROT, + ICON_MAN_SCALE, + ICON_MANIPUL, + ICON_BLANK_47, + ICON_MODIFIER, + ICON_MOD_WAVE, + ICON_MOD_BUILD, + ICON_MOD_DECIM, + ICON_MOD_MIRROR, + ICON_MOD_SOFT, + ICON_MOD_SUBSURF, + ICON_SEQ_SEQUENCER, + ICON_SEQ_PREVIEW, + ICON_SEQ_LUMA_WAVEFORM, + ICON_SEQ_CHROMA_SCOPE, + ICON_ROTATE, + ICON_CURSOR, + ICON_ROTATECOLLECTION, + ICON_ROTATECENTER, + ICON_ROTACTIVE, + ICON_RESTRICT_VIEW_OFF, + ICON_RESTRICT_VIEW_ON, + ICON_RESTRICT_RENDER_OFF, + ICON_RESTRICT_RENDER_ON, + + VICON_VIEW3D, + VICON_EDIT, + VICON_EDITMODE_DEHLT, + VICON_EDITMODE_HLT, + VICON_DISCLOSURE_TRI_RIGHT, + VICON_DISCLOSURE_TRI_DOWN, + VICON_MOVE_UP, + VICON_MOVE_DOWN, + VICON_X + +#define BIFICONID_LAST (VICON_X) +#define BIFNICONIDS (BIFICONID_LAST-BIFICONID_FIRST + 1) +} BIFIconID; + +typedef enum { +#define BIFCOLORSHADE_FIRST (COLORSHADE_DARK) + COLORSHADE_DARK, + COLORSHADE_GREY, + COLORSHADE_MEDIUM, + COLORSHADE_HILITE, + COLORSHADE_LIGHT, + COLORSHADE_WHITE +#define BIFCOLORSHADE_LAST (COLORSHADE_WHITE) +#define BIFNCOLORSHADES (BIFCOLORSHADE_LAST-BIFCOLORSHADE_FIRST + 1) +} BIFColorShade; + +typedef enum { +#define BIFCOLORID_FIRST (BUTGREY) + BUTGREY = 0, + BUTGREEN, + BUTBLUE, + BUTSALMON, + MIDGREY, + BUTPURPLE, + BUTYELLOW, + REDALERT, + BUTRUST, + BUTWHITE, + BUTDBLUE, + BUTPINK, + BUTDPINK, + BUTMACTIVE, + + BUTIPO, + BUTAUDIO, + BUTCAMERA, + BUTRANDOM, + BUTEDITOBJECT, + BUTPROPERTY, + BUTSCENE, + BUTMOTION, + BUTMESSAGE, + BUTACTION, + BUTCD, + BUTGAME, + BUTVISIBILITY, + BUTYUCK, + BUTSEASICK, + BUTCHOKE, + BUTIMPERIAL, + + BUTTEXTCOLOR, + BUTTEXTPRESSED, + BUTSBACKGROUND, + + VIEWPORTBACKCOLOR, + VIEWPORTGRIDCOLOR, + VIEWPORTACTIVECOLOR, + VIEWPORTSELECTEDCOLOR, + VIEWPORTUNSELCOLOR, + + EDITVERTSEL, + EDITVERTUNSEL, + EDITEDGESEL, + EDITEDGEUNSEL + +#define BIFCOLORID_LAST (EDITEDGEUNSEL) +#define BIFNCOLORIDS (BIFCOLORID_LAST-BIFCOLORID_FIRST + 1) + +} BIFColorID; + +/* XXX WARNING: this is saved in file, so do not change order! */ +enum { + TH_AUTO, /* for buttons, to signal automatic color assignment */ + +// uibutton colors + TH_BUT_OUTLINE, + TH_BUT_NEUTRAL, + TH_BUT_ACTION, + TH_BUT_SETTING, + TH_BUT_SETTING1, + TH_BUT_SETTING2, + TH_BUT_NUM, + TH_BUT_TEXTFIELD, + TH_BUT_POPUP, + TH_BUT_TEXT, + TH_BUT_TEXT_HI, + TH_MENU_BACK, + TH_MENU_ITEM, + TH_MENU_HILITE, + TH_MENU_TEXT, + TH_MENU_TEXT_HI, + + TH_BUT_DRAWTYPE, + + TH_REDALERT, + TH_CUSTOM, + + TH_BUT_TEXTFIELD_HI, + TH_ICONFILE, + + TH_THEMEUI, +// common colors among spaces + + TH_BACK, + TH_TEXT, + TH_TEXT_HI, + TH_HEADER, + TH_HEADERDESEL, + TH_PANEL, + TH_SHADE1, + TH_SHADE2, + TH_HILITE, + + TH_GRID, + TH_WIRE, + TH_SELECT, + TH_ACTIVE, + TH_GROUP, + TH_GROUP_ACTIVE, + TH_TRANSFORM, + TH_VERTEX, + TH_VERTEX_SELECT, + TH_VERTEX_SIZE, + TH_EDGE, + TH_EDGE_SELECT, + TH_EDGE_SEAM, + TH_EDGE_FACESEL, + TH_FACE, + TH_FACE_SELECT, + TH_NORMAL, + TH_FACE_DOT, + TH_FACEDOT_SIZE, + + TH_SYNTAX_B, + TH_SYNTAX_V, + TH_SYNTAX_C, + TH_SYNTAX_L, + TH_SYNTAX_N, + + TH_BONE_SOLID, + TH_BONE_POSE, + + TH_STRIP, + TH_STRIP_SELECT, + + TH_LAMP, + + TH_NODE, + TH_NODE_IN_OUT, + TH_NODE_OPERATOR, + TH_NODE_CONVERTOR, + TH_NODE_GROUP, + + TH_SEQ_MOVIE, + TH_SEQ_IMAGE, + TH_SEQ_SCENE, + TH_SEQ_AUDIO, + TH_SEQ_EFFECT, + TH_SEQ_PLUGIN, + TH_SEQ_TRANSITION, + TH_SEQ_META, + + TH_EDGE_SHARP, + TH_EDITMESH_ACTIVE, +}; +/* XXX WARNING: previous is saved in file, so do not change order! */ + +/* theme drawtypes */ +#define TH_MINIMAL 0 +#define TH_SHADED 1 +#define TH_ROUNDED 2 +#define TH_OLDSKOOL 3 + +/* specific defines per space should have higher define values */ + +struct bTheme; + +// THE CODERS API FOR THEMES: + +// sets the color +void BIF_ThemeColor(int colorid); + +// sets the color plus alpha +void BIF_ThemeColor4(int colorid); + +// sets color plus offset for shade +void BIF_ThemeColorShade(int colorid, int offset); + +// sets color plus offset for alpha +void BIF_ThemeColorShadeAlpha(int colorid, int coloffset, int alphaoffset); + +// sets color, which is blend between two theme colors +void BIF_ThemeColorBlend(int colorid1, int colorid2, float fac); +// same, with shade offset +void BIF_ThemeColorBlendShade(int colorid1, int colorid2, float fac, int offset); + +// returns one value, not scaled +float BIF_GetThemeValuef(int colorid); +int BIF_GetThemeValue(int colorid); + +// get three color values, scaled to 0.0-1.0 range +void BIF_GetThemeColor3fv(int colorid, float *col); + +// get the 3 or 4 byte values +void BIF_GetThemeColor3ubv(int colorid, char *col); +void BIF_GetThemeColor4ubv(int colorid, char *col); + +// get a theme color from specified space type +void BIF_GetThemeColorType4ubv(int colorid, int spacetype, char *col); + +// blends and shades between two color pointers +void BIF_ColorPtrBlendShade3ubv(char *cp1, char *cp2, float fac, int offset); + +// get a 3 byte color, blended and shaded between two other char color pointers +void BIF_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, int offset); + + +struct ScrArea; + +// internal (blender) usage only, for init and set active +void BIF_InitTheme(void); +void BIF_SetTheme(struct ScrArea *sa); +void BIF_resources_init (void); +void BIF_resources_free (void); +void BIF_colors_init (void); +void BIF_load_ui_colors (void); + +/* only for buttons in theme editor! */ +char *BIF_ThemeGetColorPtr(struct bTheme *btheme, int spacetype, int colorid); +char *BIF_ThemeColorsPup(int spacetype); + + +void BIF_def_color (BIFColorID colorid, unsigned char r, unsigned char g, unsigned char b); + +#endif /* BIF_ICONS_H */ diff --git a/source/blender/include/BIF_retopo.h b/source/blender/include/BIF_retopo.h new file mode 100644 index 00000000000..5d39923a398 --- /dev/null +++ b/source/blender/include/BIF_retopo.h @@ -0,0 +1,110 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2006 by Nicholas Bishop + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BIF_RETOPO_H +#define BIF_RETOPO_H + +#include "DNA_vec_types.h" + +/* For bglMats */ +#include "BIF_glutil.h" + +struct EditVert; +struct Mesh; +struct View3D; + +typedef struct RetopoViewData { + bglMats mats; + + char queue_matrix_update; +} RetopoViewData; + +typedef struct RetopoPaintPoint { + struct RetopoPaintPoint *next, *prev; + vec2s loc; + short index; + float co[3]; + struct EditVert *eve; +} RetopoPaintPoint; + +typedef struct RetopoPaintLine { + struct RetopoPaintLine *next, *prev; + ListBase points; + ListBase hitlist; /* RetopoPaintHit */ + RetopoPaintPoint *cyclic; +} RetopoPaintLine; + +typedef struct RetopoPaintSel { + struct RetopoPaintSel *next, *prev; + RetopoPaintLine *line; + char first; +} RetopoPaintSel; + +typedef struct RetopoPaintData { + char in_drag; + short sloc[2]; + + ListBase lines; + ListBase intersections; /* RetopoPaintPoint */ + + short seldist; + RetopoPaintSel nearest; + + struct View3D *paint_v3d; +} RetopoPaintData; + +RetopoPaintData *get_retopo_paint_data(); + +char retopo_mesh_check(); +char retopo_curve_check(); + +void retopo_end_okee(); + +void retopo_free_paint_data(RetopoPaintData *rpd); +void retopo_free_paint(); + +char retopo_mesh_paint_check(); +void retopo_paint_view_update(struct View3D *v3d); +void retopo_force_update(); +void retopo_paint_toggle(void*,void*); +char retopo_paint(const unsigned short event); +void retopo_draw_paint_lines(); +RetopoPaintData *retopo_paint_data_copy(RetopoPaintData *rpd); + +void retopo_toggle(void*,void*); +void retopo_do_vert(struct View3D *v3d, float *v); +void retopo_do_all(); +void retopo_do_all_cb(void *, void *); +void retopo_queue_updates(struct View3D *v3d); + +void retopo_matrix_update(struct View3D *v3d); + +void retopo_free_view_data(struct View3D *v3d); + +#endif diff --git a/source/blender/include/BIF_scrarea.h b/source/blender/include/BIF_scrarea.h new file mode 100644 index 00000000000..c2953078edc --- /dev/null +++ b/source/blender/include/BIF_scrarea.h @@ -0,0 +1,54 @@ +/** + * $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 ***** + */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct ScrArea; + + /** + * Finds the first spacedata of @a type within + * the scrarea. + */ +void *scrarea_find_space_of_type(ScrArea *sa, int type); + +int scrarea_get_win_x (struct ScrArea *sa); +int scrarea_get_win_y (struct ScrArea *sa); +int scrarea_get_win_width (struct ScrArea *sa); +int scrarea_get_win_height (struct ScrArea *sa); + +#ifdef __cplusplus +} + +#endif + diff --git a/source/blender/include/BIF_screen.h b/source/blender/include/BIF_screen.h new file mode 100644 index 00000000000..36719af7aa2 --- /dev/null +++ b/source/blender/include/BIF_screen.h @@ -0,0 +1,137 @@ +/* replacement for screen.h */ +/* + * + * Leftovers here are actually editscreen.c thingies + * + * $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 ***** + */ + +#ifndef BIF_SCREEN_H +#define BIF_SCREEN_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* externs in editscreen.c */ +extern int displaysizex, displaysizey; +extern struct ScrArea *curarea; + +struct View3D; +struct bScreen; +struct ScrArea; +struct ScrVert; +struct ScrEdge; +struct ListBase; + +struct View3D *find_biggest_view3d(void); +struct ScrArea *find_biggest_area_of_type(int spacecode); +struct ScrArea *find_biggest_area(void); + +void scrarea_queue_redraw(struct ScrArea *area); +void scrarea_queue_winredraw(struct ScrArea *area); +void scrarea_queue_headredraw(struct ScrArea *area); + +int blender_test_break(void); + +void duplicate_screen(void); +void init_screen_cursors(void); +void set_timecursor(int nr); +void waitcursor(int val); +void wich_cursor(struct ScrArea *sa); +void setcursor_space(int spacetype, short cur); +void set_g_activearea(struct ScrArea *sa); +void getmouseco_sc(short *mval); +void getmouseco_areawin(short *mval); +void getmouseco_headwin(short *mval); +int qtest(void); +int anyqtest(void); +void areawinset(short win); +void headerbox(struct ScrArea *sa); +void defheaddraw(void); +void defheadchange(void); +unsigned short winqtest(struct ScrArea *sa); +unsigned short headqtest(struct ScrArea *sa); +void winqdelete(struct ScrArea *sa); +void winqclear(struct ScrArea *sa); +void addqueue(short win, unsigned short event, short val); +void addafterqueue(short win, unsigned short event, short val); +void add_readfile_event(char *filename); +short ext_qtest(void); +unsigned short extern_qread(short *val); +unsigned short extern_qread_ext(short *val, char *ascii); + +extern void markdirty_all(void); // also sets redraw event +extern void markdirty_all_back(void); +extern void markdirty_win_back(short winid); + +void screen_swapbuffers(void); +void set_debug_swapbuffers_ovveride(struct bScreen *sc, int mode); +int is_allowed_to_change_screen(struct bScreen *newp); +void splash(void * data, int datasizei, char * string); +void screen_delayed_undo_push(char *name); +void screenmain(void); +void getdisplaysize(void); +void setprefsize(int stax, int stay, int sizx, int sizy, int maximized); +void calc_arearcts(struct ScrArea *sa); +void resize_screen(int x, int y, int w, int h); +struct ScrArea *closest_bigger_area(void); +int mywinopen(int mode, short posx, short posy, short sizex, short sizey); +void setscreen(struct bScreen *sc); +void area_fullscreen(void); +int select_area(int spacetype); +struct bScreen *default_twosplit(void); +void initscreen(void); +void unlink_screen(struct bScreen *sc); +void reset_autosave(void); +int area_is_active_area(struct ScrArea *area); +void draw_area_emboss(struct ScrArea *sa); + +void headerprint(char *str); + +/* ******* handlers ****** */ +void add_screenhandler(struct bScreen *sc, short eventcode, short val); +void rem_screenhandler(struct bScreen *sc, short eventcode); +int do_screenhandlers(struct bScreen *sc); +int has_screenhandler(struct bScreen *sc, short eventcode); + + /***/ + +/* return all layers of all 3d windows in a screen */ +unsigned int screen_view3d_layers(void); + +#ifdef __cplusplus +} +#endif + +#endif /* BIF_SCREEN_H */ + diff --git a/source/blender/include/BIF_space.h b/source/blender/include/BIF_space.h new file mode 100644 index 00000000000..855773b3497 --- /dev/null +++ b/source/blender/include/BIF_space.h @@ -0,0 +1,148 @@ +/** + * $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 ***** + */ + +#ifndef BIF_SPACE_H +#define BIF_SPACE_H + +struct ListBase; +struct ScrArea; +struct SpaceButs; +struct View2D; +struct BWinEvent; +struct SpaceOops; + +#define REMAKEIPO 1 +#define OOPS_TEST 2 + +#define BUT_HORIZONTAL 1 +#define BUT_VERTICAL 2 + +/* is hardcoded in DNA_space_types.h */ +#define SPACE_MAXHANDLER 8 + +/* view3d handler codes */ +#define VIEW3D_HANDLER_BACKGROUND 1 +#define VIEW3D_HANDLER_PROPERTIES 2 +#define VIEW3D_HANDLER_OBJECT 3 +#define VIEW3D_HANDLER_PREVIEW 4 +#define VIEW3D_HANDLER_MULTIRES 5 + +/* ipo handler codes */ +#define IPO_HANDLER_PROPERTIES 20 + +/* image handler codes */ +#define IMAGE_HANDLER_PROPERTIES 30 +#define IMAGE_HANDLER_PAINT 31 +#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 + +/* nla handler codes */ +#define NLA_HANDLER_PROPERTIES 50 + +/* 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 +#define B_NAME_THEME 3303 +#define B_THEMECOL 3304 +#define B_UPDATE_THEME 3305 +#define B_CHANGE_THEME 3306 +#define B_THEME_COPY 3307 +#define B_THEME_PASTE 3308 +#define B_UPDATE_THEME_ICONS 3309 + +#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); +void scrarea_do_headdraw (struct ScrArea *sa); +void scrarea_do_headchange (struct ScrArea *sa); + +/* space.c */ +extern void add_blockhandler(struct ScrArea *sa, short eventcode, short action); +extern void rem_blockhandler(struct ScrArea *sa, short eventcode); +extern void toggle_blockhandler(struct ScrArea *sa, short eventcode, short action); + +extern void space_set_commmandline_options(void); +extern void allqueue(unsigned short event, short val); +extern void allspace(unsigned short event, short val); +extern void copy_view3d_lock(short val); +extern void drawemptyspace(struct ScrArea *sa, void *spacedata); +extern void drawinfospace(struct ScrArea *sa, void *spacedata); +extern void duplicatespacelist(struct ScrArea *area, struct ListBase *lb1, struct ListBase *lb2); +extern void extern_set_butspace(int fkey, int do_cycle); +extern void force_draw(int header); +extern void force_draw_all(int header); +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 init_v2d_oops(struct ScrArea *, struct SpaceOops *); +extern void initipo(struct ScrArea *sa); +extern void newspace(struct ScrArea *sa, int type); +extern void set_rects_butspace(struct SpaceButs *buts); +extern void test_butspace(void); +extern void start_game(void); +extern void select_object_grouped(short nr); +extern void join_menu(void); + +extern void BIF_undo_push(char *str); +extern void BIF_undo(void); +extern void BIF_redo(void); +extern void BIF_undo_menu(void); + +#if 0 +//#ifdef _WIN32 // FULLSCREEN +extern void mainwindow_toggle_fullscreen(int fullscreen); +#endif + +extern void mainwindow_set_filename_to_title(char *title); +extern void mainwindow_raise(void); +extern void mainwindow_make_active(void); +extern void mainwindow_close(void); + +#endif + diff --git a/source/blender/include/BIF_spacetypes.h b/source/blender/include/BIF_spacetypes.h new file mode 100644 index 00000000000..6125cfd5926 --- /dev/null +++ b/source/blender/include/BIF_spacetypes.h @@ -0,0 +1,67 @@ +/** + * $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 ***** + */ + +struct ScrArea; +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); + + /***/ + +SpaceType* spacetype_new (char *name); + +void spacetype_set_winfuncs (SpaceType *st, SpacePrefetchDrawFP prefetch, SpaceDrawFP draw, SpaceChangeFP change, SpaceHandleFP handle); + + /***/ + +SpaceType *spaceaction_get_type (void); +SpaceType *spacebuts_get_type (void); +SpaceType *spacefile_get_type (void); +SpaceType *spaceimage_get_type (void); +SpaceType *spaceimasel_get_type (void); +SpaceType *spaceinfo_get_type (void); +SpaceType *spaceipo_get_type (void); +SpaceType *spacenla_get_type (void); +SpaceType *spaceoops_get_type (void); +SpaceType *spaceseq_get_type (void); +SpaceType *spacesound_get_type (void); +SpaceType *spacetext_get_type (void); +SpaceType *spacescript_get_type (void); +SpaceType *spaceview3d_get_type (void); +SpaceType *spacetime_get_type (void); +SpaceType *spacenode_get_type (void); + diff --git a/source/blender/include/BIF_tbcallback.h b/source/blender/include/BIF_tbcallback.h new file mode 100644 index 00000000000..98aebf5c863 --- /dev/null +++ b/source/blender/include/BIF_tbcallback.h @@ -0,0 +1,42 @@ +/* $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 *****/ + +/* defines callback structure for toolbox menu */ +typedef struct _TBcallback { + char *desc; + char *key; + void (*cb)(int v); /* callback function takes value */ + int val; +} TBcallback; + +typedef TBcallback * (*Tbox_callbackfunc)(int l, int x); +void tboxSetCallback(Tbox_callbackfunc f); + diff --git a/source/blender/include/BIF_toets.h b/source/blender/include/BIF_toets.h new file mode 100644 index 00000000000..f5a435d3d50 --- /dev/null +++ b/source/blender/include/BIF_toets.h @@ -0,0 +1,41 @@ +/** + * $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 ***** + */ + +#ifndef BIF_TOETS_H +#define BIF_TOETS_H + +int blenderqread(unsigned short event, short val); +void persptoetsen(unsigned short event); /* dutch rules man */ +int untitled(char *name); + +#endif + diff --git a/source/blender/include/BIF_toolbox.h b/source/blender/include/BIF_toolbox.h new file mode 100644 index 00000000000..72867cbfa05 --- /dev/null +++ b/source/blender/include/BIF_toolbox.h @@ -0,0 +1,68 @@ +/* toolbox (SPACEKEY) related + * $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 ***** + */ + +#ifndef BIF_TOOLBOX_H +#define BIF_TOOLBOX_H + +/* toolbox.c */ +void asciitoraw (int ch, short unsigned int *event, short unsigned int *qual); + +void toolbox_n(void); +void toolbox_n_add(void); +void reset_toolbox(void); + +void notice (char *str, ...); +void error (char *fmt, ...); + +void error_libdata (void); + +int saveover (char *filename); +int okee (char *fmt, ...); + +short button (short *var, short min, short max, char *str); +short fbutton (float *var, float min, float max, float a1, float a2, char *str); +short sbutton (char *var, float min, float max, char *str); /* __NLA */ + +int movetolayer_buts (unsigned int *lay, char *title); +int movetolayer_short_buts (short *lay, char *title); + +void draw_numbuts_tip (char *str, int x1, int y1, int x2, int y2); +int do_clever_numbuts (char *name, int tot, int winevent); +void clever_numbuts_buts(void); +void add_numbut (int nr, int type, char *str, float min, float max, void *poin, char *tip); +void clever_numbuts (void); +void replace_names_but (void); + +void BIF_screendump(int fscreen); +void write_screendump(char *name); + +#endif diff --git a/source/blender/include/BIF_transform.h b/source/blender/include/BIF_transform.h new file mode 100644 index 00000000000..26900b06c52 --- /dev/null +++ b/source/blender/include/BIF_transform.h @@ -0,0 +1,108 @@ +/** + * $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 ***** + */ + +#ifndef BIF_TRANSFORM_H +#define BIF_TRANSFORM_H + +/* ******************** Macros & Prototypes *********************** */ + +/* MODE AND NUMINPUT FLAGS */ +#define TFM_INIT -1 +#define TFM_DUMMY 0 +#define TFM_TRANSLATION 1 +#define TFM_ROTATION 2 +#define TFM_RESIZE 3 +#define TFM_TOSPHERE 4 +#define TFM_SHEAR 5 +#define TFM_WARP 7 +#define TFM_SHRINKFATTEN 8 +#define TFM_TILT 9 +#define TFM_LAMP_ENERGY 10 +#define TFM_TRACKBALL 11 +#define TFM_PUSHPULL 12 +#define TFM_CREASE 13 +#define TFM_MIRROR 14 +#define TFM_BONESIZE 15 +#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 + +/* TRANSFORM CONTEXTS */ +#define CTX_NONE 0 +#define CTX_TEXTURE 1 +#define CTX_EDGE 2 +#define CTX_NO_PET 4 +#define CTX_TWEAK 8 + +void initTransform(int mode, int context); +void Transform(void); +void Mirror(short mode); + +/* Standalone call to get the transformation center corresponding to the current situation + * returns 1 if successful, 0 otherwise (usually means there's no selection) + * (if 0 is returns, *vec is unmodified) + * */ +int calculateTransformCenter(int centerMode, float *vec); + +struct TransInfo; +struct ScrArea; + +struct TransInfo * BIF_GetTransInfo(void); +void BIF_setSingleAxisConstraint(float vec[3], char *text); +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); + +/* Drawing callbacks */ +void BIF_drawConstraint(void); +void BIF_drawPropCircle(void); +void BIF_drawSnap(void); + +void BIF_getPropCenter(float *center); + +void BIF_TransformSetUndo(char *str); + +void BIF_selectOrientation(void); + +/* view3d manipulators */ +void initManipulator(int mode); +void ManipulatorTransform(); + +int BIF_do_manipulator(struct ScrArea *sa); +void BIF_draw_manipulator(struct ScrArea *sa); + +#endif + diff --git a/source/blender/include/BIF_usiblender.h b/source/blender/include/BIF_usiblender.h new file mode 100644 index 00000000000..e77d1e98487 --- /dev/null +++ b/source/blender/include/BIF_usiblender.h @@ -0,0 +1,54 @@ +/** + * $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 ***** + */ + +#ifndef BIF_USIBLENDER_H +#define BIF_USIBLENDER_H + +typedef struct RecentFile { + struct RecentFile *next, *prev; + char *filename; +} RecentFile; + +void exit_usiblender(void); + +void BIF_init(void); + +void BIF_read_file(char *name); +int BIF_read_homefile(int from_memory, int do_undo); +void BIF_read_autosavefile(void); + +void BIF_write_file(char *target); +void BIF_write_homefile(void); +void BIF_write_autosave(void); + +#endif + diff --git a/source/blender/include/BIF_verse.h b/source/blender/include/BIF_verse.h new file mode 100644 index 00000000000..d491316662d --- /dev/null +++ b/source/blender/include/BIF_verse.h @@ -0,0 +1,142 @@ +/** + * $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. + * + * Contributor(s): Jiri Hnidek. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +#ifdef WITH_VERSE + +#ifndef BIF_VERSE_H +#define BIF_VERSE_H + +#include "BKE_verse.h" +#include "DNA_meshdata_types.h" + +struct Object; + +struct EditMesh; +struct EditVert; +struct EditFace; +struct Mesh; +struct MVert; +struct Mface; + +/* verse_object.c */ +void unsubscribe_from_obj_node(struct VNode *vnode); +void unsubscribe_from_geom_node(struct VNode *vnode); +void unsubscribe_from_bitmap_node(struct VNode *vnode); + +void test_and_send_idbutton_cb(void *obj, void *ob_name); + +struct Object *create_object_from_verse_node(struct VNode *vnode); + +void b_verse_pop_node(struct VNode *vnode); +void b_verse_unsubscribe(VNode *vnode); +void b_verse_push_object(struct VerseSession *session, struct Object *ob); +void b_verse_delete_object(struct Object *ob); +void b_verse_ms_get(void); + +void post_transform_pos(struct VNode *vnode); +void post_transform_rot(struct VNode *vnode); +void post_transform_scale(struct VNode *vnode); + +/*void post_transform(struct VNode *vnode);*/ +void post_link_set(struct VLink *vlink); +void post_link_destroy(struct VLink *vlink); +void post_object_free_constraint(struct VNode *vnode); + +void b_verse_send_transformation(struct Object *ob); + +/* verse_mesh.c */ +void b_verse_send_vertex_delete(struct EditVert *eve); +void send_versevert_pos(struct VerseVert *vvert); + +void b_verse_send_face_delete(struct EditFace *efa); + +void sync_all_versefaces_with_editfaces(struct VNode *vnode); +void sync_all_verseverts_with_editverts(struct VNode *vnode); + +void createVerseVert(struct EditVert *ev); +void createVerseFace(struct EditFace *efa); + +void b_verse_duplicate_object(struct VerseSession *session, struct Object *ob, struct Object *n_ob); +struct VNode *create_geom_vnode_from_geom_vnode(struct VNode *vnode); +struct VNode *create_geom_vnode_data_from_editmesh(struct VerseSession *session, struct EditMesh *em); +struct VNode *create_geom_vnode_data_from_mesh(struct VerseSession *session, struct Mesh *me); + +void destroy_unused_geometry(struct VNode *vnode); +void destroy_binding_between_versemesh_and_editmesh(struct VNode *vnode); + +void destroy_versemesh(struct VNode *vnode); + +void unsubscribe_from_geom_node(struct VNode *vnode); + +void create_edit_mesh_from_geom_node(struct VNode *vnode); +struct Mesh *create_mesh_from_geom_node(struct VNode *vnode); +void create_meshdata_from_geom_node(struct Mesh *me, struct VNode *vnode); + +/* geometry post callback functions */ +void post_layer_create(struct VLayer *vlayer); +void post_layer_destroy(struct VLayer *vlayer); + +void post_vertex_create(struct VerseVert *vvert); +void post_vertex_set_xyz(struct VerseVert *vvert); +void post_vertex_delete(struct VerseVert *vvert); +void post_vertex_free_constraint(struct VerseVert *vvert); + +void post_polygon_set_uint8(struct VerseFace *vface); +void post_polygon_create(struct VerseFace *vface); +void post_polygon_set_corner(struct VerseFace *vface); +void post_polygon_delete(struct VerseFace *vface); +void post_polygon_free_constraint(struct VerseFace *vface); + +void post_geometry_free_constraint(struct VNode *vnode); + +/* verse_common.c */ +struct VerseSession *session_menu(void); +char *verse_client_name(void); + +void post_tag_change(struct VTag *vtag); +void post_taggroup_create(struct VTagGroup *vtaggroup); + +void post_node_create(struct VNode *vnode); +void post_node_destroy(struct VNode *vnode); +void post_node_name_set(struct VNode *vnode); + +void post_connect_accept(struct VerseSession *session); +void post_connect_terminated(struct VerseSession *session); +void post_connect_update(struct VerseSession *session); +void post_server_add(void); + +/* verse_image.c */ + +void sync_blender_image_with_verse_bitmap_node(struct VNode *vnode); +void post_bitmap_dimension_set(struct VNode *vnode); +void post_bitmap_layer_create(struct VBitmapLayer *vblayer); +void post_bitmap_layer_destroy(struct VBitmapLayer *vblayer); +void post_bitmap_tile_set(struct VBitmapLayer *vblayer, unsigned int xs, unsigned int ys); + +#endif + +#endif diff --git a/source/blender/include/BIF_writeavicodec.h b/source/blender/include/BIF_writeavicodec.h new file mode 100644 index 00000000000..5b8ccdce4e2 --- /dev/null +++ b/source/blender/include/BIF_writeavicodec.h @@ -0,0 +1,44 @@ +/** + * Functions for writing windows avi-format files. + * + * $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 ***** + * + */ + +#ifdef _WIN32 + +void start_avi_codec(RenderData *rd,int rectx, int recty ); +void append_avi_codec(int frame,int *pixels,int rectx, int recty); +void end_avi_codec(void); +int get_avicodec_settings(void); + +#endif + diff --git a/source/blender/include/BIF_writeimage.h b/source/blender/include/BIF_writeimage.h new file mode 100644 index 00000000000..70978a033c2 --- /dev/null +++ b/source/blender/include/BIF_writeimage.h @@ -0,0 +1,45 @@ +/** + * $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 ***** + */ + +#ifndef BIF_WRITEIMAGE_H +#define BIF_WRITEIMAGE_H + +struct ImBuf; +struct EnvMap; + +void BIF_save_rendered_image(char *name); +void BIF_save_rendered_image_fs(void); +void BIF_save_envmap(struct EnvMap *env, char *str); +void save_image_filesel_str(char *str); + +#endif + diff --git a/source/blender/include/BIF_writemovie.h b/source/blender/include/BIF_writemovie.h new file mode 100644 index 00000000000..8dab1d4e7f8 --- /dev/null +++ b/source/blender/include/BIF_writemovie.h @@ -0,0 +1,41 @@ +/** + * $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 ***** + */ + +#ifndef BIF_WRITEMOVIE_H +#define BIF_WRITEMOVIE_H + +void start_movie(void); +void append_movie(int fnum); +void end_movie(void); + +#endif + diff --git a/source/blender/include/BPI_script.h b/source/blender/include/BPI_script.h new file mode 100644 index 00000000000..80ac8b46900 --- /dev/null +++ b/source/blender/include/BPI_script.h @@ -0,0 +1,71 @@ +/** + * 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 new file mode 100644 index 00000000000..6c68ba79bb9 --- /dev/null +++ b/source/blender/include/BSE_drawimasel.h @@ -0,0 +1,60 @@ +/** + * $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 ***** + */ + +#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 drawimaselspace(struct ScrArea *sa, void *spacedata); +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 new file mode 100644 index 00000000000..07f116d8d67 --- /dev/null +++ b/source/blender/include/BSE_drawipo.h @@ -0,0 +1,76 @@ +/** + * $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 ***** + */ + +#ifndef BSE_DRAWIPO_H +#define BSE_DRAWIPO_H + +#define IN_2D_VERT_SCROLL(A) (BLI_in_rcti(&G.v2d->vert, A[0], A[1])) +#define IN_2D_HORIZ_SCROLL(A) (BLI_in_rcti(&G.v2d->hor, A[0], A[1])) + +#define SELECT_REPLACE 1 +#define SELECT_ADD 2 +#define SELECT_SUBTRACT 4 +#define SELECT_INVERT 16 + +struct ScrArea; +struct EditIpo; +struct View2D; +struct rctf; + +void calc_ipogrid(void); +void draw_ipogrid(void); + +void areamouseco_to_ipoco (struct View2D *v2d, short *mval, float *x, float *y); +void ipoco_to_areaco (struct View2D *v2d, float *vec, short *mval); +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 test_view2d (struct View2D *v2d, int winx, int winy); +void calc_scrollrcts (struct ScrArea *sa, struct View2D *v2d, int winx, int winy); + +int in_ipo_buttons(void); +void draw_view2d_numbers_horiz(int drawframes); +void drawscroll(int disptype); +void drawipospace(struct ScrArea *sa, void *spacedata); + +void center_currframe(void); +void scroll_ipobuts(void); +int view2dzoom(unsigned short event); +int view2dmove(unsigned short event); +void view2dborder(void); + +struct EditIpo *select_proj_ipo(struct rctf *rectf, int event); + + +#endif /* BSE_DRAWIPO_H */ + diff --git a/source/blender/include/BSE_drawnla.h b/source/blender/include/BSE_drawnla.h new file mode 100644 index 00000000000..923d9a3f0df --- /dev/null +++ b/source/blender/include/BSE_drawnla.h @@ -0,0 +1,52 @@ +/** + * $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 ***** + */ + +#ifndef BSE_DRAWNLA_H +#define BSE_DRAWNLA_H + +struct ScrArea; +struct Base; +struct gla2DDrawInfo; +struct Object; + +void drawnlaspace(struct ScrArea *sa, void *spacedata); +void do_nlabuts(unsigned short event); + +int count_nla_levels(void); +int nla_filter (struct Base* base); + + /* changes the gla2d system to map the strip transform */ +void map_active_strip(struct gla2DDrawInfo *di, struct Object *ob, int restore); + + +#endif /* BSE_DRAWNLA */ + diff --git a/source/blender/include/BSE_drawoops.h b/source/blender/include/BSE_drawoops.h new file mode 100644 index 00000000000..43e1dee5943 --- /dev/null +++ b/source/blender/include/BSE_drawoops.h @@ -0,0 +1,50 @@ +/** + * $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 ***** + */ + +#ifndef BSE_DRAWOOPS_H +#define BSE_DRAWOOPS_H + +struct ScrArea; +struct Oops; + +void boundbox_oops(short sel); +void give_oopslink_line(struct Oops *oops, struct OopsLink *ol, float *v1, float *v2); +void draw_oopslink(struct Oops *oops); +void draw_icon_oops(float *co, short type); +void mysbox(float x1, float y1, float x2, float y2); +unsigned int give_oops_color(short type, short sel, unsigned int *border); +void calc_oopstext(char *str, float *v1); +void draw_oops(struct Oops *oops); +void drawoopsspace(struct ScrArea *sa, void *spacedata); + +#endif /* BSE_DRAWOOPS */ + diff --git a/source/blender/include/BSE_drawview.h b/source/blender/include/BSE_drawview.h new file mode 100644 index 00000000000..9c577746da9 --- /dev/null +++ b/source/blender/include/BSE_drawview.h @@ -0,0 +1,88 @@ +/** + * $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 ***** + */ + +#ifndef BSE_DRAWVIEW_H +#define BSE_DRAWVIEW_H + +struct Object; +struct BGpic; +struct rctf; +struct ScrArea; +struct ImBuf; + +void default_gl_light(void); +void init_gl_stuff(void); +void circf(float x, float y, float rad); +void circ(float x, float y, float rad); + +void do_viewbuts(unsigned short event); + +/* View3DAfter->type */ +#define V3D_XRAY 1 +#define V3D_TRANSP 2 +void add_view3d_after(struct View3D *v3d, struct Base *base, int type); + +void backdrawview3d(int test); +void check_backbuf(void); +unsigned int sample_backbuf(int x, int y); +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); + +int update_time(void); +void calc_viewborder(struct View3D *v3d, struct rctf *viewborder_r); +void view3d_set_1_to_1_viewborder(struct View3D *v3d); + +int view3d_test_clipping(struct View3D *v3d, float *vec); +void view3d_set_clipping(struct View3D *v3d); +void view3d_clr_clipping(void); + +void sumo_callback(void *obp); +void init_anim_sumo(void); +void update_anim_sumo(void); +void end_anim_sumo(void); + +void inner_play_anim_loop(int init, int mode); +int play_anim(int mode); + +void make_axis_color(char *col, char *col2, char axis); + +/* SMOOTHVIEW */ +void smooth_view(struct View3D *v3d, float *ofs, float *quat, float *dist, float *lens); +void smooth_view_to_camera(struct View3D *v3d); +void view_settings_from_ob(struct Object *ob, float *ofs, float *quat, float *dist, float *lens); +void object_view_settings(struct Object *ob, float *lens, float *clipsta, float *clipend); + +#endif /* BSE_DRAWVIEW_H */ + diff --git a/source/blender/include/BSE_edit.h b/source/blender/include/BSE_edit.h new file mode 100644 index 00000000000..048d4d012b2 --- /dev/null +++ b/source/blender/include/BSE_edit.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) 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 ***** + */ + +#ifndef BSE_EDIT_H +#define BSE_EDIT_H + +struct Object; +struct rcti; + +int get_border(struct rcti *rect, short col); +void countall(void); +void snapmenu(void); +void mergemenu(void); +void delete_context_selected(void); +void duplicate_context_selected(void); +void toggle_shading(void); +int minmax_verts(float *min, float *max); + +void snap_sel_to_grid(void); +void snap_sel_to_curs(void); +void snap_curs_to_grid(void); +void snap_curs_to_sel(void); +void snap_to_center(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..48f0bc39ffc --- /dev/null +++ b/source/blender/include/BSE_editaction_types.h @@ -0,0 +1,77 @@ +/** + * $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 */ +#define ALE_NONE 0 +#define ALE_IPO 1 +#define ALE_ICU 2 + +/* 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 */ + + 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 */ +#define ACTFILTER_VISIBLE 0x001 /* should channels be visible */ +#define ACTFILTER_SEL 0x002 /* should channels be selected */ +#define ACTFILTER_FOREDIT 0x004 /* does editable status matter */ +#define ACTFILTER_CHANNELS 0x008 /* do we only care that it is a channel */ +#define ACTFILTER_IPOKEYS 0x010 /* only channels referencing ipo's */ +#define ACTFILTER_ONLYICU 0x020 /* only reference ipo-curves */ +#define ACTFILTER_FORDRAWING 0x040 /* make list for interface drawing */ + +/* Action Editor - Main Data types */ +#define ACTCONT_NONE 0 +#define ACTCONT_ACTION 1 +#define ACTCONT_SHAPEKEY 2 + +#endif diff --git a/source/blender/include/BSE_editipo.h b/source/blender/include/BSE_editipo.h new file mode 100644 index 00000000000..37cae858656 --- /dev/null +++ b/source/blender/include/BSE_editipo.h @@ -0,0 +1,178 @@ +/** + * $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 ***** + */ + +#ifndef BSE_EDITIPO_H +#define BSE_EDITIPO_H + +struct TransVert; +struct IpoCurve; +struct BezTriple; +struct Ipo; +struct EditIpo; +struct ID; +struct ListBase; +struct Object; +struct IpoKey; +struct TransOb; +struct Tex; +struct TransInfo; + +void remake_object_ipos(struct Object *ob); +char *getname_ac_ei(int nr); +char *getname_co_ei(int nr); +char *getname_ob_ei(int nr, int colipo); +char *getname_mtex_ei(int nr); +char *getname_tex_ei(int nr); +char *getname_mat_ei(int nr); +char *getname_world_ei(int nr); +char *getname_seq_ei(int nr); +char *getname_cu_ei(int nr); +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_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, 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); + +unsigned int ipo_rainbow(int cur, int tot); + +void test_editipo(int doit); +void get_status_editipo(void); +void update_editipo_flags(void); +void set_editflag_editipo(void); +void ipo_toggle_showkey(void); +void swap_selectall_editipo(void); +void swap_visible_editipo(void); +void deselectall_editipo(void); + +void move_to_frame(void); +void do_ipowin_buts(short event); +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 *); +int texchannel_to_adrcode(int channel); + +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); +void clean_ipo_curve(struct IpoCurve *icu); +void smooth_ipo(void); +void join_ipo_menu(void); +void join_ipo(int mode); +void ipo_snap_menu(void); +void ipo_snap(short event); +void ipo_mirror_menu(void); +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); +void del_ipoCurve ( struct IpoCurve * icu ); +void free_ipocopybuf(void); +void copy_editipo(void); +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, short fast); +void insertkey_smarter(ID *id, int blocktype, char *actname, char *constname, int adrcode); +void insertkey_editipo(void); +void common_insertkey(void); +void free_ipokey(struct ListBase *lb); +void add_to_ipokey(struct ListBase *lb, struct BezTriple *bezt, int nr, int len); +void make_ipokey(void); +void make_ipokey_spec(struct ListBase *lb, struct Ipo *ipo); +void make_ipokey_transform(struct Object *ob, struct ListBase *lb, int sel); +void update_ipokey_val(void); +void set_tob_old(float *old, float *poin); +void set_ipo_pointers_transob(struct IpoKey *ik, struct TransOb *tob); +void nextkey(struct ListBase *elems, int dir); +void movekey_ipo(int dir); +void movekey_obipo(int dir); +void nextkey_ipo(int dir); +void nextkey_obipo(int dir); +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 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_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_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); +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 *)); +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); + +/* callbacks */ +int select_bezier_add(struct BezTriple *bezt); +int select_bezier_subtract(struct BezTriple *bezt); +int select_bezier_invert(struct BezTriple *bezt); + +#endif /* BSE_EDITIPO_H */ + diff --git a/source/blender/include/BSE_editipo_types.h b/source/blender/include/BSE_editipo_types.h new file mode 100644 index 00000000000..5076b36083a --- /dev/null +++ b/source/blender/include/BSE_editipo_types.h @@ -0,0 +1,53 @@ +/** + * $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 ***** + */ + +#ifndef BSE_EDITIPO_TYPES_H +#define BSE_EDITIPO_TYPES_H + +struct BezTriple; + +typedef struct IpoKey { + struct IpoKey *next, *prev; + short flag, rt; + float val; + struct BezTriple **data; +} IpoKey; + +typedef struct EditIpo { + char name[32]; // same length as keyblock->name + IpoCurve *icu; + short adrcode, flag; + short disptype, rt; + unsigned int col; +} EditIpo; + +#endif /* BSE_EDITIPO_TYPES_H */ diff --git a/source/blender/include/BSE_editnla_types.h b/source/blender/include/BSE_editnla_types.h new file mode 100644 index 00000000000..434e87fbbc4 --- /dev/null +++ b/source/blender/include/BSE_editnla_types.h @@ -0,0 +1,41 @@ +/** + * $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 ***** + */ + +#ifndef BSE_EDITNLA_TYPES_H +#define BSE_EDITNLA_TYPES_H + +#define NLAWIDTH 196 +#define NLACHANNELHEIGHT 16 +#define NLACHANNELSKIP 1 + +#endif /* BSE_EDITNLA_TYPES_H */ + diff --git a/source/blender/include/BSE_filesel.h b/source/blender/include/BSE_filesel.h new file mode 100644 index 00000000000..a41eea32040 --- /dev/null +++ b/source/blender/include/BSE_filesel.h @@ -0,0 +1,66 @@ +/** + * $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 ***** + * + */ + +#ifndef BSE_FILESEL_H +#define BSE_FILESEL_H + +struct SpaceFile; +struct direntry; +struct ID; +struct ScrArea; +struct BWinEvent; + +void filesel_statistics(struct SpaceFile *sfile, int *totfile, int *selfile, float *totlen, float *sellen); +void test_flags_file(struct SpaceFile *sfile); +void sort_filelist(struct SpaceFile *sfile); +void read_dir(struct SpaceFile *sfile); +void freefilelist(struct SpaceFile *sfile); +void parent(struct SpaceFile *sfile); +void swapselect_file(struct SpaceFile *sfile); +void drawfilespace(struct ScrArea *sa, void *spacedata); + +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_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); + +void filesel_prevspace(void); +void free_filesel_spec(char *dir); +void winqreadfilespace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt); +void main_to_filelist(struct SpaceFile *sfile); + +void clever_numbuts_filesel(void); +#endif + diff --git a/source/blender/include/BSE_headerbuttons.h b/source/blender/include/BSE_headerbuttons.h new file mode 100644 index 00000000000..112517dbe7f --- /dev/null +++ b/source/blender/include/BSE_headerbuttons.h @@ -0,0 +1,158 @@ +/** + * $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 ***** + */ + +#ifndef BSE_HEADERBUTTONS_H +#define BSE_HEADERBUTTONS_H + +struct uiBlock; +struct ScrArea; +struct ID; +struct SpaceIpo; +struct Ipo; + +/* these used to be in blender/src/headerbuttons.c: */ +#define XIC 20 +#define YIC 20 + +int std_libbuttons(struct uiBlock *block, + short xco, short yco, int pin, short *pinpoin, + int browse, short id_code, short special, struct ID *id, struct ID *parid, + short *menupoin, int users, + int lib, int del, int autobut, int keepbut); + +char *windowtype_pup(void); + +int GetButStringLength(char *str); +void load_space_sound(char *str); +void load_sound_buttons(char *str); +/* end of declarations moved from old headerbuttons.c */ + +void update_for_newframe_muted(void); +void update_for_newframe_nodraw(int nosound); +void free_matcopybuf(void); +void clear_matcopybuf(void); +void write_vrml_fs(void); +void write_dxf_fs(void); +void write_stl_fs(void); +int buttons_do_unpack(void); +struct Scene *copy_scene(struct Scene *sce, int level); + +void buttons_active_id(struct ID **id, struct ID **idfrom); + +int start_progress_bar(void); +void end_progress_bar(void); +int progress_bar(float done, char *busy_info); + +void update_for_newframe(void); + +void action_buttons(void); +void buts_buttons(void); +void file_buttons(void); +void image_buttons(void); +void imasel_buttons(void); +void info_buttons(void); +void ipo_buttons(void); +void nla_buttons(void); +void oops_buttons(void); +void seq_buttons(void); +void sound_buttons(void); +void text_buttons(void); +void script_buttons(void); +void view3d_buttons(void); +void time_buttons(struct ScrArea *sa); +void node_buttons(struct ScrArea *sa); + +void do_global_buttons(unsigned short event); +void do_global_buttons2(short event); + +void do_action_buttons(unsigned short event); +void do_buts_buttons(short event); +void do_file_buttons(short event); +void do_image_buttons(unsigned short event); +void do_imasel_buttons(short event); +void do_info_buttons(unsigned short event); +void do_ipo_buttons(short event); +void do_layer_buttons(short event); +void do_nla_buttons(unsigned short event); +void do_oops_buttons(short event); +void do_seq_buttons(short event); +void do_sound_buttons(unsigned short event); +void do_text_buttons(unsigned short event); +void do_script_buttons(unsigned short event); +void do_view3d_buttons(short event); +void do_time_buttons(struct ScrArea *sa, unsigned short event); +void do_node_buttons(struct ScrArea *sa, unsigned short event); + +void do_headerbuttons(short event); + +/* header_ipo.c */ +void spaceipo_assign_ipo(struct SpaceIpo *si, struct Ipo *ipo); + +/* header_text.c */ +void do_text_editmenu_to3dmenu(void *arg, int event); +void do_text_formatmenu_convert(void *arg, int event); + +/* header_info.c */ +void do_info_add_meshmenu(void *arg, int event); +void do_info_add_curvemenu(void *arg, int event); +void do_info_add_surfacemenu(void *arg, int event); +void do_info_add_metamenu(void *arg, int event); +void do_info_add_lampmenu(void *arg, int event); +void do_info_addmenu(void *arg, int event); + +/* header_node.c */ +void do_node_addmenu(void *arg, int event); + +/* header_view3d.c */ +void do_view3d_select_objectmenu(void *arg, int event); +void do_view3d_select_object_groupedmenu(void *arg, int event); +void do_view3d_select_object_linkedmenu(void *arg, int event); +void do_view3d_select_object_layermenu(void *arg, int event); +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); +void do_view3d_transform_rotateaxismenu(void *arg, int event); +void do_view3d_transform_scaleaxismenu(void *arg, int event); +void do_view3d_object_mirrormenu(void *arg, int event); +void do_view3d_edit_mesh_normalsmenu(void *arg, int event); +void do_view3d_edit_mesh_verticesmenu(void *arg, int event); +void do_view3d_edit_mesh_edgesmenu(void *arg, int event); +void do_view3d_edit_mesh_facesmenu(void *arg, int event); +void do_view3d_edit_curve_segmentsmenu(void *arg, int event); +void do_view3d_edit_curve_showhidemenu(void *arg, int event); + +#endif /* BSE_HEADERBUTTONS_H */ diff --git a/source/blender/include/BSE_node.h b/source/blender/include/BSE_node.h new file mode 100644 index 00000000000..171a277e8e6 --- /dev/null +++ b/source/blender/include/BSE_node.h @@ -0,0 +1,137 @@ +/** + * $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 opt ion) 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) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL BLOCK ***** + */ + +#ifndef BSE_NODE_H +#define BSE_NODE_H + +/* ********** drawing sizes *********** */ +#define NODE_DY 20 +#define NODE_DYS 10 +#define NODE_SOCKSIZE 5 +#define BASIS_RAD 8.0f +#define HIDDEN_RAD 15.0f + + +struct SpaceNode; +struct bNode; +struct bNodeTree; +struct Material; +struct ID; +struct Scene; +struct Image; +struct ImageUser; + +/* ************* API for editnode.c *********** */ + + /* helper calls to retreive active context for buttons, does groups */ +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 snode_tag_dirty(struct SpaceNode *snode); + +void snode_set_context(struct SpaceNode *snode); + +void snode_home(struct ScrArea *sa, struct SpaceNode *snode); +void snode_zoom_in(struct ScrArea *sa); +void snode_zoom_out(struct ScrArea *sa); + +void node_deselectall(struct SpaceNode *snode, int swap); +void node_border_select(struct SpaceNode *snode); + +void node_delete(struct SpaceNode *snode); +void node_make_group(struct SpaceNode *snode); +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 clear_scene_in_nodes(struct Scene *sce); + +void node_transform_ext(int mode, int unused); +void node_shader_default(struct Material *ma); +void node_composit_default(struct Scene *scene); + +int node_has_hidden_sockets(struct bNode *node); + +struct bNode *node_add_node(struct SpaceNode *snode, int type, float locx, float locy); +void node_adduplicate(struct SpaceNode *snode); + +void snode_autoconnect(struct SpaceNode *snode, struct bNode *node_to, int flag); +void node_select_linked(struct SpaceNode *snode, int out); + +struct ImageUser *ntree_get_active_iuser(struct bNodeTree *ntree); + +void imagepaint_composite_tags(struct bNodeTree *ntree, struct Image *image, struct ImageUser *iuser); + + + +/* ************* drawnode.c *************** */ +struct SpaceNode; +struct bNodeLink; +void node_draw_link(struct SpaceNode *snode, struct bNodeLink *link); + +void init_node_butfuncs(void); + +/* 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); +//void node_texmap_cb(void *texmap_v, void *unused_v); +//void node_new_mat_cb(void *ntree_v, void *node_v); +//void node_browse_mat_cb(void *ntree_v, void *node_v); +//void node_mat_alone_cb(void *node_v, void *unused); + + +//void node_browse_image_cb(void *ntree_v, void *node_v); +//void node_active_cb(void *ntree_v, void *node_v); +//void node_image_type_cb(void *node_v, void *unused); +//char *node_image_type_pup(void); +//char *layer_menu(struct RenderResult *rr); +//void image_layer_cb(void *ima_v, void *iuser_v); +//void set_render_layers_title(void *node_v, void *unused); +//char *scene_layer_menu(struct Scene *sce); +//void node_browse_scene_cb(void *ntree_v, void *node_v); + + +//int node_buts_curvevec(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_curvecol(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_rgb(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_texture(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_valtorgb(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_value(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_mix_rgb(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_group(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_normal(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr); +//int node_buts_math(struct uiBlock *block, struct bNodeTree *ntree, struct bNode *node, struct rctf *butr) ; + + +/* ************* Shader nodes ***************** */ + + +#endif + diff --git a/source/blender/include/BSE_seqaudio.h b/source/blender/include/BSE_seqaudio.h new file mode 100644 index 00000000000..985c4be73d2 --- /dev/null +++ b/source/blender/include/BSE_seqaudio.h @@ -0,0 +1,53 @@ +/** + * ***** 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) 2003 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 ***** + * + */ + +#ifndef BSE_SEQAUDIO_H +#define BSE_SEQAUDIO_H + +#include "SDL.h" +/* muha, we don't init (no SDL_main)! */ +#ifdef main +# undef main +#endif + +#include "DNA_sound_types.h" + +void audio_mixdown(); +void audio_makestream(bSound *sound); +void audiostream_play(Uint32 startframe, Uint32 duration, int mixdown); +void audiostream_fill(Uint8* mixdown, int len); +void audiostream_start(Uint32 frame); +void audiostream_scrub(Uint32 frame); +void audiostream_stop(void); +int audiostream_pos(void); + +#endif + diff --git a/source/blender/include/BSE_seqeffects.h b/source/blender/include/BSE_seqeffects.h new file mode 100644 index 00000000000..2962bbf3676 --- /dev/null +++ b/source/blender/include/BSE_seqeffects.h @@ -0,0 +1,96 @@ +/** + * $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): Peter Schlaile < peter [at] schlaile [dot] de > + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + * + */ + +#ifndef BSE_SEQUENCE_EFFECTS_H +#define BSE_SEQUENCE_EFFECTS_H + +/* Wipe effect */ +enum {DO_SINGLE_WIPE, DO_DOUBLE_WIPE, DO_BOX_WIPE, DO_CROSS_WIPE, + DO_IRIS_WIPE,DO_CLOCK_WIPE}; + +struct Sequence; +struct ImBuf; + +struct SeqEffectHandle { + /* constructors & destructor */ + /* init & init_plugin are _only_ called on first creation */ + void (*init)(struct Sequence *seq); + void (*init_plugin)(struct Sequence * seq, const char * fname); + + /* number of input strips needed + (called directly after construction) */ + int (*num_inputs)(); + + /* load is called first time after readblenfile in + get_sequence_effect automatically */ + void (*load)(struct Sequence *seq); + + /* duplicate */ + void (*copy)(struct Sequence *dst, struct Sequence * src); + + /* destruct */ + void (*free)(struct Sequence *seq); + + /* returns: -1: no input needed, + 0: no early out, + 1: out = ibuf1, + 2: out = ibuf2 */ + int (*early_out)(struct Sequence *seq, + float facf0, float facf1); + + /* stores the y-range of the effect IPO */ + void (*store_icu_yrange)(struct Sequence * seq, + short adrcode, float * ymin, float * ymax); + + /* stores the default facf0 and facf1 if no IPO is present */ + void (*get_default_fac)(struct Sequence * seq, int cfra, + float * facf0, float * facf1); + + /* execute the effect + sequence effects are only required to either support + float-rects or byte-rects + (mixed cases are handled one layer up...) */ + + void (*execute)(struct Sequence *seq, int cfra, + float facf0, float facf1, + int x, int y, + struct ImBuf *ibuf1, struct ImBuf *ibuf2, + struct ImBuf *ibuf3, struct ImBuf *out); +}; + +struct SeqEffectHandle get_sequence_effect(struct Sequence * seq); +int get_sequence_effect_num_inputs(int seq_type); +void sequence_effect_speed_rebuild_map(struct Sequence * seq, int force); + +#endif + diff --git a/source/blender/include/BSE_seqscopes.h b/source/blender/include/BSE_seqscopes.h new file mode 100644 index 00000000000..3dd5e495928 --- /dev/null +++ b/source/blender/include/BSE_seqscopes.h @@ -0,0 +1,38 @@ +/** + * $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. + * + * Author: Peter Schlaile < peter [at] schlaile [dot] de > + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + +#ifndef BSE_SEQUENCE_SCOPES_H +#define BSE_SEQUENCE_SCOPES_H + +struct ImBuf; + +struct ImBuf *make_waveform_view_from_ibuf(struct ImBuf * ibuf); +struct ImBuf *make_vectorscope_view_from_ibuf(struct ImBuf * ibuf); + +#endif + diff --git a/source/blender/include/BSE_sequence.h b/source/blender/include/BSE_sequence.h new file mode 100644 index 00000000000..ff79d417537 --- /dev/null +++ b/source/blender/include/BSE_sequence.h @@ -0,0 +1,85 @@ +/** + * $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 ***** + * + */ + +#ifndef BSE_SEQUENCE_H +#define BSE_SEQUENCE_H + + +struct PluginSeq; +struct StripElem; +struct Strip; +struct Sequence; +struct ListBase; +struct Editing; +struct ImBuf; +struct Scene; + +void free_stripdata(int len, struct StripElem *se); +void free_strip(struct Strip *strip); +void new_stripdata(struct Sequence *seq); +void free_sequence(struct Sequence *seq); +void build_seqar(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq); +void free_editing(struct Editing *ed); +void calc_sequence(struct Sequence *seq); +void calc_sequence_disp(struct Sequence *seq); +void sort_seq(void); +void clear_scene_in_allseqs(struct Scene *sce); + +int evaluate_seq_frame(int cfra); +struct StripElem *give_stripelem(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)*/ + +/* 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_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); +void free_imbuf_seq(void); + +void update_changed_seq_and_deps(struct Sequence *seq, int len_change, int ibuf_change); + +/* still bad level call... */ +struct RenderResult; +void do_render_seq(struct RenderResult *rr, int cfra); + + +#endif + diff --git a/source/blender/include/BSE_time.h b/source/blender/include/BSE_time.h new file mode 100644 index 00000000000..d5cff9f5e5f --- /dev/null +++ b/source/blender/include/BSE_time.h @@ -0,0 +1,71 @@ +/** + * $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 opt ion) 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) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +#ifndef BSE_TIME_H +#define BSE_TIME_H + +struct ListBase; +struct View2D; + +/* ******** Markers - General Api ********* */ +void add_marker(int frame); +void duplicate_marker(void); +void remove_marker(void); +void rename_marker(void); +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); + +void nextprev_marker(short dir); +void get_minmax_markers(short sel, float *first, float *last); +int find_nearest_marker_time(float dx); + +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(int lines); +TimeMarker *get_frame_marker(int frame); + +/* ******** Animation - Preview Range ************* */ +void anim_previewrange_set(void); +void anim_previewrange_clear(void); + +void draw_anim_preview_timespace(void); + +/* *********** TimeLine Specific ***************/ +void timeline_frame_to_center(void); +void nextprev_timeline_key(short dir); + +#endif + diff --git a/source/blender/include/BSE_trans_types.h b/source/blender/include/BSE_trans_types.h new file mode 100644 index 00000000000..9c8b9e5595f --- /dev/null +++ b/source/blender/include/BSE_trans_types.h @@ -0,0 +1,90 @@ +/** + * $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 ***** + */ + +#ifndef BSE_TRANS_TYPES_H +#define BSE_TRANS_TYPES_H + +struct Object; +struct MDeformVert; +struct ColorBand; + +typedef struct TransOb { + float *loc; + float oldloc[9]; + float *eff; + float oldeff[3]; + float *rot; + float oldrot[12]; + float olddrot[3]; + float *quat; + float oldquat[16]; + float olddquat[4]; + float *size; + float oldsize[12]; + float olddsize[3]; + float obmat[3][3]; + float obinv[3][3]; + float parmat[3][3]; + float parinv[3][3]; + float obvec[3]; + int flag; /* keys */ + float *locx, *locy, *locz; + float *rotx, *roty, *rotz; + float *quatx, *quaty, *quatz, *quatw; + float *sizex, *sizey, *sizez; + /* __NLA */ + float axismat[3][3]; /* Restmat of object (for localspace transforms) */ + void *data; /* Arbitrary data */ + /* end __NLA */ + struct Object *ob; +} TransOb; + +typedef struct TransVert { + float *loc; + float oldloc[3], fac; + float *val, oldval; + int flag; + float *nor; +} TransVert; + +typedef struct VPaint { + float r, g, b, a; + float size; /* of brush */ + float gamma, mul; + short mode, flag; + int tot, pad; /* allocation size of prev buffers */ + unsigned int *vpaint_prev; /* previous mesh colors */ + struct MDeformVert *wpaint_prev; /* previous vertex weights */ +} VPaint; + +#endif /* BSE_TRANS_TYPES_H */ + diff --git a/source/blender/include/BSE_types.h b/source/blender/include/BSE_types.h new file mode 100644 index 00000000000..591ea2f5168 --- /dev/null +++ b/source/blender/include/BSE_types.h @@ -0,0 +1,69 @@ +/** + * $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 ***** + */ +/* forward declarations for some prototype header */ +/* these may wildly occur in other header files, too */ + +struct BGpic; +struct SpaceText; +struct Oops; +struct OopsLink; +struct uiBlock; +struct BoundBox; +struct Image; +struct ImBuf; +struct SpaceImaSel; +struct Sequence; +struct Scene; +struct IpoCurve; +struct Ipo; +struct IpoKey; +struct Mesh; +struct MTFace; +struct Object; +struct TransOb; +struct TransVert; +struct BPoint; +struct BezTriple; + +struct Nurb; + +struct EditFace; +struct EditVert; +struct EditEdge; +struct EditIpo; + +struct bArmature; +struct Bone; + +/* interface crap */ +struct uiBut; + diff --git a/source/blender/include/BSE_view.h b/source/blender/include/BSE_view.h new file mode 100644 index 00000000000..4e27f9f1a81 --- /dev/null +++ b/source/blender/include/BSE_view.h @@ -0,0 +1,97 @@ +/** + * $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 ***** + * protos for view.c -- not complete + */ + +#ifndef BSE_VIEW_H +#define BSE_VIEW_H + +struct Object; +struct BoundBox; +struct View3D; +struct ScrArea; + +typedef struct ViewDepths { + unsigned short w, h; + float *depths; + double depth_range[2]; + + char damaged; +} ViewDepths; + +#define PERSP_WIN 0 +#define PERSP_VIEW 1 +#define PERSP_STORE 2 + +void persp_general(int a); +void persp(int a); + +/* note, the define below is still used for shorts, to calc distances... */ +#define IS_CLIPPED 12000 +void view3d_get_object_project_mat(struct ScrArea *area, struct Object *ob, float pmat[4][4], float vmat[4][4]); +void view3d_project_float(struct ScrArea *area, float *vec, float *adr, float mat[4][4]); +void view3d_project_short_clip(struct ScrArea *area, float *vec, short *adr, float projmat[4][4], float viewmat[4][4]); +void view3d_project_short_noclip(struct ScrArea *area, float *vec, short *adr, float mat[4][4]); + +void initgrabz(float x, float y, float z); +void window_to_3d(float *vec, short mx, short my); +void project_short(float *vec, short *adr); +void project_short_noclip(float *vec, short *adr); +void project_int(float *vec, int *adr); +void project_float(float *vec, float *adr); + +int boundbox_clip(float obmat[][4], struct BoundBox *bb); +void fdrawline(float x1, float y1, float x2, float y2); +void fdrawbox(float x1, float y1, float x2, float y2); +void sdrawline(short x1, short y1, short x2, short y2); +void sdrawbox(short x1, short y1, short x2, short y2); +void calctrackballvecfirst(struct rcti *area, short *mval, float *vec); +void calctrackballvec(struct rcti *area, short *mval, float *vec); +void viewmove(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); + +void obmat_to_viewmat(struct Object *ob, short smooth); +void setviewmatrixview3d(void); +float *give_cursor(void); +unsigned int free_localbit(void); +void initlocalview(void); +void centerview(void); +void restore_localviewdata(struct View3D *vd); +void endlocalview(struct ScrArea *sa); +void view3d_home(int center); +short view3d_opengl_select(unsigned int *buffer, unsigned int buffsize, short x1, short y1, short x2, short y2); +void view3d_align_axis_to_vector(struct View3D *v3d, int axisidx, float vec[3]); + +#endif + diff --git a/source/blender/include/LOD_DependKludge.h b/source/blender/include/LOD_DependKludge.h new file mode 100644 index 00000000000..43034201b81 --- /dev/null +++ b/source/blender/include/LOD_DependKludge.h @@ -0,0 +1,40 @@ +/* + * $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 ***** + * Decimation file dependency fix (and kludge) + * Use together with a NAN_DECIMATIONTEST env.var. for Makefile-based linking + */ +#ifndef LOD_DEPENDKLUDGE_H +#define LOD_DEPENDKLUDGE_H + +#define NAN_DECIMATION + +#endif //LOD_DEPENDKLUDGE_H + diff --git a/source/blender/include/blendef.h b/source/blender/include/blendef.h new file mode 100644 index 00000000000..4c42ba85968 --- /dev/null +++ b/source/blender/include/blendef.h @@ -0,0 +1,460 @@ +/* $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 ***** + */ +#ifndef BLENDEF_H +#define BLENDEF_H + + +/* **************** MAX ********************* */ + +#define MAXFRAME 300000 +#define MAXFRAMEF 300000.0f + +#define MINFRAME 1 +#define MINFRAMEF 1.0 + +/* max length material array, 16 because of bits in matfrom */ +#define MAXPICKBUF 10000 +#define MAXSEQ 32 + +/* in buttons.c */ +#define MAX_EFFECT 20 + +#ifndef MAXFLOAT +#define MAXFLOAT ((float)3.40282347e+38) +#endif + +/* also fill in structs itself, dna cannot handle defines, duplicate with utildefines.h still */ +#ifndef FILE_MAXDIR +#define FILE_MAXDIR 160 +#define FILE_MAXFILE 80 +#endif + + +#include <float.h> + + + + +/* **************** GENERAL ********************* */ + +// return values + +#define RET_OK 0 +#define RET_ERROR 1 +#define RET_CANCEL 2 +#define RET_YES (1 == 1) +#define RET_NO (1 == 0) + +#if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__) +/* big endian */ +#define MAKE_ID2(c, d) ( (c)<<8 | (d) ) +#define MOST_SIG_BYTE 0 +#define BBIG_ENDIAN +#else +/* little endian */ +#define MAKE_ID2(c, d) ( (d)<<8 | (c) ) +#define MOST_SIG_BYTE 1 +#define BLITTLE_ENDIAN +#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)) +#define BASE_SELECTABLE(base) ((base->lay & G.vd->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0) +#define FIRSTBASE G.scene->base.first +#define LASTBASE G.scene->base.last +#define BASACT (G.scene->basact) +#define OBACT (BASACT? BASACT->object: 0) +#define ID_NEW(a) if( (a) && (a)->id.newid ) (a)= (void *)(a)->id.newid +#define ID_NEW_US(a) if( (a)->id.newid) {(a)= (void *)(a)->id.newid; (a)->id.us++;} +#define ID_NEW_US2(a) if( ((ID *)a)->newid) {(a)= ((ID *)a)->newid; ((ID *)a)->us++;} +#define CFRA (G.scene->r.cfra) +#define F_CFRA ((float)(G.scene->r.cfra)) +#define SFRA (G.scene->r.sfra) +#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)) + +/* psfont */ +#define FNT_PDRAW 1 +#define FNT_HAEBERLI 2 + +/* getbutton */ + +/* do_global_buttons(event) */ + +// (first event) +#define B_LOCAL_ALONE 20 + + +#define B_ACTLOCAL 24 /* __NLA */ +#define B_ACTALONE 25 /* __NLA */ +#define B_ARMLOCAL 26 /* __NLA */ +#define B_ARMALONE 27 /* __NLA */ + +#define B_WORLDLOCAL 28 +#define B_WORLDALONE 29 +#define B_LATTLOCAL 30 +#define B_MBALLLOCAL 31 +#define B_CAMERALOCAL 32 +#define B_OBLOCAL 33 +#define B_IPOLOCAL 34 +#define B_LAMPLOCAL 35 +#define B_MATLOCAL 36 +#define B_TEXLOCAL 37 +#define B_MESHLOCAL 38 +#define B_CURVELOCAL 39 + +#define B_LATTALONE 40 +#define B_MBALLALONE 41 +#define B_CAMERAALONE 42 +#define B_OBALONE 43 +#define B_IPOALONE 44 +#define B_LAMPALONE 45 +#define B_MATALONE 46 +#define B_TEXALONE 47 +#define B_MESHALONE 48 +#define B_CURVEALONE 49 + +/* EVENT < 50: alones en locals */ + +#define B_KEEPDATA 60 +#define B_CONSOLETOG 61 +#define B_DRAWINFO 62 +#define B_REDRCURW3D 63 +#define B_FLIPINFOMENU 64 +#define B_FLIPFULLSCREEN 65 +#define B_PLAINMENUS 66 + + +#define B_GLRESLIMITCHANGED 69 +#define B_SHOWSPLASH 70 +#define B_RESETAUTOSAVE 71 +#define B_SOUNDTOGGLE 72 +#define B_MIPMAPCHANGED 73 +#define B_CONSTRAINTBROWSE 74 /* __NLA */ +#define B_ACTIONDELETE 75 /* __NLA */ +#define B_ACTIONBROWSE 76 /* __NLA */ +#define B_IMAGEDELETE 77 +#define B_LTEXBROWSE 78 +#define B_MESHBROWSE 79 +#define B_EXTEXBROWSE 80 +#define B_LOADTEMP 81 +#define B_MATDELETE 82 +#define B_TEXDELETE 83 +#define B_IPODELETE 84 +#define B_WORLDDELETE 85 +#define B_WTEXBROWSE 86 +#define B_WORLDBROWSE 87 +#define B_IPOBROWSE 88 +#define B_NEWFRAME 89 +#define B_LAMPBROWSE 90 +#define B_MATBROWSE 91 +#define B_TEXBROWSE 92 +#define B_EDITBROWSE 93 +#define B_AUTOTEXNAME 94 +#define B_AUTOMATNAME 95 +#define B_MATLOCK 96 +#define B_IDNAME 97 +#define B_NEWSPACE 98 +#define B_FULL 99 +#define B_REDR 100 + + +/* VIEW3D: 100 */ +#define B_HOME 101 +#define B_LAY 102 +/* watch: codes 102-132 in in use for layers */ +#define B_AUTOKEY 139 +#define B_SCENELOCK 140 +#define B_LOCALVIEW 141 +#define B_U_CAPSLOCK 142 + +#define B_VIEWBUT 146 +#define B_PERSP 147 +#define B_PROPTOOL 148 +#define B_VIEWRENDER 149 +#define B_STARTGAME 150 + +#define B_MODESELECT 156 +#define B_AROUND 157 +#define B_SEL_VERT 158 +#define B_SEL_EDGE 159 +#define B_SEL_FACE 160 +#define B_MAN_TRANS 161 +#define B_MAN_ROT 162 +#define B_MAN_SCALE 163 + +/* IPO: 200 */ +#define B_IPOHOME 201 +#define B_IPOBORDER 202 +#define B_IPOCOPY 203 +#define B_IPOPASTE 204 +#define B_IPOCONT 205 +#define B_IPOEXTRAP 206 +#define B_IPOCYCLIC 207 +#define B_IPOMAIN 208 +#define B_IPOSHOWKEY 209 +#define B_IPOCYCLICX 210 + /* warn: also used for oops and seq */ +#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 + + +/* OOPS: 250 */ +#define B_OOPSHOME 251 +#define B_OOPSBORDER 252 +#define B_NEWOOPS 253 +#define B_OOPSVIEWSEL 254 + +/* INFO: 300 */ +/* watch: also in filesel.c and editobject.c */ +#define B_INFOSCR 301 +#define B_INFODELSCR 302 +#define B_INFOSCE 304 +#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_LOADUIFONT 311 +#define B_SETLANGUAGE 312 +#define B_SETFONTSIZE 313 +#define B_SETENCODING 314 +#define B_SETTRANSBUTS 315 +#define B_DOLANGUIFONT 316 +#define B_RESTOREFONT 317 +#define B_USETEXTUREFONT 318 + +#define B_UITHEMECHANGED 320 +#define B_UITHEMECOLORMOD 321 +#define B_UITHEMERESET 322 +#define B_UITHEMEIMPORT 323 +#define B_UITHEMEEXPORT 324 + +#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_SOUNDDIRFILESEL 336 +#define B_TEMPDIRFILESEL 337 +/* yafray: for exportdir select */ +#define B_YAFRAYDIRFILESEL 338 +#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_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_SIMAGELOAD1 360 +#define B_SIMAGEREPLACE1 361 +#define B_SIMAGEPAINTTOOL 362 +#define B_SIMAPACKIMA 363 +#define B_SIMAGESAVE 364 +#define B_SIMACLONEBROWSE 365 +#define B_SIMACLONEDELETE 366 +#define B_SIMANOTHING 368 +#define B_SIMACURVES 369 +#define B_SIMARANGE 370 +#define B_SIMA_USE_ALPHA 371 +#define B_SIMA_SHOW_ALPHA 372 +#define B_SIMA_SHOW_ZBUF 373 +#define B_SIMABRUSHBROWSE 374 +#define B_SIMABRUSHDELETE 375 +#define B_SIMABRUSHLOCAL 376 +#define B_SIMABRUSHCHANGE 377 +#define B_SIMABTEXBROWSE 378 +#define B_SIMABTEXDELETE 379 +#define B_SIMARELOAD 380 +#define B_SIMANAME 381 +#define B_SIMAMULTI 382 +#define B_TRANS_IMAGE 383 +#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_CONTEXT_SWITCH 406 + +/* IMASEL: 450 */ +/* 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 +#define B_TEXTALONE 502 +#define B_TEXTLOCAL 503 +#define B_TEXTDELETE 504 +#define B_TEXTFONT 505 +#define B_TEXTSTORE 506 +#define B_TEXTLINENUM 507 +#define B_TAB_NUMBERS 508 +#define B_SYNTAX 509 + +/* SCRIPT: 525 */ +#define B_SCRIPTBROWSE 526 +#define B_SCRIPT2PREV 527 + +/* FILE: 550 */ +#define B_SORTFILELIST 551 +#define B_RELOADDIR 552 + +/* SEQUENCE: 600 */ +#define B_SEQHOME 601 +#define B_SEQCLEAR 602 + +/* SOUND: 650 */ +#define B_SOUNDBROWSE 651 +#define B_SOUNDBROWSE2 652 +#define B_SOUNDHOME 653 +#define B_PACKSOUND 654 + +/* ACTION: 701 - 750 */ +#define B_ACTHOME 701 +#define B_ACTCOPY 702 +#define B_ACTPASTE 703 +#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_STOP 756 +#define B_TL_PREVIEWON 757 + +/* NLA: 801-850 */ +#define B_NLAHOME 801 + +/* NODE: 851-900 */ +#define B_NODEHOME 851 +#define B_NODE_USEMAT 852 +#define B_NODE_USESCENE 853 + +/* FREE 901 - 999 */ + + +#define B_NOP -1 + + +/* editbutflag */ +#define B_CLOCKWISE 1 +#define B_KEEPORIG 2 +#define B_BEAUTY 4 +#define B_SMOOTH 8 +#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 + +/* DISPLAYMODE */ +#define R_DISPLAYIMAGE 0 +#define R_DISPLAYWIN 1 +#define R_DISPLAYSCREEN 2 + +/* Gvp.flag and Gwp.flag */ +#define VP_COLINDEX 1 +#define VP_AREA 2 +#define VP_SOFT 4 +#define VP_NORMALS 8 +#define VP_SPRAY 16 +#define VP_MIRROR_X 32 +#define VP_HARD 64 +#define VP_ONLYVGROUP 128 + +/* Error messages */ +#define ERROR_LIBDATA_MESSAGE "Can't edit external libdata" + + +#endif diff --git a/source/blender/include/butspace.h b/source/blender/include/butspace.h new file mode 100644 index 00000000000..fec85c03b77 --- /dev/null +++ b/source/blender/include/butspace.h @@ -0,0 +1,723 @@ +/** + * $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 ***** + */ +#ifndef BUTSPACE_H +#define BUTSPACE_H + +/* all internal calls and event codes for buttons space */ + +struct Base; +struct Object; +struct ID; +struct ColorBand; +struct uiBlock; +struct rctf; +struct CurveMap; +struct ImageUser; +struct RenderResult; +struct Image; + +/* buts->scaflag */ +#define BUTS_SENS_SEL 1 +#define BUTS_SENS_ACT 2 +#define BUTS_SENS_LINK 4 +#define BUTS_CONT_SEL 8 +#define BUTS_CONT_ACT 16 +#define BUTS_CONT_LINK 32 +#define BUTS_ACT_SEL 64 +#define BUTS_ACT_ACT 128 +#define BUTS_ACT_LINK 256 + +/* internal */ + +/* scene */ +extern void render_panels(void); +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); + +/* object */ +extern void object_panels(void); +extern void physics_panels(void); +extern void do_object_panels(unsigned short event); +extern void do_constraintbuts(unsigned short event); +extern void object_panel_constraint(char *context); +extern void autocomplete_bone(char *str, void *arg_v); +extern void autocomplete_vgroup(char *str, void *arg_v); + +/* effects */ +extern void effects_panels(void); +extern void do_effects_panels(unsigned short event); + +/* modifiers */ +extern int mod_moveUp(void *ob_v, void *md_v); +extern int mod_moveDown(void *ob_v, void *md_v); + +/* constraint */ +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_ipo_context(void *ob_v, char *actname); + +/* editing */ +extern void editing_panels(void); +extern void do_common_editbuts(unsigned short event); +extern void do_meshbuts(unsigned short event); +extern void do_vgroupbuts(unsigned short event); +extern void do_curvebuts(unsigned short event); +extern void do_fontbuts(unsigned short event); +extern void do_mballbuts(unsigned short event); +extern void do_latticebuts(unsigned short event); +extern void do_fpaintbuts(unsigned short event); +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 char *get_vertexgroup_menustr(struct Object *ob); // used in object buttons + +/* shading */ +extern void draw_colorband_buts_small(struct uiBlock *block, struct ColorBand *coba, rctf *rct, int event); +extern void material_panels(void); +extern void do_matbuts(unsigned short event); +extern void lamp_panels(void); +extern void do_lampbuts(unsigned short event); +extern void world_panels(void); +extern void do_worldbuts(unsigned short event); +extern void radio_panels(void); +extern void do_radiobuts(unsigned short event); +extern void texture_panels(void); +extern void do_texbuts(unsigned short event); +void uiblock_image_panel(struct uiBlock *block, struct Image **ima_pp, struct ImageUser *iuser, + short redraw, short imagechanged); +void uiblock_layer_pass_buttons(struct uiBlock *block, struct RenderResult *rr, + struct ImageUser *iuser, int event, int x, int y, int w); + +/* logic */ +extern void do_logic_buts(unsigned short event); +extern void logic_buts(void); + +/* script */ +extern void script_panels(void); +extern void do_scriptbuts(unsigned short event); + +/* ipowindow */ +extern void do_ipobuts(unsigned short event); // drawipo.c (bad! ton) + +/* butspace.c */ +void test_meshpoin_but(char *name, struct ID **idpp); +void test_obpoin_but(char *name, struct ID **idpp); +void test_meshobpoin_but(char *name, struct ID **idpp); +void test_scenepoin_but(char *name, struct ID **idpp); +void test_matpoin_but(char *name, struct ID **idpp); +void test_scriptpoin_but(char *name, struct ID **idpp); +void test_actionpoin_but(char *name, ID **idpp); +void test_grouppoin_but(char *name, ID **idpp); +void test_texpoin_but(char *name, ID **idpp); +void test_imapoin_but(char *name, ID **idpp); + +void test_idbutton_cb(void *namev, void *arg2_unused); + +struct CurveMapping; +void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char labeltype, short event, short redraw, struct rctf *rect); + +/* -------------- internal event defines ------------ */ + + +#define B_DIFF 1 + +/* *********************** */ +#define B_VIEWBUTS 1100 + +#define B_OBJECTPANELROT 1007 +#define B_OBJECTPANELMEDIAN 1008 +#define B_ARMATUREPANEL1 1009 +#define B_ARMATUREPANEL2 1010 +#define B_OBJECTPANELPARENT 1011 +#define B_OBJECTPANEL 1012 +#define B_ARMATUREPANEL3 1013 +#define B_OBJECTPANELSCALE 1014 +#define B_OBJECTPANELDIMS 1015 + +/* *********************** */ +#define B_LAMPBUTS 1200 + +#define B_LAMPREDRAW 1101 +#define B_COLLAMP 1102 +#define B_TEXCLEARLAMP 1103 +#define B_SBUFF 1104 +#define B_SHADBUF 1105 +#define B_SHADRAY 1106 +#define B_LMTEXPASTE 1107 +#define B_LMTEXCOPY 1108 +#define B_LFALLOFFCHANGED 1109 + +/* *********************** */ +#define B_MATBUTS 1300 + +#define B_MATCOL 1201 +#define B_SPECCOL 1202 +#define B_MIRCOL 1203 +#define B_ACTCOL 1204 +#define B_MATFROM 1205 +#define B_MATPRV 1206 +#define B_LAMPPRV 1207 +#define B_WORLDPRV 1208 +#define B_MTEXCOL 1210 +#define B_TEXCLEAR 1211 +#define B_MTEXPASTE 1212 +#define B_MTEXCOPY 1213 +#define B_MATLAY 1214 +#define B_MATHALO 1215 +#define B_MATZTRANSP 1216 +#define B_MATRAYTRANSP 1217 +#define B_MATCOLORBAND 1218 + /* yafray: material preset menu event */ +#define B_MAT_YF_PRESET 1219 + +#define B_MAT_LAYERBROWSE 1220 +#define B_MAT_USENODES 1221 +#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_TEXBUTS 1400 + +#define B_TEXTYPE 1301 +#define B_DEFTEXVAR 1302 + +#define B_NAMEIMA 1304 +#define B_TEXCHANNEL 1305 +#define B_TEXREDR_PRV 1306 +#define B_IMAGECHANGED 1307 + +#define B_LOADPLUGIN 1310 +#define B_NAMEPLUGIN 1311 +#define B_COLORBAND 1312 +#define B_ADDCOLORBAND 1313 +#define B_DELCOLORBAND 1314 +#define B_CALCCBAND 1315 +#define B_CALCCBAND2 1316 +#define B_DOCOLORBAND 1317 +#define B_REDRAWCBAND 1318 +#define B_BANDCOL 1319 +#define B_LOADTEXIMA1 1320 +#define B_TEXPRV 1321 + + +#define B_PLUGBUT 1325 +/* B_PLUGBUT reserves 24 buttons at least! */ + +#define B_ENV_MAKE 1350 +#define B_ENV_FREE 1351 +#define B_ENV_DELETE 1352 +#define B_ENV_SAVE 1353 +#define B_ENV_OB 1354 + +#define B_ENV_FREE_ALL 1357 + + +/* **************** animbuts = object buttons ******* */ +#define B_ANIMBUTS 1500 + +#define B_RECALCPATH 1401 +#define B_TRACKBUTS 1402 +#define B_DUPLI_FRAME 1403 +#define B_DUPLI_VERTS 1404 +#define B_DUPLI_FACES 1405 +#define B_DUPLI_GROUP 1406 + + +#define B_PRINTSPEED 1413 +#define B_PRINTLEN 1414 +#define B_RELKEY 1415 +#define B_CURVECHECK 1416 + +#define B_SOFTBODY_CHANGE 1420 +#define B_SOFTBODY_DEL_VG 1421 +#define B_SOFTBODY_BAKE 1422 +#define B_SOFTBODY_BAKE_FREE 1423 + +/* this has MAX_EFFECT settings! Next free define is 1450... */ +#define B_SELEFFECT 1430 + +/* Fluidsim button defines */ +#define B_FLUIDSIM_BAKE 1450 +#define B_FLUIDSIM_SELDIR 1451 +#define B_FLUIDSIM_FORCEREDRAW 1452 +#define B_FLUIDSIM_MAKEPART 1453 + +#define B_GROUP_RELINK 1460 +#define B_OBJECT_IPOFLAG 1461 + +/* *********************** */ +#define B_WORLDBUTS 1600 + +#define B_TEXCLEARWORLD 1501 +#define B_COLHOR 1502 +#define B_COLZEN 1503 +#define B_WMTEXPASTE 1504 +#define B_WMTEXCOPY 1505 +#define B_AO_FALLOFF 1506 + +/* *********************** */ +#define B_RENDERBUTS 1700 + +#define B_FS_PIC 1601 +#define B_FS_BACKBUF 1602 + +#define B_FS_FTYPE 1604 +#define B_DORENDER 1605 +#define B_DOANIM 1606 +#define B_PLAYANIM 1607 +#define B_PR_PAL 1608 +#define B_PR_FULL 1609 +#define B_PR_PRV 1610 +#define B_PR_HD 1611 +#define B_PR_PAL169 1612 + +#define B_REDRAWDISP 1615 +#define B_SETBROWSE 1616 +#define B_CLEARSET 1617 +#define B_PR_PRESET 1618 +#define B_PR_PANO 1619 +#define B_PR_NTSC 1620 + +#define B_IS_FTYPE 1622 +#define B_IS_BACKBUF 1623 +#define B_PR_PC 1624 + +#define B_PR_PANO360 1627 +#define B_PR_HALFFIELDS 1628 +#define B_NEWRENDERPIPE 1629 +#define B_R_SCALE 1630 +#define B_G_SCALE 1631 +#define B_B_SCALE 1632 +#define B_USE_R_SCALE 1633 +#define B_USE_G_SCALE 1634 +#define B_USE_B_SCALE 1635 +#define B_EDGECOLSLI 1636 +#define B_GAMMASLI 1637 + +#define B_FILETYPEMENU 1638 +#define B_SELECTCODEC 1639 +#define B_RTCHANGED 1640 +#define B_SWITCHRENDER 1641 +#define B_FBUF_REDO 1642 + +#define B_SET_EDGE 1643 +#define B_SET_ZBLUR 1644 +#define B_ADD_RENDERLAYER 1645 +#define B_SET_PASS 1646 + +/* *********************** */ +#define B_ARMATUREBUTS 1800 +#define B_POSE 1701 + +/* *********************** */ +#define B_COMMONEDITBUTS 2049 + +#define B_CHANGEDEP 2002 +#define B_MATWICH 2003 +#define B_MATNEW 2004 +#define B_MATDEL 2005 +#define B_MATASS 2006 +#define B_MATSEL 2007 +#define B_MATDESEL 2008 +#define B_HIDE 2009 +#define B_REVEAL 2010 +#define B_SELSWAP 2011 +#define B_SETSMOOTH 2012 +#define B_SETSOLID 2013 +#define B_AUTOTEX 2014 +#define B_DOCENTER 2015 +#define B_DOCENTERNEW 2016 +#define B_DOCENTERCURSOR 2017 + + /* 20 values! */ +#define B_OBLAY 2019 + +#define B_ADDKEY 2041 +#define B_SETKEY 2042 +#define B_DELKEY 2043 +#define B_NAMEKEY 2044 +#define B_PREVKEY 2045 +#define B_NEXTKEY 2046 +#define B_LOCKKEY 2047 + +#define B_MESHBUTS 2090 + +#define B_FLIPNORM 2050 +#define B_SPIN 2051 +#define B_SPINDUP 2052 +#define B_EXTR 2053 +#define B_SCREW 2054 +#define B_EXTREP 2055 +#define B_SPLIT 2056 +#define B_REMDOUB 2057 +#define B_SUBDIV 2058 +#define B_FRACSUBDIV 2059 +#define B_XSORT 2060 +#define B_HASH 2061 +#define B_MAKESTICKY 2062 +#define B_DELSTICKY 2063 +#define B_NEWMCOL 2064 +#define B_DELMCOL 2065 +#define B_TOSPHERE 2066 +#define B_DECIM_FACES 2067 +#define B_DECIM_CANCEL 2068 +#define B_DECIM_APPLY 2069 +/* B_SLOWERDRAW and B_FASTERDRAW removed */ +#define B_VERTEXNOISE 2072 +#define B_VERTEXSMOOTH 2073 +#define B_NEWTFACE 2074 +#define B_DELTFACE 2075 +#define B_CHROMADEPTH 2076 +#define B_DRAWEDGES 2077 +#define B_DRAWCREASES 2078 +#define B_SETTFACE 2079 +#define B_SETMCOL 2080 +#define B_JOINTRIA 2081 +#define B_SETTFACE_RND 2082 +#define B_SETMCOL_RND 2083 + +/* *********************** */ +#define B_VGROUPBUTS 2100 + +#define B_NEWVGROUP 2091 +#define B_DELVGROUP 2092 +#define B_ASSIGNVGROUP 2093 +#define B_REMOVEVGROUP 2094 +#define B_SELVGROUP 2095 +#define B_DESELVGROUP 2096 +#define B_AUTOVGROUP 2097 +#define B_LINKEDVGROUP 2098 +#define B_COPYVGROUP 2099 + + + +/* *********************** */ +#define B_CURVEBUTS 2200 + +#define B_CONVERTPOLY 2101 +#define B_CONVERTBEZ 2102 +#define B_CONVERTBSPL 2103 +#define B_CONVERTCARD 2104 +#define B_CONVERTNURB 2105 +#define B_UNIFU 2106 +#define B_ENDPU 2107 +#define B_BEZU 2108 +#define B_UNIFV 2109 +#define B_ENDPV 2110 +#define B_BEZV 2111 +#define B_SETWEIGHT 2112 +#define B_SETW1 2113 +#define B_SETW2 2114 +#define B_SETW3 2115 +#define B_SETORDER 2116 +#define B_MAKEDISP 2117 +#define B_SUBDIVCURVE 2118 +#define B_SPINNURB 2119 +#define B_CU3D 2120 +#define B_SETRESOLU 2121 +#define B_SETW4 2122 +#define B_SUBSURFTYPE 2123 +#define B_TILTINTERP 2124 + +/* *********************** */ +#define B_FONTBUTS 2300 + +#define B_MAKEFONT 2201 +#define B_TOUPPER 2202 +#define B_SETFONT 2203 +#define B_LOADFONT 2204 +#define B_TEXTONCURVE 2205 +#define B_PACKFONT 2206 +#define B_LOAD3DTEXT 2207 +#define B_LOREM 2208 +#define B_FASTFONT 2209 +#define B_INSTB 2210 +#define B_DELTB 2211 +#define B_STYLETOSELB 2212 +#define B_STYLETOSELU 2213 +#define B_STYLETOSELI 2214 + +#define B_SETCHAR 2215 +#define B_SETUPCHAR 2216 +#define B_SETDOWNCHAR 2217 +#define B_SETCAT 2218 +#define B_SETUNITEXT 2219 + +/* *********************** */ +#define B_ARMBUTS 2400 + +#define B_ARM_RECALCDATA 2301 +#define B_ARM_STRIDE 2302 +#define B_ARM_CALCPATHS 2303 +#define B_ARM_CLEARPATHS 2304 + +/* *********************** */ +#define B_CAMBUTS 2500 + +/* *********************** */ +#define B_MBALLBUTS 2600 + +#define B_RECALCMBALL 2501 + +/* *********************** */ +#define B_LATTBUTS 2700 + +#define B_RESIZELAT 2601 +#define B_DRAWLAT 2602 +#define B_LATTCHANGED 2603 +#define B_REGULARLAT 2604 + +/* *********************** */ +#define B_GAMEBUTS 2800 + +#define B_ADD_PROP 2701 +#define B_CHANGE_PROP 2702 + +#define B_ADD_SENS 2703 +#define B_CHANGE_SENS 2704 +#define B_DEL_SENS 2705 + +#define B_ADD_CONT 2706 +#define B_CHANGE_CONT 2707 +#define B_DEL_CONT 2708 + +#define B_ADD_ACT 2709 +#define B_CHANGE_ACT 2710 +#define B_DEL_ACT 2711 + +#define B_SOUNDACT_BROWSE 2712 + +#define B_SETSECTOR 2713 +#define B_SETPROP 2714 +#define B_SETACTOR 2715 +#define B_SETMAINACTOR 2716 +#define B_SETDYNA 2717 + +/* *********************** */ +#define B_FPAINTBUTS 2900 + +#define B_VPCOLSLI 2801 +#define B_VPGAMMA 2802 + +#define B_COPY_TF_MODE 2804 +#define B_COPY_TF_UV 2805 +#define B_COPY_TF_COL 2806 +#define B_REDR_3D_IMA 2807 +#define B_SET_VCOL 2808 + +#define B_COPY_TF_TEX 2814 +#define B_TFACE_HALO 2815 +#define B_TFACE_BILLB 2816 + +#define B_SHOWTEX 2832 +#define B_ASSIGNMESH 2833 + +#define B_WEIGHT0_0 2840 +#define B_WEIGHT1_4 2841 +#define B_WEIGHT1_2 2842 +#define B_WEIGHT3_4 2843 +#define B_WEIGHT1_0 2844 + +#define B_OPA1_8 2845 +#define B_OPA1_4 2846 +#define B_OPA1_2 2847 +#define B_OPA3_4 2848 +#define B_OPA1_0 2849 + +#define B_CLR_WPAINT 2850 + +#define B_BRUSHBROWSE 2851 +#define B_BRUSHDELETE 2852 +#define B_BRUSHLOCAL 2853 +#define B_BRUSHCHANGE 2854 +#define B_BTEXBROWSE 2855 +#define B_BTEXDELETE 2856 +#define B_BRUSHKEEPDATA 2857 + +/* Sculptmode */ +#define B_SCULPT_TEXBROWSE 2860 + +/* *********************** */ +#define B_RADIOBUTS 3000 + +#define B_RAD_GO 2901 +#define B_RAD_INIT 2902 +#define B_RAD_LIMITS 2903 +#define B_RAD_FAC 2904 +#define B_RAD_NODELIM 2905 +#define B_RAD_NODEFILT 2906 +#define B_RAD_FACEFILT 2907 +#define B_RAD_ADD 2908 +#define B_RAD_DELETE 2909 +#define B_RAD_COLLECT 2910 +#define B_RAD_SHOOTP 2911 +#define B_RAD_SHOOTE 2912 +#define B_RAD_REPLACE 2913 +#define B_RAD_DRAW 2914 +#define B_RAD_FREE 2915 +#define B_RAD_ADDMESH 2916 + +/* *********************** */ +#define B_SCRIPTBUTS 3100 + +#define B_SCRIPT_ADD 3001 +#define B_SCRIPT_DEL 3002 +#define B_SCRIPT_TYPE 3003 + +/* Scene script buttons */ +#define B_SSCRIPT_ADD 3004 +#define B_SSCRIPT_DEL 3005 +#define B_SSCRIPT_TYPE 3006 + +/* *********************** */ +#define B_SOUNDBUTS 3200 +enum B_SOUND_BUTTONS { + B_SOUND_CHANGED = 3101, + B_SOUND_REDRAW, + B_SOUND_VOLUME, + B_SOUND_PANNING, + B_SOUND_PITCH, + B_SOUND_LOAD_SAMPLE, + B_SOUND_MENU_SAMPLE, + B_SOUND_NAME_SAMPLE, + B_SOUND_UNLINK_SAMPLE, + B_SOUND_RELOAD_SAMPLE, + B_SOUND_UNPACK_SAMPLE, + B_SOUND_PLAY_SAMPLE, + B_SOUND_COPY_SOUND, + B_SOUND_LOOPSTART, + B_SOUND_LOOPEND, + B_SOUND_BIDIRECTIONAL, + B_SOUND_RECALC, + B_SOUND_RATECHANGED, + B_SOUND_MIXDOWN +}; + +/* *********************** */ +#define B_CONSTRAINTBUTS 3300 +enum { + B_CONSTRAINT_TEST = 3201, + B_CONSTRAINT_CHANGETARGET, + B_CONSTRAINT_ADD_NULL, + B_CONSTRAINT_ADD_KINEMATIC, + B_CONSTRAINT_ADD_TRACKTO, + B_CONSTRAINT_ADD_MINMAX, + B_CONSTRAINT_ADD_ROTLIKE, + B_CONSTRAINT_ADD_LOCLIKE, + B_CONSTRAINT_ADD_SIZELIKE, + B_CONSTRAINT_ADD_ACTION, + B_CONSTRAINT_ADD_LOCKTRACK, + B_CONSTRAINT_ADD_FOLLOWPATH, + B_CONSTRAINT_ADD_DISTANCELIMIT, + B_CONSTRAINT_ADD_STRETCHTO, + B_CONSTRAINT_ADD_LOCLIMIT, + B_CONSTRAINT_ADD_ROTLIMIT, + B_CONSTRAINT_ADD_SIZELIMIT, + B_CONSTRAINT_ADD_RIGIDBODYJOINT, + B_CONSTRAINT_ADD_CHILDOF, + B_CONSTRAINT_ADD_PYTHON, + B_CONSTRAINT_ADD_CLAMPTO, + B_CONSTRAINT_ADD_TRANSFORM, + B_CONSTRAINT_INF +}; + +/* *********************** */ +#define B_UVAUTOCALCBUTS 3400 +enum { + B_UVAUTO_REDRAW = 3301, + B_UVAUTO_SPHERE, + B_UVAUTO_CYLINDER, + B_UVAUTO_CYLRADIUS, + B_UVAUTO_WINDOW, + B_UVAUTO_CUBE, + B_UVAUTO_CUBESIZE, + B_UVAUTO_RESET, + B_UVAUTO_BOUNDS, + B_UVAUTO_TOP, + B_UVAUTO_FACE, + B_UVAUTO_OBJECT, + B_UVAUTO_ALIGNX, + B_UVAUTO_ALIGNY, + B_UVAUTO_UNWRAP, + B_UVAUTO_DRAWFACES +}; + +#define B_EFFECTSBUTS 3500 + +#define B_AUTOTIMEOFS 3403 +#define B_FRAMEMAP 3404 +#define B_NEWEFFECT 3405 +#define B_PREVEFFECT 3406 +#define B_NEXTEFFECT 3407 +#define B_CHANGEEFFECT 3408 +#define B_CALCEFFECT 3409 +#define B_DELEFFECT 3410 +#define B_RECALCAL 3411 +#define B_RECALC_DEFL 3412 +#define B_EFFECT_DEP 3413 +#define B_FIELD_DEP 3414 +#define B_FIELD_CHANGE 3415 +#define B_PAF_SET_VG 3416 +#define B_PAF_SET_VG1 3417 + +#define B_MODIFIER_BUTS 3600 + +#define B_MODIFIER_RECALC 3501 +#define B_MODIFIER_REDRAW 3502 + +/* *********************** */ +#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 + + /* exec should be last in this list */ +#define B_NODE_EXEC 3610 + + +/* *********************** */ +/* BUTTON 4001-4032: layers? (sort this out!) */ + +/* *********************** */ +/* event code 0x4000 (16384) and larger: general events (redraws, etc) */ + + +#endif + diff --git a/source/blender/include/datatoc.h b/source/blender/include/datatoc.h new file mode 100644 index 00000000000..7afd4428d70 --- /dev/null +++ b/source/blender/include/datatoc.h @@ -0,0 +1,63 @@ +/* + * datatoc.h + * + * $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 ***** + */ + +#ifndef DATATOC_H +#define DATATOC_H + +extern int datatoc_B_blend_size; +extern char datatoc_B_blend[]; + +extern int datatoc_Bfs_size; +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[]; + +extern int datatoc_bfont_ttf_size; +extern char datatoc_bfont_ttf[]; + +extern int datatoc_cmap_tga_size; +extern char datatoc_cmap_tga[]; + +extern int datatoc_cmovie_tga_size; +extern char datatoc_cmovie_tga[]; + +#endif /* DATATOC_H */ + diff --git a/source/blender/include/editlattice_ext.h b/source/blender/include/editlattice_ext.h new file mode 100644 index 00000000000..afb109df5f7 --- /dev/null +++ b/source/blender/include/editlattice_ext.h @@ -0,0 +1,42 @@ +/* + * editlattice_ext.h + * + * $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 ***** + */ + +#ifndef EDITLATTICE_EXT_H +#define EDITLATTICE_EXT_H "$Id$" +#define EDITLATTICE_EXT_H "Copyright (C) 2001 NaN Technologies B.V. + +void end_latt_deform(void); + +#endif /* EDITLATTICE_EXT_H */ + diff --git a/source/blender/include/editmesh.h b/source/blender/include/editmesh.h new file mode 100644 index 00000000000..1b2d91e22b8 --- /dev/null +++ b/source/blender/include/editmesh.h @@ -0,0 +1,110 @@ +/** + * $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 ***** + */ + +/* Internal for editmesh_xxxx.c functions */ + +#ifndef EDITMESH_H +#define EDITMESH_H + +#define TEST_EDITMESH if(G.obedit==0) return; \ + if( (G.vd->lay & G.obedit->lay)==0 ) return; + +#define UVCOPY(t, s) memcpy(t, s, 2 * sizeof(float)); + + + +/* ******************* editmesh.c */ +extern void free_editvert(EditVert *eve); +extern void free_editedge(EditEdge *eed); +extern void free_editface(EditFace *efa); + +extern void free_vertlist(ListBase *edve); +extern void free_edgelist(ListBase *lb); +extern void free_facelist(ListBase *lb); + +extern void remedge(EditEdge *eed); + +extern struct EditVert *addvertlist(float *vec, struct EditVert *example); +extern struct EditEdge *addedgelist(struct EditVert *v1, struct EditVert *v2, struct EditEdge *example); +extern struct EditFace *addfacelist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditFace *example, struct EditFace *exampleEdges); +extern struct EditEdge *findedgelist(struct EditVert *v1, struct EditVert *v2); + +/* ******************* editmesh_add.c */ + + +/* ******************* editmesh_lib.c */ +extern void EM_fgon_flags(void); +extern void EM_hide_reset(void); + +extern int faceselectedOR(EditFace *efa, int flag); +extern int faceselectedAND(EditFace *efa, int flag); + +extern EditFace *exist_face(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4); +extern void flipface(EditFace *efa); // flips for normal direction +extern int compareface(EditFace *vl1, EditFace *vl2); + +/* flag for selection bits, *nor will be filled with normal for extrusion constraint */ +/* return value defines if such normal was set */ +extern short extrudeflag_face_indiv(short flag, float *nor); +extern short extrudeflag_verts_indiv(short flag, float *nor); +extern short extrudeflag_edges_indiv(short flag, float *nor); +extern short extrudeflag_vert(short flag, float *nor); +extern short extrudeflag(short flag, float *nor); + +extern void adduplicateflag(int flag); +extern void delfaceflag(int flag); + +extern void rotateflag(short flag, float *cent, float rotmat[][3]); +extern void translateflag(short flag, float *vec); + +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 + * + * dist (in/out): minimal distance to the nearest and at the end, actual distance + * sel: selection bias + * if SELECT, selected vertice are given a 5 pixel bias to make them farter than unselect verts + * if 0, unselected vertice are given the bias + * strict: if 1, the vertice corresponding to the sel parameter are ignored and not just biased + */ +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 new file mode 100644 index 00000000000..d8e779b9af8 --- /dev/null +++ b/source/blender/include/interface.h @@ -0,0 +1,236 @@ +/** + * $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 ***** + */ + +#ifndef INTERFACE_H +#define INTERFACE_H + +#include "BIF_resources.h" + +/* general defines */ + +#define UI_MAX_DRAW_STR 400 +#define UI_MAX_NAME_STR 64 +#define UI_ARRAY 29 + +/* panel limits */ +#define UI_PANEL_MINX 100 +#define UI_PANEL_MINY 70 + +/* uiBut->flag */ +#define UI_SELECT 1 +#define UI_MOUSE_OVER 2 +#define UI_ACTIVE 4 +#define UI_HAS_ICON 8 +/* warn: rest of uiBut->flag in BIF_interface.c */ + + +/* internal panel drawing defines */ +#define PNL_GRID 4 +#define PNL_DIST 8 +#define PNL_SAFETY 8 +#define PNL_HEADER 20 + +/* panel->flag */ +#define PNL_SELECT 1 +#define PNL_CLOSEDX 2 +#define PNL_CLOSEDY 4 +#define PNL_CLOSED 6 +#define PNL_TABBED 8 +#define PNL_OVERLAP 16 + +/* Button text selection: + * extension direction, selextend, inside ui_do_but_TEX */ +#define EXTEND_LEFT 1 +#define EXTEND_RIGHT 2 + +typedef struct { + short xim, yim; + unsigned int *rect; + short xofs, yofs; +} uiIconImage; + +typedef struct { + short mval[2]; + short qual, val; + int event; +} uiEvent; + +typedef struct { + void *xl, *large, *medium, *small; +} uiFont; + +typedef struct uiLinkLine { /* only for draw/edit */ + struct uiLinkLine *next, *prev; + + short flag, pad; + + struct uiBut *from, *to; +} uiLinkLine; + +typedef struct { + void **poin; /* pointer to original pointer */ + void ***ppoin; /* pointer to original pointer-array */ + short *totlink; /* if pointer-array, here is the total */ + + short maxlink, pad; + short fromcode, tocode; + + ListBase lines; +} uiLink; + +struct uiBut { + struct uiBut *next, *prev; + short type, pointype, bit, bitnr, retval, strwidth, ofs, pos, selsta, selend; + int flag; + + char *str; + char strdata[UI_MAX_NAME_STR]; + char drawstr[UI_MAX_DRAW_STR]; + + float x1, y1, x2, y2; + + char *poin; + float min, max; + float a1, a2, hsv[3]; // hsv is temp memory for hsv buttons + float aspect; + + void (*func)(void *, void *); + void *func_arg1; + void *func_arg2; + + void (*embossfunc)(int , int , float, float, float, float, float, int); + void (*sliderfunc)(int , float, float, float, float, float, float, int); + + void (*autocomplete_func)(char *, void *); + void *autofunc_arg; + + uiLink *link; + + char *tip, *lockstr; + + int themecol; /* themecolor id */ + void *font; + + BIFIconID icon; + short but_align; /* aligning buttons, horiz/vertical */ + short lock, win; + short iconadd, dt; + + /* IDPOIN data */ + uiIDPoinFuncFP idpoin_func; + ID **idpoin_idpp; + + /* BLOCK data */ + uiBlockFuncFP block_func; + + /* BUTM data */ + void (*butm_func)(void *arg, int event); + void *butm_func_arg; + + /* pointer back */ + uiBlock *block; +}; + +struct uiBlock { + uiBlock *next, *prev; + + ListBase buttons; + Panel *panel; + + char name[UI_MAX_NAME_STR]; + + float winmat[4][4]; + + float minx, miny, maxx, maxy; + float aspect; + + void (*butm_func)(void *arg, int event); + void *butm_func_arg; + + void (*func)(void *arg1, void *arg2); + void *func_arg1; + void *func_arg2; + + /* extra draw function for custom blocks */ + void (*drawextra)(); + + int themecol; /* themecolor id */ + + short font; /* indices */ + int afterval, flag; + void *curfont; + + short autofill, win, winq, direction, dt; + short needflush, auto_open, in_use, pad; //flush see below + void *overdraw; + struct uiBlock *parent; // nested pulldowns + + float xofs, yofs; // offset to parent button + rctf parentrct; // for pulldowns, rect the mouse is allowed outside of menu (parent button) + rctf safety; // pulldowns, to detect outside, can differ per case how it is created + + rctf flush; // rect to be flushed to frontbuffer + int handler; // for panels in other windows than buttonswin... just event code +}; + +/* interface.c */ + +extern void ui_graphics_to_window(int win, float *x, float *y); +extern void ui_graphics_to_window_rct(int win, rctf *graph, rcti *winr); +extern void ui_window_to_graphics(int win, float *x, float *y); + +extern void ui_block_flush_back(uiBlock *block); +extern void ui_block_set_flush(uiBlock *block, uiBut *but); + +extern void ui_check_but(uiBut *but); +extern double ui_get_but_val(uiBut *but); +extern void ui_get_but_vectorf(uiBut *but, float *vec); +extern void ui_set_but_vectorf(uiBut *but, float *vec); +extern void ui_autofill(uiBlock *block); + +/* interface_panel.c */ +extern void ui_draw_panel(uiBlock *block); +extern void ui_do_panel(uiBlock *block, uiEvent *uevent); +extern void ui_scale_panel(uiBlock *block); +extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad); +extern void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadetop, float shadedown); + +/* interface_draw.c */ +extern void ui_set_embossfunc(uiBut *but, int drawtype); +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/keyed_functions.h b/source/blender/include/keyed_functions.h new file mode 100644 index 00000000000..405fec16992 --- /dev/null +++ b/source/blender/include/keyed_functions.h @@ -0,0 +1,58 @@ +/** + * $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 ***** + */ + +#define KEY_GETPTR(x) (g_ptrtab ? g_ptrtab[x] : 0) + +/* these are the defines for the keyed functions: + + #define key_func<n> <function name to be behind key> + + This function must be of type "int func(void*)" + + To prevent symbol table dumpers from retrieving certain key + functions too easily, some of those functions have nonsense names. +*/ + +#define key_func1 key_return_true +/* add the corresponding function pointer defines here. + Example: + + #define key_func4 my_protected_function_name + #define MY_PROTECTED_FUNCTION_PTR KEY_GETPTR(KEY_FUNC3) + + KEY_GETPTR(KEY_FUNC3) corresponds to the function pointer to function + key_func3 after the python key code unscrambled the function pointer tables. + Also add pointer initializations to these functions in + license_key.c:init_ftable() if necessary. +*/ + +#define KEY_RETURN_TRUE KEY_GETPTR(KEY_FUNC1) + diff --git a/source/blender/include/license_key.h b/source/blender/include/license_key.h new file mode 100644 index 00000000000..1346998f520 --- /dev/null +++ b/source/blender/include/license_key.h @@ -0,0 +1,95 @@ +/** + * $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 ***** + */ +#ifndef LICENCEKEY_H +#define LICENCEKEY_H + +#define I_AM_PUBLISHER temp_val2 +#define LICENSE_KEY_VALID temp_val +#define SHOW_LICENSE_KEY rotop + +extern int LICENSE_KEY_VALID; +extern int I_AM_PUBLISHER; + +extern char * license_key_name; +extern void loadKeyboard(char * name); +extern void checkhome(void); +extern void SHOW_LICENSE_KEY(void); + +#define LICENSE_CHECK_0 (0==0) + +// Stuff from the Python files from Strubi + +typedef int (*Fptr)(void *); + +extern Fptr g_functab[]; +extern Fptr g_ptrtab[]; + +// TODO: From here on, this should be a generated header file... + +// change all KEY_FUNC values +// if you change PYKEY_TABLEN or PYKEY_SEED +// see below + +#define PYKEY_TABLEN 21 // don't change this unless needed. Other values + // may yield bad random orders + +#define PYKEY_SEED {26,8,1972} + +// these values are generated by $HOME/develop/intern/keymaker/makeseed.py +// from the above seed value. + +// DO NOT EDIT THESE VALUES BY HAND! + +#define KEY_FUNC1 12 +#define KEY_FUNC2 8 +#define KEY_FUNC3 1 +#define KEY_FUNC4 16 +#define KEY_FUNC5 20 +#define KEY_FUNC6 18 +#define KEY_FUNC7 13 +#define KEY_FUNC8 6 +#define KEY_FUNC9 9 +#define KEY_FUNC10 7 +#define KEY_FUNC11 14 +#define KEY_FUNC12 0 +#define KEY_FUNC13 5 +#define KEY_FUNC14 10 +#define KEY_FUNC15 19 +#define KEY_FUNC16 2 +#define KEY_FUNC17 11 +#define KEY_FUNC18 3 +#define KEY_FUNC19 17 +#define KEY_FUNC20 15 +#define KEY_FUNC21 4 + +#endif + diff --git a/source/blender/include/multires.h b/source/blender/include/multires.h new file mode 100644 index 00000000000..bfa765e62ef --- /dev/null +++ b/source/blender/include/multires.h @@ -0,0 +1,81 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2006 by Nicholas Bishop + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef MULTIRES_H +#define MULTIRES_H + +struct CustomData; +struct EditMesh; +struct Object; +struct MDeformVert; +struct Mesh; +struct MultiresLevel; +struct Multires; +struct uiBlock; + +/* For canceling operations that don't work with multires on or on a non-base level */ +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_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_edge_level_update(void *ob, void *me); +int multires_modifier_warning(); + +/* after adding or removing vcolor layers, run this */ +void multires_load_cols(Mesh *me); + +/* 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 new file mode 100644 index 00000000000..bec0e13726b --- /dev/null +++ b/source/blender/include/mydevice.h @@ -0,0 +1,260 @@ + +#ifndef __MYDEVICE_H__ +#define __MYDEVICE_H__ + +/* + * This file has its origin at sgi, where all device defines were written down. + * Blender copied this concept quite some, and expanded it with internal new defines (ton) + * + * mouse / timer / window: until 0x020 + * custom codes: 0x4... + * + * $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 ***** + */ + +/* MOUSE : 0x00x */ + +#define LEFTMOUSE 0x001 +#define MIDDLEMOUSE 0x002 +#define RIGHTMOUSE 0x003 +#define MOUSEX 0x004 +#define MOUSEY 0x005 +#define WHEELUPMOUSE 0x00a +#define WHEELDOWNMOUSE 0x00b + +/* timers */ + +#define TIMER0 0x006 +#define TIMER1 0x007 +#define TIMER2 0x008 +#define TIMER3 0x009 + +/* SYSTEM : 0x01x */ + +#define KEYBD 0x010 /* keyboard */ +#define RAWKEYBD 0x011 /* raw keyboard for keyboard manager */ +#define REDRAW 0x012 /* used by port manager to signal redraws */ +#define INPUTCHANGE 0x013 /* input connected or disconnected */ +#define QFULL 0x014 /* queue was filled */ +#define WINFREEZE 0x015 /* user wants process in this win to shut up */ +#define WINTHAW 0x016 /* user wants process in this win to go again */ +#define WINCLOSE 0x017 /* window close */ +#define WINQUIT 0x018 /* signal from user that app is to go away */ +#define Q_FIRSTTIME 0x019 /* on startup */ + +/* standard keyboard */ + +#define AKEY 'a' +#define BKEY 'b' +#define CKEY 'c' +#define DKEY 'd' +#define EKEY 'e' +#define FKEY 'f' +#define GKEY 'g' +#define HKEY 'h' +#define IKEY 'i' +#define JKEY 'j' +#define KKEY 'k' +#define LKEY 'l' +#define MKEY 'm' +#define NKEY 'n' +#define OKEY 'o' +#define PKEY 'p' +#define QKEY 'q' +#define RKEY 'r' +#define SKEY 's' +#define TKEY 't' +#define UKEY 'u' +#define VKEY 'v' +#define WKEY 'w' +#define XKEY 'x' +#define YKEY 'y' +#define ZKEY 'z' + +#define ZEROKEY '0' +#define ONEKEY '1' +#define TWOKEY '2' +#define THREEKEY '3' +#define FOURKEY '4' +#define FIVEKEY '5' +#define SIXKEY '6' +#define SEVENKEY '7' +#define EIGHTKEY '8' +#define NINEKEY '9' + +#define CAPSLOCKKEY 211 + +#define LEFTCTRLKEY 212 +#define LEFTALTKEY 213 +#define RIGHTALTKEY 214 +#define RIGHTCTRLKEY 215 +#define RIGHTSHIFTKEY 216 +#define LEFTSHIFTKEY 217 + +#define ESCKEY 218 +#define TABKEY 219 +#define RETKEY 220 +#define SPACEKEY 221 +#define LINEFEEDKEY 222 +#define BACKSPACEKEY 223 +#define DELKEY 224 +#define SEMICOLONKEY 225 +#define PERIODKEY 226 +#define COMMAKEY 227 +#define QUOTEKEY 228 +#define ACCENTGRAVEKEY 229 +#define MINUSKEY 230 +#define SLASHKEY 232 +#define BACKSLASHKEY 233 +#define EQUALKEY 234 +#define LEFTBRACKETKEY 235 +#define RIGHTBRACKETKEY 236 + +#define LEFTARROWKEY 137 +#define DOWNARROWKEY 138 +#define RIGHTARROWKEY 139 +#define UPARROWKEY 140 + +#define PAD0 150 +#define PAD1 151 +#define PAD2 152 +#define PAD3 153 +#define PAD4 154 +#define PAD5 155 +#define PAD6 156 +#define PAD7 157 +#define PAD8 158 +#define PAD9 159 + + +#define PADPERIOD 199 +#define PADSLASHKEY 161 +#define PADASTERKEY 160 + + +#define PADMINUS 162 +#define PADENTER 163 +#define PADPLUSKEY 164 + + +#define F1KEY 300 +#define F2KEY 301 +#define F3KEY 302 +#define F4KEY 303 +#define F5KEY 304 +#define F6KEY 305 +#define F7KEY 306 +#define F8KEY 307 +#define F9KEY 308 +#define F10KEY 309 +#define F11KEY 310 +#define F12KEY 311 + +#define PAUSEKEY 165 +#define INSERTKEY 166 +#define HOMEKEY 167 +#define PAGEUPKEY 168 +#define PAGEDOWNKEY 169 +#define ENDKEY 170 + +#define UNKNOWNKEY 171 +#define COMMANDKEY 172 +#define GRLESSKEY 173 + +/* used as fake leftmouse events, special handled in interface.c */ +#define BUT_ACTIVATE 200 +#define BUT_NEXT 201 +#define BUT_PREV 202 + +/* **************** BLENDER QUEUE EVENTS ********************* */ + +#define CHANGED 0x4000 +#define DRAWEDGES 0x4001 +#define AFTERQUEUE 0x4002 +#define BACKBUFDRAW 0x4003 +#define EXECUTE 0x4004 +#define IGNORE_REDRAW 0x4005 +#define LOAD_FILE 0x4006 +#define RESHAPE 0x4007 +#define UI_BUT_EVENT 0x4008 +#define AUTOSAVE_FILE 0x4009 +#define UNDOPUSH 0x400A + +/* REDRAWVIEW3D has to be the first one (lowest number) for buttons! */ +#define REDRAWVIEW3D 0x4010 +#define REDRAWVIEWCAM 0x4011 +#define REDRAWVIEW3D_Z 0x4012 + +#define REDRAWALL 0x4013 +#define REDRAWHEADERS 0x4014 + +#define REDRAWBUTSHEAD 0x4015 +#define REDRAWBUTSALL 0x4016 + +#define REDRAWBUTSSCENE 0x4017 +#define REDRAWBUTSOBJECT 0x4018 +#define REDRAWBUTSEDIT 0x4019 +#define REDRAWBUTSSCRIPT 0x401A +#define REDRAWBUTSLOGIC 0x401B +#define REDRAWBUTSSHADING 0x401C +#define REDRAWBUTSGAME 0x401D +#define REDRAWBUTSEFFECTS 0x401D + +#define REDRAWINFO 0x4021 +#define RENDERPREVIEW 0x4022 +#define REDRAWIPO 0x4023 +#define REDRAWDATASELECT 0x4024 +#define REDRAWSEQ 0x4025 +#define REDRAWIMAGE 0x4026 +#define REDRAWOOPS 0x4027 +#define REDRAWIMASEL 0x4028 +#define AFTERIMASELIMA 0x4029 +#define AFTERIMASELGET 0x402A +#define AFTERIMAWRITE 0x402B +#define IMALEFTMOUSE 0x402C +#define AFTERPIBREAD 0x402D +#define REDRAWTEXT 0x402E +#define REDRAWSOUND 0x402F +#define REDRAWACTION 0x4030 +#define REDRAWNLA 0x4031 +#define REDRAWSCRIPT 0x4032 +#define REDRAWTIME 0x4033 +#define REDRAWBUTSCONSTRAINT 0x4034 +#define ONLOAD_SCRIPT 0x4035 +#define SCREEN_HANDLER 0x4036 +#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/nla.h b/source/blender/include/nla.h new file mode 100644 index 00000000000..f07121bd56b --- /dev/null +++ b/source/blender/include/nla.h @@ -0,0 +1,59 @@ +/* nla.h May 2001 + * $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 ***** + * + * Use this to turn experimental options on + * or off with the #define flags. Please do not + * put other includes, typdefs etc in this file. + * =========================================== + * + * __NLA + * This encompasses the new armature object, the + * action datablock and the action window-type. + * + * __CON_IPO + * Support for constraint ipo keys + * + * __NLA_ACTION_BY_MOTION_ACTUATOR + * New action actuator playback type + * + * $Id$ + */ + +#ifndef NLA_H +#define NLA_H + +#define __NLA + +#define __CON_IPO // Not for Release: Not yet fully implemented +//#define __NLA_ACTION_BY_MOTION_ACTUATOR // Not for release: Not yet fully implemented + +#endif + diff --git a/source/blender/include/objfnt.h b/source/blender/include/objfnt.h new file mode 100644 index 00000000000..e54b7b5e1e3 --- /dev/null +++ b/source/blender/include/objfnt.h @@ -0,0 +1,105 @@ +/* $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 ***** +#ifndef OBJFNTDEF +#define OBJFNTDEF + +typedef struct chardesc { + short movex, movey; /* advance */ + short llx, lly; /* bounding box */ + short urx, ury; + short *data; /* char data */ + long datalen; +} chardesc; + +typedef struct objfnt { + struct objfnt *freeaddr; /* if freeaddr != 0, objfnt is one chunck */ + short type; + short charmin, charmax; + short my_nchars; + short scale; + chardesc *my_chars; +} objfnt; + +#define OFMAGIC 0x93339333 + +#define TM_TYPE 1 +#define PO_TYPE 2 +#define SP_TYPE 3 + +/* ops for tmesh characters */ + +#define TM_BGNTMESH (1) +#define TM_SWAPTMESH (2) +#define TM_ENDBGNTMESH (3) +#define TM_RETENDTMESH (4) +#define TM_RET (5) + +/* ops for poly characters */ + +#define PO_BGNLOOP (1) +#define PO_ENDBGNLOOP (2) +#define PO_RETENDLOOP (3) +#define PO_RET (4) + +/* ops for spline characters */ + +#define SP_MOVETO (1) +#define SP_LINETO (2) +#define SP_CURVETO (3) +#define SP_CLOSEPATH (4) +#define SP_RETCLOSEPATH (5) +#define SP_RET (6) + + +#define MIN_ASCII ' ' +#define MAX_ASCII '~' +#define NASCII (256 - 32) + +#define NOBBOX (30000) + +typedef struct pschar { + char *name; + int code; + int prog; +} pschar; + +extern pschar charlist[NASCII]; + +/* objfnt *fontname(void); */ +/* objfnt *readobjfnt(void); */ +/* objfnt *newobjfnt(void); */ +/* float fontstringwidth(void); */ +/* short *getcharprog(void); */ +/* chardesc *BLI_getchardesc(void); */ +/* char *asciiname(void); */ + +#endif + diff --git a/source/blender/include/particle_effect.h b/source/blender/include/particle_effect.h new file mode 100644 index 00000000000..883331ac740 --- /dev/null +++ b/source/blender/include/particle_effect.h @@ -0,0 +1,47 @@ +/* dec 95 + * jan feb 96 + * $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 ***** + */ + +#ifndef PARTICLE_EFFECT_H +#define PARTICLE_EFFECT_H + +/* effect.c */ +extern Effect *add_effect(int type); +extern PartEff *give_parteff(Object *ob); +extern void where_is_particle(PartEff *paf, Particle *pa, float ctime, float *vec); +extern void free_effect(Effect *eff); +extern void free_effects(ListBase *lb); +extern void copy_effects(ListBase *lbn, ListBase *lb); +extern void build_particle_system(Object *ob); + +#endif + diff --git a/source/blender/include/playanim_ext.h b/source/blender/include/playanim_ext.h new file mode 100644 index 00000000000..bef610ac018 --- /dev/null +++ b/source/blender/include/playanim_ext.h @@ -0,0 +1,41 @@ +/* + * external interface + * $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 ***** + */ + +#ifndef PLAYANIM_EXT_H +#define PLAYANIM_EXT_H + +/* used in apps */ +extern void playanim(int argc, char **argv); + +#endif + diff --git a/source/blender/include/transform.h b/source/blender/include/transform.h new file mode 100644 index 00000000000..a01bf92c871 --- /dev/null +++ b/source/blender/include/transform.h @@ -0,0 +1,452 @@ +/** + * $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 ***** + */ + +#ifndef TRANSFORM_H +#define TRANSFORM_H + +#include "BIF_transform.h" + +/* ************************** Types ***************************** */ + +struct TransInfo; +struct TransData; +struct TransSnap; +struct NumInput; +struct Object; +struct View3D; +struct ScrArea; +struct bPose; + + +typedef struct NumInput { + short idx; + short idx_max; + short flag; /* Different flags to indicate different behaviors */ + float val[3]; /* Direct value of the input */ + int ctrl[3]; /* Control to indicate what to do with the numbers that are typed */ +} NumInput ; + +/* + The ctrl value has different meaning: + 0 : No value has been typed + + otherwise, |value| - 1 is where the cursor is located after the period + Positive : number is positive + Negative : number is negative +*/ + +typedef struct TransSnap { + short modePoint; + short modeTarget; + int status; + float snapPoint[3]; + float snapTarget[3]; + float dist; // Distance from snapPoint to snapTarget + double last; + void (*applySnap)(struct TransInfo *, float *); + void (*calcSnap)(struct TransInfo *, float *); + void (*targetSnap)(struct TransInfo *); + float (*distance)(struct TransInfo *, float p1[3], float p2[3]); // Get the transform distance between two points (used by Closest snap) +} TransSnap; + +typedef struct TransCon { + char text[50]; /* Description of the Constraint for header_print */ + float mtx[3][3]; /* Matrix of the Constraint space */ + float imtx[3][3]; /* Inverse Matrix of the Constraint space */ + float pmtx[3][3]; /* Projection Constraint Matrix (same as imtx with some axis == 0) */ + float center[3]; /* transformation center to define where to draw the view widget + ALWAYS in global space. Unlike the transformation center */ + short imval[2]; /* initial mouse value for visual calculation */ + /* the one in TransInfo is not garanty to stay the same (Rotates change it) */ + int mode; /* Mode flags of the Constraint */ + void (*drawExtra)(struct TransInfo *); + /* For constraints that needs to draw differently from the other + uses this instead of the generic draw function */ + void (*applyVec)(struct TransInfo *, struct TransData *, float *, float *, float *); + /* Apply function pointer for linear vectorial transformation */ + /* The last three parameters are pointers to the in/out/printable vectors */ + void (*applySize)(struct TransInfo *, struct TransData *, float [3][3]); + /* Apply function pointer for rotation transformation (prototype will change */ + void (*applyRot)(struct TransInfo *, struct TransData *, float [3]); + /* Apply function pointer for rotation transformation (prototype will change */ +} TransCon; + +typedef struct TransDataIpokey { + int flag; /* which keys */ + float *locx, *locy, *locz; /* channel pointers */ + float *rotx, *roty, *rotz; + float *quatx, *quaty, *quatz, *quatw; + float *sizex, *sizey, *sizez; + float oldloc[9]; /* storage old values */ + float oldrot[9]; + float oldsize[9]; + float oldquat[12]; +} TransDataIpokey; + +typedef struct TransDataExtension { + float drot[3]; /* Initial object drot */ + float dsize[3]; /* Initial object dsize */ + float *rot; /* Rotation of the data to transform (Faculative) */ + float irot[3]; /* Initial rotation */ + float *quat; /* Rotation quaternion of the data to transform (Faculative) */ + 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 */ +} TransDataExtension; + +typedef struct TransData2D { + float loc[3]; /* Location of data used to transform (x,y,0) */ + float *loc2d; /* Pointer to real 2d location of data */ +} TransData2D; + +typedef struct TransData { + float dist; /* Distance needed to affect element (for Proportionnal Editing) */ + float rdist; /* Distance to the nearest element (for Proportionnal Editing) */ + float factor; /* Factor of the transformation (for Proportionnal Editing) */ + float *loc; /* Location of the data to transform */ + float iloc[3]; /* Initial location */ + float *val; /* Value pointer for special transforms */ + float ival; /* Old value*/ + float center[3]; /* Individual data center */ + float mtx[3][3]; /* Transformation matrix from data space to global space */ + 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; + 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 */ + short flag; /* Various flags */ + short protectflag; /* If set, copy of Object or PoseChannel protection */ +/*#ifdef WITH_VERSE*/ + void *verse; /* pointer at verse data struct (VerseVert, etc.) */ +/*#endif*/ +} TransData; + +typedef struct TransInfo { + int mode; /* current mode */ + int flag; /* generic flags for special behaviors */ + short state; /* current state (running, canceled,...)*/ + int context; /* current context */ + float val; /* init value for some transformations (and rotation angle) */ + float fac; /* factor for distance based transform */ + int (*transform)(struct TransInfo *, short *); + /* transform function pointer */ + int (*handleEvent)(struct TransInfo *, unsigned short event, short val); + /* event handler function pointer RETURN 1 if redraw is needed */ + int total; /* total number of transformed data */ + TransData *data; /* transformed data (array) */ + TransDataExtension *ext; /* transformed data extension (array) */ + TransData2D *data2d; /* transformed data for 2d (array) */ + TransCon con; /* transformed constraint */ + TransSnap tsnap; + NumInput num; /* numerical input */ + char redraw; /* redraw flag */ + float propsize; /* proportional circle radius */ + char proptext[20]; /* proportional falloff text */ + float center[3]; /* center of transformation */ + int center2d[2]; /* center in screen coordinates */ + short imval[2]; /* initial mouse position */ + short shiftmval[2]; /* mouse position when shift was pressed */ + short idx_max; /* maximum index on the input vector */ + float snap[3]; /* Snapping Gears */ + + float viewmat[4][4]; /* copy from G.vd, prevents feedback, */ + float viewinv[4][4]; /* and to make sure we don't have to */ + float persmat[4][4]; /* access G.vd from other space types */ + float persinv[4][4]; + short persp; + short around; + char spacetype; /* spacetype where transforming is */ + + float vec[3]; /* translation, to show for widget */ + float mat[3][3]; /* rot/rescale, to show for widget */ + + char *undostr; /* if set, uses this string for undo */ + float spacemtx[3][3]; /* orientation matrix of the current space */ + char spacename[32]; /* name of the current space */ + + struct Object *poseobj; /* if t->flag & T_POSE, this denotes pose object */ + + void *customData; /* Per Transform custom data */ +} TransInfo; + + +/* ******************** Macros & Prototypes *********************** */ + +/* NUMINPUT FLAGS */ +#define NUM_NULL_ONE 2 +#define NUM_NO_NEGATIVE 4 +#define NUM_NO_ZERO 8 +#define NUM_NO_FRACTION 16 +#define NUM_AFFECT_ALL 32 + +/* transinfo->state */ +#define TRANS_RUNNING 0 +#define TRANS_CONFIRM 1 +#define TRANS_CANCEL 2 + +/* transinfo->flag */ +#define T_OBJECT (1 << 0) +#define T_EDIT (1 << 1) +#define T_POSE (1 << 2) +#define T_TEXTURE (1 << 3) +#define T_CAMERA (1 << 4) + // when shift pressed, higher resolution transform. cannot rely on G.qual, need event! +#define T_SHIFT_MOD (1 << 5) + // trans on points, having no rotation/scale +#define T_POINTS (1 << 6) + // for manipulator exceptions, like scaling using center point, drawing help lines +#define T_USES_MANIPULATOR (1 << 7) + +/* restrictions flags */ +#define T_ALL_RESTRICTIONS ((1 << 8)|(1 << 9)|(1 << 10)) +#define T_NO_CONSTRAINT (1 << 8) +#define T_NULL_ONE (1 << 9) +#define T_NO_ZERO (1 << 10) + +#define T_PROP_EDIT (1 << 11) +#define T_PROP_CONNECTED (1 << 12) + +/* 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 */ +#define T_CLIP_UV (1 << 16) + +#define T_FREE_CUSTOMDATA (1 << 17) + +/* ******************************************************************************** */ + +/* transinfo->con->mode */ +#define CON_APPLY 1 +#define CON_AXIS0 2 +#define CON_AXIS1 4 +#define CON_AXIS2 8 +#define CON_SELECT 16 +#define CON_NOFLIP 32 /* does not reorient vector to face viewport when on */ +#define CON_LOCAL 64 +#define CON_USER 128 + +/* 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 */ +#ifdef WITH_VERSE + #define TD_VERSE_OBJECT 32 + #define TD_VERSE_VERT 64 +#endif +#define TD_TIMEONLY 128 +#define TD_NOCENTER 256 + +/* transsnap->status */ +#define SNAP_ON 1 +#define TARGET_INIT 2 +#define POINT_INIT 4 + +/* transsnap->modePoint */ +#define SNAP_GRID 0 +#define SNAP_GEO 1 + +/* transsnap->modeTarget */ +#define SNAP_CLOSEST 0 +#define SNAP_CENTER 1 +#define SNAP_MEDIAN 2 + +void checkFirstTime(void); + +void setTransformViewMatrices(TransInfo *t); +void convertViewVec(TransInfo *t, float *vec, short dx, short dy); +void projectIntView(TransInfo *t, float *vec, int *adr); +void projectFloatView(TransInfo *t, float *vec, float *adr); + +void convertVecToDisplayNum(float *vec, float *num); +void convertDisplayNumToVec(float *num, float *vec); + +void initWarp(TransInfo *t); +int Warp(TransInfo *t, short mval[2]); + +void initShear(TransInfo *t); +int handleEventShear(TransInfo *t, unsigned short evenl, short val); +int Shear(TransInfo *t, short mval[2]); + +void initResize(TransInfo *t); +int Resize(TransInfo *t, short mval[2]); + +void initTranslation(TransInfo *t); +int Translation(TransInfo *t, short mval[2]); + +void initToSphere(TransInfo *t); +int ToSphere(TransInfo *t, short mval[2]); + +void initRotation(TransInfo *t); +int Rotation(TransInfo *t, short mval[2]); + +void initShrinkFatten(TransInfo *t); +int ShrinkFatten(TransInfo *t, short mval[2]); + +void initTilt(TransInfo *t); +int Tilt(TransInfo *t, short mval[2]); + +void initCurveShrinkFatten(TransInfo *t); +int CurveShrinkFatten(TransInfo *t, short mval[2]); + +void initTrackball(TransInfo *t); +int Trackball(TransInfo *t, short mval[2]); + +void initPushPull(TransInfo *t); +int PushPull(TransInfo *t, short mval[2]); + +void initCrease(TransInfo *t); +int Crease(TransInfo *t, short mval[2]); + +void initBoneSize(TransInfo *t); +int BoneSize(TransInfo *t, short mval[2]); + +void initBoneEnvelope(TransInfo *t); +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]); + +/*********************** transform_conversions.c ********** */ +struct ListBase; +void flushTransIpoData(TransInfo *t); +void flushTransUVs(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); + +/*********************** TransData Creation and General Handling *********** */ +void createTransData(TransInfo *t); +void sort_trans_data_dist(TransInfo *t); +void add_tdi_poin(float *poin, float *old, float delta); +void special_aftertrans_update(TransInfo *t); + +/* auto-keying stuff used by special_aftertrans_update */ +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); +void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[]); +void setLocalConstraint(TransInfo *t, int mode, const char text[]); +void setUserConstraint(TransInfo *t, int mode, const char text[]); + +void constraintNumInput(TransInfo *t, float vec[3]); + +void getConstraintMatrix(TransInfo *t); +int isLockConstraint(TransInfo *t); +int getConstraintSpaceDimension(TransInfo *t); +char constraintModeToChar(TransInfo *t); + +void startConstraint(TransInfo *t); +void stopConstraint(TransInfo *t); + +void initSelectConstraint(TransInfo *t, float mtx[3][3]); +void selectConstraint(TransInfo *t); +void postSelectConstraint(TransInfo *t); + +void setNearestAxis(TransInfo *t); + +/*********************** Snapping ********************************/ + +typedef enum { + NO_GEARS = 0, + BIG_GEARS = 1, + SMALL_GEARS = 2 +} GearsType; + +void snapGrid(TransInfo *t, float *val); +void snapGridAction(TransInfo *t, float *val, GearsType action); + +void initSnapping(struct TransInfo *t); +void applySnapping(TransInfo *t, float *vec); +void resetSnapping(TransInfo *t); +int handleSnapping(TransInfo *t, int event); +void drawSnapping(TransInfo *t); + +/*********************** Generics ********************************/ + +void initTrans(TransInfo *t); +void initTransModeFlags(TransInfo *t, int mode); +void postTrans (TransInfo *t); + +void drawLine(float *center, float *dir, char axis, short options); + +/* DRAWLINE options flags */ +#define DRAWLIGHT 1 +#define DRAWDASHED 2 +#define DRAWBOLD 4 + +void applyTransObjects(TransInfo *t); +void restoreTransObjects(TransInfo *t); +void recalcData(TransInfo *t); + +void calculateCenter(TransInfo *t); +void calculateCenter2D(TransInfo *t); +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]); + +TransInfo * BIF_GetTransInfo(void); + +/*********************** NumInput ********************************/ + +void outputNumInput(NumInput *n, char *str); +short hasNumInput(NumInput *n); +void applyNumInput(NumInput *n, float *vec); +char handleNumInput(NumInput *n, unsigned short event); + +#endif + |