~ubuntu-branches/ubuntu/utopic/blender/utopic-proposed

« back to all changes in this revision

Viewing changes to source/blender/editors/mesh/editmesh_add.c

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-02-19 11:24:23 UTC
  • mfrom: (14.2.23 sid)
  • Revision ID: package-import@ubuntu.com-20140219112423-rkmaz2m7ha06d4tk
Tags: 2.69-3ubuntu1
* Merge with Debian; remaining changes:
  - Configure without OpenImageIO on armhf, as it is not available on
    Ubuntu.

Show diffs side-by-side

added added

removed removed

Lines of Context:
96
96
        WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, obedit);
97
97
}
98
98
 
99
 
static void make_prim_radius_prop(wmOperatorType *ot)
100
 
{
101
 
        PropertyRNA *prop;
102
 
 
103
 
        prop = RNA_def_float(ot->srna, "radius", 1.0f, 0.0, FLT_MAX, "Radius", "", 0.001, 100.00);
104
 
        RNA_def_property_subtype(prop, PROP_DISTANCE);
105
 
}
106
 
 
107
 
 
108
99
static int add_primitive_plane_exec(bContext *C, wmOperator *op)
109
100
{
110
101
        Object *obedit;
114
105
        bool was_editmode;
115
106
        unsigned int layer;
116
107
 
 
108
        WM_operator_view3d_unit_defaults(C, op);
117
109
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
118
110
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Plane"), &dia, mat, &was_editmode, loc, rot, layer);
119
111
        em = BKE_editmesh_from_object(obedit);
120
112
 
121
 
        if (!EDBM_op_call_and_selectf(em, op, "verts.out",
122
 
                                      "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
123
 
                                      1, 1, RNA_float_get(op->ptr, "radius"), mat))
 
113
        if (!EDBM_op_call_and_selectf(
 
114
                em, op, "verts.out", false,
 
115
                "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
 
116
                1, 1, RNA_float_get(op->ptr, "radius"), mat))
124
117
        {
125
118
                return OPERATOR_CANCELLED;
126
119
        }
138
131
        ot->idname = "MESH_OT_primitive_plane_add";
139
132
 
140
133
        /* api callbacks */
141
 
        ot->invoke = WM_operator_view3d_distance_invoke;
142
134
        ot->exec = add_primitive_plane_exec;
143
135
        ot->poll = ED_operator_scene_editable;
144
136
 
145
137
        /* flags */
146
138
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
147
139
 
148
 
        make_prim_radius_prop(ot);
 
140
        ED_object_add_unit_props(ot);
149
141
        ED_object_add_generic_props(ot, true);
150
142
}
151
143
 
158
150
        bool was_editmode;
159
151
        unsigned int layer;
160
152
 
 
153
        WM_operator_view3d_unit_defaults(C, op);
161
154
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
162
155
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cube"), &dia, mat, &was_editmode, loc, rot, layer);
163
156
        em = BKE_editmesh_from_object(obedit);
164
157
 
165
 
        if (!EDBM_op_call_and_selectf(em, op, "verts.out", "create_cube matrix=%m4 size=%f",
166
 
                                      mat, RNA_float_get(op->ptr, "radius") * 2.0f))
 
158
        if (!EDBM_op_call_and_selectf(
 
159
                em, op, "verts.out", false,
 
160
                "create_cube matrix=%m4 size=%f",
 
161
                mat, RNA_float_get(op->ptr, "radius") * 2.0f))
167
162
        {
168
163
                return OPERATOR_CANCELLED;
169
164
        }
182
177
        ot->idname = "MESH_OT_primitive_cube_add";
183
178
 
184
179
        /* api callbacks */
185
 
        ot->invoke = WM_operator_view3d_distance_invoke;
186
180
        ot->exec = add_primitive_cube_exec;
187
181
        ot->poll = ED_operator_scene_editable;
188
182
 
189
183
        /* flags */
190
184
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
191
185
 
192
 
        make_prim_radius_prop(ot);
 
186
        ED_object_add_unit_props(ot);
193
187
        ED_object_add_generic_props(ot, true);
194
188
}
195
189
 
212
206
        cap_end = RNA_enum_get(op->ptr, "fill_type");
213
207
        cap_tri = (cap_end == 2);
214
208
 
 
209
        WM_operator_view3d_unit_defaults(C, op);
215
210
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
216
211
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Circle"), &dia, mat, &was_editmode, loc, rot, layer);
217
212
        em = BKE_editmesh_from_object(obedit);
218
213
 
219
 
        if (!EDBM_op_call_and_selectf(em, op, "verts.out",
220
 
                                      "create_circle segments=%i diameter=%f cap_ends=%b cap_tris=%b matrix=%m4",
221
 
                                      RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius"),
222
 
                                      cap_end, cap_tri, mat))
 
