Commit Graph

652 Commits

Author SHA1 Message Date
38bbd9c778 Text3d: paste additions
- Add paste from system clipboard which behaves like paste from file.
- Paste from file now replaces the selection rather then just adding to the end.
- Move paste operations into the 'Edit' menu.
- Added generic paste functions: font_paste_wchar, font_paste_utf8.
- Fix paste max length check not taking the selection length into account.
2014-01-06 00:39:13 +11:00
6734936c13 RNA API: use bool's for enum itemf callbacks. 2014-01-04 18:10:01 +11:00
15bc30f4ee Text3d: store number of characters and utf8 length separately
EditFont's use of Curve.len was very confusing, in editmode it
represented the number of characters, in object mode the number of
bytes. add Curve.len_wchar and keep track of both.

Also don't convert the editmode text into utf8 on every keystroke.
Now this is done on exiting editmode or save - to match most other
object types.

This also fixes curves 'body_format' being reported with an invalid size.
2014-01-03 17:08:23 +11:00
a5cb2229ab Text3d: avoid converting utf8 to wchar_t in editmode 2014-01-03 14:20:35 +11:00
202bb32134 Fix T37056: Making segment flips curves it's not needed
Made the system around splines order a bit smarter, so
crating a segment between two splines wouldn't switch
direction if splines are selected in a way that they're
"co-linear".

It is possible to make things even smarter using active
point and so, but that i'd consider a TODO.
2014-01-03 01:44:46 +06:00
42aa19088e Text3d: add select all operator
also add Edit menu for 3d text and move cut/copy/paste there.
2013-12-29 23:55:05 +11:00
1c8d1569da correction to previous commit 2013-12-29 23:34:13 +11:00
451343022a Fix crash moving the cursor after deleting 3d text 2013-12-29 23:18:38 +11:00
748b800eba Text3d: add assert's to check the selection and length are valid 2013-12-29 23:16:02 +11:00
57e8c5870a Text3d: setting upper/lower case now uses the selection 2013-12-29 21:05:39 +11:00
9a3855e655 Text3d: remove redundant call to wcslen 2013-12-29 21:04:54 +11:00
d0ec1b1caa Fix for 3d text ctrl+arrow keys failing for multi-byte characters. 2013-12-29 16:54:43 +11:00
f5076d54cb 'Transform' Python Function for armature, curve and lattice.
patch by Paolo Acampora with some edits.
2013-12-17 23:04:36 +11:00
c456cd94b2 Curve Handle Recalculate (Ctrl+N)
T37799 Patch from Simon Repp
with added option to recalculate handle lengths.
2013-12-14 02:53:19 +11:00
3a370ec6ec Move curve's boundbox and texspace calculation out of modifier stack
There were several issues with how bounding box and texture space
are calculated:

- This was done at the same time as applying modifiers, meaning if
  several objects are sharing the same curve datablock, bounding
  box and texture space will be calculated multiple times.

  Further, allocating bounding box wasn't safe for threading.

