svn merge ^/trunk/blender -r55776:55813
This commit is contained in:
@@ -423,6 +423,15 @@ static PyObject *bpy_bmedge_is_contiguous_get(BPy_BMEdge *self)
|
||||
return PyBool_FromLong(BM_edge_is_contiguous(self->e));
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(bpy_bmedge_is_convex_doc,
|
||||
"True when this edge joins 2 convex faces, depends on a valid face normal (read-only).\n\n:type: boolean"
|
||||
);
|
||||
static PyObject *bpy_bmedge_is_convex_get(BPy_BMEdge *self)
|
||||
{
|
||||
BPY_BM_CHECK_OBJ(self);
|
||||
return PyBool_FromLong(BM_edge_is_convex(self->e));
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(bpy_bmedge_is_wire_doc,
|
||||
"True when this edge is not connected to any faces (read-only).\n\n:type: boolean"
|
||||
);
|
||||
@@ -652,10 +661,10 @@ static PyObject *bpy_bmloop_link_loop_radial_prev_get(BPy_BMLoop *self)
|
||||
return BPy_BMLoop_CreatePyObject(self->bm, self->l->radial_prev);
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(bpy_bm_is_convex_doc,
|
||||
"True when this loop is at the convex corner of a face, depends on a valid face normal (read-only).\n\n:type: :class:`BMLoop`"
|
||||
PyDoc_STRVAR(bpy_bmloop_is_convex_doc,
|
||||
"True when this loop is at the convex corner of a face, depends on a valid face normal (read-only).\n\n:type: boolean"
|
||||
);
|
||||
static PyObject *bpy_bm_is_convex_get(BPy_BMLoop *self)
|
||||
static PyObject *bpy_bmloop_is_convex_get(BPy_BMLoop *self)
|
||||
{
|
||||
BPY_BM_CHECK_OBJ(self);
|
||||
return PyBool_FromLong(BM_loop_is_convex(self->l));
|
||||
@@ -777,6 +786,7 @@ static PyGetSetDef bpy_bmedge_getseters[] = {
|
||||
/* readonly checks */
|
||||
{(char *)"is_manifold", (getter)bpy_bmedge_is_manifold_get, (setter)NULL, (char *)bpy_bmedge_is_manifold_doc, NULL},
|
||||
{(char *)"is_contiguous", (getter)bpy_bmedge_is_contiguous_get, (setter)NULL, (char *)bpy_bmedge_is_contiguous_doc, NULL},
|
||||
{(char *)"is_convex", (getter)bpy_bmedge_is_convex_get, (setter)NULL, (char *)bpy_bmedge_is_convex_doc, NULL},
|
||||
{(char *)"is_wire", (getter)bpy_bmedge_is_wire_get, (setter)NULL, (char *)bpy_bmedge_is_wire_doc, NULL},
|
||||
{(char *)"is_boundary", (getter)bpy_bmedge_is_boundary_get, (setter)NULL, (char *)bpy_bmedge_is_boundary_doc, NULL},
|
||||
{(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
|
||||
@@ -832,8 +842,8 @@ static PyGetSetDef bpy_bmloop_getseters[] = {
|
||||
{(char *)"link_loop_radial_prev", (getter)bpy_bmloop_link_loop_radial_prev_get, (setter)NULL, (char *)bpy_bmloop_link_loop_radial_prev_doc, NULL},
|
||||
|
||||
/* readonly checks */
|
||||
{(char *)"is_convex", (getter)bpy_bm_is_convex_get, (setter)NULL, (char *)bpy_bm_is_convex_doc, NULL},
|
||||
{(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
|
||||
{(char *)"is_convex", (getter)bpy_bmloop_is_convex_get, (setter)NULL, (char *)bpy_bmloop_is_convex_doc, NULL},
|
||||
{(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
|
||||
|
||||
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
|
||||
};
|
||||
@@ -1489,6 +1499,18 @@ static PyObject *bpy_bmedge_calc_face_angle(BPy_BMEdge *self)
|
||||
return PyFloat_FromDouble(BM_edge_calc_face_angle(self->e));
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(bpy_bmedge_calc_face_angle_signed_doc,
|
||||
".. method:: calc_face_angle_signed()\n"
|
||||
"\n"
|
||||
" :return: The angle between 2 connected faces in radians (negative for concave join).\n"
|
||||
" :rtype: float\n"
|
||||
);
|
||||
static PyObject *bpy_bmedge_calc_face_angle_signed(BPy_BMEdge *self)
|
||||
{
|
||||
BPY_BM_CHECK_OBJ(self);
|
||||
return PyFloat_FromDouble(BM_edge_calc_face_angle_signed(self->e));
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(bpy_bmedge_calc_tangent_doc,
|
||||
".. method:: calc_tangent(loop)\n"
|
||||
"\n"
|
||||
@@ -2531,6 +2553,7 @@ static struct PyMethodDef bpy_bmedge_methods[] = {
|
||||
|
||||
{"calc_length", (PyCFunction)bpy_bmedge_calc_length, METH_NOARGS, bpy_bmedge_calc_length_doc},
|
||||
{"calc_face_angle", (PyCFunction)bpy_bmedge_calc_face_angle, METH_NOARGS, bpy_bmedge_calc_face_angle_doc},
|
||||
{"calc_face_angle_signed", (PyCFunction)bpy_bmedge_calc_face_angle_signed, METH_NOARGS, bpy_bmedge_calc_face_angle_signed_doc},
|
||||
{"calc_tangent", (PyCFunction)bpy_bmedge_calc_tangent, METH_VARARGS, bpy_bmedge_calc_tangent_doc},
|
||||
|
||||
{"normal_update", (PyCFunction)bpy_bmedge_normal_update, METH_NOARGS, bpy_bmedge_normal_update_doc},
|
||||
@@ -3711,7 +3734,8 @@ char *BPy_BMElem_StringFromHType_ex(const char htype, char ret[32])
|
||||
if (htype & BM_FACE) ret_ptr += sprintf(ret_ptr, "/%s", BPy_BMFace_Type.tp_name);
|
||||
if (htype & BM_LOOP) ret_ptr += sprintf(ret_ptr, "/%s", BPy_BMLoop_Type.tp_name);
|
||||
ret[0] = '(';
|
||||
*ret_ptr = ')';
|
||||
*ret_ptr++ = ')';
|
||||
*ret_ptr = '\0';
|
||||
return ret;
|
||||
}
|
||||
char *BPy_BMElem_StringFromHType(const char htype)
|
||||
|
||||
@@ -3324,6 +3324,40 @@ static PyObject *pyrna_prop_path_from_id(BPy_PropertyRNA *self)
|
||||
return ret;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(pyrna_prop_as_bytes_doc,
|
||||
".. method:: as_bytes()\n"
|
||||
"\n"
|
||||
" Returns this string property as a byte rather then a python string.\n"
|
||||
"\n"
|
||||
" :return: The string as bytes.\n"
|
||||
" :rtype: bytes\n"
|
||||
);
|
||||
static PyObject *pyrna_prop_as_bytes(BPy_PropertyRNA *self)
|
||||
{
|
||||
|
||||
if (RNA_property_type(self->prop) != PROP_STRING) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.200s.%.200s.as_bytes() must be a string",
|
||||
RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop));
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
PyObject *ret;
|
||||
char buf_fixed[256], *buf;
|
||||
int buf_len;
|
||||
|
||||
buf = RNA_property_string_get_alloc(&self->ptr, self->prop, buf_fixed, sizeof(buf_fixed), &buf_len);
|
||||
|
||||
ret = PyBytes_FromStringAndSize(buf, buf_len);
|
||||
|
||||
if (buf_fixed != buf) {
|
||||
MEM_freeN(buf);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(pyrna_struct_type_recast_doc,
|
||||
".. method:: type_recast()\n"
|
||||
"\n"
|
||||
@@ -4685,6 +4719,7 @@ static struct PyMethodDef pyrna_struct_methods[] = {
|
||||
|
||||
static struct PyMethodDef pyrna_prop_methods[] = {
|
||||
{"path_from_id", (PyCFunction)pyrna_prop_path_from_id, METH_NOARGS, pyrna_prop_path_from_id_doc},
|
||||
{"as_bytes", (PyCFunction)pyrna_prop_as_bytes, METH_NOARGS, pyrna_prop_as_bytes_doc},
|
||||
{"__dir__", (PyCFunction)pyrna_prop_dir, METH_NOARGS, NULL},
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user