move bmesh wiki docs into bmesh header and update doxygen.
also have doxygen ignore *.py files and fix some warnings.
This commit is contained in:
@@ -258,7 +258,7 @@ doc_py:
|
|||||||
@echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'"
|
@echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'"
|
||||||
|
|
||||||
doc_doxy:
|
doc_doxy:
|
||||||
cd doc/doxygen; doxygen
|
cd doc/doxygen; doxygen Doxyfile
|
||||||
@echo "docs written into: '$(BLENDER_DIR)/doc/doxygen/html/index.html'"
|
@echo "docs written into: '$(BLENDER_DIR)/doc/doxygen/html/index.html'"
|
||||||
|
|
||||||
doc_dna:
|
doc_dna:
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ PROJECT_NAME = Blender
|
|||||||
# This could be handy for archiving the generated documentation or
|
# This could be handy for archiving the generated documentation or
|
||||||
# if some version control system is used.
|
# if some version control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = "V2.59"
|
PROJECT_NUMBER = "V2.6x"
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||||
# for a project that appears at the top of each page and should give viewer
|
# for a project that appears at the top of each page and should give viewer
|
||||||
@@ -648,7 +648,7 @@ RECURSIVE = YES
|
|||||||
# excluded from the INPUT source files. This way you can easily exclude a
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||||
|
|
||||||
EXCLUDE = ../../source/gameengine/PyDoc
|
EXCLUDE = ../../build_files, ../../release
|
||||||
|
|
||||||
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
||||||
# directories that are symbolic links (a Unix file system feature) are excluded
|
# directories that are symbolic links (a Unix file system feature) are excluded
|
||||||
@@ -662,7 +662,7 @@ EXCLUDE_SYMLINKS = NO
|
|||||||
# against the file with absolute path, so to exclude all test directories
|
# against the file with absolute path, so to exclude all test directories
|
||||||
# for example use the pattern */test/*
|
# for example use the pattern */test/*
|
||||||
|
|
||||||
EXCLUDE_PATTERNS = .svn
|
EXCLUDE_PATTERNS = .svn .git *.py
|
||||||
|
|
||||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||||
|
|||||||
@@ -8,14 +8,14 @@
|
|||||||
/** \defgroup render Rendering
|
/** \defgroup render Rendering
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
/** \defgroup meshedit Mesh Editing */
|
/** \defgroup bmesh BMesh
|
||||||
|
* \ingroup blender
|
||||||
|
*/
|
||||||
/** \defgroup texture Texturing */
|
/** \defgroup texture Texturing */
|
||||||
/** \defgroup compositor Compositing */
|
/** \defgroup compositor Compositing */
|
||||||
|
|
||||||
/** \defgroup scripts Scripting */
|
|
||||||
|
|
||||||
/** \defgroup python Python
|
/** \defgroup python Python
|
||||||
* \ingroup blender scripts
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup pygen Python Generic
|
/** \defgroup pygen Python Generic
|
||||||
@@ -332,7 +332,7 @@
|
|||||||
* \ingroup imbuf
|
* \ingroup imbuf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgorup imbdds DDS
|
/** \defgroup imbdds DDS
|
||||||
* \ingroup imbuf
|
* \ingroup imbuf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ AviError AVI_open_compress (char *name, AviMovie *movie, int streams, ...);
|
|||||||
AviError AVI_close_compress (AviMovie *movie);
|
AviError AVI_close_compress (AviMovie *movie);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Choose a compression option for <movie>. Possible options are
|
* Choose a compression option for \<movie\>. Possible options are
|
||||||
* AVI_OPTION_TYPE_MAIN, AVI_OPTION_TYPE_STRH, AVI_OPTION_TYPE_STRF
|
* AVI_OPTION_TYPE_MAIN, AVI_OPTION_TYPE_STRH, AVI_OPTION_TYPE_STRF
|
||||||
*/
|
*/
|
||||||
AviError AVI_set_compress_option (AviMovie *movie,
|
AviError AVI_set_compress_option (AviMovie *movie,
|
||||||
@@ -272,7 +272,7 @@ AviError AVI_set_compress_option (AviMovie *movie,
|
|||||||
#define AVI_OPTION_TYPE_STRF 2
|
#define AVI_OPTION_TYPE_STRF 2
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Direct the streams <avist_type> to <movie>. Redirect <stream_num>
|
* Direct the streams \<avist_type\> to \<movie\>. Redirect \<stream_num\>
|
||||||
* streams.
|
* streams.
|
||||||
*/
|
*/
|
||||||
int AVI_get_stream (AviMovie *movie, int avist_type, int stream_num);
|
int AVI_get_stream (AviMovie *movie, int avist_type, int stream_num);
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ int BKE_idcode_is_valid(int code);
|
|||||||
/**
|
/**
|
||||||
* Return an ID code and steps the index forward 1.
|
* Return an ID code and steps the index forward 1.
|
||||||
*
|
*
|
||||||
* @param index, start as 0.
|
* @param index start as 0.
|
||||||
* @return the code, 0 when all codes have been returned.
|
* @return the code, 0 when all codes have been returned.
|
||||||
*/
|
*/
|
||||||
int BKE_idcode_iter_step(int *index);
|
int BKE_idcode_iter_step(int *index);
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ typedef struct bNodeType {
|
|||||||
/// Create a template from an existing node.
|
/// Create a template from an existing node.
|
||||||
struct bNodeTemplate (*templatefunc)(struct bNode *);
|
struct bNodeTemplate (*templatefunc)(struct bNode *);
|
||||||
/** If a node can be made from the template in the given node tree.
|
/** If a node can be made from the template in the given node tree.
|
||||||
* \example Node groups can not be created inside their own node tree.
|
* \note Node groups can not be created inside their own node tree.
|
||||||
*/
|
*/
|
||||||
int (*validfunc)(struct bNodeTree *ntree, struct bNodeTemplate *ntemp);
|
int (*validfunc)(struct bNodeTree *ntree, struct bNodeTemplate *ntemp);
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
#ifndef __BKE_TRACKING_H__
|
#ifndef __BKE_TRACKING_H__
|
||||||
#define __BKE_TRACKING_H__
|
#define __BKE_TRACKING_H__
|
||||||
|
|
||||||
/** \file BKE_trackingp.h
|
/** \file BKE_tracking.h
|
||||||
* \ingroup bke
|
* \ingroup bke
|
||||||
* \author Sergey Sharybin
|
* \author Sergey Sharybin
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/** \file blender/imbuf/intern/md5.c
|
/** \file blender/blenlib/intern/md5.c
|
||||||
* \ingroup imbuf
|
* \ingroup imbuf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* md5.c - Functions to compute MD5 message digest of files or memory blocks
|
/* md5.c - Functions to compute MD5 message digest of files or memory blocks
|
||||||
according to the definition of MD5 in RFC 1321 from April 1992.
|
according to the definition of MD5 in RFC 1321 from April 1992.
|
||||||
Copyright (C) 1995 Software Foundation, Inc.
|
Copyright (C) 1995 Software Foundation, Inc.
|
||||||
|
|||||||
@@ -1855,6 +1855,7 @@ const char *BLI_program_dir(void)
|
|||||||
* Also make sure the temp dir has a trailing slash
|
* Also make sure the temp dir has a trailing slash
|
||||||
*
|
*
|
||||||
* @param fullname The full path to the temp directory
|
* @param fullname The full path to the temp directory
|
||||||
|
* @param maxlen The size of the fullname buffer
|
||||||
* @param userdir Directory specified in user preferences
|
* @param userdir Directory specified in user preferences
|
||||||
*/
|
*/
|
||||||
static void BLI_where_is_temp(char *fullname, const size_t maxlen, char *userdir)
|
static void BLI_where_is_temp(char *fullname, const size_t maxlen, char *userdir)
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ int BLI_str_utf8_size(const char *p)
|
|||||||
/* was g_utf8_get_char */
|
/* was g_utf8_get_char */
|
||||||
/**
|
/**
|
||||||
* BLI_str_utf8_as_unicode:
|
* BLI_str_utf8_as_unicode:
|
||||||
* @p: a pointer to Unicode character encoded as UTF-8
|
* @p a pointer to Unicode character encoded as UTF-8
|
||||||
*
|
*
|
||||||
* Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
|
* Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
|
||||||
* If @p does not point to a valid UTF-8 encoded character, results are
|
* If @p does not point to a valid UTF-8 encoded character, results are
|
||||||
@@ -432,10 +432,10 @@ unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index)
|
|||||||
/* was g_unichar_to_utf8 */
|
/* was g_unichar_to_utf8 */
|
||||||
/**
|
/**
|
||||||
* BLI_str_utf8_from_unicode:
|
* BLI_str_utf8_from_unicode:
|
||||||
* @c: a Unicode character code
|
* @c a Unicode character code
|
||||||
* @outbuf: output buffer, must have at least 6 bytes of space.
|
* @param outbuf output buffer, must have at least 6 bytes of space.
|
||||||
* If %NULL, the length will be computed and returned
|
* If %NULL, the length will be computed and returned
|
||||||
* and nothing will be written to @outbuf.
|
* and nothing will be written to outbuf.
|
||||||
*
|
*
|
||||||
* Converts a single character to UTF-8.
|
* Converts a single character to UTF-8.
|
||||||
*
|
*
|
||||||
@@ -488,11 +488,11 @@ size_t BLI_str_utf8_from_unicode(unsigned int c, char *outbuf)
|
|||||||
/**
|
/**
|
||||||
* BLI_str_find_prev_char_utf8:
|
* BLI_str_find_prev_char_utf8:
|
||||||
* @str: pointer to the beginning of a UTF-8 encoded string
|
* @str: pointer to the beginning of a UTF-8 encoded string
|
||||||
* @p: pointer to some position within @str
|
* @p pointer to some position within @str
|
||||||
*
|
*
|
||||||
* Given a position @p with a UTF-8 encoded string @str, find the start
|
* Given a position @p with a UTF-8 encoded string @str, find the start
|
||||||
* of the previous UTF-8 character starting before @p. Returns %NULL if no
|
* of the previous UTF-8 character starting before. @p Returns %NULL if no
|
||||||
* UTF-8 characters are present in @str before @p.
|
* UTF-8 characters are present in @str before @p
|
||||||
*
|
*
|
||||||
* @p does not have to be at the beginning of a UTF-8 character. No check
|
* @p does not have to be at the beginning of a UTF-8 character. No check
|
||||||
* is made to see if the character found is actually valid other than
|
* is made to see if the character found is actually valid other than
|
||||||
@@ -513,11 +513,11 @@ char * BLI_str_find_prev_char_utf8(const char *str, const char *p)
|
|||||||
/* was g_utf8_find_next_char */
|
/* was g_utf8_find_next_char */
|
||||||
/**
|
/**
|
||||||
* BLI_str_find_next_char_utf8:
|
* BLI_str_find_next_char_utf8:
|
||||||
* @p: a pointer to a position within a UTF-8 encoded string
|
* @p a pointer to a position within a UTF-8 encoded string
|
||||||
* @end: a pointer to the byte following the end of the string,
|
* @end a pointer to the byte following the end of the string,
|
||||||
* or %NULL to indicate that the string is nul-terminated.
|
* or %NULL to indicate that the string is nul-terminated.
|
||||||
*
|
*
|
||||||
* Finds the start of the next UTF-8 character in the string after @p.
|
* Finds the start of the next UTF-8 character in the string after @p
|
||||||
*
|
*
|
||||||
* @p does not have to be at the beginning of a UTF-8 character. No check
|
* @p does not have to be at the beginning of a UTF-8 character. No check
|
||||||
* is made to see if the character found is actually valid other than
|
* is made to see if the character found is actually valid other than
|
||||||
@@ -545,9 +545,9 @@ char *BLI_str_find_next_char_utf8(const char *p, const char *end)
|
|||||||
/* was g_utf8_prev_char */
|
/* was g_utf8_prev_char */
|
||||||
/**
|
/**
|
||||||
* BLI_str_prev_char_utf8:
|
* BLI_str_prev_char_utf8:
|
||||||
* @p: a pointer to a position within a UTF-8 encoded string
|
* @p a pointer to a position within a UTF-8 encoded string
|
||||||
*
|
*
|
||||||
* Finds the previous UTF-8 character in the string before @p.
|
* Finds the previous UTF-8 character in the string before @p
|
||||||
*
|
*
|
||||||
* @p does not have to be at the beginning of a UTF-8 character. No check
|
* @p does not have to be at the beginning of a UTF-8 character. No check
|
||||||
* is made to see if the character found is actually valid other than
|
* is made to see if the character found is actually valid other than
|
||||||
|
|||||||
@@ -285,7 +285,8 @@ static void mywrite( WriteData *wd, void *adr, int len)
|
|||||||
/**
|
/**
|
||||||
* BeGiN initializer for mywrite
|
* BeGiN initializer for mywrite
|
||||||
* @param file File descriptor
|
* @param file File descriptor
|
||||||
* @param write_flags Write parameters
|
* @param compare Previous memory file (can be NULL).
|
||||||
|
* @param current The current memory file (can be NULL).
|
||||||
* @warning Talks to other functions with global parameters
|
* @warning Talks to other functions with global parameters
|
||||||
*/
|
*/
|
||||||
static WriteData *bgnwrite(int file, MemFile *compare, MemFile *current)
|
static WriteData *bgnwrite(int file, MemFile *compare, MemFile *current)
|
||||||
|
|||||||
@@ -25,6 +25,160 @@
|
|||||||
|
|
||||||
/** \file blender/bmesh/bmesh.h
|
/** \file blender/bmesh/bmesh.h
|
||||||
* \ingroup bmesh
|
* \ingroup bmesh
|
||||||
|
*
|
||||||
|
* \addtogroup bmesh BMesh
|
||||||
|
*
|
||||||
|
* \brief BMesh is a non-manifold boundary representation designed to replace the current, limited EditMesh structure,
|
||||||
|
* solving many of the design limitations and maintenance issues of EditMesh.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \section bm_structure The Structure
|
||||||
|
*
|
||||||
|
* BMesh stores topology in four main element structures:
|
||||||
|
*
|
||||||
|
* - Faces - BMFace
|
||||||
|
* - Loops - BMLoop, (stores per-face-vertex data, UV's, vertex-colors, etc)
|
||||||
|
* - Edges - BMEdge
|
||||||
|
* - Verts - BMVert
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_header_flags Header Flags
|
||||||
|
* Each element (vertex/edge/face/loop) in a mesh has an associated bit-field called "header flags".
|
||||||
|
*
|
||||||
|
* BMHeader flags should <b>never</b> be read or written to by bmesh operators (see Operators below).
|
||||||
|
*
|
||||||
|
* Access to header flags is done with BM_elem_flag_*() functions.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_faces Faces
|
||||||
|
*
|
||||||
|
* Faces in BMesh are stored as a circular linked list of loops. Loops store per-face-vertex data
|
||||||
|
* (amongst other things outlined later in this document), and define the face boundary.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_loop The Loop
|
||||||
|
*
|
||||||
|
* Loops define the boundary loop of a face. Each loop logically corresponds to an edge,
|
||||||
|
* which is defined by the loop and next loop's vertices.
|
||||||
|
*
|
||||||
|
* Loops store several handy pointers:
|
||||||
|
*
|
||||||
|
* - BMLoop#v - pointer to the vertex associated with this loop.
|
||||||
|
* - BMLoop#e - pointer to the edge associated with this loop.
|
||||||
|
* - BMLoop#f - pointer to the face associated with this loop.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_two_side_face 2-Sided Faces
|
||||||
|
*
|
||||||
|
* There are some situations where you need 2-sided faces (e.g. a face of two vertices).
|
||||||
|
* This is supported by BMesh, but note that such faces should only be used as intermediary steps,
|
||||||
|
* and should not end up in the final mesh.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_edges_and_verts Edges and Vertices
|
||||||
|
*
|
||||||
|
* Edges and Vertices in BMesh are much like their counterparts in EditMesh,
|
||||||
|
* except for some members private to the BMesh api.
|
||||||
|
*
|
||||||
|
* \note There can be more then one edge between two vertices in bmesh,
|
||||||
|
* though the rest of blender (e.g. DerivedMesh, CDDM, CCGSubSurf, etc) does not support this.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_queries Queries
|
||||||
|
*
|
||||||
|
* The following topological queries are available:
|
||||||
|
*
|
||||||
|
* - Edges/Faces/Loops around a vertex.
|
||||||
|
* - Faces around an edge.
|
||||||
|
* - Loops around an edge.
|
||||||
|
*
|
||||||
|
* These are accessible through the iterator api, which is covered later in this document
|
||||||
|
*
|
||||||
|
* See source/blender/bmesh/bmesh_queries.h for more misc. queries.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \section bm_api The BMesh API
|
||||||
|
*
|
||||||
|
* One of the goals of the BMesh API is to make it easy and natural to produce highly maintainable code.
|
||||||
|
* Code duplication, etc are avoided where possible.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_iter_api Iterator API
|
||||||
|
*
|
||||||
|
* Most topological queries in BMesh go through an iterator API (see Queries above).
|
||||||
|
* These are defined in bmesh_iterators.h. If you can, please use the #BM_ITER macro in bmesh_iterators.h
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_walker_api Walker API
|
||||||
|
*
|
||||||
|
* Topological queries that require a stack (e.g. recursive queries) go through the Walker API,
|
||||||
|
* which is defined in bmesh_walkers.h. Currently the "walkers" are hard-coded into the API,
|
||||||
|
* though a mechanism for plugging in new walkers needs to be added at some point.
|
||||||
|
*
|
||||||
|
* Most topological queries should go through these two APIs;
|
||||||
|
* there are additional functions you can use for topological iteration, but their meant for internal bmesh code.
|
||||||
|
*
|
||||||
|
* Note that the walker API supports delimiter flags, to allow the caller to flag elements not to walk past.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_ops Operators
|
||||||
|
*
|
||||||
|
* Operators are an integral part of BMesh. Unlike regular blender operators,
|
||||||
|
* BMesh operators <b>bmo's</b> are designed to be nested (e.g. call other operators).
|
||||||
|
*
|
||||||
|
* Each operator has a number of input/output "slots" which are used to pass settings & data into/out of the operator
|
||||||
|
* (and allows for chaining operators together).
|
||||||
|
*
|
||||||
|
* These slots are identified by name, using strings.
|
||||||
|
*
|
||||||
|
* Access to slots is done with BMO_slot_*() functions.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_tool_flags Tool Flags
|
||||||
|
*
|
||||||
|
* The BMesh API provides a set of flags for faces, edges and vertices, which are private to an operator.
|
||||||
|
* These flags may be used by the client operator code as needed
|
||||||
|
* (a common example is flagging elements for use in another operator).
|
||||||
|
* Each call to an operator allocates it's own set of tool flags when it's executed,
|
||||||
|
* avoiding flag conflicts between operators.
|
||||||
|
*
|
||||||
|
* These flags should not be confused with header flags, which are used to store persistent flags
|
||||||
|
* (e.g. selection, hide status, etc).
|
||||||
|
*
|
||||||
|
* Access to tool flags is done with BMO_elem_flag_*() functions.
|
||||||
|
*
|
||||||
|
* \warning Operators are never allowed to read or write to header flags.
|
||||||
|
* They act entirely on the data inside their input slots.
|
||||||
|
* For example an operator should not check the selected state of an element,
|
||||||
|
* there are some exceptions to this - some operators check of a face is smooth.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_slot_types Slot Types
|
||||||
|
*
|
||||||
|
* The following slot types are available:
|
||||||
|
*
|
||||||
|
* - integer - #BMO_OP_SLOT_INT
|
||||||
|
* - boolean - #BMO_OP_SLOT_BOOL
|
||||||
|
* - float - #BMO_OP_SLOT_FLT
|
||||||
|
* - pointer - #BMO_OP_SLOT_PNT
|
||||||
|
* - element buffer - #BMO_OP_SLOT_ELEMENT_BUF - a list of verts/edges/faces
|
||||||
|
* - map - BMO_OP_SLOT_MAPPING - simple hash map
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_slot_iter Slot Iterators
|
||||||
|
*
|
||||||
|
* Access to element buffers or maps must go through the slot iterator api, defined in bmesh_operators.h.
|
||||||
|
* Use #BMO_ITER where ever possible.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \subsection bm_elem_buf Element Buffers
|
||||||
|
*
|
||||||
|
* The element buffer slot type is used to feed elements (verts/edges/faces) to operators.
|
||||||
|
* Internally they are stored as pointer arrays (which happily has not caused any problems so far).
|
||||||
|
* Many operators take in a buffer of elements, process it,
|
||||||
|
* then spit out a new one; this allows operators to be chained together.
|
||||||
|
*
|
||||||
|
* \note Element buffers may have elements of different types within the same buffer (this is supported by the API.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -38,29 +192,6 @@ extern "C" {
|
|||||||
|
|
||||||
#include "bmesh_class.h"
|
#include "bmesh_class.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* short introduction:
|
|
||||||
*
|
|
||||||
* the bmesh structure is a boundary representation, supporting non-manifold
|
|
||||||
* locally modifiable topology. the API is designed to allow clean, maintainable
|
|
||||||
* code, that never (or almost never) directly inspects the underlying structure.
|
|
||||||
*
|
|
||||||
* The API includes iterators, including many useful topological iterators;
|
|
||||||
* walkers, which walk over a mesh, without the risk of hitting the recursion
|
|
||||||
* limit; operators, which are logical, reusable mesh modules; topological
|
|
||||||
* modification functions (like split face, join faces, etc), which are used for
|
|
||||||
* topological manipulations; and some (not yet finished) geometric utility
|
|
||||||
* functions.
|
|
||||||
*
|
|
||||||
* some definitions:
|
|
||||||
*
|
|
||||||
* tool flags: private flags for tools. each operator has it's own private
|
|
||||||
* tool flag "layer", which it can use to flag elements.
|
|
||||||
* tool flags are also used by various other parts of the api.
|
|
||||||
* header flags: stores persistent flags, such as selection state, hide state,
|
|
||||||
* etc. be careful of touching these.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*forward declarations*/
|
/*forward declarations*/
|
||||||
struct Mesh;
|
struct Mesh;
|
||||||
|
|
||||||
@@ -79,32 +210,37 @@ struct Mesh;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* BMHeader->htype (char) */
|
/* BMHeader->htype (char) */
|
||||||
#define BM_VERT 1
|
enum {
|
||||||
#define BM_EDGE 2
|
BM_VERT = 1,
|
||||||
#define BM_LOOP 4
|
BM_EDGE = 2,
|
||||||
#define BM_FACE 8
|
BM_LOOP = 4,
|
||||||
#define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
|
BM_FACE = 8
|
||||||
|
};
|
||||||
|
|
||||||
|
#define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
|
||||||
|
|
||||||
/* BMHeader->hflag (char) */
|
/* BMHeader->hflag (char) */
|
||||||
#define BM_ELEM_SELECT (1 << 0)
|
enum {
|
||||||
#define BM_ELEM_HIDDEN (1 << 1)
|
BM_ELEM_SELECT = (1 << 0),
|
||||||
#define BM_ELEM_SEAM (1 << 2)
|
BM_ELEM_HIDDEN = (1 << 1),
|
||||||
#define BM_ELEM_SMOOTH (1 << 3) /* used for faces and edges, note from the user POV,
|
BM_ELEM_SEAM = (1 << 2),
|
||||||
|
BM_ELEM_SMOOTH = (1 << 3), /* used for faces and edges, note from the user POV,
|
||||||
* this is a sharp edge when disabled */
|
* this is a sharp edge when disabled */
|
||||||
|
|
||||||
#define BM_ELEM_TAG (1 << 4) /* internal flag, used for ensuring correct normals
|
BM_ELEM_TAG = (1 << 4), /* internal flag, used for ensuring correct normals
|
||||||
* during multires interpolation, and any other time
|
* during multires interpolation, and any other time
|
||||||
* when temp tagging is handy.
|
* when temp tagging is handy.
|
||||||
* always assume dirty & clear before use. */
|
* always assume dirty & clear before use. */
|
||||||
|
|
||||||
/* we have 3 spare flags which is awesome but since we're limited to 8
|
/* we have 2 spare flags which is awesome but since we're limited to 8
|
||||||
* only add new flags with care! - campbell */
|
* only add new flags with care! - campbell */
|
||||||
/* #define BM_ELEM_SPARE (1 << 5) */
|
/* BM_ELEM_SPARE = (1 << 5), */
|
||||||
/* #define BM_ELEM_SPARE (1 << 6) */
|
/* BM_ELEM_SPARE = (1 << 6), */
|
||||||
|
|
||||||
#define BM_ELEM_INTERNAL_TAG (1 << 7) /* for low level internal API tagging,
|
BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
|
||||||
* since tools may want to tag verts and
|
* since tools may want to tag verts and
|
||||||
* not have functions clobber them */
|
* not have functions clobber them */
|
||||||
|
};
|
||||||
|
|
||||||
/* Mesh Level Ops */
|
/* Mesh Level Ops */
|
||||||
extern int bm_mesh_allocsize_default[4];
|
extern int bm_mesh_allocsize_default[4];
|
||||||
|
|||||||
@@ -188,9 +188,4 @@ typedef struct BMesh {
|
|||||||
int opflag; /* current operator flag */
|
int opflag; /* current operator flag */
|
||||||
} BMesh;
|
} BMesh;
|
||||||
|
|
||||||
#define BM_VERT 1
|
|
||||||
#define BM_EDGE 2
|
|
||||||
#define BM_LOOP 4
|
|
||||||
#define BM_FACE 8
|
|
||||||
|
|
||||||
#endif /* __BMESH_CLASS_H__ */
|
#endif /* __BMESH_CLASS_H__ */
|
||||||
|
|||||||
@@ -375,7 +375,8 @@ BMFace *BM_face_split(BMesh *bm, BMFace *f, BMVert *v1, BMVert *v2, BMLoop **nl,
|
|||||||
* @param fac The factor along the edge
|
* @param fac The factor along the edge
|
||||||
* @param join_faces When true the faces around the vertex will be joined
|
* @param join_faces When true the faces around the vertex will be joined
|
||||||
* otherwise collapse the vertex by merging the 2 edges this vert touches into one.
|
* otherwise collapse the vertex by merging the 2 edges this vert touches into one.
|
||||||
* @returns The New Edge
|
* @param kill_degenerate_faces Removes faces with less than 3 verts after collapsing.
|
||||||
|
* @returns The New Edge
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BMEdge *BM_vert_collapse_faces(BMesh *bm, BMEdge *ke, BMVert *kv, float fac,
|
BMEdge *BM_vert_collapse_faces(BMesh *bm, BMEdge *ke, BMVert *kv, float fac,
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ BMEdge *bmesh_disk_faceedge_find_next(BMEdge *e, BMVert *v);
|
|||||||
/* RADIAL CYCLE MANAGMENT */
|
/* RADIAL CYCLE MANAGMENT */
|
||||||
void bmesh_radial_append(BMEdge *e, BMLoop *l);
|
void bmesh_radial_append(BMEdge *e, BMLoop *l);
|
||||||
void bmesh_radial_loop_remove(BMLoop *l, BMEdge *e);
|
void bmesh_radial_loop_remove(BMLoop *l, BMEdge *e);
|
||||||
int bmesh_radial_face_find(BMEdge *e, BMFace *f);
|
|
||||||
BMLoop *bmesh_radial_loop_next(BMLoop *l);
|
BMLoop *bmesh_radial_loop_next(BMLoop *l);
|
||||||
|
int bmesh_radial_face_find(BMEdge *e, BMFace *f);
|
||||||
int bmesh_radial_facevert_count(BMLoop *l, BMVert *v);
|
int bmesh_radial_facevert_count(BMLoop *l, BMVert *v);
|
||||||
BMLoop *bmesh_radial_faceloop_find_first(BMLoop *l, BMVert *v);
|
BMLoop *bmesh_radial_faceloop_find_first(BMLoop *l, BMVert *v);
|
||||||
BMLoop *bmesh_radial_faceloop_find_next(BMLoop *l, BMVert *v);
|
BMLoop *bmesh_radial_faceloop_find_next(BMLoop *l, BMVert *v);
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#include "DocumentImporter.h"
|
#include "DocumentImporter.h"
|
||||||
#include "AnimationImporter.h"
|
#include "AnimationImporter.h"
|
||||||
|
|
||||||
/** \brief Handler class for <extra> data, through which different
|
/** \brief Handler class for \<extra\> data, through which different
|
||||||
* profiles can be handled
|
* profiles can be handled
|
||||||
*/
|
*/
|
||||||
class ExtraHandler : public COLLADASaxFWL::IExtraDataCallbackHandler
|
class ExtraHandler : public COLLADASaxFWL::IExtraDataCallbackHandler
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/** \brief Class for saving <extra> tags for a specific UniqueId.
|
/** \brief Class for saving \<extra\> tags for a specific UniqueId.
|
||||||
*/
|
*/
|
||||||
class ExtraTags
|
class ExtraTags
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ float glaGetOneFloat (int param);
|
|||||||
* should be coordinates of a point known to be within the current
|
* should be coordinates of a point known to be within the current
|
||||||
* view frustum.
|
* view frustum.
|
||||||
* @attention This routine should be used when the distance of @a x
|
* @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 @a y away from the known good point is small (ie. for small icons
|
||||||
* and for bitmap characters), when drawing large+zoomed images it is
|
* and for bitmap characters), when drawing large+zoomed images it is
|
||||||
* possible for overflow to occur, the glaDrawPixelsSafe routine should
|
* possible for overflow to occur, the glaDrawPixelsSafe routine should
|
||||||
* be used instead.
|
* be used instead.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file blender/editors/space_clip/clip_header.c
|
/** \file blender/editors/space_clip/clip_toolbar.c
|
||||||
* \ingroup spclip
|
* \ingroup spclip
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file blender/editors/interface/interface_node.c
|
/** \file blender/editors/space_node/node_templates.c
|
||||||
* \ingroup edinterface
|
* \ingroup edinterface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file blender/editors/uvedit/uvedit_stitch.c
|
/** \file blender/editors/uvedit/uvedit_smart_stitch.c
|
||||||
* \ingroup eduv
|
* \ingroup eduv
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ int IMB_metadata_get_field(struct ImBuf* img, const char* key, char* value, int
|
|||||||
* @param value - the data to be written to the field. zero terminated string
|
* @param value - the data to be written to the field. zero terminated string
|
||||||
* @return - 1 (true) if ImageInfo present, 0 (false) otherwise
|
* @return - 1 (true) if ImageInfo present, 0 (false) otherwise
|
||||||
*/
|
*/
|
||||||
int IMB_metadata_add_field(struct ImBuf* img, const char* key, const char* field);
|
int IMB_metadata_add_field(struct ImBuf* img, const char* key, const char* value);
|
||||||
|
|
||||||
/** delete the key/field par in the ImMetaData struct.
|
/** delete the key/field par in the ImMetaData struct.
|
||||||
* @param img - the ImBuf that contains the image data
|
* @param img - the ImBuf that contains the image data
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ int IMB_metadata_get_field(struct ImBuf* img, const char* key, char* field, int
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
int IMB_metadata_add_field(struct ImBuf* img, const char* key, const char* field)
|
int IMB_metadata_add_field(struct ImBuf* img, const char* key, const char* value)
|
||||||
{
|
{
|
||||||
ImMetaData *info;
|
ImMetaData *info;
|
||||||
ImMetaData *last;
|
ImMetaData *last;
|
||||||
@@ -106,7 +106,7 @@ int IMB_metadata_add_field(struct ImBuf* img, const char* key, const char* field
|
|||||||
last->next = info;
|
last->next = info;
|
||||||
}
|
}
|
||||||
info->key = BLI_strdup(key);
|
info->key = BLI_strdup(key);
|
||||||
info->value = BLI_strdup(field);
|
info->value = BLI_strdup(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user