Commit graph

149 commits

Author SHA1 Message Date
Marcel Admiraal
4b8b803931 Rename Control margin to offset 2020-12-23 06:25:56 +00:00
bruvzg
0ef483e9a9
[Complex Text Layouts] Performance optimizations. 2020-12-07 08:53:02 +02:00
bruvzg
a458e90179
[Complex Text Layouts] Adds missing Font::SPACING_* to the Label, LineEdit, TextEdit, TextLine and TextParagraph.
Fixes oversized editor control height (default editor spacing is negative) and control size changing when text is set.
2020-12-06 20:30:59 +02:00
bruvzg
d66eb77c9c
[Complex Text Layouts] Refactor Label and LineEdit controls. 2020-11-26 14:25:49 +02:00
bruvzg
99666de00f
[Complex Text Layouts] Refactor Font class, default themes and controls to use Text Server interface.
Implement interface mirroring.
Add TextLine and TextParagraph classes.
Handle UTF-16 input on macOS and Windows.
2020-11-26 14:25:48 +02:00
reduz
127458ed17 Reorganized core/ directory, it was too fatty already
-Removed FuncRef, since Callable makes it obsolete
-Removed int_types.h as its obsolete in c++11+
-Changed color names code
2020-11-07 20:17:12 -03:00
Rémi Verschelde
ff9195a905
Merge pull request #40649 from themvl/master
Fix bug where leading and trailing spaces werent taken into account with center and right allignment
2020-09-05 12:38:26 +02:00
bruvzg
80b8eff6aa
[Complex Test Layouts] Change String to use UTF-32 encoding on all platforms. 2020-09-03 19:56:24 +03:00
mvl
4318ad94ac Fix bug where leading and trailing spaces werent taken into account with center and right allignment. 2020-08-31 20:09:28 +02:00
Rémi Verschelde
0ee0fa42e6 Style: Enforce braces around if blocks and loops
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2020-05-14 21:57:34 +02:00
Rémi Verschelde
07bc4e2f96 Style: Enforce separation line between function definitions
I couldn't find a tool that enforces it, so I went the manual route:
```
find -name "thirdparty" -prune \
  -o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \
  -o -name "*.glsl" > files
perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files)
misc/scripts/fix_style.sh -c
```

This adds a newline after all `}` on the first column, unless they
are followed by `#` (typically `#endif`). This leads to having lots
of places with two lines between function/class definitions, but
clang-format then fixes it as we enforce max one line of separation.

This doesn't fix potential occurrences of function definitions which
are indented (e.g. for a helper class defined in a .cpp), but it's
better than nothing. Also can't be made to run easily on CI/hooks so
we'll have to be careful with new code.

Part of #33027.
2020-05-14 16:54:55 +02:00
Rémi Verschelde
0be6d925dc Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
Which means that reduz' beloved style which we all became used to
will now be changed automatically to remove the first empty line.

This makes us lean closer to 1TBS (the one true brace style) instead
of hybridating it with some Allman-inspired spacing.

There's still the case of braces around single-statement blocks that
needs to be addressed (but clang-format can't help with that, but
clang-tidy may if we agree about it).

Part of #33027.
2020-05-14 16:54:55 +02:00
Rémi Verschelde
1f6f364a56 Port member initialization from constructor to declaration (C++11)
Using `clang-tidy`'s `modernize-use-default-member-init` check and
manual review of the changes, and some extra manual changes that
`clang-tidy` failed to do.

Also went manually through all of `core` to find occurrences that
`clang-tidy` couldn't handle, especially all initializations done
in a constructor without using initializer lists.
2020-05-14 10:01:56 +02:00
lupoDharkael
95a1400a2a Replace NULL with nullptr 2020-04-02 13:38:00 +02:00
Juan Linietsky
a6f3bc7c69 Renaming of servers for coherency.
VisualServer -> RenderingServer
PhysicsServer -> PhysicsServer3D
Physics2DServer -> PhysicsServer2D
NavigationServer -> NavigationServer3D
Navigation2DServer -> NavigationServer2D

Also renamed corresponding files.
2020-03-27 15:21:27 -03:00
Juan Linietsky
441f1a5fe9 Popups are now windows also (broken!) 2020-03-26 15:49:42 +01:00
Juan Linietsky
33b5c57199 Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.
- Renames PackedIntArray to PackedInt32Array.
- Renames PackedFloatArray to PackedFloat32Array.
- Adds PackedInt64Array and PackedFloat64Array.
- Renames Variant::REAL to Variant::FLOAT for consistency.

