2008-12-01 19:02:27 +00:00
/**
* $ 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 ,
2010-02-12 13:34:04 +00:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA .
2008-12-01 19:02:27 +00:00
*
2009-03-28 10:52:51 +00:00
* Contributor ( s ) : Blender Foundation ( 2008 ) , Juho Veps <EFBFBD> l <EFBFBD> inen
2008-12-01 19:02:27 +00:00
*
* * * * * * END GPL LICENSE BLOCK * * * * *
*/
# include <stdlib.h>
# include "RNA_define.h"
# include "rna_internal.h"
# include "DNA_curve_types.h"
2010-08-12 06:28:46 +00:00
# include "DNA_key_types.h"
2009-03-28 10:52:51 +00:00
# include "DNA_material_types.h"
2009-06-20 11:44:56 +00:00
# include "DNA_scene_types.h"
2008-12-01 19:02:27 +00:00
2009-08-03 15:06:56 +00:00
# include "BKE_font.h"
2009-09-08 07:35:07 +00:00
# include "WM_types.h"
2010-07-25 11:57:36 +00:00
# include "BKE_curve.h"
# include "ED_curve.h"
2009-05-08 10:50:32 +00:00
EnumPropertyItem beztriple_handle_type_items [ ] = {
2009-06-16 00:52:21 +00:00
{ HD_FREE , " FREE " , 0 , " Free " , " " } ,
{ HD_AUTO , " AUTO " , 0 , " Auto " , " " } ,
{ HD_VECT , " VECTOR " , 0 , " Vector " , " " } ,
{ HD_ALIGN , " ALIGNED " , 0 , " Aligned " , " " } ,
{ 0 , NULL , 0 , NULL , NULL } } ;
2009-06-07 13:09:18 +00:00
2009-05-08 10:50:32 +00:00
EnumPropertyItem beztriple_interpolation_mode_items [ ] = {
2009-06-16 00:52:21 +00:00
{ BEZT_IPO_CONST , " CONSTANT " , 0 , " Constant " , " " } ,
{ BEZT_IPO_LIN , " LINEAR " , 0 , " Linear " , " " } ,
{ BEZT_IPO_BEZ , " BEZIER " , 0 , " Bezier " , " " } ,
{ 0 , NULL , 0 , NULL , NULL } } ;
2009-05-08 10:50:32 +00:00
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
EnumPropertyItem curve_type_items [ ] = {
{ CU_POLY , " POLY " , 0 , " Poly " , " " } ,
{ CU_BEZIER , " BEZIER " , 0 , " Bezier " , " " } ,
{ CU_BSPLINE , " BSPLINE " , 0 , " BSpline " , " " } ,
{ CU_CARDINAL , " CARDINAL " , 0 , " Cardinal " , " " } ,
{ CU_NURBS , " NURBS " , 0 , " Ease " , " " } ,
{ 0 , NULL , 0 , NULL , NULL } } ;
2008-12-01 19:02:27 +00:00
# ifdef RNA_RUNTIME
2010-04-12 05:04:49 +00:00
# include "BLI_math.h"
2009-06-07 13:09:18 +00:00
# include "DNA_object_types.h"
# include "BKE_curve.h"
2009-08-03 15:06:56 +00:00
# include "BKE_depsgraph.h"
2009-08-10 21:10:09 +00:00
# include "BKE_main.h"
2009-08-03 15:06:56 +00:00
# include "WM_api.h"
2009-06-07 13:09:18 +00:00
2009-11-12 14:40:09 +00:00
# include "MEM_guardedalloc.h"
2010-07-25 11:57:36 +00:00
# include "ED_curve.h" /* for BKE_curve_nurbs */
2009-09-14 16:52:06 +00:00
static StructRNA * rna_Curve_refine ( PointerRNA * ptr )
2009-06-07 13:09:18 +00:00
{
Curve * cu = ( Curve * ) ptr - > data ;
short obtype = curve_type ( cu ) ;
2010-01-11 05:10:57 +00:00
2009-06-07 13:09:18 +00:00
if ( obtype = = OB_FONT ) return & RNA_TextCurve ;
else if ( obtype = = OB_SURF ) return & RNA_SurfaceCurve ;
else return & RNA_Curve ;
}
2009-02-02 19:57:57 +00:00
static void rna_BezTriple_handle1_get ( PointerRNA * ptr , float * values )
2009-02-02 11:51:10 +00:00
{
BezTriple * bt = ( BezTriple * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
values [ 0 ] = bt - > vec [ 0 ] [ 0 ] ;
values [ 1 ] = bt - > vec [ 0 ] [ 1 ] ;
values [ 2 ] = bt - > vec [ 0 ] [ 2 ] ;
2009-02-02 11:51:10 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_BezTriple_handle1_set ( PointerRNA * ptr , const float * values )
2009-02-02 11:51:10 +00:00
{
BezTriple * bt = ( BezTriple * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
bt - > vec [ 0 ] [ 0 ] = values [ 0 ] ;
bt - > vec [ 0 ] [ 1 ] = values [ 1 ] ;
bt - > vec [ 0 ] [ 2 ] = values [ 2 ] ;
2009-02-02 11:51:10 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_BezTriple_handle2_get ( PointerRNA * ptr , float * values )
2009-02-02 11:51:10 +00:00
{
BezTriple * bt = ( BezTriple * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
values [ 0 ] = bt - > vec [ 2 ] [ 0 ] ;
values [ 1 ] = bt - > vec [ 2 ] [ 1 ] ;
values [ 2 ] = bt - > vec [ 2 ] [ 2 ] ;
2009-02-02 11:51:10 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_BezTriple_handle2_set ( PointerRNA * ptr , const float * values )
2009-02-02 11:51:10 +00:00
{
BezTriple * bt = ( BezTriple * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
bt - > vec [ 2 ] [ 0 ] = values [ 0 ] ;
bt - > vec [ 2 ] [ 1 ] = values [ 1 ] ;
bt - > vec [ 2 ] [ 2 ] = values [ 2 ] ;
2009-02-02 11:51:10 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_BezTriple_ctrlpoint_get ( PointerRNA * ptr , float * values )
2009-02-02 11:51:10 +00:00
{
BezTriple * bt = ( BezTriple * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
values [ 0 ] = bt - > vec [ 1 ] [ 0 ] ;
values [ 1 ] = bt - > vec [ 1 ] [ 1 ] ;
values [ 2 ] = bt - > vec [ 1 ] [ 2 ] ;
2009-02-02 11:51:10 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_BezTriple_ctrlpoint_set ( PointerRNA * ptr , const float * values )
2009-02-02 11:51:10 +00:00
{
BezTriple * bt = ( BezTriple * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
bt - > vec [ 1 ] [ 0 ] = values [ 0 ] ;
bt - > vec [ 1 ] [ 1 ] = values [ 1 ] ;
bt - > vec [ 1 ] [ 2 ] = values [ 2 ] ;
2009-02-02 11:51:10 +00:00
}
2008-12-02 23:45:11 +00:00
static int rna_Curve_texspace_editable ( PointerRNA * ptr )
{
Curve * cu = ( Curve * ) ptr - > data ;
2009-03-23 13:24:48 +00:00
return ( cu - > texflag & CU_AUTOSPACE ) ? 0 : PROP_EDITABLE ;
2008-12-02 23:45:11 +00:00
}
2010-04-12 05:04:49 +00:00
static void rna_Curve_texspace_loc_get ( PointerRNA * ptr , float * values )
{
Curve * cu = ( Curve * ) ptr - > data ;
if ( ! cu - > bb )
tex_space_curve ( cu ) ;
copy_v3_v3 ( values , cu - > loc ) ;
}
static void rna_Curve_texspace_loc_set ( PointerRNA * ptr , const float * values )
{
Curve * cu = ( Curve * ) ptr - > data ;
copy_v3_v3 ( cu - > loc , values ) ;
}
static void rna_Curve_texspace_size_get ( PointerRNA * ptr , float * values )
{
Curve * cu = ( Curve * ) ptr - > data ;
if ( ! cu - > bb )
tex_space_curve ( cu ) ;
copy_v3_v3 ( values , cu - > size ) ;
}
static void rna_Curve_texspace_size_set ( PointerRNA * ptr , const float * values )
{
Curve * cu = ( Curve * ) ptr - > data ;
copy_v3_v3 ( cu - > size , values ) ;
}
2009-03-28 10:52:51 +00:00
static void rna_Curve_material_index_range ( PointerRNA * ptr , int * min , int * max )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
* min = 0 ;
* max = cu - > totcol - 1 ;
}
2009-09-09 00:10:12 +00:00
static void rna_Curve_active_textbox_index_range ( PointerRNA * ptr , int * min , int * max )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
* min = 0 ;
* max = cu - > totbox - 1 ;
}
2009-09-13 17:38:43 +00:00
static void rna_Curve_dimension_set ( PointerRNA * ptr , int value )
2009-03-28 10:52:51 +00:00
{
2009-09-08 00:23:33 +00:00
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-07-25 11:57:36 +00:00
ListBase * nurbs = BKE_curve_nurbs ( cu ) ;
Nurb * nu = nurbs - > first ;
2009-09-08 00:23:33 +00:00
2009-09-13 17:38:43 +00:00
if ( value = = CU_3D ) {
cu - > flag | = CU_3D ;
for ( ; nu ; nu = nu - > next ) {
nu - > flag & = ~ CU_2D ;
}
}
else {
2009-09-08 00:23:33 +00:00
cu - > flag & = ~ CU_3D ;
2009-09-08 07:35:07 +00:00
for ( ; nu ; nu = nu - > next ) {
2009-09-08 00:23:33 +00:00
nu - > flag | = CU_2D ;
test2DNurb ( nu ) ;
2009-09-08 07:35:07 +00:00
/* since the handles are moved they need to be auto-located again */
if ( nu - > type = = CU_BEZIER )
calchandlesNurb ( nu ) ;
2009-09-08 00:23:33 +00:00
}
}
2009-03-28 10:52:51 +00:00
}
2009-09-08 00:23:33 +00:00
static int rna_Nurb_length ( PointerRNA * ptr )
2009-09-07 15:02:43 +00:00
{
Nurb * nu = ( Nurb * ) ptr - > data ;
2010-06-10 22:11:41 +00:00
if ( nu - > type = = CU_BEZIER ) return 0 ;
2009-09-08 00:23:33 +00:00
return nu - > pntsv > 0 ? nu - > pntsu * nu - > pntsv : nu - > pntsu ;
2009-09-07 15:02:43 +00:00
}
static void rna_Nurb_type_set ( PointerRNA * ptr , int value )
{
Nurb * nu = ( Nurb * ) ptr - > data ;
2009-09-08 00:23:33 +00:00
nu - > type = value ;
// XXX - TODO change datatypes
2009-09-07 15:02:43 +00:00
}
2009-03-28 10:52:51 +00:00
static void rna_BPoint_array_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
{
Nurb * nu = ( Nurb * ) ptr - > data ;
2009-11-29 16:42:51 +00:00
rna_iterator_array_begin ( iter , ( void * ) nu - > bp , sizeof ( BPoint ) , nu - > pntsv > 0 ? nu - > pntsu * nu - > pntsv : nu - > pntsu , 0 , NULL ) ;
2009-03-28 10:52:51 +00:00
}
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
static void rna_Curve_update_data_id ( Main * bmain , Scene * scene , ID * id )
2009-08-03 15:06:56 +00:00
{
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
DAG_id_flush_update ( id , OB_RECALC_DATA ) ;
2009-12-08 17:23:48 +00:00
WM_main_add_notifier ( NC_GEOM | ND_DATA , id ) ;
2009-08-03 15:06:56 +00:00
}
2009-09-08 07:35:07 +00:00
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
static void rna_Curve_update_data ( Main * bmain , Scene * scene , PointerRNA * ptr )
{
rna_Curve_update_data_id ( bmain , scene , ptr - > id . data ) ;
}
2009-12-08 17:23:48 +00:00
static void rna_Curve_update_deps ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-11-05 19:32:10 +00:00
{
2010-08-01 12:47:49 +00:00
DAG_scene_sort ( bmain , scene ) ;
2009-12-08 17:23:48 +00:00
rna_Curve_update_data ( bmain , scene , ptr ) ;
2009-11-05 19:32:10 +00:00
}
2010-04-01 08:49:11 +00:00
static PointerRNA rna_Curve_bevelObject_get ( PointerRNA * ptr )
2010-03-30 14:33:05 +00:00
{
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-04-01 08:49:11 +00:00
Object * ob = cu - > bevobj ;
if ( ob )
return rna_pointer_inherit_refine ( ptr , & RNA_Object , ob ) ;
return rna_pointer_inherit_refine ( ptr , NULL , NULL ) ;
}
static void rna_Curve_bevelObject_set ( PointerRNA * ptr , PointerRNA value )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
Object * ob = ( Object * ) value . data ;
2010-03-30 14:33:05 +00:00
2010-03-30 18:10:05 +00:00
if ( ob ) {
2010-04-01 08:49:11 +00:00
/* if bevel object has got the save curve, as object, for which it's */
/* set as bevobj, there could be infinity loop in displist calculation */
if ( ob - > type = = OB_CURVE & & ob - > data ! = cu ) {
cu - > bevobj = ob ;
2010-03-30 18:10:05 +00:00
}
2010-04-01 08:49:11 +00:00
} else {
cu - > bevobj = NULL ;
2010-03-30 14:33:05 +00:00
}
2010-04-01 08:49:11 +00:00
}
2010-03-30 14:33:05 +00:00
2010-08-03 06:51:36 +00:00
static int rna_Curve_otherObject_poll ( PointerRNA * ptr , PointerRNA value )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
Object * ob = ( Object * ) value . data ;
if ( ob ) {
if ( ob - > type = = OB_CURVE & & ob - > data ! = cu ) {
return 1 ;
}
}
return 0 ;
}
2010-04-01 08:49:11 +00:00
static PointerRNA rna_Curve_taperObject_get ( PointerRNA * ptr )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
Object * ob = cu - > taperobj ;
if ( ob )
return rna_pointer_inherit_refine ( ptr , & RNA_Object , ob ) ;
return rna_pointer_inherit_refine ( ptr , NULL , NULL ) ;
2010-03-30 14:33:05 +00:00
}
2010-04-01 08:49:11 +00:00
static void rna_Curve_taperObject_set ( PointerRNA * ptr , PointerRNA value )
2010-03-30 14:33:05 +00:00
{
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-04-01 08:49:11 +00:00
Object * ob = ( Object * ) value . data ;
2010-03-30 14:33:05 +00:00
2010-03-30 18:10:05 +00:00
if ( ob ) {
2010-04-01 08:49:11 +00:00
/* if taper object has got the save curve, as object, for which it's */
2010-03-30 18:10:05 +00:00
/* set as bevobj, there could be infinity loop in displist calculation */
2010-04-01 08:49:11 +00:00
if ( ob - > type = = OB_CURVE & & ob - > data ! = cu ) {
cu - > taperobj = ob ;
2010-03-30 18:10:05 +00:00
}
2010-04-01 08:49:11 +00:00
} else {
cu - > taperobj = NULL ;
2010-03-30 14:33:05 +00:00
}
}
2009-12-08 17:23:48 +00:00
static void rna_Curve_resolution_u_update_data ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-12-04 01:38:36 +00:00
{
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-07-25 11:57:36 +00:00
ListBase * nurbs = BKE_curve_nurbs ( cu ) ;
Nurb * nu = nurbs - > first ;
2009-12-04 01:38:36 +00:00
while ( nu ) {
nu - > resolu = cu - > resolu ;
nu = nu - > next ;
}
2009-12-08 17:23:48 +00:00
rna_Curve_update_data ( bmain , scene , ptr ) ;
2009-12-04 01:38:36 +00:00
}
2009-12-08 17:23:48 +00:00
static void rna_Curve_resolution_v_update_data ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-12-04 01:38:36 +00:00
{
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-07-25 11:57:36 +00:00
ListBase * nurbs = BKE_curve_nurbs ( cu ) ;
Nurb * nu = nurbs - > first ;
2009-12-04 01:38:36 +00:00
while ( nu ) {
nu - > resolv = cu - > resolv ;
nu = nu - > next ;
}
2010-07-25 11:57:36 +00:00
2009-12-08 17:23:48 +00:00
rna_Curve_update_data ( bmain , scene , ptr ) ;
2009-12-04 01:38:36 +00:00
}
2009-11-12 14:40:09 +00:00
/* name functions that ignore the first two ID characters */
void rna_Curve_body_get ( PointerRNA * ptr , char * value )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-07-17 17:50:20 +00:00
BLI_strncpy ( value , cu - > str , cu - > len + 1 ) ;
2009-11-12 14:40:09 +00:00
}
int rna_Curve_body_length ( PointerRNA * ptr )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-07-17 17:50:20 +00:00
return cu - > len ;
2009-11-12 14:40:09 +00:00
}
/* TODO - check UTF & python play nice */
void rna_Curve_body_set ( PointerRNA * ptr , const char * value )
{
int len = strlen ( value ) ;
Curve * cu = ( Curve * ) ptr - > id . data ;
2010-07-17 17:50:20 +00:00
cu - > len = cu - > pos = len ;
2009-11-12 14:40:09 +00:00
if ( cu - > str ) MEM_freeN ( cu - > str ) ;
if ( cu - > strinfo ) MEM_freeN ( cu - > strinfo ) ;
cu - > str = MEM_callocN ( len + sizeof ( wchar_t ) , " str " ) ;
cu - > strinfo = MEM_callocN ( ( len + 4 ) * sizeof ( CharInfo ) , " strinfo " ) ; /* don't know why this is +4, just duplicating load_editText() */
//wcs2utf8s(cu->str, value); // value is not wchar_t
BLI_strncpy ( cu - > str , value , len + 1 ) ;
}
2009-12-08 17:23:48 +00:00
static void rna_Nurb_update_handle_data ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-09-08 07:35:07 +00:00
{
Nurb * nu = ( Nurb * ) ptr - > data ;
if ( nu - > type = = CU_BEZIER )
calchandlesNurb ( nu ) ;
2009-12-08 17:23:48 +00:00
rna_Curve_update_data ( bmain , scene , ptr ) ;
2009-09-08 07:35:07 +00:00
}
2009-12-08 17:23:48 +00:00
static void rna_Nurb_update_knot_u ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-09-08 07:35:07 +00:00
{
Nurb * nu = ( Nurb * ) ptr - > data ;
clamp_nurb_order_u ( nu ) ;
makeknots ( nu , 1 ) ;
2009-12-08 17:23:48 +00:00
rna_Curve_update_data ( bmain , scene , ptr ) ;
2009-09-08 07:35:07 +00:00
}
2009-12-08 17:23:48 +00:00
static void rna_Nurb_update_knot_v ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-09-08 07:35:07 +00:00
{
Nurb * nu = ( Nurb * ) ptr - > data ;
clamp_nurb_order_v ( nu ) ;
makeknots ( nu , 2 ) ;
2009-12-08 17:23:48 +00:00
rna_Curve_update_data ( bmain , scene , ptr ) ;
2009-09-08 07:35:07 +00:00
}
2010-04-06 01:28:39 +00:00
static void rna_Curve_spline_points_add ( ID * id , Nurb * nu , ReportList * reports , int number )
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
{
if ( nu - > type = = CU_BEZIER ) {
BKE_report ( reports , RPT_ERROR , " Bezier spline can't have points added " ) ;
}
else if ( number = = 0 ) {
// do nothing
} else {
addNurbPoints ( nu , number ) ;
/* update */
makeknots ( nu , 1 ) ;
2010-04-06 01:28:39 +00:00
rna_Curve_update_data_id ( NULL , NULL , id ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
}
}
2010-04-06 01:28:39 +00:00
static void rna_Curve_spline_bezpoints_add ( ID * id , Nurb * nu , ReportList * reports , int number )
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
{
if ( nu - > type ! = CU_BEZIER ) {
BKE_report ( reports , RPT_ERROR , " Only bezier splines can be added " ) ;
}
else if ( number = = 0 ) {
// do nothing
} else {
addNurbPointsBezier ( nu , number ) ;
/* update */
makeknots ( nu , 1 ) ;
2010-04-06 01:28:39 +00:00
rna_Curve_update_data_id ( NULL , NULL , id ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
}
}
static Nurb * rna_Curve_spline_new ( Curve * cu , int type )
{
Nurb * nu = ( Nurb * ) MEM_callocN ( sizeof ( Nurb ) , " spline.new " ) ;
if ( type = = CU_BEZIER ) {
BezTriple * bezt = ( BezTriple * ) MEM_callocN ( sizeof ( BezTriple ) , " spline.new.bezt " ) ;
bezt - > radius = 1.0 ;
nu - > bezt = bezt ;
}
else {
BPoint * bp = ( BPoint * ) MEM_callocN ( sizeof ( BPoint ) , " spline.new.bp " ) ;
bp - > radius = 1.0f ;
nu - > bp = bp ;
}
nu - > type = type ;
nu - > pntsu = 1 ;
nu - > pntsv = 1 ;
nu - > orderu = nu - > orderv = 4 ;
nu - > resolu = nu - > resolv = 12 ;
nu - > flag = CU_SMOOTH ;
BLI_addtail ( & cu - > nurb , nu ) ;
return nu ;
}
static void rna_Curve_spline_remove ( Curve * cu , ReportList * reports , Nurb * nu )
{
int found = 0 ;
2010-07-25 11:57:36 +00:00
ListBase * nurbs = BKE_curve_nurbs ( cu ) ;
found = BLI_remlink_safe ( nurbs , nu ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
if ( ! found ) {
BKE_reportf ( reports , RPT_ERROR , " Curve \" %s \" does not contain spline given " , cu - > id . name + 2 ) ;
return ;
}
freeNurb ( nu ) ;
/* invalidate pointer!, no can do */
}
static PointerRNA rna_Curve_active_spline_get ( PointerRNA * ptr )
{
Curve * cu = ( Curve * ) ptr - > data ;
Nurb * nu ;
2010-07-25 11:57:36 +00:00
ListBase * nurbs = BKE_curve_nurbs ( cu ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
2010-07-25 11:57:36 +00:00
// for curve outside editmode will set to -1, should be changed to be allowed outside of editmode.
nu = BLI_findlink ( nurbs , cu - > actnu ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
if ( nu )
return rna_pointer_inherit_refine ( ptr , & RNA_Spline , nu ) ;
return rna_pointer_inherit_refine ( ptr , NULL , NULL ) ;
}
static void rna_Curve_active_spline_set ( PointerRNA * ptr , PointerRNA value )
{
Curve * cu = ( Curve * ) ptr - > data ;
Nurb * nu = value . data ;
2010-07-25 11:57:36 +00:00
ListBase * nubase = BKE_curve_nurbs ( cu ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
/* -1 is ok for an unset index */
if ( nu = = NULL )
cu - > actnu = - 1 ;
else
2010-07-25 11:57:36 +00:00
cu - > actnu = BLI_findindex ( nubase , nu ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
}
2010-07-30 06:48:18 +00:00
static char * rna_TextBox_path ( PointerRNA * ptr )
{
Curve * cu = ( Curve * ) ptr - > id . data ;
TextBox * tb = ptr - > data ;
int index = ( int ) ( tb - cu - > tb ) ;
if ( index > = 0 & & index < cu - > totbox )
return BLI_sprintfN ( " textboxes[%d] " , index ) ;
else
return BLI_strdup ( " " ) ;
}
2008-12-01 19:02:27 +00:00
# else
2009-02-02 19:57:57 +00:00
static void rna_def_bpoint ( BlenderRNA * brna )
2009-02-02 11:51:10 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-11-29 16:42:51 +00:00
srna = RNA_def_struct ( brna , " SplinePoint " , NULL ) ;
2009-02-02 11:51:10 +00:00
RNA_def_struct_sdna ( srna , " BPoint " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " SplinePoint " , " Spline point without handles " ) ;
2009-02-02 11:51:10 +00:00
/* Boolean values */
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select " , PROP_BOOLEAN , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " f1 " , 0 ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Select " , " Selection status " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " hide " , 0 ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Hide " , " Visibility status " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
/* Vector value */
2009-11-29 16:42:51 +00:00
prop = RNA_def_property ( srna , " co " , PROP_FLOAT , PROP_TRANSLATION ) ;
RNA_def_property_array ( prop , 3 ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_float_sdna ( prop , NULL , " vec " ) ;
RNA_def_property_ui_text ( prop , " Point " , " Point coordinates " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2009-11-29 16:42:51 +00:00
prop = RNA_def_property ( srna , " weight " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " vec[3] " ) ;
RNA_def_property_ui_text ( prop , " Weight " , " Nurbs weight " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
/* Number values */
prop = RNA_def_property ( srna , " tilt " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " alfa " ) ;
/*RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);*/
2010-02-09 17:50:56 +00:00
RNA_def_property_ui_text ( prop , " Tilt " , " Tilt in 3D View " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2009-11-29 16:42:51 +00:00
prop = RNA_def_property ( srna , " weight_softbody " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " weight " ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_range ( prop , 0.01f , 100.0f ) ;
RNA_def_property_ui_text ( prop , " Weight " , " Softbody goal weight " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2009-09-07 15:02:43 +00:00
prop = RNA_def_property ( srna , " radius " , PROP_FLOAT , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_float_sdna ( prop , NULL , " radius " ) ;
/*RNA_def_property_range(prop, 0.0f, 1.0f);*/
2009-03-23 13:24:48 +00:00
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_ui_text ( prop , " Bevel Radius " , " Radius for bevelling " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_def_beztriple ( BlenderRNA * brna )
2009-02-02 11:51:10 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-11-29 16:42:51 +00:00
srna = RNA_def_struct ( brna , " BezierSplinePoint " , NULL ) ;
2009-02-02 11:51:10 +00:00
RNA_def_struct_sdna ( srna , " BezTriple " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Bezier Curve Point " , " Bezier curve point with two handles " ) ;
2009-02-02 11:51:10 +00:00
/* Boolean values */
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select_left_handle " , PROP_BOOLEAN , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " f1 " , 0 ) ;
RNA_def_property_ui_text ( prop , " Handle 1 selected " , " Handle 1 selection status " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select_right_handle " , PROP_BOOLEAN , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " f3 " , 0 ) ;
RNA_def_property_ui_text ( prop , " Handle 2 selected " , " Handle 2 selection status " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select_control_point " , PROP_BOOLEAN , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " f2 " , 0 ) ;
RNA_def_property_ui_text ( prop , " Control Point selected " , " Control point selection status " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " hide " , 0 ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Hide " , " Visibility status " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
/* Enums */
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " handle_left_type " , PROP_ENUM , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_enum_sdna ( prop , NULL , " h1 " ) ;
2009-05-08 10:50:32 +00:00
RNA_def_property_enum_items ( prop , beztriple_handle_type_items ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_ui_text ( prop , " Handle 1 Type " , " Handle types " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " handle_right_type " , PROP_ENUM , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_enum_sdna ( prop , NULL , " h2 " ) ;
2009-05-08 10:50:32 +00:00
RNA_def_property_enum_items ( prop , beztriple_handle_type_items ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_ui_text ( prop , " Handle 2 Type " , " Handle types " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
/* Vector values */
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " handle_left " , PROP_FLOAT , PROP_TRANSLATION ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_float_funcs ( prop , " rna_BezTriple_handle1_get " , " rna_BezTriple_handle1_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Handle 1 " , " Coordinates of the first handle " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2009-11-29 16:42:51 +00:00
prop = RNA_def_property ( srna , " co " , PROP_FLOAT , PROP_TRANSLATION ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_float_funcs ( prop , " rna_BezTriple_ctrlpoint_get " , " rna_BezTriple_ctrlpoint_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Control Point " , " Coordinates of the control point " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " handle_right " , PROP_FLOAT , PROP_TRANSLATION ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_float_funcs ( prop , " rna_BezTriple_handle2_get " , " rna_BezTriple_handle2_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Handle 2 " , " Coordinates of the second handle " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
/* Number values */
prop = RNA_def_property ( srna , " tilt " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " alfa " ) ;
/*RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);*/
2010-02-09 17:50:56 +00:00
RNA_def_property_ui_text ( prop , " Tilt " , " Tilt in 3D View " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
prop = RNA_def_property ( srna , " weight " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_range ( prop , 0.01f , 100.0f ) ;
RNA_def_property_ui_text ( prop , " Weight " , " Softbody goal weight " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
2009-09-07 15:02:43 +00:00
prop = RNA_def_property ( srna , " radius " , PROP_FLOAT , PROP_NONE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_float_sdna ( prop , NULL , " radius " ) ;
/*RNA_def_property_range(prop, 0.0f, 1.0f);*/
2009-03-23 13:24:48 +00:00
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
2009-02-02 11:51:10 +00:00
RNA_def_property_ui_text ( prop , " Bevel Radius " , " Radius for bevelling " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-02-02 11:51:10 +00:00
}
2008-12-01 21:19:36 +00:00
static void rna_def_path ( BlenderRNA * brna , StructRNA * srna )
2008-12-01 19:02:27 +00:00
{
PropertyRNA * prop ;
/* number values */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " path_duration " , PROP_INT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_int_sdna ( prop , NULL , " pathlen " ) ;
2010-02-03 06:30:16 +00:00
RNA_def_property_range ( prop , 1 , MAXFRAME ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Path Length " , " The number of frames that are needed to traverse the path, defining the maximum value for the 'Evaluation Time' setting " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
/* flags */
2009-09-07 15:02:43 +00:00
prop = RNA_def_property ( srna , " use_path " , PROP_BOOLEAN , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_PATH ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Path " , " Enable the curve to become a translation path " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2009-09-07 15:02:43 +00:00
prop = RNA_def_property ( srna , " use_path_follow " , PROP_BOOLEAN , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_FOLLOW ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Follow " , " Make curve path children to rotate along the path " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2009-09-07 15:02:43 +00:00
prop = RNA_def_property ( srna , " use_stretch " , PROP_BOOLEAN , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_STRETCH ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Stretch " , " Option for curve-deform: makes deformed child to stretch along entire path " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-08-06 08:27:07 +00:00
prop = RNA_def_property ( srna , " use_deform_bounds " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_negative_sdna ( prop , NULL , " flag " , CU_DEFORM_BOUNDS_OFF ) ;
RNA_def_property_ui_text ( prop , " Bounds Clamp " , " Use the mesh bounds to clamp the deformation " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-09-07 15:02:43 +00:00
prop = RNA_def_property ( srna , " use_time_offset " , PROP_BOOLEAN , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_OFFS_PATHDIST ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Offset Path Distance " , " Children will use TimeOffs value as path distance offset " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-09-12 16:25:49 +00:00
prop = RNA_def_property ( srna , " use_radius " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_PATH_RADIUS ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Radius " , " Option for paths: apply the curve radius with path following it and deforming " ) ;
2009-09-12 16:25:49 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
}
2008-12-01 21:19:36 +00:00
static void rna_def_nurbs ( BlenderRNA * brna , StructRNA * srna )
2008-12-01 19:02:27 +00:00
{
PropertyRNA * prop ;
/* flags */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_map_on_length " , PROP_BOOLEAN , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_UV_ORCO ) ;
2010-06-14 07:43:45 +00:00
RNA_def_property_ui_text ( prop , " Map Along Length " , " Generate texture mapping coordinates following the curve direction, rather than the local bounding box " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
}
2008-12-01 21:19:36 +00:00
static void rna_def_font ( BlenderRNA * brna , StructRNA * srna )
2008-12-01 19:02:27 +00:00
{
PropertyRNA * prop ;
2009-05-11 11:31:10 +00:00
static EnumPropertyItem prop_align_items [ ] = {
2009-06-16 00:52:21 +00:00
{ CU_LEFT , " LEFT " , 0 , " Left " , " Align text to the left " } ,
{ CU_MIDDLE , " CENTRAL " , 0 , " Center " , " Center text " } ,
{ CU_RIGHT , " RIGHT " , 0 , " Right " , " Align text to the right " } ,
{ CU_JUSTIFY , " JUSTIFY " , 0 , " Justify " , " Align to the left and the right " } ,
{ CU_FLUSH , " FLUSH " , 0 , " Flush " , " Align to the left and the right, with equal character spacing " } ,
{ 0 , NULL , 0 , NULL , NULL } } ;
2009-05-11 11:31:10 +00:00
/* Enums */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " align " , PROP_ENUM , PROP_NONE ) ;
RNA_def_property_enum_sdna ( prop , NULL , " spacemode " ) ;
2009-05-11 11:31:10 +00:00
RNA_def_property_enum_items ( prop , prop_align_items ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Text Align " , " Text align from the object center " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-05-11 11:31:10 +00:00
2008-12-01 19:02:27 +00:00
/* number values */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " size " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " fsize " ) ;
2009-10-10 16:17:33 +00:00
RNA_def_property_range ( prop , 0.0001f , 10000.0f ) ;
2010-08-22 16:44:48 +00:00
RNA_def_property_ui_range ( prop , 0.01 , 10 , 1 , 3 ) ;
2008-12-19 06:05:00 +00:00
RNA_def_property_ui_text ( prop , " Font size " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-07-13 22:21:59 +00:00
prop = RNA_def_property ( srna , " small_caps_scale " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " smallcaps_scale " ) ;
2010-08-22 16:44:48 +00:00
RNA_def_property_ui_range ( prop , 0 , 1.0 , 1 , 2 ) ;
2010-07-13 22:21:59 +00:00
RNA_def_property_ui_text ( prop , " Small Caps " , " Scale of small capitals " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " space_line " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " linedist " ) ;
RNA_def_property_range ( prop , 0.0f , 10.0f ) ;
2008-12-19 06:05:00 +00:00
RNA_def_property_ui_text ( prop , " Distance between lines of text " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " space_word " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " wordspace " ) ;
RNA_def_property_range ( prop , 0.0f , 10.0f ) ;
2008-12-19 06:05:00 +00:00
RNA_def_property_ui_text ( prop , " Spacing between words " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " space_character " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " spacing " ) ;
RNA_def_property_range ( prop , 0.0f , 10.0f ) ;
2008-12-19 06:05:00 +00:00
RNA_def_property_ui_text ( prop , " Global spacing between characters " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
prop = RNA_def_property ( srna , " shear " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " shear " ) ;
RNA_def_property_range ( prop , - 1.0f , 1.0f ) ;
2008-12-19 06:05:00 +00:00
RNA_def_property_ui_text ( prop , " Shear " , " Italic angle of the characters " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2009-08-28 15:03:49 +00:00
prop = RNA_def_property ( srna , " offset_x " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " xof " ) ;
RNA_def_property_range ( prop , - 50.0f , 50.0f ) ;
2009-11-30 14:40:45 +00:00
RNA_def_property_ui_text ( prop , " X Offset " , " Horizontal offset from the object origin " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2009-08-28 15:03:49 +00:00
prop = RNA_def_property ( srna , " offset_y " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " yof " ) ;
RNA_def_property_range ( prop , - 50.0f , 50.0f ) ;
2009-11-30 14:40:45 +00:00
RNA_def_property_ui_text ( prop , " Y Offset " , " Vertical offset from the object origin " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " underline_position " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " ulpos " ) ;
RNA_def_property_range ( prop , - 0.2f , 0.8f ) ;
2009-09-08 11:31:15 +00:00
RNA_def_property_ui_text ( prop , " Underline Position " , " Vertical position of underline " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " underline_height " , PROP_FLOAT , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_float_sdna ( prop , NULL , " ulheight " ) ;
RNA_def_property_range ( prop , - 0.2f , 0.8f ) ;
2009-09-08 11:31:15 +00:00
RNA_def_property_ui_text ( prop , " Underline Thickness " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " text_boxes " , PROP_COLLECTION , PROP_NONE ) ;
2009-09-09 00:10:12 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " tb " , " totbox " ) ;
RNA_def_property_struct_type ( prop , " TextBox " ) ;
RNA_def_property_ui_text ( prop , " Textboxes " , " " ) ;
2008-12-01 19:02:27 +00:00
prop = RNA_def_property ( srna , " active_textbox " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " actbox " ) ;
2008-12-19 06:05:00 +00:00
RNA_def_property_ui_text ( prop , " The active text box " , " " ) ;
2009-09-09 00:10:12 +00:00
RNA_def_property_int_funcs ( prop , NULL , NULL , " rna_Curve_active_textbox_index_range " ) ;
2008-12-01 19:02:27 +00:00
/* strings */
prop = RNA_def_property ( srna , " family " , PROP_STRING , PROP_NONE ) ;
RNA_def_property_string_maxlength ( prop , 21 ) ;
2009-09-08 11:31:15 +00:00
RNA_def_property_ui_text ( prop , " Object Font " , " Use Blender Objects as font characters. Give font objects a common name followed by the character it represents, eg. familya, familyb etc, and turn on Verts Duplication " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2009-11-12 14:40:09 +00:00
prop = RNA_def_property ( srna , " body " , PROP_STRING , PROP_NONE ) ;
2008-12-02 23:45:11 +00:00
RNA_def_property_string_sdna ( prop , NULL , " str " ) ;
2010-05-04 05:15:53 +00:00
RNA_def_property_ui_text ( prop , " Body Text " , " contents of this text object " ) ;
2009-11-12 14:40:09 +00:00
RNA_def_property_string_funcs ( prop , " rna_Curve_body_get " , " rna_Curve_body_length " , " rna_Curve_body_set " ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_string_maxlength ( prop , 8192 ) ; /* note that originally str did not have a limit! */
2009-11-12 14:40:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-07-17 17:50:20 +00:00
prop = RNA_def_property ( srna , " body_format " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " strinfo " , " len " ) ;
RNA_def_property_struct_type ( prop , " TextCharacterFormat " ) ;
RNA_def_property_ui_text ( prop , " Character Info " , " Stores the style of each character " ) ;
2008-12-01 19:02:27 +00:00
/* pointers */
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " follow_curve " , PROP_POINTER , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_pointer_sdna ( prop , NULL , " textoncurve " ) ;
2010-08-03 06:51:36 +00:00
RNA_def_property_pointer_funcs ( prop , NULL , NULL , NULL , " rna_Curve_otherObject_poll " ) ;
2009-05-28 23:23:47 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Text on Curve " , " Curve deforming text object " ) ;
2009-11-05 19:32:10 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_deps " ) ;
2008-12-01 19:02:27 +00:00
prop = RNA_def_property ( srna , " font " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_pointer_sdna ( prop , NULL , " vfont " ) ;
RNA_def_property_ui_text ( prop , " Font " , " " ) ;
2010-01-11 05:10:57 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-09-09 00:10:12 +00:00
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " edit_format " , PROP_POINTER , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_pointer_sdna ( prop , NULL , " curinfo " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Edit Format " , " Editing settings character formatting " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
/* flags */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_fast_edit " , PROP_BOOLEAN , PROP_NONE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_FAST ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Fast " , " Don't fill polygons while editing " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
}
2009-06-07 13:09:18 +00:00
static void rna_def_textbox ( BlenderRNA * brna )
2008-12-01 19:02:27 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2008-12-19 04:06:24 +00:00
srna = RNA_def_struct ( brna , " TextBox " , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Text Box " , " Text bounding box for layout " ) ;
2008-12-01 19:02:27 +00:00
/* number values */
prop = RNA_def_property ( srna , " x " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " x " ) ;
RNA_def_property_range ( prop , - 50.0f , 50.0f ) ;
RNA_def_property_ui_text ( prop , " Textbox X Offset " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
prop = RNA_def_property ( srna , " y " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " y " ) ;
RNA_def_property_range ( prop , - 50.0f , 50.0f ) ;
RNA_def_property_ui_text ( prop , " Textbox Y Offset " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
prop = RNA_def_property ( srna , " width " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " w " ) ;
RNA_def_property_range ( prop , 0.0f , 50.0f ) ;
RNA_def_property_ui_text ( prop , " Textbox Width " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
prop = RNA_def_property ( srna , " height " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " h " ) ;
RNA_def_property_range ( prop , 0.0f , 50.0f ) ;
RNA_def_property_ui_text ( prop , " Textbox Height " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-07-30 06:48:18 +00:00
RNA_def_struct_path_func ( srna , " rna_TextBox_path " ) ;
2008-12-01 19:02:27 +00:00
}
2009-06-07 13:09:18 +00:00
static void rna_def_charinfo ( BlenderRNA * brna )
2008-12-01 19:02:27 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " TextCharacterFormat " , NULL ) ;
RNA_def_struct_sdna ( srna , " CharInfo " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Text Character Format " , " Text character formatting settings " ) ;
2008-12-01 19:02:27 +00:00
/* flags */
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " use_bold " , PROP_BOOLEAN , PROP_NONE ) ;
2010-07-13 23:51:21 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_CHINFO_BOLD ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_ui_text ( prop , " Bold " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " use_italic " , PROP_BOOLEAN , PROP_NONE ) ;
2010-07-13 23:51:21 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_CHINFO_ITALIC ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_ui_text ( prop , " Italic " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " use_underline " , PROP_BOOLEAN , PROP_NONE ) ;
2010-07-13 23:51:21 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_CHINFO_UNDERLINE ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_ui_text ( prop , " Underline " , " " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
2010-07-13 23:51:21 +00:00
/* probably there is no reason to expose this */
/* prop= RNA_def_property(srna, "wrap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_CHINFO_WRAP ) ;
2008-12-01 19:02:27 +00:00
RNA_def_property_ui_text ( prop , " Wrap " , " " ) ;
2010-07-13 23:51:21 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ; */
2010-07-13 22:21:59 +00:00
prop = RNA_def_property ( srna , " use_small_caps " , PROP_BOOLEAN , PROP_NONE ) ;
2010-07-13 23:51:21 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_CHINFO_SMALLCAPS ) ;
2010-07-13 22:21:59 +00:00
RNA_def_property_ui_text ( prop , " Small Caps " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2008-12-01 19:02:27 +00:00
}
2009-06-07 13:09:18 +00:00
static void rna_def_surface ( BlenderRNA * brna )
{
StructRNA * srna ;
srna = RNA_def_struct ( brna , " SurfaceCurve " , " Curve " ) ;
RNA_def_struct_sdna ( srna , " Curve " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Surface Curve " , " Curve datablock used for storing surfaces " ) ;
2009-06-07 13:09:18 +00:00
RNA_def_struct_ui_icon ( srna , ICON_SURFACE_DATA ) ;
rna_def_nurbs ( brna , srna ) ;
}
static void rna_def_text ( BlenderRNA * brna )
{
StructRNA * srna ;
srna = RNA_def_struct ( brna , " TextCurve " , " Curve " ) ;
RNA_def_struct_sdna ( srna , " Curve " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Text Curve " , " Curve datablock used for storing text " ) ;
2009-06-07 13:09:18 +00:00
RNA_def_struct_ui_icon ( srna , ICON_FONT_DATA ) ;
rna_def_font ( brna , srna ) ;
rna_def_nurbs ( brna , srna ) ;
}
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
/* curve.splines[0].points */
static void rna_def_curve_spline_points ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
//PropertyRNA *prop;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " SplinePoints " ) ;
srna = RNA_def_struct ( brna , " SplinePoints " , NULL ) ;
RNA_def_struct_sdna ( srna , " Nurb " ) ;
RNA_def_struct_ui_text ( srna , " Spline Points " , " Collection of spline points " ) ;
func = RNA_def_function ( srna , " add " , " rna_Curve_spline_points_add " ) ;
RNA_def_function_ui_description ( func , " Add a number of points to this spline. " ) ;
2010-04-06 01:28:39 +00:00
RNA_def_function_flag ( func , FUNC_USE_SELF_ID | FUNC_USE_REPORTS ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
parm = RNA_def_int ( func , " number " , 1 , INT_MIN , INT_MAX , " Number " , " Number of points to add to the spline " , 0 , INT_MAX ) ;
/*
func = RNA_def_function ( srna , " remove " , " rna_Curve_spline_remove " ) ;
RNA_def_function_ui_description ( func , " Remove a spline from a curve. " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
parm = RNA_def_pointer ( func , " spline " , " Spline " , " " , " The spline to remove. " ) ;
2010-08-24 06:40:28 +00:00
RNA_def_property_flag ( parm , PROP_REQUIRED | PROP_NEVER_NULL ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
*/
}
static void rna_def_curve_spline_bezpoints ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
//PropertyRNA *prop;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " SplineBezierPoints " ) ;
srna = RNA_def_struct ( brna , " SplineBezierPoints " , NULL ) ;
RNA_def_struct_sdna ( srna , " Nurb " ) ;
RNA_def_struct_ui_text ( srna , " Spline Bezier Points " , " Collection of spline bezirt points " ) ;
func = RNA_def_function ( srna , " add " , " rna_Curve_spline_bezpoints_add " ) ;
RNA_def_function_ui_description ( func , " Add a number of points to this spline. " ) ;
2010-04-06 01:28:39 +00:00
RNA_def_function_flag ( func , FUNC_USE_SELF_ID | FUNC_USE_REPORTS ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
parm = RNA_def_int ( func , " number " , 1 , INT_MIN , INT_MAX , " Number " , " Number of points to add to the spline " , 0 , INT_MAX ) ;
/*
func = RNA_def_function ( srna , " remove " , " rna_Curve_spline_remove " ) ;
RNA_def_function_ui_description ( func , " Remove a spline from a curve. " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
parm = RNA_def_pointer ( func , " spline " , " Spline " , " " , " The spline to remove. " ) ;
2010-08-24 06:40:28 +00:00
RNA_def_property_flag ( parm , PROP_REQUIRED | PROP_NEVER_NULL ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
*/
}
/* curve.splines */
static void rna_def_curve_splines ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
PropertyRNA * prop ;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " CurveSplines " ) ;
srna = RNA_def_struct ( brna , " CurveSplines " , NULL ) ;
RNA_def_struct_sdna ( srna , " Curve " ) ;
RNA_def_struct_ui_text ( srna , " Curve Splines " , " Collection of curve splines " ) ;
func = RNA_def_function ( srna , " new " , " rna_Curve_spline_new " ) ;
RNA_def_function_ui_description ( func , " Add a new spline to the curve. " ) ;
parm = RNA_def_enum ( func , " type " , curve_type_items , CU_POLY , " " , " type for the new spline. " ) ;
RNA_def_property_flag ( parm , PROP_REQUIRED ) ;
parm = RNA_def_pointer ( func , " spline " , " Spline " , " " , " The newly created spline. " ) ;
RNA_def_function_return ( func , parm ) ;
func = RNA_def_function ( srna , " remove " , " rna_Curve_spline_remove " ) ;
RNA_def_function_ui_description ( func , " Remove a spline from a curve. " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
parm = RNA_def_pointer ( func , " spline " , " Spline " , " " , " The spline to remove. " ) ;
2010-08-24 06:40:28 +00:00
RNA_def_property_flag ( parm , PROP_REQUIRED | PROP_NEVER_NULL ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
prop = RNA_def_property ( srna , " active " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_struct_type ( prop , " Object " ) ;
2010-08-03 05:14:59 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Curve_active_spline_get " , " rna_Curve_active_spline_set " , NULL , NULL ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_ui_text ( prop , " Active Spline " , " Active curve spline " ) ;
/* Could call: ED_base_object_activate(C, scene->basact);
* but would be a bad level call and it seems the notifier is enough */
RNA_def_property_update ( prop , NC_SCENE | ND_OB_ACTIVE , NULL ) ;
}
2009-06-07 13:09:18 +00:00
static void rna_def_curve ( BlenderRNA * brna )
2009-01-10 22:57:33 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-09-11 15:35:30 +00:00
static EnumPropertyItem curve_twist_mode_items [ ] = {
{ CU_TWIST_Z_UP , " Z_UP " , 0 , " Z-Up " , " Use Z-Up axis to calculate the curve twist at each point " } ,
{ CU_TWIST_MINIMUM , " MINIMUM " , 0 , " Minimum " , " Use the least twist over the entire curve " } ,
{ CU_TWIST_TANGENT , " TANGENT " , 0 , " Tangent " , " Use the tangent to calculate twist " } ,
{ 0 , NULL , 0 , NULL , NULL } } ;
2009-09-13 17:38:43 +00:00
static const EnumPropertyItem curve_axis_items [ ] = {
{ 0 , " 2D " , 0 , " 2D " , " Clamp the Z axis of of the curve " } ,
2010-02-11 01:11:52 +00:00
{ CU_3D , " 3D " , 0 , " 3D " , " Allow editing on the Z axis of this curve, also alows tilt and curve radius to be used " } ,
2009-09-13 17:38:43 +00:00
{ 0 , NULL , 0 , NULL , NULL } } ;
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " Curve " , " ID " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Curve " , " Curve datablock storing curves, splines and NURBS " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_CURVE_DATA ) ;
2009-06-07 13:09:18 +00:00
RNA_def_struct_refine_func ( srna , " rna_Curve_refine " ) ;
2009-01-10 22:57:33 +00:00
2009-02-02 11:51:10 +00:00
rna_def_animdata_common ( srna ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " shape_keys " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_pointer_sdna ( prop , NULL , " key " ) ;
RNA_def_property_ui_text ( prop , " Shape Keys " , " " ) ;
2009-03-28 10:52:51 +00:00
2009-09-08 07:35:07 +00:00
prop = RNA_def_property ( srna , " splines " , PROP_COLLECTION , PROP_NONE ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " nurb " , NULL ) ;
2010-02-10 08:53:08 +00:00
RNA_def_property_struct_type ( prop , " Spline " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Splines " , " Collection of splines in this curve data object " ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
rna_def_curve_splines ( brna , prop ) ;
2009-09-08 07:35:07 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_handles " , PROP_BOOLEAN , PROP_NONE ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_boolean_negative_sdna ( prop , NULL , " drawflag " , CU_HIDE_HANDLES ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Draw Handles " , " Display bezier handles in editmode " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , NC_GEOM | ND_DATA , NULL ) ;
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_normal_face " , PROP_BOOLEAN , PROP_NONE ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_boolean_negative_sdna ( prop , NULL , " drawflag " , CU_HIDE_NORMALS ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Draw Normals " , " Display 3D curve normals in editmode " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , NC_GEOM | ND_DATA , NULL ) ;
2009-03-28 10:52:51 +00:00
2009-01-10 22:57:33 +00:00
rna_def_path ( brna , srna ) ;
/* Number values */
prop = RNA_def_property ( srna , " bevel_resolution " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " bevresol " ) ;
RNA_def_property_range ( prop , 0 , 32 ) ;
2009-05-21 07:40:43 +00:00
RNA_def_property_ui_range ( prop , 0 , 32 , 1.0 , 0 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Bevel Resolution " , " Bevel resolution when depth is non-zero and no specific bevel object has been defined " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-01-10 22:57:33 +00:00
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " offset " , PROP_FLOAT , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_float_sdna ( prop , NULL , " width " ) ;
2010-08-22 16:44:48 +00:00
RNA_def_property_ui_range ( prop , 0 , 2.0 , 0.1 , 3 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Width " , " Scale the original width (1.0) based on given factor " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " extrude " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " ext1 " ) ;
2010-08-22 16:44:48 +00:00
RNA_def_property_ui_range ( prop , 0 , 100.0 , 0.1 , 3 ) ;
2010-01-22 01:30:06 +00:00
RNA_def_property_range ( prop , 0.0 , FLT_MAX ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Extrude " , " Amount of curve extrusion when not using a bevel object " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " bevel_depth " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " ext2 " ) ;
2010-08-22 16:44:48 +00:00
RNA_def_property_ui_range ( prop , 0 , 100.0 , 0.1 , 3 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Bevel Depth " , " Bevel depth when not using a bevel object " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " resolution_u " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " resolu " ) ;
2010-01-22 01:30:06 +00:00
RNA_def_property_range ( prop , 1 , INT_MAX ) ;
2010-02-23 19:59:07 +00:00
RNA_def_property_ui_range ( prop , 1 , 64 , 1 , 0 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Resolution U " , " Surface resolution in U direction " ) ;
2009-12-04 01:38:36 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_resolution_u_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " resolution_v " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " resolv " ) ;
2010-02-23 19:59:07 +00:00
RNA_def_property_ui_range ( prop , 1 , 64 , 1 , 0 ) ;
2010-01-22 01:30:06 +00:00
RNA_def_property_range ( prop , 1 , INT_MAX ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Resolution V " , " Surface resolution in V direction " ) ;
2009-12-04 01:38:36 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_resolution_v_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " render_resolution_u " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " resolu_ren " ) ;
2010-01-29 05:48:47 +00:00
RNA_def_property_range ( prop , 0 , INT_MAX ) ;
2010-03-25 18:59:50 +00:00
RNA_def_property_ui_range ( prop , 0 , 64 , 1 , 0 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Render Resolution U " , " Surface resolution in U direction used while rendering. Zero skips this property " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " render_resolution_v " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " resolv_ren " ) ;
2010-03-25 18:59:50 +00:00
RNA_def_property_ui_range ( prop , 0 , 64 , 1 , 0 ) ;
2010-01-29 05:48:47 +00:00
RNA_def_property_range ( prop , 0 , INT_MAX ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Render Resolution V " , " Surface resolution in V direction used while rendering. Zero skips this property " ) ;
2009-01-10 22:57:33 +00:00
2009-06-20 11:44:56 +00:00
2010-02-03 06:30:16 +00:00
prop = RNA_def_property ( srna , " eval_time " , PROP_FLOAT , PROP_NONE ) ;
2009-06-20 11:44:56 +00:00
RNA_def_property_float_sdna ( prop , NULL , " ctime " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Evaluation Time " , " Parametric position along the length of the curve that Objects 'following' it should be at. Position is evaluated by dividing by the 'Path Length' value " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-06-20 11:44:56 +00:00
2009-01-10 22:57:33 +00:00
/* pointers */
prop = RNA_def_property ( srna , " bevel_object " , PROP_POINTER , PROP_NONE ) ;
2010-04-01 08:49:11 +00:00
RNA_def_property_struct_type ( prop , " Object " ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_pointer_sdna ( prop , NULL , " bevobj " ) ;
2009-05-28 23:23:47 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Bevel Object " , " Curve object name that defines the bevel shape " ) ;
2010-04-01 08:49:11 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_deps " ) ;
2010-08-03 06:51:36 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Curve_bevelObject_get " , " rna_Curve_bevelObject_set " , NULL , " rna_Curve_otherObject_poll " ) ;
2010-04-01 08:49:11 +00:00
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " taper_object " , PROP_POINTER , PROP_NONE ) ;
2010-04-01 08:49:11 +00:00
RNA_def_property_struct_type ( prop , " Object " ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_pointer_sdna ( prop , NULL , " taperobj " ) ;
2009-05-28 23:23:47 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Taper Object " , " Curve object name that defines the taper (width) " ) ;
2010-04-01 08:49:11 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_deps " ) ;
2010-08-03 06:51:36 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Curve_taperObject_get " , " rna_Curve_taperObject_set " , NULL , " rna_Curve_otherObject_poll " ) ;
2010-04-01 08:49:11 +00:00
2009-01-10 22:57:33 +00:00
/* Flags */
2009-09-13 17:38:43 +00:00
prop = RNA_def_property ( srna , " dimensions " , PROP_ENUM , PROP_NONE ) ; /* as an enum */
RNA_def_property_enum_bitflag_sdna ( prop , NULL , " flag " ) ;
RNA_def_property_enum_items ( prop , curve_axis_items ) ;
RNA_def_property_enum_funcs ( prop , NULL , " rna_Curve_dimension_set " , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Dimensions " , " Select 2D or 3D curve type " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-01-10 22:57:33 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_fill_front " , PROP_BOOLEAN , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_FRONT ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Front " , " Draw filled front for extruded/beveled curves " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-01-10 22:57:33 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_fill_back " , PROP_BOOLEAN , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_BACK ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Back " , " Draw filled back for extruded/beveled curves " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-09-11 15:35:30 +00:00
prop = RNA_def_property ( srna , " twist_mode " , PROP_ENUM , PROP_NONE ) ;
RNA_def_property_enum_sdna ( prop , NULL , " twist_mode " ) ;
RNA_def_property_enum_items ( prop , curve_twist_mode_items ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Twist Method " , " The type of tilt calculation for 3D Curves " ) ;
2009-09-11 15:35:30 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
// XXX - would be nice to have a better way to do this, only add for testing.
prop = RNA_def_property ( srna , " twist_smooth " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " twist_smooth " ) ;
RNA_def_property_ui_range ( prop , 0 , 100.0 , 0.1 , 0 ) ;
RNA_def_property_ui_text ( prop , " Twist Smooth " , " Smoothing iteration for tangents " ) ;
2009-09-07 15:02:43 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_fill_deform " , PROP_BOOLEAN , PROP_NONE ) ;
2010-03-16 21:09:53 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_DEFORM_FILL ) ;
RNA_def_property_ui_text ( prop , " Fill deformed " , " Fill curve after applying deformation " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-04-12 05:04:49 +00:00
/* texture space */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_auto_texspace " , PROP_BOOLEAN , PROP_NONE ) ;
2010-04-12 05:04:49 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " texflag " , CU_AUTOSPACE ) ;
RNA_def_property_ui_text ( prop , " Auto Texture Space " , " Adjusts active object's texture space automatically when transforming object " ) ;
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " texspace_location " , PROP_FLOAT , PROP_TRANSLATION ) ;
2010-04-12 05:04:49 +00:00
RNA_def_property_array ( prop , 3 ) ;
2010-05-04 05:15:53 +00:00
RNA_def_property_ui_text ( prop , " Texture Space Location " , " Texture space location " ) ;
2010-04-12 05:04:49 +00:00
RNA_def_property_editable_func ( prop , " rna_Curve_texspace_editable " ) ;
RNA_def_property_float_funcs ( prop , " rna_Curve_texspace_loc_get " , " rna_Curve_texspace_loc_set " , NULL ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
prop = RNA_def_property ( srna , " texspace_size " , PROP_FLOAT , PROP_XYZ ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_ui_text ( prop , " Texture Space Size " , " Texture space size " ) ;
RNA_def_property_editable_func ( prop , " rna_Curve_texspace_editable " ) ;
RNA_def_property_float_funcs ( prop , " rna_Curve_texspace_size_get " , " rna_Curve_texspace_size_set " , NULL ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
/* not supported yet
prop = RNA_def_property ( srna , " texspace_rot " , PROP_FLOAT , PROP_EULER ) ;
RNA_def_property_float ( prop , NULL , " rot " ) ;
RNA_def_property_ui_text ( prop , " Texture Space Rotation " , " Texture space rotation " ) ;
RNA_def_property_editable_func ( prop , texspace_editable ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ; */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_map_on_length " , PROP_BOOLEAN , PROP_NONE ) ;
2010-06-14 07:43:45 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_UV_ORCO ) ;
RNA_def_property_ui_text ( prop , " Map Along Length " , " Generate texture mapping coordinates following the curve direction, rather than the local bounding box " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2010-04-12 05:04:49 +00:00
/* materials */
prop = RNA_def_property ( srna , " materials " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " mat " , " totcol " ) ;
RNA_def_property_struct_type ( prop , " Material " ) ;
RNA_def_property_ui_text ( prop , " Materials " , " " ) ;
2009-01-10 22:57:33 +00:00
}
2009-06-07 13:09:18 +00:00
static void rna_def_curve_nurb ( BlenderRNA * brna )
2009-03-28 10:52:51 +00:00
{
static EnumPropertyItem spline_interpolation_items [ ] = {
2010-08-12 06:28:46 +00:00
{ KEY_LINEAR , " LINEAR " , 0 , " Linear " , " " } ,
{ KEY_CARDINAL , " CARDINAL " , 0 , " Cardinal " , " " } ,
{ KEY_BSPLINE , " BSPLINE " , 0 , " BSpline " , " " } ,
{ KEY_CU_EASE , " EASE " , 0 , " Ease " , " " } , /* todo, define somewhere, not one of BEZT_IPO_* */
2009-06-16 00:52:21 +00:00
{ 0 , NULL , 0 , NULL , NULL } } ;
2009-03-28 10:52:51 +00:00
StructRNA * srna ;
PropertyRNA * prop ;
2010-02-10 08:53:08 +00:00
srna = RNA_def_struct ( brna , " Spline " , NULL ) ;
2010-03-22 09:30:00 +00:00
RNA_def_struct_sdna ( srna , " Nurb " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Spline " , " Element of a curve, either Nurbs, Bezier or Polyline or a character with text objects " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " points " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " bp " , NULL ) ;
2009-11-29 16:42:51 +00:00
RNA_def_property_struct_type ( prop , " SplinePoint " ) ;
2009-11-13 16:08:03 +00:00
RNA_def_property_collection_funcs ( prop , " rna_BPoint_array_begin " , " rna_iterator_array_next " , " rna_iterator_array_end " , " rna_iterator_array_get " , " rna_Nurb_length " , 0 , 0 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Points " , " Collection of points that make up this poly or nurbs spline " ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
rna_def_curve_spline_points ( brna , prop ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " bezier_points " , PROP_COLLECTION , PROP_NONE ) ;
2009-11-29 16:42:51 +00:00
RNA_def_property_struct_type ( prop , " BezierSplinePoint " ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " bezt " , " pntsu " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Bezier Points " , " Collection of points for bezier curves only " ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
rna_def_curve_spline_bezpoints ( brna , prop ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " tilt_interpolation " , PROP_ENUM , PROP_NONE ) ;
RNA_def_property_enum_sdna ( prop , NULL , " tilt_interp " ) ;
RNA_def_property_enum_items ( prop , spline_interpolation_items ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Tilt Interpolation " , " The type of tilt interpolation for 3D, Bezier curves " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " radius_interpolation " , PROP_ENUM , PROP_NONE ) ;
RNA_def_property_enum_sdna ( prop , NULL , " radius_interp " ) ;
RNA_def_property_enum_items ( prop , spline_interpolation_items ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Radius Interpolation " , " The type of radius interpolation for Bezier curves " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
2009-09-07 15:02:43 +00:00
// XXX - switching type probably needs comprehensive recalc of data like in 2.4x
prop = RNA_def_property ( srna , " type " , PROP_ENUM , PROP_NONE ) ;
RNA_def_property_enum_items ( prop , curve_type_items ) ;
2009-09-08 00:23:33 +00:00
RNA_def_property_enum_funcs ( prop , NULL , " rna_Nurb_type_set " , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Type " , " The interpolation type for this curve element " ) ;
2009-09-07 15:02:43 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
2010-05-20 08:51:03 +00:00
prop = RNA_def_property ( srna , " point_count_u " , PROP_INT , PROP_UNSIGNED ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ; /* editing this needs knot recalc*/
RNA_def_property_int_sdna ( prop , NULL , " pntsu " ) ;
RNA_def_property_ui_text ( prop , " Points U " , " Total number points for the curve or surface in the U direction " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
2010-05-20 08:51:03 +00:00
prop = RNA_def_property ( srna , " point_count_v " , PROP_INT , PROP_UNSIGNED ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ; /* editing this needs knot recalc*/
RNA_def_property_int_sdna ( prop , NULL , " pntsv " ) ;
RNA_def_property_ui_text ( prop , " Points V " , " Total number points for the surface on the V direction " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " order_u " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " orderu " ) ;
RNA_def_property_range ( prop , 2 , 6 ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_ui_text ( prop , " Order U " , " Nurbs order in the U direction (For splines and surfaces), Higher values let points influence a greater area " ) ;
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_knot_u " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " order_v " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " orderv " ) ;
RNA_def_property_range ( prop , 2 , 6 ) ;
RNA_def_property_ui_text ( prop , " Order V " , " Nurbs order in the V direction (For surfaces only), Higher values let points influence a greater area " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_knot_v " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " resolution_u " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " resolu " ) ;
2010-02-23 19:59:07 +00:00
RNA_def_property_range ( prop , 1 , INT_MAX ) ;
RNA_def_property_ui_range ( prop , 1 , 64 , 1 , 0 ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_ui_text ( prop , " Resolution U " , " Curve or Surface subdivisions per segment " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " resolution_v " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " resolv " ) ;
2010-02-23 19:59:07 +00:00
RNA_def_property_range ( prop , 1 , INT_MAX ) ;
RNA_def_property_ui_range ( prop , 1 , 64 , 1 , 0 ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_ui_text ( prop , " Resolution V " , " Surface subdivisions per segment " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_cyclic_u " , PROP_BOOLEAN , PROP_NONE ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flagu " , CU_NURB_CYCLIC ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Cyclic U " , " Make this curve or surface a closed loop in the U direction " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_handle_data " ) ; /* only needed for cyclic_u because cyclic_v cant do bezier */
2009-03-28 10:52:51 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_cyclic_v " , PROP_BOOLEAN , PROP_NONE ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flagv " , CU_NURB_CYCLIC ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Cyclic V " , " Make this surface a closed loop in the V direction " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
/* Note, endpoint and bezier flags should never be on at the same time! */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_endpoint_u " , PROP_BOOLEAN , PROP_NONE ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flagu " , CU_NURB_ENDPOINT ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Endpoint U " , " Make this nurbs curve or surface meet the endpoints in the U direction (Cyclic U must be disabled) " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_knot_u " ) ;
2009-03-28 10:52:51 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_endpoint_v " , PROP_BOOLEAN , PROP_NONE ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flagv " , CU_NURB_ENDPOINT ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Endpoint V " , " Make this nurbs surface meet the endpoints in the V direction (Cyclic V must be disabled) " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_knot_v " ) ;
2009-03-28 10:52:51 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_bezier_u " , PROP_BOOLEAN , PROP_NONE ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flagu " , CU_NURB_BEZIER ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Bezier U " , " Make this nurbs curve or surface act like a bezier spline in the U direction (Order U must be 3 or 4, Cyclic U must be disabled) " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_knot_u " ) ;
2009-03-28 10:52:51 +00:00
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_bezier_v " , PROP_BOOLEAN , PROP_NONE ) ;
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flagv " , CU_NURB_BEZIER ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Bezier V " , " Make this nurbs surface act like a bezier spline in the V direction (Order V must be 3 or 4, Cyclic V must be disabled) " ) ;
2009-09-08 07:35:07 +00:00
RNA_def_property_update ( prop , 0 , " rna_Nurb_update_knot_v " ) ;
2009-03-28 10:52:51 +00:00
2010-08-18 07:14:10 +00:00
prop = RNA_def_property ( srna , " use_smooth " , PROP_BOOLEAN , PROP_NONE ) ;
2009-03-28 10:52:51 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , CU_SMOOTH ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Smooth " , " Smooth the normals of the surface or beveled curve " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " hide " , 1 ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Hide " , " Hide this curve in editmode " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " material_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " mat_nr " ) ;
RNA_def_property_ui_text ( prop , " Material Index " , " " ) ;
RNA_def_property_int_funcs ( prop , NULL , NULL , " rna_Curve_material_index_range " ) ;
2009-08-10 21:10:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
prop = RNA_def_property ( srna , " character_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " charidx " ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ; /* editing this needs knot recalc*/
2009-08-10 21:10:09 +00:00
RNA_def_property_ui_text ( prop , " Character Index " , " Location of this character in the text data (only for text curves) " ) ;
RNA_def_property_update ( prop , 0 , " rna_Curve_update_data " ) ;
2009-03-28 10:52:51 +00:00
}
2008-12-01 19:02:27 +00:00
void RNA_def_curve ( BlenderRNA * brna )
{
rna_def_curve ( brna ) ;
2009-06-07 13:09:18 +00:00
rna_def_surface ( brna ) ;
rna_def_text ( brna ) ;
2008-12-01 19:02:27 +00:00
rna_def_textbox ( brna ) ;
rna_def_charinfo ( brna ) ;
2009-02-02 11:51:10 +00:00
rna_def_bpoint ( brna ) ;
rna_def_beztriple ( brna ) ;
2009-03-28 10:52:51 +00:00
rna_def_curve_nurb ( brna ) ;
2008-12-01 19:02:27 +00:00
}
# endif
2009-01-10 22:57:33 +00:00