- Bounding box and texture space were evaluated after pre-tessellation
  modifiers are applied. This means Curve-level data is actually
  depends on object data, and it's really bad because different
  objects could have different modifiers and this leads to
  conflicts (curve's data depends on object evaluation order)
  and doesn't behave in a predictable way.

  This commit moves bounding box and texture space evaluation from
  modifier stack to own utility functions, just like it's was done
  for meshes.

  This makes curve objects update thread-safe, but gives some
  limitations as well. Namely, with such approach it's not so
  clear how to preserve the same behavior of texture space:
  before this change texture space and bounding box would match
  beveled curve as accurate as possible.

  Old behavior was nice for quick texturing -- in most cases you
  didn't need to modify texture space at all. But texture space
  was depending on render/preview settings which could easily lead
  to situations, when final result would be far different from
  preview one.

  Now we're using CV points coordinates and their radius to approximate
  the bounding box. This doesn't give the same exact texture space,
  but it helps a lot keeping texture space in a nice predictable way.

  We could make approximation smarter in the future, but fir now
  added operator to match texture space to fully tessellated curve
  called "Match Texture Space".

Review link:

  https://codereview.appspot.com/15410043/

Brief description:

  http://wiki.blender.org/index.php/User:Nazg-gul/GSoC-2013/Results#Curve_Texture_Space
2013-12-11 16:32:41 +06:00
0f22eb8564 3D Text: delete selection before pasting 2013-12-08 16:39:11 +11:00
63caaa2b12 Code Cleanup: rename vars for detecting change to be more consistent
rename change/is_change/is_changed/modified -> changed
also use bools over int/short/char and once accidental float.
2013-11-26 06:39:14 +11:00
e4f74d8e8d Fix build warning in release mode with clang. 2013-11-25 12:21:46 +01:00
1decd824f3 Code Cleanup: use math functions and reduce View3d axis drawing into a loop 2013-11-24 21:26:16 +11:00
d232486b40 Fix T37543: Multiline 3D Text saved in edit mode breaks on load 2013-11-21 04:32:28 +11:00
0af52adac0 Code Cleanup: remove unused members for editfont (3D text) 2013-11-21 04:16:41 +11:00
Kevin Mackay
299812f28d Made active point and active spline behaviour more predictable on curves/surfaces:
* deselect all no longer leaves an active point
* the most recently added spline becomes the active one
* on successful duplicate/delete the active point and active spline are reset
2013-11-05 23:37:09 +00:00
7267221715 remove return argument from wmOperatorType->cancel, was only ever returning OPERATOR_CANCELLED. 2013-10-30 23:08:53 +00:00
ff7dbdbaee rename give_cursor to ED_view3d_cursor3d_get 2013-10-26 04:07:18 +00:00
304a32bf1f style cleanup 2013-10-23 02:52:27 +00:00
Kevin Mackay
4230b8f9c4 Patch [#37115] Surface split and separate operators
Added surface support to recent curve split operator, completing quick hack todo
Updated nurbs separate operator to make use of new split logic, completing tools todo
Added 'Delete segment' option to surfaces and improved surface duplication, used for split/separate
2013-10-17 19:57:14 +00:00
afab39b9d6 code cleanup: use const's for static arrays 2013-10-10 20:22:17 +00:00
b21b24573d lots of operator descriptions were incorrectly copy/pasted.
update some descriptions, others were removed and operators tagged as internal.

add a script to detect duplicate operator descriptions.
2013-09-30 05:50:41 +00:00
b380dd9378 fix [#36537] "Grid Floor Scaling" can have some unexpected behaviour on new objects
curves and metaballs now behave the same as meshes wrt grid scaling.
remove WM_operator_view3d_distance_invoke(), and replace with a function called from exec which initializes defaults, this way operators can have their own invoke functions.
2013-09-16 04:19:48 +00:00
7e2977b051 move make_prim_radius_prop into a generic function. 2013-09-16 00:18:09 +00:00
e8ade192ff move editcurve add functions into their own source file editcurve_add.c 2013-09-16 00:03:33 +00:00
506db73032 - update bl_run_operators.py for change in blender.
- rename curve delete operator vertices enum to match mesh delete operator.
- add missing NULL checks to view3d_lock_poll() to prevent crashes when called outside a view3d.
2013-09-15 01:46:25 +00:00
f934581a78 edits to curve operator
- remove delete-all option (users can just select all and delete as with all other modes).
- remove CALLOC_STRUCT_N macro.
- CURVE_OT_delete define a dynamic enum rather then a custom invoke menu function.
2013-08-29 03:14:36 +00:00
f8ecb789e7 code cleanup: curves, replace magic numbers for enums. 2013-08-29 03:00:04 +00:00
95fcf02500 patch [#36336] Split operator for curves and surfaces
by Kevin Mackay (yakca)

The operator follows roughly the same behaviour as the split operator for a mesh (Ykey).
2013-08-29 02:32:51 +00:00
8ef934c73f ghash/bli-listbase edits, rename BLI_ghash_pop -> BLI_ghash_popkey (since it takes a key as an arg and isnt popping any element from the hash as you might expect).
add BLI_pophead/tail, since getting the first element from a list and removing it is a common task.
2013-08-26 23:37:08 +00:00
09a52f18b6 ghash: reserve size when its known or can be guessed close enough.
also avoid allocs per node in pbvh_bmesh_node_limit_ensure()
2013-08-24 17:33:47 +00:00
df0114a17a curve only supported radius smoothing, add smooth for tilt and weight. 2013-07-24 14:30:45 +00:00
b6f58d0ea1 - add individual origin support for curves and improve the orientation calculations for curve handles,
- add support for using the active point's orientation.
- add support for creating new custom orientations from curves.
- fix error where only the last selected curve handle was taken into account for manipulator orientations.
2013-07-24 13:56:36 +00:00
3ff3d1bc0f replace use of strcat() where the string offset is known.
also correct bad logic with converting a textblock to 3d-text, bytes-vs-number of chars wasn't handled right.
2013-07-23 12:49:30 +00:00
04ea8c0ee8 remove the pointer from BLI_bitmap's typedef,
hides that an arg passed is really an array which may be modified by other functions.
2013-07-22 23:20:48 +00:00
28a27e2e9d Fix text object text entry being broken after recent fix to BLI_strncpy_wchar_from_utf8.
Checked other usages of this function but they seem to be fine.
2013-07-15 19:04:49 +00:00
2b6f35d686 fix for error in string copy
- BLI_strncpy_wchar_from_utf8 wasn't NULL terminating the destination string, caused uninitialized memory use in BPY_python_start().
- BLI_strncpy_wchar_as_utf8 could write one byte past the buffer bounds.
2013-07-15 05:09:06 +00:00
3f9629a4c7 patch [#36078] Fixes joining behavior for curves and armatures (when active object not selected). 2013-07-10 09:55:10 +00:00
96d78e3de9 Fix #36042: Subdividing a cyclic spline shifts start/end points
Issue goes back to 2.4x days at least (but very much likely the
issue is even older). It's caused by subdivision code was starting
to iterate points from previous one, which shifted all the points
by one.

Reshuffled code so now iteration starts from first spline point.

Thanks to Campbell for review and tests! :)
2013-07-08 08:02:37 +00:00
603258d763 fix for zero length normalize before scanfill for meshes and other minor changes. 2013-06-27 04:32:44 +00:00
3ff36f928c 3d text tool - 'insert lorem' was crashing, also add this to the text menu. 2013-06-27 04:18:01 +00:00
f3b7a49d5b fix for old bug, select more in a nurbs surface would crash (under allocing). 2013-06-27 03:57:59 +00:00
45d7ebbdf2 Include DNA_scene_types before ED_object instead of forward enum declaration
Forward enum declaration is a bad idea, especially for C++ which requires
enum specification to dteermine which data type to use to store it.

Alternative would be to not use enum as an arument and pass it as int,
but actually would rather be strict on typing -- using explicit enum
as parameter type helps understanding the code and prevents possible
mistakes when using the function.
2013-06-25 09:27:31 +00:00
e3afec1461 fix [#35669] Snap curvepoints dont work correct when another object is selected
Ctrl+Click extrude curves now supports snapping to faces as with meshes.
2013-06-10 03:56:50 +00:00