Packed arrays are for storing large amount of data and creating stuff like
meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of
memory. That said, many users requested the ability to have 64 bits packed
arrays for their games, so this is just an optional added type.

For Variant, the float datatype is always 64 bits, and exposed as `float`.

We still have `real_t` which is the datatype that can change from 32 to 64
bits depending on a compile flag (not entirely working right now, but that's
the idea). It affects math related datatypes and code only.

Neither Variant nor PackedArray make use of real_t, which is only intended
for math precision, so the term is removed from there to keep only float.
2020-02-25 12:55:53 +01:00
Rémi Verschelde
11d28b2d10 Revert "make Label consider spaces for visible_characters"
This reverts commit 695980a0f2.

Fixes #35668.
2020-01-28 19:37:04 +01:00
Haoyu Qiu
fbd937bd30 Update minimum size on Label::set_autowrap
If `clip_text` is true, the minimum height is one line if `autowrap` is
true , or one pixel otherwise.
2020-01-10 17:08:27 +08:00
Rémi Verschelde
1de54bb388
Merge pull request #34874 from wingedadventurer/bugfix-label-visible-characters
Make Label node consider spaces for visible_characters property
2020-01-08 08:18:59 +01:00
wingedadventurer
695980a0f2 make Label consider spaces for visible_characters 2020-01-06 23:29:00 +01:00
volzhs
e5a0018621 Calculate label size more accurately 2020-01-07 04:21:02 +09:00
volzhs
3f0c7b89ec Fix calculating label size 2020-01-06 01:06:26 +09:00
Rémi Verschelde
a7f49ac9a1 Update copyright statements to 2020
Happy new year to the wonderful Godot community!

We're starting a new decade with a well-established, non-profit, free
and open source game engine, and tons of further improvements in the
pipeline from hundreds of contributors.

Godot will keep getting better, and we're looking forward to all the
games that the community will keep developing and releasing with it.
2020-01-01 11:16:22 +01:00
PouleyKetchoupp
13c88878c4 Fixed cases where labels with autowrap can overflow the editor ui
Fixes #33155
2019-11-04 10:12:36 +01:00
PouleyKetchoupp
8df330bacd Allow Label autowrap to cut words when they exceed line width
Fixes #30832
2019-10-16 09:57:44 +02:00
Hugo Locurcio
fa0e66a88f
Draw the outline as part of the Label font shadow
This closes #30165.
2019-06-28 23:21:55 +02:00
qarmin
4e5310cc60 Some code changed with Clang-Tidy 2019-06-26 15:08:25 +02:00
Rémi Verschelde
b16c309f82 Update copyright statements to 2019
Happy new year to the wonderful Godot community!
2019-01-01 12:58:10 +01:00
Rémi Verschelde
a195b2f1a3
Merge pull request #24428 from akien-mga/label-uppercase
Label: Fix kerning when using Uppercase mode
2018-12-18 07:57:41 +01:00
Hein-Pieter van Braam
c58b1608ea Don't accidentally convert string content to char
Due to the right hand side of the :? trickery the rhs was cast to a
char losing precision. Previously this didn't matter, but with
CharProxy it does. (Previously we could just happily cast it back to
a wchar_t and get the original 16 - 32 bits. Now we'll only ever
get the first 8).
2018-12-17 22:31:02 +01:00
Rémi Verschelde
7cb5e005ee Label: Fix kerning when using Uppercase mode
Seemingly a typo, I did not check what exact impact it had, but
the x_ofs would likely have accumulated errors when using fonts
with varying char widths.
2018-12-17 20:56:36 +01:00
Thomas ten Cate
922f2d613f Fix return value of get_total_character_count
Also document that it only counts visible characters.