214
        if (!EDBM_op_call_and_selectf(
 
215
                em, op, "verts.out", false,
 
216
                "create_circle segments=%i diameter=%f cap_ends=%b cap_tris=%b matrix=%m4",
 
217
                RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius"),
 
218
                cap_end, cap_tri, mat))
223
219
        {
224
220
                return OPERATOR_CANCELLED;
225
221
        }
237
233
        ot->idname = "MESH_OT_primitive_circle_add";
238
234
 
239
235
        /* api callbacks */
240
 
        ot->invoke = WM_operator_view3d_distance_invoke;
241
236
        ot->exec = add_primitive_circle_exec;
242
237
        ot->poll = ED_operator_scene_editable;
243
238
 
246
241
 
247
242
        /* props */
248
243
        RNA_def_int(ot->srna, "vertices", 32, 3, INT_MAX, "Vertices", "", 3, 500);
249
 
        make_prim_radius_prop(ot);
 
244
        ED_object_add_unit_props(ot);
250
245
        RNA_def_enum(ot->srna, "fill_type", fill_type_items, 0, "Fill Type", "");
251
246
 
252
247
        ED_object_add_generic_props(ot, true);
264
259
        const bool cap_end = (end_fill_type != 0);
265
260
        const bool cap_tri = (end_fill_type == 2);
266
261
 
 
262
        WM_operator_view3d_unit_defaults(C, op);
267
263
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
268
264
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cylinder"), &dia, mat, &was_editmode, loc, rot, layer);
269
265
        em = BKE_editmesh_from_object(obedit);
270
266
 
271
267
        if (!EDBM_op_call_and_selectf(
272
 
                em, op, "verts.out",
 
268
                em, op, "verts.out", false,
273
269
                "create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b cap_tris=%b depth=%f matrix=%m4",
274
270
                RNA_int_get(op->ptr, "vertices"),
275
271
                RNA_float_get(op->ptr, "radius"),
295
291
        ot->idname = "MESH_OT_primitive_cylinder_add";
296
292
 
297
293
        /* api callbacks */
298
 
        ot->invoke = WM_operator_view3d_distance_invoke;
299
294
        ot->exec = add_primitive_cylinder_exec;
300
295
        ot->poll = ED_operator_scene_editable;
301
296
 
304
299
 
305
300
        /* props */
306
301
        RNA_def_int(ot->srna, "vertices", 32, 3, INT_MAX, "Vertices", "", 3, 500);
307
 
        make_prim_radius_prop(ot);
 
302
        ED_object_add_unit_props(ot);
308
303
        prop = RNA_def_float(ot->srna, "depth", 2.0f, 0.0, FLT_MAX, "Depth", "", 0.001, 100.00);
309
304
        RNA_def_property_subtype(prop, PROP_DISTANCE);
310
305
        RNA_def_enum(ot->srna, "end_fill_type", fill_type_items, 1, "Cap Fill Type", "");
324
319
        const bool cap_end = (end_fill_type != 0);
325
320
        const bool cap_tri = (end_fill_type == 2);
326
321
 
 
322
        WM_operator_view3d_unit_defaults(C, op);
327
323
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
328
324
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cone"), &dia, mat, &was_editmode, loc, rot, layer);
329
325
        em = BKE_editmesh_from_object(obedit);
330
326
 
331
327
        if (!EDBM_op_call_and_selectf(
332
 
                em, op, "verts.out",
 
328
                em, op, "verts.out", false,
333
329
                "create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b cap_tris=%b depth=%f matrix=%m4",
334
330
                RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius1"),
335
331
                RNA_float_get(op->ptr, "radius2"), cap_end, cap_tri, RNA_float_get(op->ptr, "depth"), mat))
352
348
        ot->idname = "MESH_OT_primitive_cone_add";
353
349
 
354
350
        /* api callbacks */
355
 
        ot->invoke = WM_operator_view3d_distance_invoke;
356
351
        ot->exec = add_primitive_cone_exec;
357
352
        ot->poll = ED_operator_scene_editable;
358
353
 
381
376
        bool was_editmode;
382
377
        unsigned int layer;
383
378
 
 
379
        WM_operator_view3d_unit_defaults(C, op);
384
380
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
385
381
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Grid"), &dia, mat, &was_editmode, loc, rot, layer);
386
382
        em = BKE_editmesh_from_object(obedit);
387
383
 
388
 
        if (!EDBM_op_call_and_selectf(em, op, "verts.out",
389
 
                                      "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
390
 
                                      RNA_int_get(op->ptr, "x_subdivisions"),
391
 
                                      RNA_int_get(op->ptr, "y_subdivisions"),
392
 
                                      RNA_float_get(op->ptr, "radius"), mat))
 
384
        if (!EDBM_op_call_and_selectf(
 
385
                em, op, "verts.out", false,
 
386
                "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
 
387
                RNA_int_get(op->ptr, "x_subdivisions"),
 
388
                RNA_int_get(op->ptr, "y_subdivisions"),
 
389
                RNA_float_get(op->ptr, "radius"), mat))
393
390
        {
394
391
                return OPERATOR_CANCELLED;
395
392
        }
407
404
        ot->idname = "MESH_OT_primitive_grid_add";
408
405
 
409
406
        /* api callbacks */
410
 
        ot->invoke = WM_operator_view3d_distance_invoke;
411
407
        ot->exec = add_primitive_grid_exec;
412
408
        ot->poll = ED_operator_scene_editable;
413
409
 
417
413
        /* props */
418
414
        RNA_def_int(ot->srna, "x_subdivisions", 10, 3, INT_MAX, "X Subdivisions", "", 3, 1000);
419
415
        RNA_def_int(ot->srna, "y_subdivisions", 10, 3, INT_MAX, "Y Subdivisions", "", 3, 1000);
420
 
        make_prim_radius_prop(ot);
 
416
        ED_object_add_unit_props(ot);
421
417
 
422
418
        ED_object_add_generic_props(ot, true);
423
419
}
432
428
        unsigned int layer;
433
429
        bool was_editmode;
434
430
 
 
431
        WM_operator_view3d_unit_defaults(C, op);
435
432
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, &is_view_aligned);
436
433
        if (!is_view_aligned)
