[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60152] trunk/blender/source/blender: move editcurve add functions into their own source file editcurve_add.c
Campbell Barton
ideasman42 at gmail.com
Mon Sep 16 02:03:34 CEST 2013
Revision: 60152
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60152
Author: campbellbarton
Date: 2013-09-16 00:03:33 +0000 (Mon, 16 Sep 2013)
Log Message:
-----------
move editcurve add functions into their own source file editcurve_add.c
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_curve.h
trunk/blender/source/blender/blenkernel/intern/curve.c
trunk/blender/source/blender/editors/curve/CMakeLists.txt
trunk/blender/source/blender/editors/curve/curve_intern.h
trunk/blender/source/blender/editors/curve/editcurve.c
trunk/blender/source/blender/editors/curve/lorem.c
Added Paths:
-----------
trunk/blender/source/blender/editors/curve/editcurve_add.c
Modified: trunk/blender/source/blender/blenkernel/BKE_curve.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_curve.h 2013-09-15 23:58:00 UTC (rev 60151)
+++ trunk/blender/source/blender/blenkernel/BKE_curve.h 2013-09-16 00:03:33 UTC (rev 60152)
@@ -115,6 +115,7 @@
void BKE_nurbList_handles_set(struct ListBase *editnurb, short code);
void BKE_nurbList_handles_autocalc(ListBase *editnurb, int flag);
+void BKE_nurbList_flag_set(ListBase *editnurb, short flag);
void BKE_nurb_free(struct Nurb *nu);
struct Nurb *BKE_nurb_duplicate(struct Nurb *nu);
Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c 2013-09-15 23:58:00 UTC (rev 60151)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c 2013-09-16 00:03:33 UTC (rev 60152)
@@ -3308,6 +3308,33 @@
}
}
+void BKE_nurbList_flag_set(ListBase *editnurb, short flag)
+{
+ Nurb *nu;
+ BezTriple *bezt;
+ BPoint *bp;
+ int a;
+
+ for (nu = editnurb->first; nu; nu = nu->next) {
+ if (nu->type == CU_BEZIER) {
+ a = nu->pntsu;
+ bezt = nu->bezt;
+ while (a--) {
+ bezt->f1 = bezt->f2 = bezt->f3 = flag;
+ bezt++;
+ }
+ }
+ else {
+ a = nu->pntsu * nu->pntsv;
+ bp = nu->bp;
+ while (a--) {
+ bp->f1 = flag;
+ bp++;
+ }
+ }
+ }
+}
+
void BKE_nurb_direction_switch(Nurb *nu)
{
BezTriple *bezt1, *bezt2;
Modified: trunk/blender/source/blender/editors/curve/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/editors/curve/CMakeLists.txt 2013-09-15 23:58:00 UTC (rev 60151)
+++ trunk/blender/source/blender/editors/curve/CMakeLists.txt 2013-09-16 00:03:33 UTC (rev 60152)
@@ -36,6 +36,7 @@
set(SRC
curve_ops.c
editcurve.c
+ editcurve_add.c
editfont.c
lorem.c
Modified: trunk/blender/source/blender/editors/curve/curve_intern.h
===================================================================
--- trunk/blender/source/blender/editors/curve/curve_intern.h 2013-09-15 23:58:00 UTC (rev 60151)
+++ trunk/blender/source/blender/editors/curve/curve_intern.h 2013-09-16 00:03:33 UTC (rev 60152)
@@ -33,6 +33,9 @@
#define __CURVE_INTERN_H__
/* internal exports only */
+struct ListBase;
+struct EditNurb;
+struct Object;
struct wmOperatorType;
/* lorem.c */
@@ -71,6 +74,7 @@
void FONT_OT_textbox_add(struct wmOperatorType *ot);
void FONT_OT_textbox_remove(struct wmOperatorType *ot);
+
/* editcurve.c */
void CURVE_OT_hide(struct wmOperatorType *ot);
void CURVE_OT_reveal(struct wmOperatorType *ot);
@@ -93,19 +97,6 @@
void CURVE_OT_smooth_radius(struct wmOperatorType *ot);
void CURVE_OT_smooth_tilt(struct wmOperatorType *ot);
-void CURVE_OT_primitive_bezier_curve_add(struct wmOperatorType *ot);
-void CURVE_OT_primitive_bezier_circle_add(struct wmOperatorType *ot);
-void CURVE_OT_primitive_nurbs_curve_add(struct wmOperatorType *ot);
-void CURVE_OT_primitive_nurbs_circle_add(struct wmOperatorType *ot);
-void CURVE_OT_primitive_nurbs_path_add(struct wmOperatorType *ot);
-
-void SURFACE_OT_primitive_nurbs_surface_curve_add(struct wmOperatorType *ot);
-void SURFACE_OT_primitive_nurbs_surface_circle_add(struct wmOperatorType *ot);
-void SURFACE_OT_primitive_nurbs_surface_surface_add(struct wmOperatorType *ot);
-void SURFACE_OT_primitive_nurbs_surface_cylinder_add(struct wmOperatorType *ot);
-void SURFACE_OT_primitive_nurbs_surface_sphere_add(struct wmOperatorType *ot);
-void SURFACE_OT_primitive_nurbs_surface_torus_add(struct wmOperatorType *ot);
-
void CURVE_OT_de_select_first(struct wmOperatorType *ot);
void CURVE_OT_de_select_last(struct wmOperatorType *ot);
void CURVE_OT_select_all(struct wmOperatorType *ot);
@@ -127,5 +118,24 @@
void CURVE_OT_extrude(struct wmOperatorType *ot);
void CURVE_OT_cyclic_toggle(struct wmOperatorType *ot);
-#endif /* ED_UTIL_INTERN_H */
+/* helper functions */
+void ed_editnurb_translate_flag(struct ListBase *editnurb, short flag, const float vec[3]);
+bool ed_editnurb_extrude_flag(struct EditNurb *editnurb, short flag);
+bool ed_editnurb_spin(float viewmat[4][4], struct Object *obedit, const float axis[3], const float cent[3]);
+
+/* editcurve_add.c */
+void CURVE_OT_primitive_bezier_curve_add(struct wmOperatorType *ot);
+void CURVE_OT_primitive_bezier_circle_add(struct wmOperatorType *ot);
+void CURVE_OT_primitive_nurbs_curve_add(struct wmOperatorType *ot);
+void CURVE_OT_primitive_nurbs_circle_add(struct wmOperatorType *ot);
+void CURVE_OT_primitive_nurbs_path_add(struct wmOperatorType *ot);
+
+void SURFACE_OT_primitive_nurbs_surface_curve_add(struct wmOperatorType *ot);
+void SURFACE_OT_primitive_nurbs_surface_circle_add(struct wmOperatorType *ot);
+void SURFACE_OT_primitive_nurbs_surface_surface_add(struct wmOperatorType *ot);
+void SURFACE_OT_primitive_nurbs_surface_cylinder_add(struct wmOperatorType *ot);
+void SURFACE_OT_primitive_nurbs_surface_sphere_add(struct wmOperatorType *ot);
+void SURFACE_OT_primitive_nurbs_surface_torus_add(struct wmOperatorType *ot);
+
+#endif /* __CURVE_INTERN_H__ */
Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c 2013-09-15 23:58:00 UTC (rev 60151)
+++ trunk/blender/source/blender/editors/curve/editcurve.c 2013-09-16 00:03:33 UTC (rev 60152)
@@ -29,16 +29,6 @@
* \ingroup edcurve
*/
-#include <math.h>
-#include <string.h>
-
-#ifndef WIN32
-#include <unistd.h>
-#else
-#include <io.h>
-#endif
-#include <stdlib.h>
-
#include "DNA_key_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
@@ -49,9 +39,7 @@
#include "BLI_blenlib.h"
#include "BLI_bitmap.h"
#include "BLI_math.h"
-#include "BLI_dynstr.h"
#include "BLI_rand.h"
-#include "BLI_utildefines.h"
#include "BLI_ghash.h"
#include "BLF_translation.h"
@@ -62,7 +50,6 @@
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_key.h"
-#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_report.h"
#include "BKE_animsys.h"
@@ -126,11 +113,6 @@
static void adduplicateflagNurb(Object *obedit, ListBase *newnurb, const short flag, const bool split);
static int curve_delete_selected(Object *obedit, const eCurveElem_Types type, const bool split);
-static float nurbcircle[8][2] = {
- {0.0, -1.0}, {-1.0, -1.0}, {-1.0, 0.0}, {-1.0, 1.0},
- {0.0, 1.0}, { 1.0, 1.0}, { 1.0, 0.0}, { 1.0, -1.0}
-};
-
ListBase *object_editcurve_get(Object *ob)
{
if (ob && ELEM(ob->type, OB_CURVE, OB_SURF)) {
@@ -1557,35 +1539,8 @@
return 0;
}
-static void setflagsNurb(ListBase *editnurb, short flag)
+static void rotateflagNurb(ListBase *editnurb, short flag, const float cent[3], float rotmat[3][3])
{
- Nurb *nu;
- BezTriple *bezt;
- BPoint *bp;
- int a;
-
- for (nu = editnurb->first; nu; nu = nu->next) {
- if (nu->type == CU_BEZIER) {
- a = nu->pntsu;
- bezt = nu->bezt;
- while (a--) {
- bezt->f1 = bezt->f2 = bezt->f3 = flag;
- bezt++;
- }
- }
- else {
- a = nu->pntsu * nu->pntsv;
- bp = nu->bp;
- while (a--) {
- bp->f1 = flag;
- bp++;
- }
- }
- }
-}
-
-static void rotateflagNurb(ListBase *editnurb, short flag, float *cent, float rotmat[3][3])
-{
/* all verts with (flag & 'flag') rotate */
Nurb *nu;
BPoint *bp;
@@ -1608,7 +1563,7 @@
}
}
-static void translateflagNurb(ListBase *editnurb, short flag, const float vec[3])
+void ed_editnurb_translate_flag(ListBase *editnurb, short flag, const float vec[3])
{
/* all verts with ('flag' & flag) translate */
Nurb *nu;
@@ -1794,11 +1749,12 @@
}
/* only for OB_SURF */
-static short extrudeflagNurb(EditNurb *editnurb, int flag)
+bool ed_editnurb_extrude_flag(EditNurb *editnurb, short flag)
{
Nurb *nu;
BPoint *bp, *bpn, *newbp;
- int ok = 0, a, u, v, len;
+ int a, u, v, len;
+ bool ok = false;
nu = editnurb->nurbs.first;
while (nu) {
@@ -1817,7 +1773,7 @@
a--;
}
if (a == 0) {
- ok = 1;
+ ok = true;
newbp = (BPoint *)MEM_mallocN(2 * nu->pntsu * sizeof(BPoint), "extrudeNurb1");
ED_curve_bpcpy(editnurb, newbp, nu->bp, nu->pntsu);
bp = newbp + nu->pntsu;
@@ -1851,7 +1807,7 @@
}
if (u == 0 || u == nu->pntsv - 1) { /* row in u-direction selected */
- ok = 1;
+ ok = true;
newbp = (BPoint *)MEM_mallocN(nu->pntsu * (nu->pntsv + 1) *
sizeof(BPoint), "extrudeNurb1");
if (u == 0) {
@@ -1879,7 +1835,7 @@
BKE_nurb_knot_calc_v(nu);
}
else if (v == 0 || v == nu->pntsu - 1) { /* column in v-direction selected */
- ok = 1;
+ ok = true;
bpn = newbp = (BPoint *)MEM_mallocN((nu->pntsu + 1) * nu->pntsv * sizeof(BPoint), "extrudeNurb1");
bp = nu->bp;
@@ -4296,7 +4252,7 @@
}
}
else {
- setflagsNurb(editnurb, 0);
+ BKE_nurbList_flag_set(editnurb, 0);
if (bezt) {
@@ -4332,7 +4288,7 @@
/* 'cent' is in object space and 'dvec' in worldspace.
*/
-static int spin_nurb(float viewmat[4][4], Object *obedit, float *axis, float *cent)
+bool ed_editnurb_spin(float viewmat[4][4], Object *obedit, const float axis[3], const float cent[3])
{
Curve *cu = (Curve *)obedit->data;
ListBase *editnurb = object_editcurve_get(obedit);
@@ -4340,7 +4296,8 @@
float si, phi, n[3], q[4], cmat[3][3], tmat[3][3], imat[3][3];
float bmat[3][3], rotmat[3][3], scalemat1[3][3], scalemat2[3][3];
float persmat[3][3], persinv[3][3];
- short a, ok, changed = 0;
+ bool ok, changed = false;
+ int a;
copy_m3_m4(persmat, viewmat);
invert_m3_m3(persinv, persmat);
@@ -4379,19 +4336,19 @@
mul_m3_m3m3(tmat, persinv, cmat);
mul_m3_m3m3(scalemat2, imat, tmat);
- ok = 1;
+ ok = true;
for (a = 0; a < 7; a++) {
- ok = extrudeflagNurb(cu->editnurb, 1);
+ ok = ed_editnurb_extrude_flag(cu->editnurb, 1);
- if (ok == 0)
+ if (ok == false)
return changed;
- changed = 1;
+ changed = true;
rotateflagNurb(editnurb, SELECT, cent, rotmat);
- if ((a & SELECT) == 0) {
+ if ((a & 1) == 0) {
rotateflagNurb(editnurb, SELECT, cent, scalemat1);
weightflagNurb(editnurb, SELECT, 0.25 * M_SQRT2);
}
@@ -4431,7 +4388,7 @@
else
unit_m4(viewmat);
- if (!spin_nurb(viewmat, obedit, axis, cent)) {
+ if (!ed_editnurb_spin(viewmat, obedit, axis, cent)) {
BKE_report(op->reports, RPT_ERROR, "Cannot spin");
return OPERATOR_CANCELLED;
}
@@ -4846,7 +4803,7 @@
addvert_Nurb(C, 'e', NULL);
}
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list