Fixes #23720
2018-11-15 12:34:08 +01:00
Juan Linietsky
f2e54057ae -Moved EditorDefaultValue to ClassDB, made it core
-Removed one and zero hints for properties, replaced by default value
2018-11-08 11:30:59 -03:00
karroffel
a0f206aae8 fix enum cast warnings on clang 2018-10-04 09:17:59 +02:00
Guilherme Felipe
b0b88df016 Fix Label::get_minimum_size not updating cache size for autowrap 2018-09-19 14:05:44 -03:00
Rémi Verschelde
277b24dfb7 Make core/ includes absolute, remove subfolders from include path
This allows more consistency in the manner we include core headers,
where previously there would be a mix of absolute, relative and
include path-dependent includes.
2018-09-12 09:52:22 +02:00
volzhs
adb179154a Fix Label autowrap clips text 2018-07-18 02:19:05 +09:00
Ruslan Mustakov
d5a0b5f35b Ceil char width within Label instead of Font
Some classes use Font::get_char_size directly and not only for
autowrapping. RichTextLabel is one such example. So this commit
reverts aa8561d (PR #17504) and instead ceils character width within
Label. This makes sure Label autowraps correctly while not affecting
other Font clients.

Fixes #18835.
2018-05-14 20:32:14 +07:00
Ruslan Mustakov
863dd9aa46 Always emit dynamic font change in update_oversampling
Fixes #15787.

The issue occurred when two (or more) separate DynamicFont instances
used the same DynamicFontAtSize instance due to having equal
properties. The first instance updated its data_at_size and emitted
"changed" signal, but the second did not because it considered the
data_at_size to be up to date, even though it has just been updated.
2018-05-08 19:01:15 +07:00
Ruslan Mustakov
5cd12f6649 Perfect FreeType-based outlines for DynamicFonts
- Implement outlines based on FreeType Stroker API. This allows
  artifact-free results, similar to what you will see in Web or any text
  editing tools. Outline is a part of DynamicFont rather than Label,
  because outlines have to be baked into the font's atlas. Font has a
  default outline_color and a Label can specify font_outline_modulator
  that will be multiplied with the Font's color to get the final result.

- draw_char now has to be called twice to fully render a text - first
  with p_outline == true for each character and then with
  p_outline == false for each character.

- Number of draw-calls is reduced from 5 to 2 per outlined character.

- Overall cleanup of DynamicFont code, extracted duplicated code pieces
  into separate methods.

- The change is backward-compatible - Labels still have outline
  properties that work exactly as they worked before.

Closes #16279.
2018-05-08 13:45:24 +07:00
Bojidar Marinov
9b8e8b2220
Bind many more properties to scripts
Notable potentially breaking changes:
- PROPERTY_USAGE_NOEDITOR is now PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_NETWORK, without PROPERTY_USAGE_INTERNAL
- Some properties were renamed, and sometimes even shadowed by new ones
- New getter methods (some virtual) were added
2018-01-12 00:58:14 +02:00
Rémi Verschelde
e4213e66b2 Add missing copyright headers and fix formatting
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
2018-01-05 01:22:23 +01:00
Rémi Verschelde
b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
Juan Linietsky
fc103566e6 Added font oversampling support 2017-12-19 18:48:30 -03:00
Hein-Pieter van Braam
9c63ab99f0 Fix use of unitialized variables
The second in my quest to make Godot 3.x compile with -Werror on GCC7
2017-09-02 01:59:26 +02:00
Rémi Verschelde
b7f4dcbdd1 Merge pull request #10096 from toger5/label_stylebox
fixed Import LineEdit to label + label stylebox
2017-08-31 13:58:52 +02:00
Rémi Verschelde
bd282ff43f Use HTTPS URL for Godot's website in the headers 2017-08-27 14:16:55 +02:00
Ignacio Etcheverry
32dd9a9f66 ClassDB: Provide the enum name of integer constants 2017-08-20 22:07:43 +02:00
Juan Linietsky
bacfe7a557 Fixes to label and code editor to make editing code hopefully fast again. 2017-08-19 10:51:56 -03:00
Rémi Verschelde
18a7315381 Rename localization method to tr again
Partial revert of #10380 based on contributor ~~bullying~~ feedback.
2017-08-18 22:38:38 +02:00
Rémi Verschelde
c72529baf0 Rename XL_MESSAGE aka tr to localize
Also renames `set_message_translation` to `set_message_localization`
for consistency.
2017-08-17 18:10:22 +02:00
toger5
9fdc4874b2 fixed Import LineEdit to label + label stylebox
- added a normal stylebox to label. default is StyleBoxEmpty
 - changed drawing so that it draws correct with styleboxes with margins
 - changed the LineEdit in the import to use a label with the lineEdit
   stylebox
2017-08-17 00:15:11 +02:00
Poommetee Ketson
f471afa4a5 Label: update min size when regenerate wordcache 2017-07-25 17:06:16 +07:00
Poommetee Ketson
85bade0c85 Label: add auto_height 2017-07-21 17:20:19 +07:00
Juan Linietsky
25678b1876 -Renamed GlobalConfig to ProjectSettings, makes more sense.
-Added system for feature overrides, it's pretty cool :)
2017-07-19 17:06:03 -03:00
Juan Linietsky
69a4ea34c4 Change label so they appear vertically alligned on fill 2017-07-17 22:47:00 -03:00
Juan Linietsky
db3b05d289 Reworked translation system
-Label and Button reload translation on the fly
-Resources are loaded and reload depending on locale
2017-06-28 17:01:35 -03:00
Rémi Verschelde
df61dc4b2b Add "Godot Engine contributors" copyright line 2017-04-08 00:11:42 +02:00
Rémi Verschelde
5dbf1809c6 A Whole New World (clang-format edition)
I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?

I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon

A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format

A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
2017-03-05 16:44:50 +01:00
Juan Linietsky
de0045cf1b -renamed globals.h to global_config.cpp (this seems to have caused a few modified files)
-.pck and .zip exporting redone, seems to be working..
2017-02-21 00:06:30 -03:00
Hein-Pieter van Braam
411ee71b4d Rename the _MD macro to D_METHOD
This new name also makes its purpose a little clearer

This is a step towards fixing #56
2017-02-13 12:50:02 +01:00
Hein-Pieter van Braam
0f687f0ccb Remove use of _SCS from ADD_METHOD
This saves typing and is a step towards fixing #56
2017-02-13 10:37:47 +01:00
Rémi Verschelde
f44ee891be Style: Fix statements ending with ';;' 2017-01-16 08:49:52 +01:00
Juan Linietsky
1f8451001d -Translation text will change automatically for in-game buttons, labels, poups when translation is changed.
-Added a NOTIFICATION_TRANSLATION_CHANGED for controls that need custom code
-Sorry, editor will not update automatically because it uses a different translatio method.
2017-01-09 16:43:44 -03:00
Juan Linietsky
e9bb65db81 -All types have editable script now in properties
-Changed clip to a property in Control which can be set by the user
2017-01-09 15:50:59 -03:00
Juan Linietsky
94ee7798ce -removed stop mouse and ignore mouse from control, which were confusing, replaced by mouse filter 2017-01-08 19:54:19 -03:00
Juan Linietsky
118eed485e ObjectTypeDB was renamed to ClassDB. Types are meant to be more generic to Variant.
All usages of "type" to refer to classes were renamed to "class"
ClassDB has been exposed to GDScript.
OBJ_TYPE() macro is now GDCLASS()
2017-01-02 23:03:46 -03:00
Rémi Verschelde
c7bc44d5ad Welcome in 2017, dear changelog reader!
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer
with state-of-the-art rendering techniques tuned to work as low as middle
end handheld devices - without compromising with the possibilities given
for higher end desktop games of course. Great times ahead for the Godot
community and the gamers that will play our games!
2017-01-01 22:03:33 +01:00
volzhs
c0e87f2a24 Fix Label valign position
Fix #7055
2016-11-07 20:15:21 +09:00
ScotFlux
8639d6e806 fix a tiny typo 2016-11-04 01:50:21 +06:00
Zher Huei Lee
af6ef01c69 Added extra spacing support for DynamicFont
Side effect is that label min-size will now take into account
kerning.
2016-08-02 11:05:20 +01:00
Ignacio Etcheverry
78819b6b54 Label: Added get_visible_line_count method 2016-07-18 23:33:06 +02:00
Juan Linietsky
864c0e84de line/col label was changing size with each cursor move, forcing the GUI to resize upwards and costing considerably CPU usage.
It has been changed so it won't resize the UI when modified.
This will make the code editor feel a lot smoother.
2016-07-09 14:56:08 -03:00
Rémi Verschelde
454b210242 Remove unused variables (third pass) + dead code
Fixes various gcc 5.4.0 warnings for -Wunused-variable and -Wunused-but-set-variable
2016-07-07 23:16:21 +02:00
Juan Linietsky
6b7ddce183 Fix last line of label being deleted by line spacing 2016-06-09 22:16:13 -03:00
Juan Linietsky
45d1ffd611 Revert "Fix min size bug of Label" 2016-06-09 21:57:38 -03:00
volzhs
f792f63b03 Fix min size bug of Label
caused by #5030
2016-06-06 00:09:02 +09:00
sanikoyes
5f7b42cb87 fix line_edit&label get min size bug
fix line_edit draw char(x ofs_max)
2016-06-04 18:10:11 +08:00
Juan Linietsky
c195c0df6b -Added configuration warning system for nodes
-Added a new "add" and "instance" buttons for scene tree
-Added a vformat() function to ease translation work
2016-05-17 18:28:44 -03:00
George Marques
5be9ff7b67 Update copyright to 2016 in headers 2016-01-01 11:50:53 -02:00
Zher Huei Lee
564f3e0302 fix minsize-related issues with Label
- fixed end of string adding to Label minsize
 - exposed set_clip_text() and is_clipping_text() to the script side
 - text would now never stick outside its boundaries
 - label min-height is now restricted by max_lines_visible
2015-09-08 10:17:28 +01:00
Zher Huei Lee
a0ba134643 added get_visible_characters() to Label 2015-09-07 22:56:16 +01:00
Zher Huei Lee
7c5cd0c296 reworked Label class
- no longer inherits Range - instead, more sensible
   function names controlling lines visible
 - more accurate vertical alignment
 - percent_visible preserved even after setting new text
2015-09-07 19:56:17 +01:00
Juan Linietsky
95047562d7 Several performance improvements, mainly in loading and instancing scenes and resources.
A general speedup should be apparent, with even more peformance increase when compiling optimized.

WARNING: Tested and it seems to work, but if something breaks, please report.
2015-06-29 00:29:49 -03:00
Juan Linietsky
9f686563d0 fixed latin separation in label, broke it? for cjk
changed non-separatable character detection so latin works properly.
This is probably incorrect. If you speak chinese, korean or japanese,
please help me fix it.  closes #1935
2015-05-19 22:26:25 -03:00
ehriche
ac9263c680 clearified parenthesis of if construct 2015-05-06 01:39:42 +02:00
Gen
0bc5b7a146 Optimize the code. 2015-05-01 18:47:34 +08:00
Gen
c322eddffb fixed a autowrap bug when word is too length. 2015-04-30 12:47:05 +08:00
Gen
57d571a1c4 Update label.cpp 2015-04-30 00:03:19 +08:00
Gen
02d672753f space is only skipped when autowrap. 2015-04-29 23:43:39 +08:00
Gen
ad358562e5 record the number of space before a words. 2015-04-29 16:34:25 +08:00
Gen
1a6012aff5 Update label.cpp 2015-04-28 23:06:34 +08:00
Juan Linietsky
fdaa2920eb Updated copyright year in all headers 2015-04-18 14:38:54 -03:00
Juan Linietsky
acc6f3b285 signed distance field font support 2015-03-21 00:43:33 -03:00
Juan Linietsky
0dbedd18fc SceneMainLoop -> SceneTree
-=-=-=-=-=-=-=-=-=-=-=-=-=-

*YOUR SOURCE MIGHT NOT WORK*
For mor information on fix:
https://github.com/okamstudio/godot/wiki/devel_scene_tree

Other stuff:
-Shower of bullets demo
-Fixes all around
2014-11-05 21:20:42 -03:00
Juan Linietsky
b24fe3dd20 Huge Amount of BugFix
-=-=-=-=-=-=-=-=-=-=-

-Fixes to Collada Exporter (avoid crash situtions)
-Fixed to Collada Importer (Fixed Animation Optimizer Bugs)
-Fixes to RigidBody/RigidBody2D body_enter/body_exit, was buggy
-Fixed ability for RigidBody/RigidBody2D to get contacts reported and bodyin/out in Kinematic mode.
-Added proper trigger support for 3D Physics shapes
-Changed proper value for Z-Offset in OmniLight
-Fixed spot attenuation bug in SpotLight
-Fixed some 3D and 2D spatial soudn bugs related to distance attenuation.
-Fixed bugs in EventPlayer (channels were muted by default)
-Fix in ButtonGroup (get nodes in group are now returned in order)
-Fixed Linear->SRGB Conversion, previous algo sucked, new algo works OK
-Changed SRGB->Linear conversion to use hardware if supported, improves texture quality a lot
-Fixed options for Y-Fov and X-Fov in camera, should be more intuitive.
-Fixed bugs related to viewports and transparency

Huge Amount of New Stuff:
-=-=-=-=-=-=-=-==-=-=-=-

-Ability to manually advance an AnimationPlayer that is inactive (with advance() function)
-More work in WinRT platform
-Added XY normalmap support, imports on this format by default. Reduces normlmap size and enables much nice compression using LATC
-Added Anisotropic filter support to textures, can be specified on import
-Added support for Non-Square, Isometric and Hexagonal tilemaps in TileMap.
-Added Isometric Dungeon demo.
-Added simple hexagonal map demo.
-Added Truck-Town demo. Shows how most types of joints and vehicles are used. Please somebody make a nicer town, this one is too hardcore.
-Added an Object-Picking API to both RigidBody and Area! (and relevant demo)
2014-10-03 00:10:51 -03:00
Theo Hallenius
359ea6088c Made a uniform distribution of characters in Label::set_percent_visible() 2014-05-31 23:50:10 +02:00
Juan Linietsky
0b806ee0fc GODOT IS OPEN SOURCE 2014-02-09 22:10:30 -03:00