| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*  label.h                                                               */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*                         This file is part of:                          */ | 
					
						
							|  |  |  | /*                             GODOT ENGINE                               */ | 
					
						
							|  |  |  | /*                        https://godotengine.org                         */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ | 
					
						
							|  |  |  | /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining  */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the        */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including    */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,    */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to     */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to  */ | 
					
						
							|  |  |  | /* the following conditions:                                              */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be         */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.        */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,        */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY   */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,   */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE      */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                 */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-05 00:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #ifndef LABEL_H
 | 
					
						
							|  |  |  | #define LABEL_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | #include "scene/gui/control.h"
 | 
					
						
							| 
									
										
										
										
											2022-06-17 11:05:18 +03:00
										 |  |  | #include "scene/resources/label_settings.h"
 | 
					
						
							| 
									
										
										
										
											2019-08-10 07:28:17 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | class Label : public Control { | 
					
						
							| 
									
										
										
										
											2017-01-02 23:03:46 -03:00
										 |  |  | 	GDCLASS(Label, Control); | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2021-11-24 20:58:47 -06:00
										 |  |  | 	HorizontalAlignment horizontal_alignment = HORIZONTAL_ALIGNMENT_LEFT; | 
					
						
							|  |  |  | 	VerticalAlignment vertical_alignment = VERTICAL_ALIGNMENT_TOP; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	String text; | 
					
						
							| 
									
										
										
										
											2017-01-09 16:43:44 -03:00
										 |  |  | 	String xl_text; | 
					
						
							| 
									
										
										
										
											2022-06-15 11:01:45 +03:00
										 |  |  | 	TextServer::AutowrapMode autowrap_mode = TextServer::AUTOWRAP_OFF; | 
					
						
							| 
									
										
										
										
											2023-03-23 11:22:37 +02:00
										 |  |  | 	BitField<TextServer::JustificationFlag> jst_flags = TextServer::JUSTIFICATION_WORD_BOUND | TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_SKIP_LAST_LINE | TextServer::JUSTIFICATION_DO_NOT_SKIP_SINGLE_LINE; | 
					
						
							| 
									
										
										
										
											2020-05-12 17:01:17 +02:00
										 |  |  | 	bool clip = false; | 
					
						
							| 
									
										
										
										
											2023-10-01 13:39:13 +03:00
										 |  |  | 	String el_char = U"…"; | 
					
						
							| 
									
										
										
										
											2022-06-15 11:01:45 +03:00
										 |  |  | 	TextServer::OverrunBehavior overrun_behavior = TextServer::OVERRUN_NO_TRIMMING; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Size2 minsize; | 
					
						
							| 
									
										
										
										
											2020-05-12 17:01:17 +02:00
										 |  |  | 	bool uppercase = false; | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	bool lines_dirty = true; | 
					
						
							|  |  |  | 	bool dirty = true; | 
					
						
							| 
									
										
										
										
											2022-01-20 09:30:42 +02:00
										 |  |  | 	bool font_dirty = true; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	RID text_rid; | 
					
						
							|  |  |  | 	Vector<RID> lines_rid; | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	String language; | 
					
						
							|  |  |  | 	TextDirection text_direction = TEXT_DIRECTION_AUTO; | 
					
						
							| 
									
										
										
										
											2022-04-19 13:27:18 +03:00
										 |  |  | 	TextServer::StructuredTextParser st_parser = TextServer::STRUCTURED_TEXT_DEFAULT; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	Array st_args; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-15 11:01:45 +03:00
										 |  |  | 	TextServer::VisibleCharactersBehavior visible_chars_behavior = TextServer::VC_CHARS_BEFORE_SHAPING; | 
					
						
							| 
									
										
										
										
											2020-05-12 17:01:17 +02:00
										 |  |  | 	int visible_chars = -1; | 
					
						
							| 
									
										
										
										
											2022-08-20 20:06:13 +02:00
										 |  |  | 	float visible_ratio = 1.0; | 
					
						
							| 
									
										
										
										
											2020-05-12 17:01:17 +02:00
										 |  |  | 	int lines_skipped = 0; | 
					
						
							|  |  |  | 	int max_lines_visible = -1; | 
					
						
							| 
									
										
										
										
											2023-04-16 14:48:43 +03:00
										 |  |  | 	PackedFloat32Array tab_stops; | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-17 11:05:18 +03:00
										 |  |  | 	Ref<LabelSettings> settings; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-31 15:02:40 +03:00
										 |  |  | 	struct ThemeCache { | 
					
						
							|  |  |  | 		Ref<StyleBox> normal_style; | 
					
						
							|  |  |  | 		Ref<Font> font; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		int font_size = 0; | 
					
						
							|  |  |  | 		int line_spacing = 0; | 
					
						
							|  |  |  | 		Color font_color; | 
					
						
							|  |  |  | 		Color font_shadow_color; | 
					
						
							|  |  |  | 		Point2 font_shadow_offset; | 
					
						
							|  |  |  | 		Color font_outline_color; | 
					
						
							|  |  |  | 		int font_outline_size; | 
					
						
							|  |  |  | 		int font_shadow_outline_size; | 
					
						
							|  |  |  | 	} theme_cache; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-23 10:35:11 +01:00
										 |  |  | 	void _update_visible(); | 
					
						
							|  |  |  | 	void _shape(); | 
					
						
							| 
									
										
										
										
											2022-06-17 11:05:18 +03:00
										 |  |  | 	void _invalidate(); | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2022-08-31 15:02:40 +03:00
										 |  |  | 	void _notification(int p_what); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2023-10-05 23:50:38 -05:00
										 |  |  | #ifndef DISABLE_DEPRECATED
 | 
					
						
							|  |  |  | 	bool _set(const StringName &p_name, const Variant &p_value); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Size2 get_minimum_size() const override; | 
					
						
							| 
									
										
										
										
											2023-07-05 15:41:44 +02:00
										 |  |  | 	virtual Array get_configuration_warnings() const override; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-24 20:58:47 -06:00
										 |  |  | 	void set_horizontal_alignment(HorizontalAlignment p_alignment); | 
					
						
							|  |  |  | 	HorizontalAlignment get_horizontal_alignment() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-24 20:58:47 -06:00
										 |  |  | 	void set_vertical_alignment(VerticalAlignment p_alignment); | 
					
						
							|  |  |  | 	VerticalAlignment get_vertical_alignment() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_text(const String &p_string); | 
					
						
							|  |  |  | 	String get_text() const; | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-17 11:05:18 +03:00
										 |  |  | 	void set_label_settings(const Ref<LabelSettings> &p_settings); | 
					
						
							|  |  |  | 	Ref<LabelSettings> get_label_settings() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	void set_text_direction(TextDirection p_text_direction); | 
					
						
							|  |  |  | 	TextDirection get_text_direction() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_language(const String &p_language); | 
					
						
							|  |  |  | 	String get_language() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-19 13:27:18 +03:00
										 |  |  | 	void set_structured_text_bidi_override(TextServer::StructuredTextParser p_parser); | 
					
						
							|  |  |  | 	TextServer::StructuredTextParser get_structured_text_bidi_override() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_structured_text_bidi_override_options(Array p_args); | 
					
						
							|  |  |  | 	Array get_structured_text_bidi_override_options() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-15 11:01:45 +03:00
										 |  |  | 	void set_autowrap_mode(TextServer::AutowrapMode p_mode); | 
					
						
							|  |  |  | 	TextServer::AutowrapMode get_autowrap_mode() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-23 11:22:37 +02:00
										 |  |  | 	void set_justification_flags(BitField<TextServer::JustificationFlag> p_flags); | 
					
						
							|  |  |  | 	BitField<TextServer::JustificationFlag> get_justification_flags() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_uppercase(bool p_uppercase); | 
					
						
							|  |  |  | 	bool is_uppercase() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-15 11:01:45 +03:00
										 |  |  | 	void set_visible_characters_behavior(TextServer::VisibleCharactersBehavior p_behavior); | 
					
						
							| 
									
										
										
										
											2022-08-20 20:06:13 +02:00
										 |  |  | 	TextServer::VisibleCharactersBehavior get_visible_characters_behavior() const; | 
					
						
							| 
									
										
										
										
											2021-12-05 14:28:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_visible_characters(int p_amount); | 
					
						
							| 
									
										
										
										
											2015-09-07 22:56:16 +01:00
										 |  |  | 	int get_visible_characters() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	int get_total_character_count() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-20 20:06:13 +02:00
										 |  |  | 	void set_visible_ratio(float p_ratio); | 
					
						
							|  |  |  | 	float get_visible_ratio() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_clip_text(bool p_clip); | 
					
						
							|  |  |  | 	bool is_clipping_text() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-16 14:48:43 +03:00
										 |  |  | 	void set_tab_stops(const PackedFloat32Array &p_tab_stops); | 
					
						
							|  |  |  | 	PackedFloat32Array get_tab_stops() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-15 11:01:45 +03:00
										 |  |  | 	void set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior); | 
					
						
							|  |  |  | 	TextServer::OverrunBehavior get_text_overrun_behavior() const; | 
					
						
							| 
									
										
										
										
											2021-07-04 16:43:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-01 13:39:13 +03:00
										 |  |  | 	void set_ellipsis_char(const String &p_char); | 
					
						
							|  |  |  | 	String get_ellipsis_char() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-07 19:56:17 +01:00
										 |  |  | 	void set_lines_skipped(int p_lines); | 
					
						
							|  |  |  | 	int get_lines_skipped() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_max_lines_visible(int p_lines); | 
					
						
							|  |  |  | 	int get_max_lines_visible() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	int get_line_height(int p_line = -1) const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	int get_line_count() const; | 
					
						
							| 
									
										
										
										
											2016-07-18 23:31:06 +02:00
										 |  |  | 	int get_visible_line_count() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-30 14:30:22 +02:00
										 |  |  | 	Rect2 get_character_bounds(int p_pos) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Label(const String &p_text = String()); | 
					
						
							|  |  |  | 	~Label(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-23 23:41:51 +02:00
										 |  |  | #endif // LABEL_H
 |