437
434
                rot[0] += (float)M_PI / 2.0f;
444
441
 
445
442
        em = BKE_editmesh_from_object(obedit);
446
443
 
447
 
        if (!EDBM_op_call_and_selectf(em, op, "verts.out", "create_monkey matrix=%m4", mat)) {
 
444
        if (!EDBM_op_call_and_selectf(
 
445
                em, op, "verts.out",  false,
 
446
                "create_monkey matrix=%m4", mat))
 
447
        {
448
448
                return OPERATOR_CANCELLED;
449
449
        }
450
450
 
461
461
        ot->idname = "MESH_OT_primitive_monkey_add";
462
462
 
463
463
        /* api callbacks */
464
 
        ot->invoke = WM_operator_view3d_distance_invoke;
465
464
        ot->exec = add_primitive_monkey_exec;
466
465
        ot->poll = ED_operator_scene_editable;
467
466
 
468
467
        /* flags */
469
 
        make_prim_radius_prop(ot);
 
468
        ED_object_add_unit_props(ot);
470
469
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
471
470
 
472
471
        ED_object_add_generic_props(ot, true);
481
480
        bool was_editmode;
482
481
        unsigned int layer;
483
482
 
 
483
        WM_operator_view3d_unit_defaults(C, op);
484
484
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
485
485
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Sphere"), &dia, mat, &was_editmode, loc, rot, layer);
486
486
        em = BKE_editmesh_from_object(obedit);
487
487
 
488
 
        if (!EDBM_op_call_and_selectf(em, op, "verts.out",
489
 
                                      "create_uvsphere u_segments=%i v_segments=%i diameter=%f matrix=%m4",
490
 
                                      RNA_int_get(op->ptr, "segments"), RNA_int_get(op->ptr, "ring_count"),
491
 
                                      RNA_float_get(op->ptr, "size"), mat))
 
488
        if (!EDBM_op_call_and_selectf(
 
489
                em, op, "verts.out", false,
 
490
                "create_uvsphere u_segments=%i v_segments=%i diameter=%f matrix=%m4",
 
491
                RNA_int_get(op->ptr, "segments"), RNA_int_get(op->ptr, "ring_count"),
 
492
                RNA_float_get(op->ptr, "size"), mat))
492
493
        {
493
494
                return OPERATOR_CANCELLED;
494
495
        }
508
509
        ot->idname = "MESH_OT_primitive_uv_sphere_add";
509
510
 
510
511
        /* api callbacks */
511
 
        ot->invoke = WM_operator_view3d_distance_invoke;
512
512
        ot->exec = add_primitive_uvsphere_exec;
513
513
        ot->poll = ED_operator_scene_editable;
514
514
 
533
533
        bool was_editmode;
534
534
        unsigned int layer;
535
535
 
 
536
        WM_operator_view3d_unit_defaults(C, op);
536
537
        ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
537
538
        obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Icosphere"), &dia, mat, &was_editmode, loc, rot, layer);
538
539
        em = BKE_editmesh_from_object(obedit);
539
540
 
540
541
        if (!EDBM_op_call_and_selectf(
541
 
                em, op, "verts.out",
 
542
                em, op, "verts.out", false,
542
543
                "create_icosphere subdivisions=%i diameter=%f matrix=%m4",
543
544
                RNA_int_get(op->ptr, "subdivisions"),
544
545
                RNA_float_get(op->ptr, "size"), mat))
561
562
        ot->idname = "MESH_OT_primitive_ico_sphere_add";
562
563
 
563
564
        /* api callbacks */
564
 
        ot->invoke = WM_operator_view3d_distance_invoke;
565
565
        ot->exec = add_primitive_icosphere_exec;
566
566
        ot->poll = ED_operator_scene_editable;
567
567