diff options
296 files changed, 4298 insertions, 10234 deletions
diff --git a/AUTHORS.md b/AUTHORS.md index 189985309f..728ba5f6ee 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -31,6 +31,7 @@ name is available.      Carl Olsson (not-surt)      Dana Olson (adolson)      Daniel J. Ramirez (djrm) +    Emmanuel Leblond (touilleMan)      Fabio Alessandrelli (Faless)      Ferenc Arn (tagcup)      Franklin Sobrinho (TheHX) @@ -48,6 +49,7 @@ name is available.      Julian Murgia (StraToN)      Kostadin Damyanov (Max-Might)      L. Krause (eska014) +    Marc Gilleron (Zylann)      Marcelo Fernandez (marcelofg55)      Mariano Javier Suligoy (MarianoGnu)      Mario Schlack (hurikhan) @@ -59,7 +61,8 @@ name is available.      Pawel Kowal (pkowal1982)      Pedro J. Estébanez (RandomShaper)      Ralf Hölzemer (rollenrolm) -    RayKoopa +    Ramesh Ravone (RameshRavone) +    Ray Koopa (RayKoopa)      Rémi Verschelde (akien-mga)      SaracenOne      Thomas Herzog (karroffel) diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp index c327f7ca44..7e061359fc 100644 --- a/core/math/a_star.cpp +++ b/core/math/a_star.cpp @@ -86,7 +86,7 @@ void AStar::remove_point(int p_id) {  	points.erase(p_id);  } -void AStar::connect_points(int p_id, int p_with_id) { +void AStar::connect_points(int p_id, int p_with_id, bool bidirectional) {  	ERR_FAIL_COND(!points.has(p_id));  	ERR_FAIL_COND(!points.has(p_with_id)); @@ -95,7 +95,9 @@ void AStar::connect_points(int p_id, int p_with_id) {  	Point *a = points[p_id];  	Point *b = points[p_with_id];  	a->neighbours.push_back(b); -	b->neighbours.push_back(a); + +	if (bidirectional) +		b->neighbours.push_back(a);  	Segment s(p_id, p_with_id);  	if (s.from == p_id) { @@ -401,7 +403,7 @@ void AStar::_bind_methods() {  	ClassDB::bind_method(D_METHOD("get_point_weight_scale", "id"), &AStar::get_point_weight_scale);  	ClassDB::bind_method(D_METHOD("remove_point", "id"), &AStar::remove_point); -	ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id"), &AStar::connect_points); +	ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id"), &AStar::connect_points, DEFVAL(true));  	ClassDB::bind_method(D_METHOD("disconnect_points", "id", "to_id"), &AStar::disconnect_points);  	ClassDB::bind_method(D_METHOD("are_points_connected", "id", "to_id"), &AStar::are_points_connected); diff --git a/core/math/a_star.h b/core/math/a_star.h index b9c8833386..34a5358344 100644 --- a/core/math/a_star.h +++ b/core/math/a_star.h @@ -105,7 +105,7 @@ public:  	real_t get_point_weight_scale(int p_id) const;  	void remove_point(int p_id); -	void connect_points(int p_id, int p_with_id); +	void connect_points(int p_id, int p_with_id, bool bidirectional = true);  	void disconnect_points(int p_id, int p_with_id);  	bool are_points_connected(int p_id, int p_with_id) const; diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 8bc9f085ad..df81d2111e 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -1460,7 +1460,6 @@ void register_variant_methods() {  	ADDFUNC1(VECTOR3, BASIS, Vector3, outer, VECTOR3, "b", varray());  	ADDFUNC0(VECTOR3, BASIS, Vector3, to_diagonal_matrix, varray());  	ADDFUNC0(VECTOR3, VECTOR3, Vector3, abs, varray()); -	ADDFUNC0(VECTOR3, VECTOR3, Vector3, abs, varray());  	ADDFUNC0(VECTOR3, VECTOR3, Vector3, floor, varray());  	ADDFUNC0(VECTOR3, VECTOR3, Vector3, ceil, varray());  	ADDFUNC1(VECTOR3, REAL, Vector3, distance_to, VECTOR3, "b", varray()); diff --git a/editor/animation_editor.cpp b/editor/animation_editor.cpp index 1e6562fcf2..e4ae1993ab 100644 --- a/editor/animation_editor.cpp +++ b/editor/animation_editor.cpp @@ -1035,7 +1035,7 @@ void AnimationKeyEditor::_track_pos_draw() {  		//draw position  		int pixel = (timeline_pos - h_scroll->get_value()) * zoom_scale;  		pixel += name_limit; -		track_pos->draw_line(ofs + Point2(pixel, 0), ofs + Point2(pixel, size.height), get_color("animation_editor_track_pos", "Editor")); +		track_pos->draw_line(ofs + Point2(pixel, 0), ofs + Point2(pixel, size.height), get_color("highlight_color", "Editor"));  	}  } @@ -1089,12 +1089,12 @@ void AnimationKeyEditor::_track_editor_draw() {  	int sep = get_constant("vseparation", "Tree");  	int hsep = get_constant("hseparation", "Tree");  	Color color = get_color("font_color", "Tree"); -	Color sepcolor = get_color("guide_color", "Editor"); -	Color timecolor = get_color("animation_editor_time", "Editor"); +	Color sepcolor = get_color("light_color_1", "Editor"); +	Color timecolor = get_color("dark_color_2", "Editor");  	Color hover_color = Color(1, 1, 1, 0.05);  	Color select_color = Color(1, 1, 1, 0.1);  	Color invalid_path_color = Color(1, 0.6, 0.4, 0.5); -	Color track_select_color = Color::html("ffbd8e8e"); +	Color track_select_color = get_color("highlight_color", "Editor");  	Ref<Texture> remove_icon = get_icon("Remove", "EditorIcons");  	Ref<Texture> move_up_icon = get_icon("MoveUp", "EditorIcons"); @@ -1154,9 +1154,8 @@ void AnimationKeyEditor::_track_editor_draw() {  	int settings_limit = size.width - right_separator_ofs;  	int name_limit = settings_limit * name_column_ratio; -	Color line_color = get_color("animation_editor_line", "Editor"); -	te->draw_line(ofs + Point2(name_limit, 0), ofs + Point2(name_limit, size.height), line_color); -	te->draw_line(ofs + Point2(settings_limit, 0), ofs + Point2(settings_limit, size.height), line_color); +	te->draw_line(ofs + Point2(name_limit, 0), ofs + Point2(name_limit, size.height), color); +	te->draw_line(ofs + Point2(settings_limit, 0), ofs + Point2(settings_limit, size.height), color);  	te->draw_texture(hsize_icon, ofs + Point2(name_limit - hsize_icon->get_width() - hsep, (h - hsize_icon->get_height()) / 2));  	te->draw_line(ofs + Point2(0, h), ofs + Point2(size.width, h), color); @@ -1179,11 +1178,7 @@ void AnimationKeyEditor::_track_editor_draw() {  		int end_px = (l - h_scroll->get_value()) * scale;  		int begin_px = -h_scroll->get_value() * scale; -		Color notimecol; -		notimecol.r = timecolor.gray(); -		notimecol.g = notimecol.r; -		notimecol.b = notimecol.r; -		notimecol.a = timecolor.a; +		Color notimecol = get_color("light_color_1", "Editor");  		{ @@ -1483,7 +1478,9 @@ void AnimationKeyEditor::_track_editor_draw() {  	switch (click.click) {  		case ClickOver::CLICK_SELECT_KEYS: { -			te->draw_rect(Rect2(click.at, click.to - click.at), get_color("animation_editor_selection_rect", "Editor")); +			Color box_color = get_color("highlight_color", "Editor"); +			box_color.a = 0.35; +			te->draw_rect(Rect2(click.at, click.to - click.at), box_color);  		} break;  		case ClickOver::CLICK_MOVE_KEYS: { @@ -2905,6 +2902,8 @@ void AnimationKeyEditor::_notification(int p_what) {  			key_editor->edit(key_edit);  			zoomicon->set_texture(get_icon("Zoom", "EditorIcons")); +			zoomicon->set_custom_minimum_size(Size2(24 * EDSCALE, 0)); +			zoomicon->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);  			menu_add_track->set_icon(get_icon("AddTrack", "EditorIcons"));  			menu_add_track->get_popup()->add_icon_item(get_icon("KeyValue", "EditorIcons"), "Add Normal Track", ADD_TRACK_MENU_ADD_VALUE_TRACK); @@ -3767,7 +3766,6 @@ AnimationKeyEditor::AnimationKeyEditor() {  	//add_child(menu);  	zoomicon = memnew(TextureRect); -	zoomicon->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);  	hb->add_child(zoomicon);  	zoomicon->set_tooltip(TTR("Animation zoom.")); @@ -3943,6 +3941,7 @@ AnimationKeyEditor::AnimationKeyEditor() {  	v_scroll->set_value(0);  	key_editor_tab = memnew(TabContainer); +	key_editor_tab->set_tab_align(TabContainer::ALIGN_LEFT);  	hb->add_child(key_editor_tab);  	key_editor_tab->set_custom_minimum_size(Size2(200, 0)); diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index e623d00cc9..9762bd2000 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -417,6 +417,10 @@ void ConnectionsDock::_notification(int p_what) {  		//RID ci = get_canvas_item();  		//get_stylebox("panel","PopupMenu")->draw(ci,Rect2(Point2(),get_size()));  	} + +	if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { +		update_tree(); +	}  }  void ConnectionsDock::_close() { diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index 7c9dae1e3f..dc28fc9020 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -622,7 +622,6 @@ CreateDialog::CreateDialog() {  	search_box->set_h_size_flags(SIZE_EXPAND_FILL);  	search_hb->add_child(search_box);  	favorite = memnew(Button); -	favorite->set_flat(true);  	favorite->set_toggle_mode(true);  	search_hb->add_child(favorite);  	favorite->connect("pressed", this, "_favorite_toggled"); diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index 1129a7d633..6ef32a6afd 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -45,10 +45,6 @@ void EditorAudioBus::_notification(int p_what) {  		vu_r->set_progress_texture(get_icon("BusVuFull", "EditorIcons"));  		scale->set_texture(get_icon("BusVuDb", "EditorIcons")); -		solo->set_icon(get_icon("AudioBusSolo", "EditorIcons")); -		mute->set_icon(get_icon("AudioBusMute", "EditorIcons")); -		bypass->set_icon(get_icon("AudioBusBypass", "EditorIcons")); -  		disabled_vu = get_icon("BusVuFrozen", "EditorIcons");  		prev_active = true; @@ -631,23 +627,23 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {  	vb->add_child(hbc);  	hbc->add_spacer();  	solo = memnew(ToolButton); -	solo->set_tooltip(TTR("Toggle Solo")); +	solo->set_text("S");  	solo->set_toggle_mode(true); -	// solo->set_modulate(Color(0.8, 1.2, 0.8)); +	solo->set_modulate(Color(0.8, 1.2, 0.8));  	solo->set_focus_mode(FOCUS_NONE);  	solo->connect("pressed", this, "_solo_toggled");  	hbc->add_child(solo);  	mute = memnew(ToolButton); -	mute->connect("pressed", this, "_mute_toggled"); +	mute->set_text("M");  	mute->set_toggle_mode(true); -	// mute->set_modulate(Color(1.2, 0.8, 0.8)); +	mute->set_modulate(Color(1.2, 0.8, 0.8));  	mute->set_focus_mode(FOCUS_NONE); -	mute->set_tooltip(TTR("Toggle Mute")); +	mute->connect("pressed", this, "_mute_toggled");  	hbc->add_child(mute);  	bypass = memnew(ToolButton); -	bypass->set_tooltip(TTR("Toggle Bypass")); +	bypass->set_text("B");  	bypass->set_toggle_mode(true); -	// bypass->set_modulate(Color(1.1, 1.1, 0.8)); +	bypass->set_modulate(Color(1.1, 1.1, 0.8));  	bypass->set_focus_mode(FOCUS_NONE);  	bypass->connect("pressed", this, "_bypass_toggled");  	hbc->add_child(bypass); @@ -767,7 +763,7 @@ void EditorAudioBuses::_update_buses() {  		EditorAudioBus *audio_bus = memnew(EditorAudioBus(this));  		if (i == 0) { -			audio_bus->set_self_modulate(Color(0.7, 0.7, 0.7)); +			audio_bus->set_self_modulate(Color(1, 0.9, 0.9));  		}  		bus_hb->add_child(audio_bus);  		audio_bus->connect("delete_request", this, "_delete_bus", varray(audio_bus), CONNECT_DEFERRED); diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp index c15eac67fb..5d13c7c254 100644 --- a/editor/editor_log.cpp +++ b/editor/editor_log.cpp @@ -87,6 +87,9 @@ void EditorLog::_notification(int p_what) {  		log->add_color_override("default_color", get_color("font_color", "Tree"));  		//button->set_icon(get_icon("Console","EditorIcons"));  	} +	if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { +		_override_logger_styles(); +	}  	/*if (p_what==NOTIFICATION_DRAW) { diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 42de85ec00..4a4b720e88 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -348,11 +348,17 @@ void EditorNode::_notification(int p_what) {  	if (p_what == MainLoop::NOTIFICATION_WM_QUIT_REQUEST) {  		_menu_option_confirm(FILE_QUIT, false); -	}; +	}  	if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {  		scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/always_show_close_button_in_scene_tabs", false)) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));  		property_editor->set_enable_capitalize_paths(bool(EDITOR_DEF("interface/capitalize_properties", true))); +		Ref<Theme> theme = create_editor_theme(); +		theme_base->set_theme(theme); +		gui_base->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles")); +		play_button_panel->add_style_override("panel", gui_base->get_stylebox("PlayButtonPanel", "EditorStyles")); +		scene_root_parent->add_style_override("panel", gui_base->get_stylebox("Content", "EditorStyles")); +		bottom_panel->add_style_override("panel", gui_base->get_stylebox("Content", "EditorStyles"));  	}  } @@ -2722,7 +2728,9 @@ void EditorNode::add_editor_plugin(EditorPlugin *p_editor) {  		ToolButton *tb = memnew(ToolButton);  		tb->set_toggle_mode(true);  		tb->connect("pressed", singleton, "_editor_select", varray(singleton->main_editor_buttons.size())); -		tb->set_icon(singleton->gui_base->get_icon(p_editor->get_name(), "EditorIcons")); +		tb->set_text(p_editor->get_name()); +		tb->set_icon(p_editor->get_base_control()->get_icon(p_editor->get_name(), "EditorIcons")); +		tb->set_name(p_editor->get_name());  		singleton->main_editor_buttons.push_back(tb);  		singleton->main_editor_button_vb->add_child(tb);  		singleton->editor_table.push_back(p_editor); @@ -4725,6 +4733,23 @@ void EditorNode::_dim_timeout() {  	}  } +void EditorNode::_check_gui_base_size() { +	print_line(itos(int(gui_base->get_size().width))); +	if (gui_base->get_size().width > 1200 * EDSCALE) { +		for (int i = 0; i < singleton->main_editor_button_vb->get_child_count(); i++) { +			ToolButton *btn = singleton->main_editor_button_vb->get_child(i)->cast_to<ToolButton>(); +			if (btn == singleton->distraction_free) continue; +			btn->set_text(btn->get_name()); +		} +	} else { +		for (int i = 0; i < singleton->main_editor_button_vb->get_child_count(); i++) { +			ToolButton *btn = singleton->main_editor_button_vb->get_child(i)->cast_to<ToolButton>(); +			if (btn == singleton->distraction_free) continue; +			btn->set_text(""); +		} +	} +} +  void EditorNode::open_export_template_manager() {  	export_template_manager->popup_manager(); @@ -4807,6 +4832,7 @@ void EditorNode::_bind_methods() {  	ClassDB::bind_method(D_METHOD("_open_imported"), &EditorNode::_open_imported);  	ClassDB::bind_method(D_METHOD("_inherit_imported"), &EditorNode::_inherit_imported);  	ClassDB::bind_method(D_METHOD("_dim_timeout"), &EditorNode::_dim_timeout); +	ClassDB::bind_method(D_METHOD("_check_gui_base_size"), &EditorNode::_check_gui_base_size);  	ADD_SIGNAL(MethodInfo("play_pressed"));  	ADD_SIGNAL(MethodInfo("pause_pressed")); @@ -4940,17 +4966,19 @@ EditorNode::EditorNode() {  	ClassDB::set_class_enabled("CollisionShape2D", true);  	ClassDB::set_class_enabled("CollisionPolygon2D", true); -	Control *theme_base = memnew(Control); +	theme_base = memnew(Control);  	add_child(theme_base);  	theme_base->set_area_as_parent_rect();  	gui_base = memnew(Panel);  	theme_base->add_child(gui_base);  	gui_base->set_area_as_parent_rect(); +	gui_base->connect("item_rect_changed", this, "_check_gui_base_size");  	Ref<Theme> theme = create_editor_theme();  	theme_base->set_theme(theme);  	gui_base->set_theme(create_custom_theme()); +	gui_base->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles"));  	resource_preview = memnew(EditorResourcePreview);  	add_child(resource_preview); @@ -4965,6 +4993,7 @@ EditorNode::EditorNode() {  	main_vbox = memnew(VBoxContainer);  	gui_base->add_child(main_vbox);  	main_vbox->set_area_as_parent_rect(8); +	main_vbox->set_margin(MARGIN_TOP, 5);  #if 0  	PanelContainer *top_dark_panel = memnew( PanelContainer ); @@ -5101,7 +5130,7 @@ EditorNode::EditorNode() {  		dock_slot[i]->set_v_size_flags(Control::SIZE_EXPAND_FILL);  		dock_slot[i]->set_popup(dock_select_popoup);  		dock_slot[i]->connect("pre_popup_pressed", this, "_dock_pre_popup", varray(i)); -		//dock_slot[i]->set_tab_align(TabContainer::ALIGN_LEFT); +		dock_slot[i]->set_tab_align(TabContainer::ALIGN_LEFT);  	}  	dock_drag_timer = memnew(Timer); @@ -5132,16 +5161,14 @@ EditorNode::EditorNode() {  	scene_tabs->connect("right_button_pressed", this, "_scene_tab_script_edited");  	scene_tabs->connect("tab_close", this, "_scene_tab_closed"); -	// MarginContainer *st_mc = memnew( MarginContainer ); -	// st_mc->add_child(scene_tabs);  	srt->add_child(scene_tabs);  	scene_root_parent = memnew(PanelContainer);  	scene_root_parent->set_custom_minimum_size(Size2(0, 80) * EDSCALE); -	scene_root_parent->add_style_override("panel", gui_base->get_stylebox("EditorPanel", "EditorStyles")); +	scene_root_parent->add_style_override("panel", gui_base->get_stylebox("Content", "EditorStyles")); -	// Ref<StyleBox> sp = scene_root_parent->get_stylebox("panel_full","PanelContainer"); -	// scene_root_parent->add_style_override("panel",sp); +	//Ref<StyleBox> sp = scene_root_parent->get_stylebox("panel","TabContainer"); +	//scene_root_parent->add_style_override("panel",sp);  	/*scene_root_parent->set_anchor( MARGIN_RIGHT, Control::ANCHOR_END );  	scene_root_parent->set_anchor( MARGIN_BOTTOM, Control::ANCHOR_END ); @@ -5171,7 +5198,7 @@ EditorNode::EditorNode() {  	scene_root_parent->add_child(viewport);  	PanelContainer *top_region = memnew(PanelContainer); -	top_region->add_style_override("panel", memnew(StyleBoxEmpty)); +	top_region->add_style_override("panel", gui_base->get_stylebox("MenuPanel", "EditorStyles"));  	HBoxContainer *left_menu_hb = memnew(HBoxContainer);  	top_region->add_child(left_menu_hb);  	menu_hb->add_child(top_region); @@ -5182,6 +5209,7 @@ EditorNode::EditorNode() {  	file_menu->set_text(TTR("Scene"));  	//file_menu->set_icon(gui_base->get_icon("Save","EditorIcons"));  	left_menu_hb->add_child(file_menu); +	file_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));  	prev_scene = memnew(ToolButton);  	prev_scene->set_icon(gui_base->get_icon("PrevScene", "EditorIcons")); @@ -5254,7 +5282,6 @@ EditorNode::EditorNode() {  	}  	PanelContainer *editor_region = memnew(PanelContainer); -	editor_region->add_style_override("panel", memnew(StyleBoxEmpty));  	main_editor_button_vb = memnew(HBoxContainer);  	editor_region->add_child(main_editor_button_vb);  	menu_hb->add_child(editor_region); @@ -5298,6 +5325,7 @@ EditorNode::EditorNode() {  	tool_menu = memnew(MenuButton);  	tool_menu->set_tooltip(TTR("Miscellaneous project or scene-wide tools."));  	tool_menu->set_text(TTR("Tools")); +	tool_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));  	//tool_menu->set_icon(gui_base->get_icon("Save","EditorIcons"));  	left_menu_hb->add_child(tool_menu); @@ -5311,6 +5339,7 @@ EditorNode::EditorNode() {  	export_button->set_text(TTR("Export"));  	export_button->connect("pressed", this, "_menu_option", varray(FILE_EXPORT_PROJECT));  	export_button->set_focus_mode(Control::FOCUS_NONE); +	export_button->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));  	left_menu_hb->add_child(export_button);  	menu_hb->add_spacer(); @@ -5321,20 +5350,18 @@ EditorNode::EditorNode() {  	//s1->set_size(Point2(10,15));  	play_cc = memnew(CenterContainer); -	// play_cc->add_style_override("bg",gui_base->get_stylebox("panel","PanelContainer")); -  	play_cc->set_mouse_filter(Control::MOUSE_FILTER_IGNORE);  	gui_base->add_child(play_cc);  	play_cc->set_area_as_parent_rect();  	play_cc->set_anchor_and_margin(MARGIN_BOTTOM, Control::ANCHOR_BEGIN, 10);  	play_cc->set_margin(MARGIN_TOP, 5); -	top_region = memnew(PanelContainer); -	top_region->add_style_override("panel", gui_base->get_stylebox("panel", "ButtonGroup")); -	play_cc->add_child(top_region); +	play_button_panel = memnew(PanelContainer); +	play_button_panel->add_style_override("panel", gui_base->get_stylebox("PlayButtonPanel", "EditorStyles")); +	play_cc->add_child(play_button_panel);  	HBoxContainer *play_hb = memnew(HBoxContainer); -	top_region->add_child(play_hb); +	play_button_panel->add_child(play_hb);  	play_button = memnew(ToolButton);  	play_hb->add_child(play_button); @@ -5450,9 +5477,6 @@ EditorNode::EditorNode() {  	}  	PanelContainer *vu_cont = memnew(PanelContainer); -	vu_cont->add_style_override("panel", memnew(StyleBoxEmpty)); - -	// CenterContainer *vu_cont = memnew( CenterContainer );  	menu_hb->add_child(vu_cont);  	audio_vu = memnew(TextureProgress); @@ -5473,13 +5497,13 @@ EditorNode::EditorNode() {  	}  	top_region = memnew(PanelContainer); -	top_region->add_style_override("panel", memnew(StyleBoxEmpty));  	HBoxContainer *right_menu_hb = memnew(HBoxContainer);  	top_region->add_child(right_menu_hb);  	menu_hb->add_child(top_region);  	settings_menu = memnew(MenuButton);  	settings_menu->set_text(TTR("Settings")); +	settings_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));  	//settings_menu->set_anchor(MARGIN_RIGHT,ANCHOR_END);  	right_menu_hb->add_child(settings_menu);  	p = settings_menu->get_popup(); @@ -5639,7 +5663,7 @@ EditorNode::EditorNode() {  	search_button = memnew(ToolButton);  	search_button->set_toggle_mode(true);  	search_button->set_pressed(false); -	search_button->set_icon(gui_base->get_icon("Search", "EditorIcons")); +	search_button->set_icon(gui_base->get_icon("Zoom", "EditorIcons"));  	prop_editor_hb->add_child(search_button);  	search_button->connect("toggled", this, "_toggle_search_bar"); @@ -5729,7 +5753,7 @@ EditorNode::EditorNode() {  	_update_layouts_menu();  	bottom_panel = memnew(PanelContainer); -	bottom_panel->add_style_override("panel", gui_base->get_stylebox("EditorPanel", "EditorStyles")); +	bottom_panel->add_style_override("panel", gui_base->get_stylebox("Content", "EditorStyles"));  	center_split->add_child(bottom_panel);  	center_split->set_dragger_visibility(SplitContainer::DRAGGER_HIDDEN); diff --git a/editor/editor_node.h b/editor/editor_node.h index 92df04f423..5215809da3 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -205,8 +205,10 @@ private:  	//Ref<ResourceImportMetadata> scene_import_metadata;  	PanelContainer *scene_root_parent; +	Control *theme_base;  	Control *gui_base;  	VBoxContainer *main_vbox; +	PanelContainer *play_button_panel;  	//split @@ -609,6 +611,7 @@ private:  	void _start_dimming(bool p_dimming);  	void _dim_timeout(); +	void _check_gui_base_size();  protected:  	void _notification(int p_what); diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 0a46acddb2..cd8e68bc5e 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -572,7 +572,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {  	set("editors/grid_map/pick_distance", 5000.0); -	set("editors/3d/grid_color", Color(1, 1, 1, 0.2)); +	set("editors/3d/grid_color", Color(0, 1, 0, 0.2));  	hints["editors/3d/grid_color"] = PropertyInfo(Variant::COLOR, "editors/3d/grid_color", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);  	set("editors/3d/default_fov", 45.0); @@ -606,6 +606,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {  	set("editors/poly_editor/point_grab_radius", 8); +	set("editors/theme/base_color", Color(0.3, 0.3, 0.3, 1)); +	hints["editors/theme/base_color"] = PropertyInfo(Variant::COLOR, "editors/theme/base_color", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); +	set("editors/theme/contrast", 0.2); +	hints["editors/theme/contrast"] = PropertyInfo(Variant::REAL, "editors/theme/contrast", PROPERTY_HINT_RANGE, "0.01, 1, 0.01"); +  	set("run/window_placement/rect", 0);  	hints["run/window_placement/rect"] = PropertyInfo(Variant::INT, "run/window_placement/rect", PROPERTY_HINT_ENUM, "Default,Centered,Custom Position,Force Maximized,Force Full Screen");  	String screen_hints = TTR("Default (Same as Editor)"); diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 1457f6b421..c7a41e4441 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -35,99 +35,383 @@  #include "editor_scale.h"  #include "editor_settings.h" +static Ref<StyleBoxTexture> make_stylebox(Ref<Texture> texture, float p_left, float p_top, float p_right, float p_botton, float p_margin_left = -1, float p_margin_top = -1, float p_margin_right = -1, float p_margin_botton = -1, bool p_draw_center = true) { +	Ref<StyleBoxTexture> style(memnew(StyleBoxTexture)); +	style->set_texture(texture); +	style->set_margin_size(MARGIN_LEFT, p_left * EDSCALE); +	style->set_margin_size(MARGIN_RIGHT, p_right * EDSCALE); +	style->set_margin_size(MARGIN_BOTTOM, p_botton * EDSCALE); +	style->set_margin_size(MARGIN_TOP, p_top * EDSCALE); +	style->set_default_margin(MARGIN_LEFT, p_margin_left * EDSCALE); +	style->set_default_margin(MARGIN_RIGHT, p_margin_right * EDSCALE); +	style->set_default_margin(MARGIN_BOTTOM, p_margin_botton * EDSCALE); +	style->set_default_margin(MARGIN_TOP, p_margin_top * EDSCALE); +	style->set_draw_center(p_draw_center); +	return style; +} + +static Ref<StyleBoxEmpty> make_empty_stylebox(float p_margin_left = -1, float p_margin_top = -1, float p_margin_right = -1, float p_margin_bottom = -1) { +	Ref<StyleBoxEmpty> style(memnew(StyleBoxEmpty)); +	style->set_default_margin(MARGIN_LEFT, p_margin_left * EDSCALE); +	style->set_default_margin(MARGIN_RIGHT, p_margin_right * EDSCALE); +	style->set_default_margin(MARGIN_BOTTOM, p_margin_bottom * EDSCALE); +	style->set_default_margin(MARGIN_TOP, p_margin_top * EDSCALE); +	return style; +} + +static Ref<StyleBoxFlat> make_flat_stylebox(Color color, float p_margin_left = -1, float p_margin_top = -1, float p_margin_right = -1, float p_margin_bottom = -1) { +	Ref<StyleBoxFlat> style(memnew(StyleBoxFlat)); +	style->set_bg_color(color); +	style->set_default_margin(MARGIN_LEFT, p_margin_left * EDSCALE); +	style->set_default_margin(MARGIN_RIGHT, p_margin_right * EDSCALE); +	style->set_default_margin(MARGIN_BOTTOM, p_margin_bottom * EDSCALE); +	style->set_default_margin(MARGIN_TOP, p_margin_top * EDSCALE); +	return style; +} + +static Ref<StyleBoxFlat> change_border_color(Ref<StyleBoxFlat> p_style, Color p_color) { +	Ref<StyleBoxFlat> style = p_style->duplicate(); +	style->set_light_color(p_color); +	style->set_dark_color(p_color); +	return style; +} + +static Ref<StyleBoxFlat> add_additional_border(Ref<StyleBoxFlat> p_style, int p_left, int p_top, int p_right, int p_bottom) { +	Ref<StyleBoxFlat> style = p_style->duplicate(); +	style->_set_additional_border_size(MARGIN_LEFT, p_left * EDSCALE); +	style->_set_additional_border_size(MARGIN_RIGHT, p_right * EDSCALE); +	style->_set_additional_border_size(MARGIN_TOP, p_top * EDSCALE); +	style->_set_additional_border_size(MARGIN_BOTTOM, p_bottom * EDSCALE); +	return style; +} + +#define HIGHLIGHT_COLOR_LIGHT highlight_color.linear_interpolate(Color(1, 1, 1, 1), 0.3) +#define HIGHLIGHT_COLOR_DARK highlight_color.linear_interpolate(Color(0, 0, 0, 1), 0.5) +  Ref<Theme> create_editor_theme() {  	Ref<Theme> theme = Ref<Theme>(memnew(Theme));  	editor_register_fonts(theme);  	editor_register_icons(theme); -	Ref<StyleBoxTexture> focus_sbt = memnew(StyleBoxTexture); -	focus_sbt->set_texture(theme->get_icon("EditorFocus", "EditorIcons")); -	for (int i = 0; i < 4; i++) { -		focus_sbt->set_margin_size(Margin(i), 16 * EDSCALE); -		focus_sbt->set_default_margin(Margin(i), 16 * EDSCALE); -	} +	// Define colors +	Color highlight_color = EDITOR_DEF("editors/theme/highlight_color", Color::html("#6ca9f3")); +	Color base_color = EDITOR_DEF("editors/theme/base_color", Color::html("#2e3742")); +	float contrast = EDITOR_DEF("editors/theme/contrast", 0.2); + +	Color dark_color_1 = base_color.linear_interpolate(Color(0, 0, 0, 1), contrast); +	Color dark_color_2 = base_color.linear_interpolate(Color(0, 0, 0, 1), contrast * 2); +	Color dark_color_3 = base_color.linear_interpolate(Color(0, 0, 0, 1), contrast * 3); + +	Color light_color_1 = base_color.linear_interpolate(Color(1, 1, 1, 1), contrast); +	Color light_color_2 = base_color.linear_interpolate(Color(1, 1, 1, 1), contrast * 2); + +	theme->set_color("highlight_color", "Editor", highlight_color); +	theme->set_color("base_color", "Editor", base_color); +	theme->set_color("dark_color_1", "Editor", dark_color_1); +	theme->set_color("dark_color_2", "Editor", dark_color_2); +	theme->set_color("dark_color_3", "Editor", dark_color_3); +	theme->set_color("light_color_1", "Editor", light_color_1); +	theme->set_color("light_color_2", "Editor", light_color_2); + +	// Checkbox icon +	theme->set_icon("checked", "CheckBox", theme->get_icon("Checked", "EditorIcons")); +	theme->set_icon("unchecked", "CheckBox", theme->get_icon("Unchecked", "EditorIcons")); +	theme->set_icon("checked", "PopupMenu", theme->get_icon("Checked", "EditorIcons")); +	theme->set_icon("unchecked", "PopupMenu", theme->get_icon("Unchecked", "EditorIcons")); + +	// Editor background +	Ref<StyleBoxFlat> style_background = make_flat_stylebox(dark_color_2, 4, 4, 4, 4); +	theme->set_stylebox("Background", "EditorStyles", style_background); + +	// Focus +	Ref<StyleBoxFlat> focus_sbt = make_flat_stylebox(light_color_1, 4, 4, 4, 4);  	focus_sbt->set_draw_center(false); -	theme->set_stylebox("EditorFocus", "EditorStyles", focus_sbt); - -	Ref<StyleBoxFlat> style_panel(memnew(StyleBoxFlat)); -	style_panel->set_bg_color(Color::html("#36424e")); -	style_panel->set_default_margin(MARGIN_LEFT, 1); -	style_panel->set_default_margin(MARGIN_RIGHT, 1); -	style_panel->set_default_margin(MARGIN_BOTTOM, 1); -	style_panel->set_default_margin(MARGIN_TOP, 4 * EDSCALE); +	focus_sbt->set_border_size(1 * EDSCALE); +	focus_sbt = change_border_color(focus_sbt, light_color_2); +	theme->set_stylebox("Focus", "EditorStyles", focus_sbt); + +	// Menu +	Ref<StyleBoxEmpty> style_menu = make_empty_stylebox(4, 4, 4, 4); +	theme->set_stylebox("panel", "PanelContainer", style_menu); +	theme->set_stylebox("MenuPanel", "EditorStyles", style_menu); + +	// Play button group +	theme->set_stylebox("PlayButtonPanel", "EditorStyles", make_stylebox(theme->get_icon("PlayButtonGroup", "EditorIcons"), 16, 16, 16, 16, 8, 4, 8, 4)); + +	Ref<StyleBoxFlat> style_menu_hover_border = make_flat_stylebox(highlight_color, 4, 4, 4, 4); +	Ref<StyleBoxFlat> style_menu_hover_bg = make_flat_stylebox(dark_color_2, 4, 4, 4, 4); + +	style_menu_hover_border->set_draw_center(false); +	style_menu_hover_border->_set_additional_border_size(MARGIN_BOTTOM, 1 * EDSCALE); +	theme->set_stylebox("normal", "MenuButton", style_menu); +	theme->set_stylebox("hover", "MenuButton", style_menu); +	theme->set_stylebox("pressed", "MenuButton", style_menu); +	theme->set_stylebox("focus", "MenuButton", style_menu); +	theme->set_stylebox("disabled", "MenuButton", style_menu); + +	theme->set_stylebox("normal", "PopupMenu", style_menu); +	theme->set_stylebox("hover", "PopupMenu", style_menu_hover_bg); +	theme->set_stylebox("pressed", "PopupMenu", style_menu); +	theme->set_stylebox("focus", "PopupMenu", style_menu); +	theme->set_stylebox("disabled", "PopupMenu", style_menu); + +	theme->set_stylebox("normal", "ToolButton", style_menu); +	theme->set_stylebox("hover", "ToolButton", style_menu); +	theme->set_stylebox("pressed", "ToolButton", style_menu); +	theme->set_stylebox("focus", "ToolButton", style_menu); +	theme->set_stylebox("disabled", "ToolButton", style_menu); + +	theme->set_color("font_color_hover", "MenuButton", HIGHLIGHT_COLOR_LIGHT); +	theme->set_color("font_color_hover", "ToolButton", HIGHLIGHT_COLOR_LIGHT); +	theme->set_color("font_color_pressed", "ToolButton", highlight_color); + +	theme->set_stylebox("MenuHover", "EditorStyles", style_menu_hover_border); + +	// Content of each tab +	Ref<StyleBoxFlat> style_panel = make_flat_stylebox(base_color, 1, 4, 1, 1);  	theme->set_stylebox("panel", "TabContainer", style_panel); -	theme->set_stylebox("EditorPanel", "EditorStyles", style_panel); - -	Ref<StyleBoxFlat> style_bg(memnew(StyleBoxFlat)); -	style_bg->set_bg_color(Color::html("#2b353f")); -	style_bg->set_default_margin(MARGIN_LEFT, 0); -	style_bg->set_default_margin(MARGIN_RIGHT, 0); -	style_bg->set_default_margin(MARGIN_BOTTOM, 0); -	style_bg->set_default_margin(MARGIN_TOP, 0); +	theme->set_stylebox("Content", "EditorStyles", style_panel); + +	// Button +	Ref<StyleBoxFlat> style_button = make_flat_stylebox(dark_color_1, 4, 4, 4, 4); +	style_button->set_draw_center(true); +	style_button->set_border_size(2 * EDSCALE); +	style_button->set_light_color(light_color_1); +	style_button->set_dark_color(light_color_1); +	style_button->set_border_blend(false); +	theme->set_stylebox("normal", "Button", style_button); +	theme->set_stylebox("hover", "Button", style_button); +	theme->set_stylebox("pressed", "Button", style_button); +	theme->set_stylebox("focus", "Button", style_button); +	theme->set_stylebox("disabled", "Button", style_button); +	theme->set_color("font_color_hover", "Button", HIGHLIGHT_COLOR_LIGHT); +	theme->set_color("font_color_pressed", "Button", highlight_color); +	theme->set_color("icon_color_hover", "Button", HIGHLIGHT_COLOR_LIGHT); +	// make icon color value bigger because icon image is not complete white +	theme->set_color("icon_color_pressed", "Button", Color(highlight_color.r * 1.15, highlight_color.g * 1.15, highlight_color.b * 1.15, highlight_color.a)); + +	// OptionButton +	Ref<StyleBoxFlat> style_option_button = make_flat_stylebox(dark_color_1, 4, 4, 4, 4); +	style_option_button->set_border_size(1 * EDSCALE); +	style_option_button->set_light_color(light_color_1); +	style_option_button->set_dark_color(light_color_1); +	style_option_button->_set_additional_border_size(MARGIN_RIGHT, -16 * EDSCALE); +	theme->set_stylebox("hover", "OptionButton", change_border_color(style_option_button, HIGHLIGHT_COLOR_LIGHT)); +	theme->set_stylebox("pressed", "OptionButton", change_border_color(style_option_button, highlight_color)); +	theme->set_stylebox("focus", "OptionButton", change_border_color(style_option_button, highlight_color)); +	theme->set_stylebox("disabled", "OptionButton", style_option_button); +	theme->set_stylebox("normal", "OptionButton", style_option_button); +	theme->set_icon("arrow", "OptionButton", theme->get_icon("OptionArrow", "EditorIcons")); + +	// PopupMenu +	Ref<StyleBoxFlat> style_popup_menu = make_flat_stylebox(dark_color_1, 8, 8, 8, 8); +	style_popup_menu->set_border_size(2 * EDSCALE); +	style_popup_menu->set_light_color(light_color_1); +	style_popup_menu->set_dark_color(light_color_1); +	theme->set_stylebox("panel", "PopupMenu", style_popup_menu); + +	// Tree & script background +	Ref<StyleBoxFlat> style_bg = make_flat_stylebox(dark_color_1, 0, 0, 0, 0);  	theme->set_stylebox("bg", "Tree", style_bg); -	theme->set_stylebox("bg", "ItemList", style_bg); -	theme->set_stylebox("EditorBG", "EditorStyles", style_bg); +	theme->set_stylebox("ScriptPanel", "EditorStyles", style_bg); + +	// Tree +	theme->set_icon("checked", "Tree", theme->get_icon("Checked", "EditorIcons")); +	theme->set_icon("unchecked", "Tree", theme->get_icon("Unchecked", "EditorIcons")); +	theme->set_icon("arrow", "Tree", theme->get_icon("TreeArrowDown", "EditorIcons")); +	theme->set_icon("arrow_collapsed", "Tree", theme->get_icon("TreeArrowRight", "EditorIcons")); +	theme->set_icon("select_arrow", "Tree", theme->get_icon("Dropdown", "EditorIcons")); +	theme->set_stylebox("bg_focus", "Tree", focus_sbt); -	Ref<StyleBox> style_tree_btn = theme->get_stylebox("button_pressed", "Tree"); -	style_tree_btn->set_default_margin(MARGIN_LEFT, 3 * EDSCALE); -	style_tree_btn->set_default_margin(MARGIN_RIGHT, 3 * EDSCALE); +	Ref<StyleBox> style_tree_btn = make_flat_stylebox(light_color_1, 2, 4, 2, 4);  	theme->set_stylebox("button_pressed", "Tree", style_tree_btn); -	Ref<StyleBoxFlat> style_tab(memnew(StyleBoxFlat)); -	style_tab->set_default_margin(MARGIN_LEFT, 15 * EDSCALE); -	style_tab->set_default_margin(MARGIN_RIGHT, 15 * EDSCALE); -	style_tab->set_default_margin(MARGIN_BOTTOM, 5 * EDSCALE); -	style_tab->set_default_margin(MARGIN_TOP, 5 * EDSCALE); +	Ref<StyleBoxFlat> style_tree_focus = make_flat_stylebox(HIGHLIGHT_COLOR_DARK, 4, 4, 4, 4); +	theme->set_stylebox("selected_focus", "Tree", style_tree_focus); + +	Ref<StyleBoxFlat> style_tree_selected = make_flat_stylebox(light_color_1, 4, 4, 4, 4); +	theme->set_stylebox("selected", "Tree", style_tree_selected); -	Ref<StyleBoxFlat> style_tab_fg = style_tab->duplicate(); -	style_tab_fg->set_bg_color(Color::html("#36424e")); +	Ref<StyleBoxFlat> style_tree_cursor = make_flat_stylebox(HIGHLIGHT_COLOR_DARK, 4, 4, 4, 4); +	style_tree_cursor->set_draw_center(false); +	style_tree_cursor->set_border_size(1 * EDSCALE); +	style_tree_cursor->set_light_color(light_color_1); +	style_tree_cursor->set_dark_color(light_color_1); +	Ref<StyleBoxFlat> style_tree_title = make_flat_stylebox(dark_color_3, 4, 4, 4, 4); +	theme->set_stylebox("cursor", "Tree", style_tree_cursor); +	theme->set_stylebox("cursor_unfocused", "Tree", style_tree_cursor); +	theme->set_stylebox("title_button_normal", "Tree", style_tree_title); +	theme->set_stylebox("title_button_hover", "Tree", style_tree_title); +	theme->set_stylebox("title_button_pressed", "Tree", style_tree_title); -	Ref<StyleBoxFlat> style_tab_bg = style_tab->duplicate(); +	theme->set_color("prop_category", "Editor", dark_color_3); +	theme->set_color("prop_section", "Editor", dark_color_1); +	theme->set_color("prop_subsection", "Editor", dark_color_2); +	theme->set_color("fg_selected", "Editor", Color::html("ffbd8e8e")); +	theme->set_color("fg_error", "Editor", Color::html("ffbd8e8e")); +	theme->set_color("drop_position_color", "Tree", highlight_color); + +	// ItemList +	Ref<StyleBoxFlat> style_itemlist_cursor = make_flat_stylebox(highlight_color, 8, 8, 8, 8); +	style_itemlist_cursor->set_draw_center(false); +	style_itemlist_cursor->set_border_size(1 * EDSCALE); +	style_itemlist_cursor->set_light_color(light_color_1); +	style_itemlist_cursor->set_dark_color(light_color_1); +	theme->set_stylebox("cursor", "ItemList", style_itemlist_cursor); +	theme->set_stylebox("cursor_unfocused", "ItemList", style_itemlist_cursor); +	theme->set_stylebox("selected_focus", "ItemList", style_tree_focus); +	theme->set_stylebox("selected", "ItemList", style_tree_selected); +	theme->set_stylebox("bg_focus", "ItemList", focus_sbt); +	theme->set_stylebox("bg", "ItemList", style_bg); + +	Ref<StyleBoxFlat> style_tab_fg = make_flat_stylebox(base_color, 15, 5, 15, 5); +	Ref<StyleBoxFlat> style_tab_bg = make_flat_stylebox(base_color, 15, 5, 15, 5);  	style_tab_bg->set_draw_center(false); +	// Tabs & TabContainer  	theme->set_stylebox("tab_fg", "TabContainer", style_tab_fg);  	theme->set_stylebox("tab_bg", "TabContainer", style_tab_bg);  	theme->set_stylebox("tab_fg", "Tabs", style_tab_fg);  	theme->set_stylebox("tab_bg", "Tabs", style_tab_bg); +	theme->set_color("font_color_fg", "TabContainer", Color(1, 1, 1, 1)); +	theme->set_color("font_color_bg", "TabContainer", light_color_2); +	theme->set_icon("menu", "TabContainer", theme->get_icon("TabMenu", "EditorIcons")); +	theme->set_icon("menu_hl", "TabContainer", theme->get_icon("TabMenu", "EditorIcons")); + +	// Debugger +	Ref<StyleBoxFlat> style_panel_debugger = make_flat_stylebox(dark_color_2, 0, 4, 0, 0); +	theme->set_stylebox("DebuggerPanel", "EditorStyles", style_panel_debugger); -	Ref<StyleBoxFlat> style_panel_debugger(memnew(StyleBoxFlat)); -	style_panel_debugger->set_bg_color(Color::html("#3e4c5a")); -	style_panel_debugger->set_default_margin(MARGIN_LEFT, 0); -	style_panel_debugger->set_default_margin(MARGIN_RIGHT, 0); -	style_panel_debugger->set_default_margin(MARGIN_BOTTOM, 0); -	style_panel_debugger->set_default_margin(MARGIN_TOP, 4 * EDSCALE); -	theme->set_stylebox("EditorPanelDebugger", "EditorStyles", style_panel_debugger); - -	Ref<StyleBoxFlat> style_tab_fg_debugger = style_tab->duplicate(); -	style_tab_fg_debugger->set_bg_color(Color::html("#3e4c5a")); -	style_tab_fg_debugger->set_default_margin(MARGIN_LEFT, 10 * EDSCALE); -	style_tab_fg_debugger->set_default_margin(MARGIN_RIGHT, 10 * EDSCALE); -	Ref<StyleBoxFlat> style_tab_bg_debugger = style_tab->duplicate(); +	Ref<StyleBoxFlat> style_tab_fg_debugger = make_flat_stylebox(dark_color_2, 10, 5, 10, 5); +	Ref<StyleBoxFlat> style_tab_bg_debugger = make_flat_stylebox(dark_color_2, 10, 5, 10, 5);  	style_tab_bg_debugger->set_draw_center(false); -	style_tab_bg_debugger->set_default_margin(MARGIN_LEFT, 10 * EDSCALE); -	style_tab_bg_debugger->set_default_margin(MARGIN_RIGHT, 10 * EDSCALE); -	theme->set_stylebox("EditorTabFGDebugger", "EditorStyles", style_tab_fg_debugger); -	theme->set_stylebox("EditorTabBGDebugger", "EditorStyles", style_tab_bg_debugger); +	theme->set_stylebox("DebuggerTabFG", "EditorStyles", style_tab_fg_debugger); +	theme->set_stylebox("DebuggerTabBG", "EditorStyles", style_tab_bg_debugger); +	// LineEdit +	Ref<StyleBoxFlat> style_lineedit = make_flat_stylebox(dark_color_1, 4, 4, 4, 4); +	style_lineedit->set_border_size(1 * EDSCALE); +	style_lineedit->set_light_color(light_color_1); +	style_lineedit->set_dark_color(light_color_1); +	Ref<StyleBoxFlat> style_lineedit_disabled = style_lineedit->duplicate(); +	style_lineedit_disabled->set_bg_color(light_color_2); +	theme->set_stylebox("normal", "LineEdit", style_lineedit); +	theme->set_stylebox("focus", "LineEdit", change_border_color(style_lineedit, highlight_color)); +	theme->set_stylebox("read_only", "LineEdit", style_lineedit_disabled); + +	// TextEdit  	Ref<StyleBoxFlat> style_textedit_normal(memnew(StyleBoxFlat)); -	style_textedit_normal->set_bg_color(Color::html("#29343d")); +	style_textedit_normal->set_bg_color(dark_color_2);  	style_textedit_normal->set_default_margin(MARGIN_LEFT, 0);  	style_textedit_normal->set_default_margin(MARGIN_RIGHT, 0);  	style_textedit_normal->set_default_margin(MARGIN_BOTTOM, 0);  	style_textedit_normal->set_default_margin(MARGIN_TOP, 0);  	theme->set_stylebox("normal", "TextEdit", style_textedit_normal); +	theme->set_stylebox("focus", "TextEdit", focus_sbt); +	theme->set_constant("side_margin", "TabContainer", 0); + +	// H/VSplitContainer +	theme->set_stylebox("bg", "VSplitContainer", make_stylebox(theme->get_icon("VsplitBg", "EditorIcons"), 1, 1, 1, 1)); +	theme->set_stylebox("bg", "HSplitContainer", make_stylebox(theme->get_icon("HsplitBg", "EditorIcons"), 1, 1, 1, 1)); + +	theme->set_icon("grabber", "VSplitContainer", theme->get_icon("Vsplitter", "EditorIcons")); +	theme->set_icon("grabber", "HSplitContainer", theme->get_icon("Hsplitter", "EditorIcons"));  	theme->set_constant("separation", "HSplitContainer", 8 * EDSCALE);  	theme->set_constant("separation", "VSplitContainer", 8 * EDSCALE); -	theme->set_constant("side_margin", "TabContainer", 0); -	// theme->set_color("prop_category","Editor",Color::hex(0x3f3a44ff)); -	// theme->set_color("prop_section","Editor",Color::hex(0x35313aff)); -	// theme->set_color("prop_subsection","Editor",Color::hex(0x312e37ff)); -	// theme->set_color("fg_selected","Editor",Color::html("ffbd8e8e")); -	// theme->set_color("fg_error","Editor",Color::html("ffbd8e8e")); +	// WindowDialog +	Ref<StyleBoxFlat> style_window = make_flat_stylebox(dark_color_2, 4, 4, 4, 4); +	style_window->set_border_size(2 * EDSCALE); +	style_window->set_border_blend(false); +	style_window->set_light_color(light_color_2); +	style_window->set_dark_color(light_color_2); +	style_window->_set_additional_border_size(MARGIN_TOP, 24 * EDSCALE); +	theme->set_stylebox("panel", "WindowDialog", style_window); + +	// HScrollBar +	Ref<Texture> empty_icon = memnew(ImageTexture); + +	theme->set_stylebox("scroll", "HScrollBar", make_stylebox(theme->get_icon("ScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0)); +	theme->set_stylebox("scroll_focus", "HScrollBar", make_stylebox(theme->get_icon("ScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0)); +	theme->set_stylebox("grabber", "HScrollBar", make_stylebox(theme->get_icon("ScrollGrabber", "EditorIcons"), 6, 6, 6, 6, 2, 2, 2, 2)); +	theme->set_stylebox("grabber_highlight", "HScrollBar", make_stylebox(theme->get_icon("ScrollGrabberHl", "EditorIcons"), 5, 5, 5, 5, 2, 2, 2, 2)); + +	theme->set_icon("increment", "HScrollBar", empty_icon); +	theme->set_icon("increment_highlight", "HScrollBar", empty_icon); +	theme->set_icon("decrement", "HScrollBar", empty_icon); +	theme->set_icon("decrement_highlight", "HScrollBar", empty_icon); + +	// VScrollBar +	theme->set_stylebox("scroll", "VScrollBar", make_stylebox(theme->get_icon("ScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0)); +	theme->set_stylebox("scroll_focus", "VScrollBar", make_stylebox(theme->get_icon("ScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0)); +	theme->set_stylebox("grabber", "VScrollBar", make_stylebox(theme->get_icon("ScrollGrabber", "EditorIcons"), 6, 6, 6, 6, 2, 2, 2, 2)); +	theme->set_stylebox("grabber_highlight", "VScrollBar", make_stylebox(theme->get_icon("ScrollGrabberHl", "EditorIcons"), 5, 5, 5, 5, 2, 2, 2, 2)); + +	theme->set_icon("increment", "VScrollBar", empty_icon); +	theme->set_icon("increment_highlight", "VScrollBar", empty_icon); +	theme->set_icon("decrement", "VScrollBar", empty_icon); +	theme->set_icon("decrement_highlight", "VScrollBar", empty_icon); + +	// HSlider +	theme->set_stylebox("slider", "HSlider", make_stylebox(theme->get_icon("HsliderBg", "EditorIcons"), 4, 4, 4, 4)); +	theme->set_icon("grabber", "HSlider", theme->get_icon("SliderGrabber", "EditorIcons")); +	theme->set_icon("grabber_highlight", "HSlider", theme->get_icon("SliderGrabberHl", "EditorIcons")); + +	// VSlider +	theme->set_stylebox("slider", "VSlider", make_stylebox(theme->get_icon("VsliderBg", "EditorIcons"), 4, 4, 4, 4)); +	theme->set_icon("grabber", "VSlider", theme->get_icon("SliderGrabber", "EditorIcons")); +	theme->set_icon("grabber_highlight", "VSlider", theme->get_icon("SliderGrabberHl", "EditorIcons")); + +	// TooltipPanel +	Ref<StyleBoxFlat> style_tooltip = make_flat_stylebox(Color(1, 1, 1, 0.8), 8, 8, 8, 8); +	style_tooltip->set_border_size(2 * EDSCALE); +	style_tooltip->set_border_blend(false); +	style_tooltip->set_light_color(Color(1, 1, 1, 0.9)); +	style_tooltip->set_dark_color(Color(1, 1, 1, 0.9)); +	theme->set_stylebox("panel", "TooltipPanel", style_tooltip); + +	// PopupPanel +	Ref<StyleBoxFlat> style_dock_select = make_flat_stylebox(base_color); +	style_dock_select->set_light_color(light_color_1); +	style_dock_select->set_dark_color(light_color_1); +	style_dock_select = add_additional_border(style_dock_select, 2, 2, 2, 2); +	theme->set_stylebox("panel", "PopupPanel", style_dock_select); + +	// SpinBox +	theme->set_icon("updown", "SpinBox", theme->get_icon("SpinboxUpdown", "EditorIcons")); + +	// GraphNode +	Ref<StyleBoxFlat> graphsb = make_flat_stylebox(Color(0, 0, 0, 0.3), 16, 24, 16, 5); +	graphsb->set_border_blend(false); +	graphsb->set_border_size(2); +	graphsb->set_light_color(Color(1, 1, 1, 0.6)); +	graphsb->set_dark_color(Color(1, 1, 1, 0.6)); +	graphsb = add_additional_border(graphsb, 0, -22, 0, 0); +	Ref<StyleBoxFlat> graphsbselected = make_flat_stylebox(Color(0, 0, 0, 0.4), 16, 24, 16, 5); +	graphsbselected->set_border_blend(false); +	graphsbselected->set_border_size(2); +	graphsbselected->set_light_color(Color(1, 1, 1, 0.9)); +	graphsbselected->set_dark_color(Color(1, 1, 1, 0.9)); +	graphsbselected = add_additional_border(graphsbselected, 0, -22, 0, 0); +	Ref<StyleBoxFlat> graphsbcomment = make_flat_stylebox(Color(0, 0, 0, 0.3), 16, 24, 16, 5); +	graphsbcomment->set_border_blend(false); +	graphsbcomment->set_border_size(1); +	graphsbcomment->set_light_color(Color(1, 1, 1, 0.6)); +	graphsbcomment->set_dark_color(Color(1, 1, 1, 0.6)); +	graphsbcomment = add_additional_border(graphsbcomment, 0, -22, 0, 0); +	Ref<StyleBoxFlat> graphsbcommentselected = make_flat_stylebox(Color(0, 0, 0, 0.4), 16, 24, 16, 5); +	graphsbcommentselected->set_border_blend(false); +	graphsbcommentselected->set_border_size(1); +	graphsbcommentselected->set_light_color(Color(1, 1, 1, 0.9)); +	graphsbcommentselected->set_dark_color(Color(1, 1, 1, 0.9)); +	graphsbcommentselected = add_additional_border(graphsbcommentselected, 0, -22, 0, 0); +	theme->set_stylebox("frame", "GraphNode", graphsb); +	theme->set_stylebox("selectedframe", "GraphNode", graphsbselected); +	theme->set_stylebox("comment", "GraphNode", graphsbcomment); +	theme->set_stylebox("commentfocus", "GraphNode", graphsbcommentselected);  	return theme;  } diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 71e43216b3..62fb241ade 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -150,11 +150,10 @@ void FileSystemDock::_notification(int p_what) {  			}  			button_display_mode->connect("pressed", this, "_change_file_display");  			//file_options->set_icon( get_icon("Tools","EditorIcons")); -  			files->connect("item_activated", this, "_select_file");  			button_hist_next->connect("pressed", this, "_fw_history");  			button_hist_prev->connect("pressed", this, "_bw_history"); -			search_icon->set_texture(get_icon("Search", "EditorIcons")); +			search_icon->set_texture(get_icon("Zoom", "EditorIcons"));  			button_hist_next->set_icon(get_icon("Forward", "EditorIcons"));  			button_hist_prev->set_icon(get_icon("Back", "EditorIcons")); @@ -1669,6 +1668,8 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {  	button_reload->set_tooltip(TTR("Re-Scan Filesystem"));  	button_reload->hide(); +	//toolbar_hbc->add_spacer(); +  	button_favorite = memnew(Button);  	button_favorite->set_flat(true);  	button_favorite->set_toggle_mode(true); @@ -1723,7 +1724,6 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {  	tree->connect("item_rmb_selected", this, "_dir_rmb_pressed");  	files = memnew(ItemList); -	files->add_style_override("bg", editor->get_gui_base()->get_stylebox("EditorBG", "EditorStyles"));  	files->set_v_size_flags(SIZE_EXPAND_FILL);  	files->set_select_mode(ItemList::SELECT_MULTI);  	files->set_drag_forwarding(this); diff --git a/editor/icons/2x/icon_checked.png b/editor/icons/2x/icon_checked.png Binary files differnew file mode 100644 index 0000000000..6083540ffe --- /dev/null +++ b/editor/icons/2x/icon_checked.png diff --git a/editor/icons/2x/icon_dropdown.png b/editor/icons/2x/icon_dropdown.png Binary files differnew file mode 100644 index 0000000000..626dba79ec --- /dev/null +++ b/editor/icons/2x/icon_dropdown.png diff --git a/editor/icons/2x/icon_hslider_bg.png b/editor/icons/2x/icon_hslider_bg.png Binary files differnew file mode 100644 index 0000000000..e3c61f25e0 --- /dev/null +++ b/editor/icons/2x/icon_hslider_bg.png diff --git a/editor/icons/2x/icon_option_arrow.png b/editor/icons/2x/icon_option_arrow.png Binary files differnew file mode 100644 index 0000000000..ed177a4451 --- /dev/null +++ b/editor/icons/2x/icon_option_arrow.png diff --git a/editor/icons/2x/icon_play_button_group.png b/editor/icons/2x/icon_play_button_group.png Binary files differnew file mode 100644 index 0000000000..e28cb52e64 --- /dev/null +++ b/editor/icons/2x/icon_play_button_group.png diff --git a/editor/icons/2x/icon_slider_grabber.png b/editor/icons/2x/icon_slider_grabber.png Binary files differnew file mode 100644 index 0000000000..64cf83270a --- /dev/null +++ b/editor/icons/2x/icon_slider_grabber.png diff --git a/editor/icons/2x/icon_slider_grabber_hl.png b/editor/icons/2x/icon_slider_grabber_hl.png Binary files differnew file mode 100644 index 0000000000..d68da0d12a --- /dev/null +++ b/editor/icons/2x/icon_slider_grabber_hl.png diff --git a/editor/icons/2x/icon_spinbox_updown.png b/editor/icons/2x/icon_spinbox_updown.png Binary files differnew file mode 100644 index 0000000000..e711fbf08b --- /dev/null +++ b/editor/icons/2x/icon_spinbox_updown.png diff --git a/editor/icons/2x/icon_tab_menu.png b/editor/icons/2x/icon_tab_menu.png Binary files differnew file mode 100644 index 0000000000..becad9db76 --- /dev/null +++ b/editor/icons/2x/icon_tab_menu.png diff --git a/editor/icons/2x/icon_texture.png b/editor/icons/2x/icon_texture.png Binary files differnew file mode 100644 index 0000000000..ad5d04dfee --- /dev/null +++ b/editor/icons/2x/icon_texture.png diff --git a/editor/icons/2x/icon_tree_arrow_down.png b/editor/icons/2x/icon_tree_arrow_down.png Binary files differnew file mode 100644 index 0000000000..00012dea39 --- /dev/null +++ b/editor/icons/2x/icon_tree_arrow_down.png diff --git a/editor/icons/2x/icon_tree_arrow_right.png b/editor/icons/2x/icon_tree_arrow_right.png Binary files differnew file mode 100644 index 0000000000..baaf016784 --- /dev/null +++ b/editor/icons/2x/icon_tree_arrow_right.png diff --git a/editor/icons/2x/icon_unchecked.png b/editor/icons/2x/icon_unchecked.png Binary files differnew file mode 100644 index 0000000000..cd8b781000 --- /dev/null +++ b/editor/icons/2x/icon_unchecked.png diff --git a/editor/icons/2x/icon_vslider_bg.png b/editor/icons/2x/icon_vslider_bg.png Binary files differnew file mode 100644 index 0000000000..a7e0e78564 --- /dev/null +++ b/editor/icons/2x/icon_vslider_bg.png diff --git a/editor/icons/icon_checked.png b/editor/icons/icon_checked.png Binary files differnew file mode 100644 index 0000000000..d3442930bb --- /dev/null +++ b/editor/icons/icon_checked.png diff --git a/editor/icons/icon_dropdown.png b/editor/icons/icon_dropdown.png Binary files differnew file mode 100644 index 0000000000..b9a324be7c --- /dev/null +++ b/editor/icons/icon_dropdown.png diff --git a/editor/icons/icon_hslider_bg.png b/editor/icons/icon_hslider_bg.png Binary files differnew file mode 100644 index 0000000000..e3c61f25e0 --- /dev/null +++ b/editor/icons/icon_hslider_bg.png diff --git a/editor/icons/icon_hsplit_bg.png b/editor/icons/icon_hsplit_bg.png Binary files differnew file mode 100644 index 0000000000..cfb76f7dc7 --- /dev/null +++ b/editor/icons/icon_hsplit_bg.png diff --git a/editor/icons/icon_hsplitter.png b/editor/icons/icon_hsplitter.png Binary files differnew file mode 100644 index 0000000000..3ac1dddf90 --- /dev/null +++ b/editor/icons/icon_hsplitter.png diff --git a/editor/icons/icon_option_arrow.png b/editor/icons/icon_option_arrow.png Binary files differnew file mode 100644 index 0000000000..b7bc38e03f --- /dev/null +++ b/editor/icons/icon_option_arrow.png diff --git a/scene/resources/default_theme/button_group.png b/editor/icons/icon_play_button_group.png Binary files differindex 83820c8e0c..83820c8e0c 100644 --- a/scene/resources/default_theme/button_group.png +++ b/editor/icons/icon_play_button_group.png diff --git a/editor/icons/icon_scroll_bg.png b/editor/icons/icon_scroll_bg.png Binary files differnew file mode 100644 index 0000000000..1908fd8aee --- /dev/null +++ b/editor/icons/icon_scroll_bg.png diff --git a/editor/icons/icon_scroll_grabber.png b/editor/icons/icon_scroll_grabber.png Binary files differnew file mode 100644 index 0000000000..4be7f4e6cc --- /dev/null +++ b/editor/icons/icon_scroll_grabber.png diff --git a/editor/icons/icon_scroll_grabber_hl.png b/editor/icons/icon_scroll_grabber_hl.png Binary files differnew file mode 100644 index 0000000000..a81239b84b --- /dev/null +++ b/editor/icons/icon_scroll_grabber_hl.png diff --git a/editor/icons/icon_slider_grabber.png b/editor/icons/icon_slider_grabber.png Binary files differnew file mode 100644 index 0000000000..6b6982e26c --- /dev/null +++ b/editor/icons/icon_slider_grabber.png diff --git a/editor/icons/icon_slider_grabber_hl.png b/editor/icons/icon_slider_grabber_hl.png Binary files differnew file mode 100644 index 0000000000..03d4b2bb99 --- /dev/null +++ b/editor/icons/icon_slider_grabber_hl.png diff --git a/editor/icons/icon_spinbox_updown.png b/editor/icons/icon_spinbox_updown.png Binary files differnew file mode 100644 index 0000000000..ff65df801b --- /dev/null +++ b/editor/icons/icon_spinbox_updown.png diff --git a/editor/icons/icon_tab_menu.png b/editor/icons/icon_tab_menu.png Binary files differindex 29edd02f01..ffc63f2d41 100644 --- a/editor/icons/icon_tab_menu.png +++ b/editor/icons/icon_tab_menu.png diff --git a/editor/icons/icon_texture.png b/editor/icons/icon_texture.png Binary files differnew file mode 100644 index 0000000000..7c4493395e --- /dev/null +++ b/editor/icons/icon_texture.png diff --git a/editor/icons/icon_tree_arrow_down.png b/editor/icons/icon_tree_arrow_down.png Binary files differnew file mode 100644 index 0000000000..4ef7b41de6 --- /dev/null +++ b/editor/icons/icon_tree_arrow_down.png diff --git a/editor/icons/icon_tree_arrow_right.png b/editor/icons/icon_tree_arrow_right.png Binary files differnew file mode 100644 index 0000000000..13a42f730d --- /dev/null +++ b/editor/icons/icon_tree_arrow_right.png diff --git a/editor/icons/icon_unchecked.png b/editor/icons/icon_unchecked.png Binary files differnew file mode 100644 index 0000000000..9d7d55aa46 --- /dev/null +++ b/editor/icons/icon_unchecked.png diff --git a/editor/icons/icon_vslider_bg.png b/editor/icons/icon_vslider_bg.png Binary files differnew file mode 100644 index 0000000000..a7e0e78564 --- /dev/null +++ b/editor/icons/icon_vslider_bg.png diff --git a/editor/icons/icon_vsplit_bg.png b/editor/icons/icon_vsplit_bg.png Binary files differnew file mode 100644 index 0000000000..0c29b1e35c --- /dev/null +++ b/editor/icons/icon_vsplit_bg.png diff --git a/editor/icons/icon_vsplitter.png b/editor/icons/icon_vsplitter.png Binary files differnew file mode 100644 index 0000000000..56fb20bc3f --- /dev/null +++ b/editor/icons/icon_vsplitter.png diff --git a/editor/icons/source/icon_3_d.svg b/editor/icons/source/icon_3_d.svg deleted file mode 100644 index 3147d14dc1..0000000000 --- a/editor/icons/source/icon_3_d.svg +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 16" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" -   inkscape:export-xdpi="45" -   inkscape:export-ydpi="45" -   sodipodi:docname="icon_3_d.svg"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32.000001" -     inkscape:cx="7.1007207" -     inkscape:cy="6.155123" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:snap-bbox-midpoints="false" -     inkscape:snap-object-midpoints="true" -     inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-midpoints="true" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid3336" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3622)"> -    <path -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2.0050708,1040.3622 2,-2 2,2" -       id="path4485" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccc" /> -    <path -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 4.0050708,1039.3622 v 9 h 9.0000002" -       id="path4487" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccc" /> -    <path -       sodipodi:nodetypes="ccc" -       inkscape:connector-curvature="0" -       id="path4489" -       d="m 12.005071,1046.3622 2,2 -2,2" -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -    <path -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 4.0050708,1048.3622 8.0000002,-8" -       id="path4496" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="cc" /> -    <path -       sodipodi:nodetypes="ccc" -       inkscape:connector-curvature="0" -       id="path4498" -       d="m 10.176644,1039.3622 h 2.828427 v 2.8284" -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/checked.svg b/editor/icons/source/icon_checked.svg index 6d2c03f4c5..6d2c03f4c5 100644 --- a/scene/resources/default_theme/source/checked.svg +++ b/editor/icons/source/icon_checked.svg diff --git a/scene/resources/default_theme/source/dropdown.svg b/editor/icons/source/icon_dropdown.svg index 5963e74007..5963e74007 100644 --- a/scene/resources/default_theme/source/dropdown.svg +++ b/editor/icons/source/icon_dropdown.svg diff --git a/scene/resources/default_theme/source/hslider_bg.svg b/editor/icons/source/icon_hslider_bg.svg index f247904a33..10bea12ab8 100644 --- a/scene/resources/default_theme/source/hslider_bg.svg +++ b/editor/icons/source/icon_hslider_bg.svg @@ -14,11 +14,11 @@     viewBox="0 0 16 15.999999"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="hslider_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> +   inkscape:version="0.92.1 unknown" +   sodipodi:docname="icon_hslider_bg.svg" +   inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/2x/icon_hslider_bg.png" +   inkscape:export-xdpi="96" +   inkscape:export-ydpi="96">    <defs       id="defs4" />    <sodipodi:namedview @@ -29,7 +29,7 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="32" -     inkscape:cx="9.463221" +     inkscape:cx="4.166346"       inkscape:cy="6.5721301"       inkscape:document-units="px"       inkscape:current-layer="layer1" @@ -41,11 +41,11 @@       inkscape:bbox-paths="true"       inkscape:bbox-nodes="true"       inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" +     inkscape:window-width="929" +     inkscape:window-height="897" +     inkscape:window-x="436" +     inkscape:window-y="155" +     inkscape:window-maximized="0"       inkscape:snap-smooth-nodes="true"       inkscape:object-nodes="true">      <inkscape:grid diff --git a/scene/resources/default_theme/source/hsplitter.svg b/editor/icons/source/icon_hsplitter.svg index 01c893fc56..01c893fc56 100644 --- a/scene/resources/default_theme/source/hsplitter.svg +++ b/editor/icons/source/icon_hsplitter.svg diff --git a/editor/icons/source/icon_mini_matrix32.svg b/editor/icons/source/icon_mini_matrix32.svg new file mode 100644 index 0000000000..5159ea0b87 --- /dev/null +++ b/editor/icons/source/icon_mini_matrix32.svg @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg +   xmlns:dc="http://purl.org/dc/elements/1.1/" +   xmlns:cc="http://creativecommons.org/ns#" +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" +   xmlns:svg="http://www.w3.org/2000/svg" +   xmlns="http://www.w3.org/2000/svg" +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="16" +   height="12" +   viewBox="0 0 16 12" +   id="svg2" +   version="1.1" +   inkscape:version="0.91 r13725" +   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" +   inkscape:export-xdpi="45" +   inkscape:export-ydpi="45" +   sodipodi:docname="icon_mini_matrix32.svg"> +  <defs +     id="defs4" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="32.000001" +     inkscape:cx="1.5471383" +     inkscape:cy="5.978497" +     inkscape:document-units="px" +     inkscape:current-layer="layer1" +     showgrid="true" +     units="px" +     inkscape:snap-bbox="true" +     inkscape:bbox-paths="true" +     inkscape:bbox-nodes="true" +     inkscape:snap-bbox-edge-midpoints="true" +     inkscape:snap-bbox-midpoints="false" +     inkscape:snap-object-midpoints="true" +     inkscape:snap-center="true" +     inkscape:window-width="1920" +     inkscape:window-height="1016" +     inkscape:window-x="0" +     inkscape:window-y="27" +     inkscape:window-maximized="1" +     inkscape:object-nodes="true" +     inkscape:snap-smooth-nodes="true"> +    <inkscape:grid +       type="xygrid" +       id="grid3336" /> +  </sodipodi:namedview> +  <metadata +     id="metadata7"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title /> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-1040.3622)"> +    <path +       style="fill:#ddf4aa;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       d="M 8 2 L 8 4 L 9 4 L 10 4 A 1 1 0 0 1 9 5 L 9 7 A 1 1 0 0 1 10 8 A 1 1 0 0 1 9 9 L 8 9 L 8 11 L 9 11 A 3 3 0 0 0 11.597656 9.5 A 3 3 0 0 0 11.597656 6.5 A 3 3 0 0 0 11.232422 5.9980469 A 3 3 0 0 0 11.597656 5.5 A 3 3 0 0 0 11.994141 4 L 12 4 L 12 2 L 9 2 L 8 2 z " +       transform="translate(0,1040.3622)" +       id="path4753" /> +    <rect +       y="1048.3622" +       x="11" +       height="2" +       width="5" +       id="rect4763" +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    <path +       sodipodi:open="true" +       d="m 13,1050.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1" +       sodipodi:end="4.712389" +       sodipodi:start="1.5707963" +       sodipodi:ry="2" +       sodipodi:rx="2" +       sodipodi:cy="1048.3622" +       sodipodi:cx="13" +       sodipodi:type="arc" +       id="path4765" +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    <path +       inkscape:connector-curvature="0" +       id="path4767" +       d="m 13,1042.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z" +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    <path +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       d="m 2,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" +       id="path4771" +       inkscape:connector-curvature="0" /> +    <rect +       y="-1050.3622" +       x="3" +       height="3" +       width="2" +       id="rect4773" +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       transform="scale(1,-1)" /> +    <rect +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       id="rect4775" +       width="2" +       height="5.9999828" +       x="0" +       y="-1050.3622" +       transform="scale(1,-1)" /> +    <rect +       transform="scale(1,-1)" +       y="-1050.3622" +       x="3" +       height="5.9999828" +       width="2" +       id="rect4777" +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    <path +       inkscape:connector-curvature="0" +       id="path4779" +       d="m 5,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    <rect +       style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       id="rect4781" +       width="2" +       height="3.0000002" +       x="6" +       y="-1050.3622" +       transform="scale(1,-1)" /> +  </g> +</svg> diff --git a/scene/resources/default_theme/source/tab.svg b/editor/icons/source/icon_option_arrow.svg index 612977953a..5cd943e9e3 100644 --- a/scene/resources/default_theme/source/tab.svg +++ b/editor/icons/source/icon_option_arrow.svg @@ -9,16 +9,16 @@     xmlns="http://www.w3.org/2000/svg"     xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"     xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="8" -   height="8" -   viewBox="0 0 8 8" +   width="12" +   height="12" +   viewBox="0 0 12 12"     id="svg2"     version="1.1"     inkscape:version="0.92.1 r"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" -   sodipodi:docname="tab.svg"> +   sodipodi:docname="option_arrow.svg">    <defs       id="defs4" />    <sodipodi:namedview @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="32.000001" -     inkscape:cx="-2.6446005" -     inkscape:cy="5.445875" +     inkscape:zoom="45.254834" +     inkscape:cx="3.1667338" +     inkscape:cy="5.9875884"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -69,13 +69,12 @@       inkscape:label="Layer 1"       inkscape:groupmode="layer"       id="layer1" -     transform="translate(0,-1044.3622)"> +     transform="translate(0,-1040.3622)">      <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.07843138;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 8,3.984375 c -4,2.6770833 -2,1.3385417 0,0 z M 8,4 C 7.9958579,3.7402262 7.8907874,3.4766349 7.7070312,3.2929688 l -3,-3.00000005 C 4.5187601,0.09943602 4.2602361,-0.00974989 3.9902344,-0.00976563 3.0928174,-0.00952997 2.6498571,1.0811201 3.2929688,1.7070312 L 4.5859375,3 H 0 V 5 L 4.5859375,5 3.2929688,6.2929688 C 2.3113156,7.2354775 3.7645225,8.6886844 4.7070312,7.7070312 l 3,-3 C 7.898443,4.5157079 8.0041444,4.2706029 8,4 Z" -       transform="translate(0,1044.3622)" -       id="path814"         inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccccccccccccccc" /> +       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +       d="m 9.9999996,1043.3583 c -0.2637796,0.01 -0.5144012,0.1165 -0.697265,0.3067 l -3.292969,3.2929 -3.2929688,-3.2929 C 2.5285367,1043.4714 2.2700113,1043.3622 2,1043.3622 c -0.8974208,2e-4 -1.34038281,1.0909 -0.6972656,1.7168 l 4,4 c 0.3905299,0.3904 1.0235325,0.3904 1.4140624,0 l 4.0000002,-4 c 0.657344,-0.6321 0.194906,-1.7422 -0.7167974,-1.7207 z" +       id="path4484" +       sodipodi:nodetypes="cccccccccc" />    </g>  </svg> diff --git a/editor/icons/source/icon_particles_shader.svg b/editor/icons/source/icon_particles_shader.svg new file mode 100644 index 0000000000..b4c2ef7ccd --- /dev/null +++ b/editor/icons/source/icon_particles_shader.svg @@ -0,0 +1,159 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg +   xmlns:dc="http://purl.org/dc/elements/1.1/" +   xmlns:cc="http://creativecommons.org/ns#" +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" +   xmlns:svg="http://www.w3.org/2000/svg" +   xmlns="http://www.w3.org/2000/svg" +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="16" +   height="16" +   viewBox="0 0 16 16" +   id="svg2" +   version="1.1" +   inkscape:version="0.91 r13725" +   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png" +   inkscape:export-xdpi="90" +   inkscape:export-ydpi="90" +   sodipodi:docname="icon_particles_shader.svg"> +  <defs +     id="defs4"> +    <clipPath +       clipPathUnits="userSpaceOnUse" +       id="clipPath4253"> +      <path +         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" +         id="path4255" +         inkscape:connector-curvature="0" /> +    </clipPath> +    <clipPath +       clipPathUnits="userSpaceOnUse" +       id="clipPath4199"> +      <path +         inkscape:connector-curvature="0" +         id="path4201" +         d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" +         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> +    </clipPath> +    <clipPath +       clipPathUnits="userSpaceOnUse" +       id="clipPath4208"> +      <path +         style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" +         d="M 8,1037.3622 A 4.4999948,4.9999847 0 0 0 3.5859375,1041.3934 3,3 0 0 0 1,1044.3622 a 3,3 0 0 0 3,3 l 8,0 a 3,3 0 0 0 3,-3 3,3 0 0 0 -2.589844,-2.9668 A 4.4999948,4.9999847 0 0 0 8,1037.3622 Z m -4,11 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z m 8,0 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z m -4,1 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z" +         id="path4210" +         inkscape:connector-curvature="0" /> +    </clipPath> +  </defs> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="15.999999" +     inkscape:cx="8.2922739" +     inkscape:cy="6.6952763" +     inkscape:document-units="px" +     inkscape:current-layer="layer1" +     showgrid="true" +     units="px" +     inkscape:snap-bbox="true" +     inkscape:bbox-paths="true" +     inkscape:bbox-nodes="true" +     inkscape:snap-bbox-edge-midpoints="true" +     inkscape:snap-bbox-midpoints="true" +     inkscape:snap-object-midpoints="true" +     inkscape:snap-center="true" +     inkscape:window-width="1920" +     inkscape:window-height="1016" +     inkscape:window-x="0" +     inkscape:window-y="27" +     inkscape:window-maximized="1" +     inkscape:object-paths="true" +     inkscape:snap-intersection-paths="true" +     inkscape:object-nodes="true" +     inkscape:snap-smooth-nodes="true"> +    <inkscape:grid +       type="xygrid" +       id="grid3336" +       empspacing="4" /> +  </sodipodi:namedview> +  <metadata +     id="metadata7"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-1036.3622)"> +    <g +       id="g4271" +       clip-path="url(#clipPath4208)" +       transform="translate(0,1.8694115e-5)"> +      <rect +         y="1037.3622" +         x="0" +         height="2.0000031" +         width="16" +         id="rect4159" +         style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4161" +         width="16" +         height="2.0000029" +         x="0" +         y="1039.3622" /> +      <rect +         style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4163" +         width="16" +         height="1.9999999" +         x="0" +         y="1041.3622" /> +      <rect +         y="1043.3622" +         x="0" +         height="2.0000024" +         width="16" +         id="rect4165" +         style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         y="1045.3622" +         x="0" +         height="2.0000021" +         width="16" +         id="rect4167" +         style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4169" +         width="16" +         height="1.9999987" +         x="0" +         y="1049.3622" /> +      <rect +         style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4146" +         width="16" +         height="2.0000021" +         x="0" +         y="1047.3622" /> +    </g> +  </g> +</svg> diff --git a/scene/resources/default_theme/source/button_group.svg b/editor/icons/source/icon_play_button_group.svg index 84bdb00505..84bdb00505 100644 --- a/scene/resources/default_theme/source/button_group.svg +++ b/editor/icons/source/icon_play_button_group.svg diff --git a/scene/resources/default_theme/source/scroll_bg.svg b/editor/icons/source/icon_scroll_bg.svg index 29604b9e14..29604b9e14 100644 --- a/scene/resources/default_theme/source/scroll_bg.svg +++ b/editor/icons/source/icon_scroll_bg.svg diff --git a/scene/resources/default_theme/source/scroll_grabber.svg b/editor/icons/source/icon_scroll_grabber.svg index b9d2bbbec0..b9d2bbbec0 100644 --- a/scene/resources/default_theme/source/scroll_grabber.svg +++ b/editor/icons/source/icon_scroll_grabber.svg diff --git a/scene/resources/default_theme/source/scroll_grabber_hl.svg b/editor/icons/source/icon_scroll_grabber_hl.svg index 88f4317b8d..ce9a66c5bc 100644 --- a/scene/resources/default_theme/source/scroll_grabber_hl.svg +++ b/editor/icons/source/icon_scroll_grabber_hl.svg @@ -14,9 +14,9 @@     viewBox="0 0 12 11.999999"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_grabber_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" +   inkscape:version="0.92.1 unknown" +   sodipodi:docname="icon_scroll_grabber_hl.svg" +   inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/icon_scroll_grabber_hl.png"     inkscape:export-xdpi="90"     inkscape:export-ydpi="90">    <defs @@ -29,8 +29,8 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="45.254836" -     inkscape:cx="1.4412236" -     inkscape:cy="5.623836" +     inkscape:cx="3.0874565" +     inkscape:cy="5.7564185"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -41,11 +41,11 @@       inkscape:bbox-paths="true"       inkscape:bbox-nodes="true"       inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" +     inkscape:window-width="1097" +     inkscape:window-height="1076" +     inkscape:window-x="161" +     inkscape:window-y="200" +     inkscape:window-maximized="0"       inkscape:snap-nodes="false">      <inkscape:grid         type="xygrid" @@ -60,7 +60,7 @@          <dc:format>image/svg+xml</dc:format>          <dc:type             rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> +        <dc:title></dc:title>        </cc:Work>      </rdf:RDF>    </metadata> @@ -70,10 +70,13 @@       id="layer1"       transform="translate(0,-1040.3623)">      <circle -       style="opacity:1;fill:#7eff8a;fill-opacity:1;stroke:none;stroke-width:2.24999642;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       style="opacity:1;fill:#f9f9f9;fill-opacity:0.73000002;stroke:none;stroke-width:2.24999642;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"         id="path4239"         cx="6"         cy="1046.3623" -       r="2.9999952" /> +       r="2.9999952" +       inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/icon_scroll_grabber_hl.png" +       inkscape:export-xdpi="96" +       inkscape:export-ydpi="96" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/hslider_grabber.svg b/editor/icons/source/icon_slider_grabber.svg index a222edd37e..b13ca5d1a9 100644 --- a/scene/resources/default_theme/source/hslider_grabber.svg +++ b/editor/icons/source/icon_slider_grabber.svg @@ -14,8 +14,8 @@     viewBox="0 0 16 15.999999"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="hslider_grabber.svg" +   inkscape:version="0.92.1 unknown" +   sodipodi:docname="icon_slider_grabber.svg"     inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"     inkscape:export-xdpi="90"     inkscape:export-ydpi="90"> @@ -29,8 +29,8 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="32" -     inkscape:cx="2.6109686" -     inkscape:cy="6.3424144" +     inkscape:cx="3.7828436" +     inkscape:cy="7.4986644"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -41,11 +41,11 @@       inkscape:bbox-paths="true"       inkscape:bbox-nodes="true"       inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" +     inkscape:window-width="1195" +     inkscape:window-height="722" +     inkscape:window-x="91" +     inkscape:window-y="633" +     inkscape:window-maximized="0"       inkscape:snap-smooth-nodes="true"       inkscape:object-nodes="true">      <inkscape:grid diff --git a/scene/resources/default_theme/source/hslider_grabber_hl.svg b/editor/icons/source/icon_slider_grabber_hl.svg index d53aa5c0e9..5d53811c55 100644 --- a/scene/resources/default_theme/source/hslider_grabber_hl.svg +++ b/editor/icons/source/icon_slider_grabber_hl.svg @@ -14,11 +14,11 @@     viewBox="0 0 16 15.999999"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="hslider_grabber_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> +   inkscape:version="0.92.1 unknown" +   sodipodi:docname="icon_slider_grabber_hl.svg" +   inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/2x/icon_slider_grabber_hl.png" +   inkscape:export-xdpi="192" +   inkscape:export-ydpi="192">    <defs       id="defs4" />    <sodipodi:namedview @@ -29,8 +29,8 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="32" -     inkscape:cx="7.0748113" -     inkscape:cy="6.0432589" +     inkscape:cx="7.6841863" +     inkscape:cy="6.0120089"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -41,11 +41,11 @@       inkscape:bbox-paths="true"       inkscape:bbox-nodes="true"       inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" +     inkscape:window-width="1092" +     inkscape:window-height="880" +     inkscape:window-x="92" +     inkscape:window-y="49" +     inkscape:window-maximized="0"       inkscape:snap-smooth-nodes="true"       inkscape:object-nodes="true">      <inkscape:grid @@ -75,6 +75,6 @@         cy="1044.3623"         cx="8.0000057"         id="circle4262" -       style="fill:#7eff8a;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +       style="fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />    </g>  </svg> diff --git a/editor/icons/source/icon_spatial_shader.svg b/editor/icons/source/icon_spatial_shader.svg new file mode 100644 index 0000000000..329354b716 --- /dev/null +++ b/editor/icons/source/icon_spatial_shader.svg @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg +   xmlns:dc="http://purl.org/dc/elements/1.1/" +   xmlns:cc="http://creativecommons.org/ns#" +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" +   xmlns:svg="http://www.w3.org/2000/svg" +   xmlns="http://www.w3.org/2000/svg" +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="16" +   height="16" +   viewBox="0 0 16 16" +   id="svg2" +   version="1.1" +   inkscape:version="0.91 r13725" +   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png" +   inkscape:export-xdpi="90" +   inkscape:export-ydpi="90" +   sodipodi:docname="icon_spatial_shader.svg"> +  <defs +     id="defs4"> +    <clipPath +       id="clipPath4253" +       clipPathUnits="userSpaceOnUse"> +      <path +         inkscape:connector-curvature="0" +         id="path4255" +         d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" +         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    </clipPath> +    <clipPath +       id="clipPath4199" +       clipPathUnits="userSpaceOnUse"> +      <path +         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" +         d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" +         id="path4201" +         inkscape:connector-curvature="0" /> +    </clipPath> +    <clipPath +       clipPathUnits="userSpaceOnUse" +       id="clipPath4280"> +      <g +         id="g4282" +         inkscape:label="Layer 1" +         transform="translate(0,1.1802001e-5)" +         style="stroke:#fc9c9c;stroke-opacity:0.99607843"> +        <path +           style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +           d="M 7.9628906,1.0019531 A 1.0001,1.0001 0 0 0 7.5527344,1.1054688 l -6,3 A 1.0001,1.0001 0 0 0 1,5 l 0,6 a 1.0001,1.0001 0 0 0 0.5527344,0.894531 l 6,3 a 1.0001,1.0001 0 0 0 0.8945312,0 l 6.0000004,-3 A 1.0001,1.0001 0 0 0 15,11 L 15,5 A 1.0001,1.0001 0 0 0 14.447266,4.1054688 l -6.0000004,-3 A 1.0001,1.0001 0 0 0 7.9628906,1.0019531 Z M 8,3.1191406 11.763672,5 8,6.8828125 4.2363281,5 8,3.1191406 Z m -5,3.5 4,2 0,3.7636714 -4,-2 0,-3.7636714 z m 10,0 0,3.7636714 -4,2 0,-3.7636714 4,-2 z" +           transform="translate(0,1036.3622)" +           id="path4284" +           inkscape:connector-curvature="0" /> +      </g> +    </clipPath> +  </defs> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="22.627417" +     inkscape:cx="7.8442401" +     inkscape:cy="13.929239" +     inkscape:document-units="px" +     inkscape:current-layer="layer1" +     showgrid="true" +     units="px" +     inkscape:snap-bbox="true" +     inkscape:bbox-paths="true" +     inkscape:bbox-nodes="true" +     inkscape:snap-bbox-edge-midpoints="true" +     inkscape:snap-bbox-midpoints="true" +     inkscape:snap-object-midpoints="true" +     inkscape:snap-center="true" +     inkscape:window-width="1920" +     inkscape:window-height="1016" +     inkscape:window-x="0" +     inkscape:window-y="27" +     inkscape:window-maximized="1" +     inkscape:object-paths="false" +     inkscape:snap-intersection-paths="false" +     inkscape:object-nodes="false" +     inkscape:snap-smooth-nodes="false" +     inkscape:snap-midpoints="true"> +    <inkscape:grid +       type="xygrid" +       id="grid3336" /> +  </sodipodi:namedview> +  <metadata +     id="metadata7"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-1036.3622)"> +    <g +       id="g4271" +       clip-path="url(#clipPath4280)"> +      <rect +         y="1037.3622" +         x="0" +         height="2.0000031" +         width="16" +         id="rect4159" +         style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4161" +         width="16" +         height="2.0000029" +         x="0" +         y="1039.3622" /> +      <rect +         style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4163" +         width="16" +         height="1.9999999" +         x="0" +         y="1041.3622" /> +      <rect +         y="1043.3622" +         x="0" +         height="2.0000024" +         width="16" +         id="rect4165" +         style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         y="1045.3622" +         x="0" +         height="2.0000021" +         width="16" +         id="rect4167" +         style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4169" +         width="16" +         height="1.9999987" +         x="0" +         y="1049.3622" /> +      <rect +         style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4146" +         width="16" +         height="2.0000021" +         x="0" +         y="1047.3622" /> +    </g> +  </g> +</svg> diff --git a/scene/resources/default_theme/source/scroll_button_down.svg b/editor/icons/source/icon_spinbox_updown.svg index 078cc5c37c..e29d7fe0d2 100644 --- a/scene/resources/default_theme/source/scroll_button_down.svg +++ b/editor/icons/source/icon_spinbox_updown.svg @@ -9,16 +9,16 @@     xmlns="http://www.w3.org/2000/svg"     xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"     xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" +   width="16" +   height="16" +   viewBox="0 0 16 16"     id="svg2"     version="1.1"     inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_down.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> +   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png" +   inkscape:export-xdpi="45" +   inkscape:export-ydpi="45" +   sodipodi:docname="spinbox_updown.svg">    <defs       id="defs4" />    <sodipodi:namedview @@ -28,28 +28,30 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="1.4098045" -     inkscape:cy="5.764877" +     inkscape:zoom="16" +     inkscape:cx="-1.901723" +     inkscape:cy="9.1326297"       inkscape:document-units="px" -     inkscape:current-layer="layer1" +     inkscape:current-layer="layer1-5"       showgrid="true"       units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true"       inkscape:snap-bbox="true"       inkscape:bbox-paths="true"       inkscape:bbox-nodes="true"       inkscape:snap-bbox-edge-midpoints="true" +     inkscape:snap-bbox-midpoints="false" +     inkscape:snap-object-midpoints="true" +     inkscape:snap-center="true"       inkscape:window-width="1600"       inkscape:window-height="836"       inkscape:window-x="0"       inkscape:window-y="27" -     inkscape:window-maximized="1"> +     inkscape:window-maximized="1" +     inkscape:snap-smooth-nodes="true" +     inkscape:object-nodes="true">      <inkscape:grid         type="xygrid" -       id="grid4136" -       empspacing="4" /> +       id="grid3336" />    </sodipodi:namedview>    <metadata       id="metadata7"> @@ -67,11 +69,15 @@       inkscape:label="Layer 1"       inkscape:groupmode="layer"       id="layer1" -     transform="translate(0,-1040.3623)"> +     transform="translate(0,-1036.3622)">      <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.27450982;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 10.023438,1044.3535 a 1.0001,1.0001 0 0 0 -0.6230474,0.209 L 6,1047.1113 2.5996094,1044.5625 a 1.0001,1.0001 0 1 0 -1.1992188,1.5996 l 4,3 a 1.0001,1.0001 0 0 0 1.1992188,0 l 3.9999996,-3 a 1.0001,1.0001 0 0 0 -0.576171,-1.8086 z" -       id="path4511" -       inkscape:connector-curvature="0" /> +       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +       d="M 7.984375 1.0019531 A 1.0001 1.0001 0 0 0 7.2929688 1.2929688 L 3.2929688 5.2929688 A 1.0001 1.0001 0 1 0 4.7070312 6.7070312 L 8 3.4140625 L 11.292969 6.7070312 A 1.0001 1.0001 0 1 0 12.707031 5.2929688 L 8.7070312 1.2929688 A 1.0001 1.0001 0 0 0 7.984375 1.0019531 z M 11.990234 8.9863281 A 1.0001 1.0001 0 0 0 11.292969 9.2929688 L 8 12.585938 L 4.7070312 9.2929688 A 1.0001 1.0001 0 0 0 3.9902344 8.9902344 A 1.0001 1.0001 0 0 0 3.2929688 10.707031 L 7.2929688 14.707031 A 1.0001 1.0001 0 0 0 8.7070312 14.707031 L 12.707031 10.707031 A 1.0001 1.0001 0 0 0 11.990234 8.9863281 z " +       transform="translate(0,1036.3622)" +       id="path4484" /> +    <g +       id="layer1-5" +       inkscape:label="Layer 1" +       transform="translate(14.210182,-5.3664)" />    </g>  </svg> diff --git a/editor/icons/source/icon_2_d.svg b/editor/icons/source/icon_tab_menu.svg index 54c93a45aa..39e0d1f261 100644 --- a/editor/icons/source/icon_2_d.svg +++ b/editor/icons/source/icon_tab_menu.svg @@ -15,10 +15,10 @@     id="svg2"     version="1.1"     inkscape:version="0.92.1 r" -   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" +   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" -   sodipodi:docname="icon_2_d.svg"> +   sodipodi:docname="tab_menu.svg">    <defs       id="defs4" />    <sodipodi:namedview @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="22.627418" -     inkscape:cx="1.7654173" -     inkscape:cy="7.2653991" +     inkscape:zoom="32.000001" +     inkscape:cx="4.0814179" +     inkscape:cy="8.4695645"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -47,7 +47,6 @@       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" -     inkscape:snap-midpoints="true"       inkscape:snap-smooth-nodes="true"       inkscape:object-nodes="true">      <inkscape:grid @@ -71,23 +70,23 @@       inkscape:groupmode="layer"       id="layer1"       transform="translate(0,-1036.3622)"> -    <path -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,1040.3622 2,-2 2,2" -       id="path4485" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccc" /> -    <path -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 4,1039.3622 v 9 h 9" -       id="path4487" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccc" /> -    <path -       sodipodi:nodetypes="ccc" -       inkscape:connector-curvature="0" -       id="path4489" -       d="m 12,1046.3622 2,2 -2,2" -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +    <circle +       style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" +       id="path819" +       cx="8" +       cy="1038.3622" +       r="2" /> +    <circle +       r="2" +       cy="1044.3622" +       cx="8" +       id="circle821" +       style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" /> +    <circle +       style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" +       id="circle823" +       cx="8" +       cy="1050.3622" +       r="2" />    </g>  </svg> diff --git a/editor/icons/source/icon_texture.svg b/editor/icons/source/icon_texture.svg new file mode 100644 index 0000000000..39e88e592b --- /dev/null +++ b/editor/icons/source/icon_texture.svg @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg +   xmlns:dc="http://purl.org/dc/elements/1.1/" +   xmlns:cc="http://creativecommons.org/ns#" +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" +   xmlns:svg="http://www.w3.org/2000/svg" +   xmlns="http://www.w3.org/2000/svg" +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="16" +   height="16" +   viewBox="0 0 16 16" +   id="svg2" +   version="1.1" +   inkscape:version="0.91 r13725" +   inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png" +   inkscape:export-xdpi="90" +   inkscape:export-ydpi="90" +   sodipodi:docname="icon_image_texture.svg"> +  <defs +     id="defs4" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="32" +     inkscape:cx="9.9365814" +     inkscape:cy="6.4466253" +     inkscape:document-units="px" +     inkscape:current-layer="layer1" +     showgrid="true" +     units="px" +     inkscape:snap-bbox="true" +     inkscape:bbox-paths="true" +     inkscape:bbox-nodes="true" +     inkscape:snap-bbox-edge-midpoints="true" +     inkscape:snap-bbox-midpoints="false" +     inkscape:snap-object-midpoints="true" +     inkscape:snap-center="true" +     inkscape:window-width="1920" +     inkscape:window-height="1016" +     inkscape:window-x="0" +     inkscape:window-y="27" +     inkscape:window-maximized="1" +     inkscape:object-paths="false" +     inkscape:snap-intersection-paths="false" +     inkscape:object-nodes="false" +     inkscape:snap-smooth-nodes="false"> +    <inkscape:grid +       type="xygrid" +       id="grid3336" /> +  </sodipodi:namedview> +  <metadata +     id="metadata7"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-1036.3622)"> +    <path +       style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" +       d="M 2 1 A 1 1 0 0 0 1 2 L 1 14 A 1 1 0 0 0 2 15 L 14 15 A 1 1 0 0 0 15 14 L 15 2 A 1 1 0 0 0 14 1 L 2 1 z M 3 3 L 13 3 L 13 11 L 3 11 L 3 3 z " +       transform="translate(0,1036.3622)" +       id="rect4156" /> +    <rect +       y="1043.3622" +       x="6" +       height="1" +       width="2" +       id="rect4197" +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" /> +    <rect +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" +       id="rect4199" +       width="2" +       height="2.0000174" +       x="6" +       y="1044.3622" /> +    <rect +       y="1045.3622" +       x="4" +       height="1" +       width="2" +       id="rect4201" +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" /> +    <rect +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" +       id="rect4203" +       width="2" +       height="2.0000174" +       x="8" +       y="1044.3622" /> +    <rect +       y="1044.3622" +       x="10" +       height="2.0000174" +       width="2" +       id="rect4205" +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" /> +    <rect +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" +       id="rect4207" +       width="3" +       height="2.0000174" +       x="8" +       y="1042.3622" /> +    <rect +       y="1041.3622" +       x="9" +       height="1" +       width="1" +       id="rect4217" +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" /> +    <rect +       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" +       id="rect4219" +       width="1" +       height="1" +       x="5" +       y="1044.3622" /> +  </g> +</svg> diff --git a/scene/resources/default_theme/source/vseparator.svg b/editor/icons/source/icon_tree_arrow_down.svg index 40c2c674a1..1dd209720f 100644 --- a/scene/resources/default_theme/source/vseparator.svg +++ b/editor/icons/source/icon_tree_arrow_down.svg @@ -9,16 +9,16 @@     xmlns="http://www.w3.org/2000/svg"     xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"     xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="8" -   height="8" -   viewBox="0 0 8 8" +   width="12" +   height="12" +   viewBox="0 0 12 12"     id="svg2"     version="1.1"     inkscape:version="0.92.1 r"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" -   sodipodi:docname="vseparator.svg"> +   sodipodi:docname="arrow_down.svg">    <defs       id="defs4" />    <sodipodi:namedview @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="5.3201856" -     inkscape:cy="4.9836785" +     inkscape:zoom="22.627417" +     inkscape:cx="1.7981958" +     inkscape:cy="7.5815407"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -69,5 +69,12 @@       inkscape:label="Layer 1"       inkscape:groupmode="layer"       id="layer1" -     transform="translate(0,-1044.3622)" /> +     transform="translate(0,-1040.3622)"> +    <path +       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687" +       d="m 3,1045.3622 3,3 3,-3" +       id="path814" +       inkscape:connector-curvature="0" +       sodipodi:nodetypes="ccc" /> +  </g>  </svg> diff --git a/scene/resources/default_theme/source/hseparator.svg b/editor/icons/source/icon_tree_arrow_right.svg index 4bf5381240..43134ba1b1 100644 --- a/scene/resources/default_theme/source/hseparator.svg +++ b/editor/icons/source/icon_tree_arrow_right.svg @@ -9,16 +9,16 @@     xmlns="http://www.w3.org/2000/svg"     xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"     xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="8" -   height="8" -   viewBox="0 0 8 8" +   width="12" +   height="12" +   viewBox="0 0 12 12"     id="svg2"     version="1.1"     inkscape:version="0.92.1 r"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" -   sodipodi:docname="hseparator.svg"> +   sodipodi:docname="arrow_right.svg">    <defs       id="defs4" />    <sodipodi:namedview @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="64.000004" -     inkscape:cx="1.1715704" -     inkscape:cy="4.26452" +     inkscape:zoom="45.254836" +     inkscape:cx="4.0845752" +     inkscape:cy="5.8802612"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -69,5 +69,12 @@       inkscape:label="Layer 1"       inkscape:groupmode="layer"       id="layer1" -     transform="translate(0,-1044.3622)" /> +     transform="translate(0,-1040.3622)"> +    <path +       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687" +       d="m 4,1049.3622 3.0000202,-3 -3.0000202,-3" +       id="path814" +       inkscape:connector-curvature="0" +       sodipodi:nodetypes="ccc" /> +  </g>  </svg> diff --git a/scene/resources/default_theme/source/unchecked.svg b/editor/icons/source/icon_unchecked.svg index 053cbe6de5..053cbe6de5 100644 --- a/scene/resources/default_theme/source/unchecked.svg +++ b/editor/icons/source/icon_unchecked.svg diff --git a/scene/resources/default_theme/source/vslider_bg.svg b/editor/icons/source/icon_vslider_bg.svg index b34dddc2d0..b34dddc2d0 100644 --- a/scene/resources/default_theme/source/vslider_bg.svg +++ b/editor/icons/source/icon_vslider_bg.svg diff --git a/scene/resources/default_theme/source/vsplit_bg.svg b/editor/icons/source/icon_vsplit_bg.svg index e11940cf53..e11940cf53 100644 --- a/scene/resources/default_theme/source/vsplit_bg.svg +++ b/editor/icons/source/icon_vsplit_bg.svg diff --git a/scene/resources/default_theme/source/vsplitter.svg b/editor/icons/source/icon_vsplitter.svg index 80f7c2ce12..80f7c2ce12 100644 --- a/scene/resources/default_theme/source/vsplitter.svg +++ b/editor/icons/source/icon_vsplitter.svg diff --git a/editor/io_plugins/editor_texture_import_plugin.cpp b/editor/io_plugins/editor_texture_import_plugin.cpp index d9b4a95045..e860866d24 100644 --- a/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/editor/io_plugins/editor_texture_import_plugin.cpp @@ -680,7 +680,7 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin*  		}; -		mode_check[i]=memnew( CheckBox ); +		mode_check[i]=memnew(CheckBox);  		bg->add_child(mode_check[i]);  		mode_check[i]->set_text(mode_name[i]);  		mode_check[i]->connect("pressed",this,"_mode_changed",varray(i)); diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index b4398427f8..8a1e220fe3 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -118,7 +118,14 @@ void AnimationPlayerEditor::_notification(int p_what) {  		blend_editor.next->connect("item_selected", this, "_blend_editor_next_changed"); -		// nodename->set_icon(get_icon("AnimationPlayer", "EditorIcons")); +		/* +		anim_editor_load->set_normal_texture( get_icon("AnimGet","EditorIcons")); +		anim_editor_store->set_normal_texture( get_icon("AnimSet","EditorIcons")); +		anim_editor_load->set_pressed_texture( get_icon("AnimGet","EditorIcons")); +		anim_editor_store->set_pressed_texture( get_icon("AnimSet","EditorIcons")); +		anim_editor_load->set_hover_texture( get_icon("AnimGetHl","EditorIcons")); +		anim_editor_store->set_hover_texture( get_icon("AnimSetHl","EditorIcons")); +*/  		get_tree()->connect("node_removed", this, "_node_removed");  	} @@ -781,10 +788,6 @@ void AnimationPlayerEditor::_update_player() {  		player->get_animation_list(&animlist);  	animation->clear(); -	if (player) -		nodename->set_text(player->get_name()); -	else -		nodename->set_text(TTR("No player selected"));  	add_anim->set_disabled(player == NULL);  	load_anim->set_disabled(player == NULL); @@ -1358,14 +1361,7 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) {  	//tool_anim->get_popup()->add_item("Edit Anim Resource",TOOL_PASTE_ANIM);  	hb->add_child(tool_anim); -	hb->add_child(memnew(VSeparator)); -	nodename_icon = memnew(TextureRect); -	nodename_icon->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED); -	hb->add_child(nodename_icon); -	nodename = memnew(Label); -	hb->add_child(nodename);  	pin = memnew(ToolButton); -	pin->set_tooltip(TTR("Keep this animation selected?"));  	pin->set_toggle_mode(true);  	hb->add_child(pin); diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h index d80f9dccf2..ac60090d15 100644 --- a/editor/plugins/animation_player_editor_plugin.h +++ b/editor/plugins/animation_player_editor_plugin.h @@ -85,8 +85,6 @@ class AnimationPlayerEditor : public VBoxContainer {  	Button *remove_anim;  	MenuButton *tool_anim;  	ToolButton *pin; -	Label *nodename; -	TextureRect *nodename_icon;  	SpinBox *frame;  	LineEdit *scale;  	LineEdit *name; diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 27be6ea8f0..efb431839d 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -1837,7 +1837,7 @@ void CanvasItemEditor::_viewport_draw() {  		if (h_scroll->is_visible_in_tree())  			size.height -= h_scroll->get_size().height; -		get_stylebox("EditorFocus", "EditorStyles")->draw(ci, Rect2(Point2(), size)); +		get_stylebox("Focus", "EditorStyles")->draw(ci, Rect2(Point2(), size));  	}  	Ref<Texture> lock = get_icon("Lock", "EditorIcons"); @@ -3123,7 +3123,6 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {  	editor_selection->connect("selection_changed", this, "update");  	hb = memnew(HBoxContainer); -	hb->add_style_override("bg", editor->get_gui_base()->get_stylebox("panel", "PanelContainer"));  	add_child(hb);  	hb->set_area_as_parent_rect(); @@ -3300,8 +3299,6 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {  	animation_hb->hide();  	key_loc_button = memnew(Button("loc")); -	key_loc_button = memnew(Button("loc")); -	key_loc_button->set_flat(true);  	key_loc_button->set_toggle_mode(true);  	key_loc_button->set_pressed(true);  	key_loc_button->set_focus_mode(FOCUS_NONE); @@ -3310,7 +3307,6 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {  	key_loc_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_POS));  	animation_hb->add_child(key_loc_button);  	key_rot_button = memnew(Button("rot")); -	key_rot_button->set_flat(true);  	key_rot_button->set_toggle_mode(true);  	key_rot_button->set_pressed(true);  	key_rot_button->set_focus_mode(FOCUS_NONE); @@ -3319,14 +3315,13 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {  	key_rot_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_ROT));  	animation_hb->add_child(key_rot_button);  	key_scale_button = memnew(Button("scl")); -	key_scale_button->set_flat(true);  	key_scale_button->set_toggle_mode(true);  	key_scale_button->set_focus_mode(FOCUS_NONE);  	key_scale_button->add_color_override("font_color", Color(1, 0.6, 0.6));  	key_scale_button->add_color_override("font_color_pressed", Color(0.6, 1, 0.6));  	key_scale_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_SCALE));  	animation_hb->add_child(key_scale_button); -	key_insert_button = memnew(ToolButton); +	key_insert_button = memnew(Button);  	key_insert_button->set_focus_mode(FOCUS_NONE);  	key_insert_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_KEY));  	key_insert_button->set_tooltip(TTR("Insert Keys")); diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 0b96570fd5..4582108210 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -1375,8 +1375,7 @@ void ScriptEditor::_update_script_colors() {  			int non_zero_hist_size = (hist_size == 0) ? 1 : hist_size;  			float v = Math::ease((edit_pass - pass) / float(non_zero_hist_size), 0.4); -			//script_list->set_item_custom_bg_color(i, hot_color.linear_interpolate(cold_color, v)); -			script_list->set_item_custom_font_color(i, hot_color.linear_interpolate(cold_color, v)); +			script_list->set_item_custom_bg_color(i, hot_color.linear_interpolate(cold_color, v));  		}  	}  } @@ -2113,7 +2112,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {  	script_split->set_split_offset(140);  	tab_container = memnew(TabContainer); -	tab_container->add_style_override("panel", p_editor->get_gui_base()->get_stylebox("EditorBG", "EditorStyles")); +	tab_container->add_style_override("panel", p_editor->get_gui_base()->get_stylebox("ScriptPanel", "EditorStyles"));  	tab_container->set_tabs_visible(false);  	script_split->add_child(tab_container); @@ -2432,8 +2431,8 @@ ScriptEditorPlugin::ScriptEditorPlugin(EditorNode *p_node) {  	EDITOR_DEF("text_editor/open_scripts/script_temperature_enabled", true);  	EDITOR_DEF("text_editor/open_scripts/highlight_current_script", true);  	EDITOR_DEF("text_editor/open_scripts/script_temperature_history_size", 15); -	EDITOR_DEF("text_editor/open_scripts/script_temperature_hot_color", Color::html("ff5446")); -	EDITOR_DEF("text_editor/open_scripts/script_temperature_cold_color", Color::html("647b93")); +	EDITOR_DEF("text_editor/open_scripts/script_temperature_hot_color", Color(1, 0, 0, 0.3)); +	EDITOR_DEF("text_editor/open_scripts/script_temperature_cold_color", Color(0, 0, 1, 0.3));  	EDITOR_DEF("text_editor/open_scripts/current_script_background_color", Color(0.81, 0.81, 0.14, 0.63));  	EDITOR_DEF("text_editor/open_scripts/group_help_pages", true);  	EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "text_editor/open_scripts/sort_scripts_by", PROPERTY_HINT_ENUM, "Name,Path")); diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 0bd4d7d6d2..91900465a5 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -531,12 +531,12 @@ static int _get_key_modifier(const String &p_property) {  	return 0;  } -bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hilite_only) { +bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_highlight_only) {  	if (!spatial_editor->is_gizmo_visible())  		return false;  	if (get_selected_count() == 0) { -		if (p_hilite_only) +		if (p_highlight_only)  			spatial_editor->select_gizmo_highlight_axis(-1);  		return false;  	} @@ -569,7 +569,7 @@ bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hil  		if (col_axis != -1) { -			if (p_hilite_only) { +			if (p_highlight_only) {  				spatial_editor->select_gizmo_highlight_axis(col_axis); @@ -609,7 +609,7 @@ bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hil  		if (col_axis != -1) { -			if (p_hilite_only) { +			if (p_highlight_only) {  				spatial_editor->select_gizmo_highlight_axis(col_axis + 3);  			} else { @@ -622,7 +622,7 @@ bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hil  		}  	} -	if (p_hilite_only) +	if (p_highlight_only)  		spatial_editor->select_gizmo_highlight_axis(-1);  	return false; @@ -1766,7 +1766,7 @@ void SpatialEditorViewport::_draw() {  	if (surface->has_focus()) {  		Size2 size = surface->get_size();  		Rect2 r = Rect2(Point2(), size); -		get_stylebox("EditorFocus", "EditorStyles")->draw(surface->get_canvas_item(), r); +		get_stylebox("Focus", "EditorStyles")->draw(surface->get_canvas_item(), r);  	}  	RID ci = surface->get_canvas_item(); diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 3e46724efc..0f07ec4c66 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -142,7 +142,7 @@ private:  	Vector3 _get_screen_to_space(const Vector3 &p_vector3);  	void _select_region(); -	bool _gizmo_select(const Vector2 &p_screenpos, bool p_hilite_only = false); +	bool _gizmo_select(const Vector2 &p_screenpos, bool p_highlight_only = false);  	float get_znear() const;  	float get_zfar() const; diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index e79cbd0d35..0b088f7171 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -37,24 +37,18 @@ void TileSetEditor::edit(const Ref<TileSet> &p_tileset) {  	tileset = p_tileset;  } -void TileSetEditor::_import_scene(Node *scene, Ref<TileSet> p_library, bool p_merge) { - -	if (!p_merge) -		p_library->clear(); +void TileSetEditor::_import_node(Node *p_node, Ref<TileSet> p_library) { -	for (int i = 0; i < scene->get_child_count(); i++) { +	for (int i = 0; i < p_node->get_child_count(); i++) { -		Node *child = scene->get_child(i); +		Node *child = p_node->get_child(i);  		if (!child->cast_to<Sprite>()) {  			if (child->get_child_count() > 0) { -				child = child->get_child(0); -				if (!child->cast_to<Sprite>()) { -					continue; -				} +				_import_node(child, p_library); +			} -			} else -				continue; +			continue;  		}  		Sprite *mi = child->cast_to<Sprite>(); @@ -138,6 +132,14 @@ void TileSetEditor::_import_scene(Node *scene, Ref<TileSet> p_library, bool p_me  	}  } +void TileSetEditor::_import_scene(Node *scene, Ref<TileSet> p_library, bool p_merge) { + +	if (!p_merge) +		p_library->clear(); + +	_import_node(scene, p_library); +} +  void TileSetEditor::_menu_confirm() {  	switch (option) { diff --git a/editor/plugins/tile_set_editor_plugin.h b/editor/plugins/tile_set_editor_plugin.h index 42084c05a3..d04ebc7197 100644 --- a/editor/plugins/tile_set_editor_plugin.h +++ b/editor/plugins/tile_set_editor_plugin.h @@ -59,6 +59,7 @@ class TileSetEditor : public Control {  	void _menu_confirm();  	void _name_dialog_confirm(const String &name); +	static void _import_node(Node *p_node, Ref<TileSet> p_library);  	static void _import_scene(Node *p_scene, Ref<TileSet> p_library, bool p_merge);  protected: diff --git a/editor/project_export.cpp b/editor/project_export.cpp index 40ffb8e246..d58454a223 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -754,6 +754,7 @@ ProjectExportDialog::ProjectExportDialog() {  	settings_vb->add_child(runnable);  	sections = memnew(TabContainer); +	sections->set_tab_align(TabContainer::ALIGN_LEFT);  	settings_vb->add_child(sections);  	sections->set_v_size_flags(SIZE_EXPAND_FILL); diff --git a/editor/project_settings.cpp b/editor/project_settings.cpp index 152e72ca44..c9a6d4df66 100644 --- a/editor/project_settings.cpp +++ b/editor/project_settings.cpp @@ -78,7 +78,7 @@ void ProjectSettings::_notification(int p_what) {  		case NOTIFICATION_ENTER_TREE: {  			globals_editor->edit(GlobalConfig::get_singleton()); -			search_button->set_icon(get_icon("Search", "EditorIcons")); +			search_button->set_icon(get_icon("Zoom", "EditorIcons"));  			clear_button->set_icon(get_icon("Close", "EditorIcons"));  			translation_list->connect("button_pressed", this, "_translation_delete"); @@ -106,6 +106,9 @@ void ProjectSettings::_notification(int p_what) {  		case NOTIFICATION_POPUP_HIDE: {  			EditorSettings::get_singleton()->set("interface/dialogs/project_settings_bounds", get_rect());  		} break; +		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { +			_update_actions(); +		} break;  	}  } @@ -1174,6 +1177,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) {  	data = p_data;  	tab_container = memnew(TabContainer); +	tab_container->set_tab_align(TabContainer::ALIGN_LEFT);  	add_child(tab_container);  	//set_child_rect(tab_container); @@ -1415,6 +1419,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) {  	//translations  	TabContainer *translations = memnew(TabContainer); +	translations->set_tab_align(TabContainer::ALIGN_LEFT);  	translations->set_name(TTR("Localization"));  	tab_container->add_child(translations); diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp index 1bd00f3d1e..2cc7acd260 100644 --- a/editor/property_editor.cpp +++ b/editor/property_editor.cpp @@ -2692,6 +2692,10 @@ void PropertyEditor::_notification(int p_what) {  		changing = false;  	} + +	if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { +		update_tree(); +	}  }  TreeItem *PropertyEditor::get_parent_node(String p_path, HashMap<String, TreeItem *> &item_paths, TreeItem *root) { diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 835243e401..7916b6b63c 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -680,8 +680,6 @@ void SceneTreeDock::_notification(int p_what) {  			button_create_script->set_icon(get_icon("ScriptCreate", "EditorIcons"));  			button_clear_script->set_icon(get_icon("ScriptRemove", "EditorIcons")); -			filter_icon->set_texture(get_icon("Zoom", "EditorIcons")); -  			filter_icon->set_texture(get_icon("Search", "EditorIcons"));  			EditorNode::get_singleton()->get_editor_selection()->connect("selection_changed", this, "_selection_changed"); @@ -1829,6 +1827,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel  	filter->set_h_size_flags(SIZE_EXPAND_FILL);  	filter_hbc->add_child(filter);  	filter_icon = memnew(TextureRect); +	filter_icon->set_custom_minimum_size(Size2(24 * EDSCALE, 0));  	filter_hbc->add_child(filter_icon);  	filter_icon->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);  	filter->connect("text_changed", this, "_filter_changed"); diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index ebf4b1cf3a..a2bb3a0879 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -1019,6 +1019,11 @@ void ScriptEditorDebugger::_notification(int p_what) {  			}  		} break; +		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { +			tabs->add_style_override("panel", editor->get_gui_base()->get_stylebox("DebuggerPanel", "EditorStyles")); +			tabs->add_style_override("tab_fg", editor->get_gui_base()->get_stylebox("DebuggerTabFG", "EditorStyles")); +			tabs->add_style_override("tab_bg", editor->get_gui_base()->get_stylebox("DebuggerTabBG", "EditorStyles")); +		} break;  	}  } @@ -1574,9 +1579,10 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {  	editor = p_editor;  	tabs = memnew(TabContainer); -	tabs->add_style_override("panel", editor->get_gui_base()->get_stylebox("EditorPanelDebugger", "EditorStyles")); -	tabs->add_style_override("tab_fg", editor->get_gui_base()->get_stylebox("EditorTabFGDebugger", "EditorStyles")); -	tabs->add_style_override("tab_bg", editor->get_gui_base()->get_stylebox("EditorTabBGDebugger", "EditorStyles")); +	tabs->set_tab_align(TabContainer::ALIGN_LEFT); +	tabs->add_style_override("panel", editor->get_gui_base()->get_stylebox("DebuggerPanel", "EditorStyles")); +	tabs->add_style_override("tab_fg", editor->get_gui_base()->get_stylebox("DebuggerTabFG", "EditorStyles")); +	tabs->add_style_override("tab_bg", editor->get_gui_base()->get_stylebox("DebuggerTabBG", "EditorStyles"));  	tabs->set_v_size_flags(SIZE_EXPAND_FILL);  	tabs->set_area_as_parent_rect();  	add_child(tabs); @@ -1601,13 +1607,11 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {  		hbc->add_child(memnew(VSeparator));  		step = memnew(Button); -		step->set_flat(true);  		hbc->add_child(step);  		step->set_tooltip(TTR("Step Into"));  		step->connect("pressed", this, "debug_step");  		next = memnew(Button); -		next->set_flat(true);  		hbc->add_child(next);  		next->set_tooltip(TTR("Step Over"));  		next->connect("pressed", this, "debug_next"); @@ -1615,13 +1619,11 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {  		hbc->add_child(memnew(VSeparator));  		dobreak = memnew(Button); -		dobreak->set_flat(true);  		hbc->add_child(dobreak);  		dobreak->set_tooltip(TTR("Break"));  		dobreak->connect("pressed", this, "debug_break");  		docontinue = memnew(Button); -		docontinue->set_flat(true);  		hbc->add_child(docontinue);  		docontinue->set_tooltip(TTR("Continue"));  		docontinue->connect("pressed", this, "debug_continue"); @@ -1629,13 +1631,11 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {  		//hbc->add_child( memnew( VSeparator) );  		back = memnew(Button); -		back->set_flat(true);  		hbc->add_child(back);  		back->set_tooltip(TTR("Inspect Previous Instance"));  		back->hide();  		forward = memnew(Button); -		forward->set_flat(true);  		hbc->add_child(forward);  		forward->set_tooltip(TTR("Inspect Next Instance"));  		forward->hide(); @@ -1798,7 +1798,6 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {  		vmem_total->set_custom_minimum_size(Size2(100, 1) * EDSCALE);  		vmem_hb->add_child(vmem_total);  		vmem_refresh = memnew(Button); -		vmem_refresh->set_flat(true);  		vmem_hb->add_child(vmem_refresh);  		vmem_vb->add_child(vmem_hb);  		vmem_refresh->connect("pressed", this, "_video_mem_request"); @@ -1831,35 +1830,30 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {  	}  	{ // misc - -		GridContainer *grid_cont = memnew(GridContainer); -		grid_cont->set_h_size_flags(SIZE_EXPAND_FILL); -		grid_cont->set_name(TTR("Misc")); -		grid_cont->set_columns(2); -		tabs->add_child(grid_cont); - -		grid_cont->add_child(memnew(Label(TTR("Clicked Control:")))); +		VBoxContainer *info_left = memnew(VBoxContainer); +		info_left->set_h_size_flags(SIZE_EXPAND_FILL); +		info_left->set_name(TTR("Misc")); +		tabs->add_child(info_left);  		clicked_ctrl = memnew(LineEdit); -		grid_cont->add_child(clicked_ctrl); - -		grid_cont->add_child(memnew(Label(TTR("Clicked Control Type:")))); +		info_left->add_margin_child(TTR("Clicked Control:"), clicked_ctrl);  		clicked_ctrl_type = memnew(LineEdit); -		grid_cont->add_child(clicked_ctrl_type); +		info_left->add_margin_child(TTR("Clicked Control Type:"), clicked_ctrl_type);  		live_edit_root = memnew(LineEdit); -		live_edit_root->set_h_size_flags(SIZE_EXPAND_FILL);  		{ -			grid_cont->add_child(memnew(Label(TTR("Live Edit Root:")))); -  			HBoxContainer *lehb = memnew(HBoxContainer); -			lehb->set_h_size_flags(SIZE_EXPAND_FILL); -			lehb->add_child(live_edit_root); +			Label *l = memnew(Label(TTR("Live Edit Root:"))); +			lehb->add_child(l); +			l->set_h_size_flags(SIZE_EXPAND_FILL);  			le_set = memnew(Button(TTR("Set From Tree")));  			lehb->add_child(le_set);  			le_clear = memnew(Button(TTR("Clear")));  			lehb->add_child(le_clear); -			grid_cont->add_child(lehb); +			info_left->add_child(lehb); +			MarginContainer *mc = memnew(MarginContainer); +			mc->add_child(live_edit_root); +			info_left->add_child(mc);  			le_set->set_disabled(true);  			le_clear->set_disabled(true);  		} diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 8c87857944..16ab431321 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -300,6 +300,7 @@ EditorSettingsDialog::EditorSettingsDialog() {  	set_resizable(true);  	tabs = memnew(TabContainer); +	tabs->set_tab_align(TabContainer::ALIGN_LEFT);  	add_child(tabs);  	//set_child_rect(tabs); diff --git a/methods.py b/methods.py index cad87ad775..40f7deedbc 100644 --- a/methods.py +++ b/methods.py @@ -1623,6 +1623,33 @@ def detect_visual_c_compiler_version(tools_env):          vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index          vc_chosen_compiler_str = "x86_amd64" +    # Newer versions have a different path available +    vc_amd64_compiler_detection_index = tools_env["PATH"].upper().find(tools_env['VCTOOLSINSTALLDIR'].upper() + "BIN\\HOSTX64\\X64;") +    if(vc_amd64_compiler_detection_index > -1): +        vc_chosen_compiler_index = vc_amd64_compiler_detection_index +        vc_chosen_compiler_str = "amd64" + +    vc_amd64_x86_compiler_detection_index = tools_env["PATH"].upper().find(tools_env['VCTOOLSINSTALLDIR'].upper() + "BIN\\HOSTX64\\X86;") +    if(vc_amd64_x86_compiler_detection_index > -1 +       and (vc_chosen_compiler_index == -1 +            or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)): +        vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index +        vc_chosen_compiler_str = "amd64_x86" + +    vc_x86_compiler_detection_index = tools_env["PATH"].upper().find(tools_env['VCTOOLSINSTALLDIR'].upper() + "BIN\\HOSTX86\\X86;") +    if(vc_x86_compiler_detection_index > -1 +       and (vc_chosen_compiler_index == -1 +            or vc_chosen_compiler_index > vc_x86_compiler_detection_index)): +        vc_chosen_compiler_index = vc_x86_compiler_detection_index +        vc_chosen_compiler_str = "x86" + +    vc_x86_amd64_compiler_detection_index = tools_env["PATH"].upper().find(tools_env['VCTOOLSINSTALLDIR'].upper() + "BIN\\HOSTX86\\X64;") +    if(vc_x86_amd64_compiler_detection_index > -1 +       and (vc_chosen_compiler_index == -1 +            or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)): +        vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index +        vc_chosen_compiler_str = "x86_amd64" +      # debug help      # print vc_amd64_compiler_detection_index      # print vc_amd64_x86_compiler_detection_index diff --git a/misc/scripts/svgs_2_pngs.py b/misc/scripts/svgs_2_pngs.py index 0459f63bfa..b24324dcd7 100644 --- a/misc/scripts/svgs_2_pngs.py +++ b/misc/scripts/svgs_2_pngs.py @@ -16,7 +16,7 @@ last_svg_data = None  SCRIPT_FOLDER = dirname(realpath(__file__)) + '/'  theme_dir_base = SCRIPT_FOLDER + '../../scene/resources/default_theme/'  theme_dir_source = theme_dir_base + 'source/' -icons_dir_base = SCRIPT_FOLDER + '../../editor/icons/' +icons_dir_base = SCRIPT_FOLDER + '../editor/icons/'  icons_dir_2x = icons_dir_base + '2x/'  icons_dir_source = icons_dir_base + 'source/' @@ -54,14 +54,14 @@ def export_icons():          out_icon_names = [name_only]  # export to a png with the same file name          theme_out_icon_names = []          # special cases -        if special_icons.get(name_only): +        if special_icons.has_key(name_only):              special_icon = special_icons[name_only]              if type(special_icon) is dict:                  if special_icon.get('avoid_self'):                      out_icon_names = [] -                if special_icon.get('output_names'): +                if special_icon.has_key('output_names'):                      out_icon_names += special_icon['output_names'] -                if special_icon.get('theme_output_names'): +                if special_icon.has_key('theme_output_names'):                      theme_out_icon_names += special_icon['theme_output_names']          source_path = '%s%s.svg' % (svgs_path, name_only) @@ -83,10 +83,10 @@ def export_theme():          out_icon_names = [name_only]  # export to a png with the same file name          # special cases -        if theme_icons.get(name_only): +        if theme_icons.has_key(name_only):              special_icon = theme_icons[name_only]              if type(special_icon) is dict: -                if special_icon.get('output_names'): +                if special_icon.has_key('output_names'):                      out_icon_names += special_icon['output_names']          source_path = '%s%s.svg' % (svgs_path, name_only) diff --git a/modules/gdnative/config.py b/modules/gdnative/config.py index 4f89ca0d4c..9f57b9bb74 100644 --- a/modules/gdnative/config.py +++ b/modules/gdnative/config.py @@ -1,7 +1,7 @@  def can_build(platform): -    return False +    return True  def configure(env): diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h index 27e0c3788b..6716b684a0 100644 --- a/modules/gdnative/gdnative.h +++ b/modules/gdnative/gdnative.h @@ -40,7 +40,7 @@  #include "godot.h" -class GDNativeScriptData; +struct GDNativeScriptData;  class GDNativeLibrary;  struct NativeLibrary { @@ -127,8 +127,6 @@ struct GDNativeScriptData {  	}  }; -class GDNativeLibrary; -  class GDNativeScript : public Script {  	GDCLASS(GDNativeScript, Script); @@ -208,7 +206,7 @@ class GDNativeLibrary : public Resource {  protected:  	friend class GDNativeScript; -	friend class NativeLibrary; +	friend struct NativeLibrary;  	friend class GDNativeReloadNode;  	GDNativeScriptData *get_script_data(const StringName p_name); diff --git a/modules/gdnative/godot.cpp b/modules/gdnative/godot.cpp index bc53eb93f4..4dbb72bba1 100644 --- a/modules/gdnative/godot.cpp +++ b/modules/gdnative/godot.cpp @@ -51,10 +51,8 @@ extern "C" void _basis_api_anchor();  extern "C" void _rect3_api_anchor();  extern "C" void _transform_api_anchor();  extern "C" void _color_api_anchor(); -extern "C" void _image_api_anchor();  extern "C" void _node_path_api_anchor();  extern "C" void _rid_api_anchor(); -extern "C" void _input_event_api_anchor();  extern "C" void _dictionary_api_anchor();  extern "C" void _array_api_anchor();  extern "C" void _pool_arrays_api_anchor(); @@ -73,10 +71,8 @@ void _api_anchor() {  	_basis_api_anchor();  	_transform_api_anchor();  	_color_api_anchor(); -	_image_api_anchor();  	_node_path_api_anchor();  	_rid_api_anchor(); -	_input_event_api_anchor();  	_dictionary_api_anchor();  	_array_api_anchor();  	_pool_arrays_api_anchor(); diff --git a/modules/gdnative/godot.h b/modules/gdnative/godot.h index 7214ce62df..726bde0b65 100644 --- a/modules/gdnative/godot.h +++ b/modules/gdnative/godot.h @@ -139,6 +139,31 @@ typedef float godot_real;  /////// Object (forward declared)  typedef void godot_object; +/////// Brute force forward declarations for the rest +typedef struct godot_variant godot_variant; +typedef struct godot_string godot_string; +typedef struct godot_vector2 godot_vector2; +typedef struct godot_rect2 godot_rect2; +typedef struct godot_vector3 godot_vector3; +typedef struct godot_transform2d godot_transform2d; +typedef struct godot_plane godot_plane; +typedef struct godot_quat godot_quat; +typedef struct godot_rect3 godot_rect3; +typedef struct godot_basis godot_basis; +typedef struct godot_transform godot_transform; +typedef struct godot_color godot_color; +typedef struct godot_node_path godot_node_path; +typedef struct godot_rid godot_rid; +typedef struct godot_dictionary godot_dictionary; +typedef struct godot_array godot_array; +typedef struct godot_pool_byte_array godot_pool_byte_array; +typedef struct godot_pool_int_array godot_pool_int_array; +typedef struct godot_pool_real_array godot_pool_real_array; +typedef struct godot_pool_string_array godot_pool_string_array; +typedef struct godot_pool_vector2_array godot_pool_vector2_array; +typedef struct godot_pool_vector3_array godot_pool_vector3_array; +typedef struct godot_pool_color_array godot_pool_color_array; +  /////// String  #include "godot/godot_string.h" @@ -183,10 +208,6 @@ typedef void godot_object;  #include "godot/godot_color.h" -/////// Image - -#include "godot/godot_image.h" -  /////// NodePath  #include "godot/godot_node_path.h" @@ -195,10 +216,6 @@ typedef void godot_object;  #include "godot/godot_rid.h" -/////// InputEvent - -#include "godot/godot_input_event.h" -  /////// Dictionary  #include "godot/godot_dictionary.h" diff --git a/modules/gdnative/godot/godot_array.cpp b/modules/gdnative/godot/godot_array.cpp index 6c55c5d048..65353c5b0f 100644 --- a/modules/gdnative/godot/godot_array.cpp +++ b/modules/gdnative/godot/godot_array.cpp @@ -139,9 +139,13 @@ void GDAPI godot_array_set(godot_array *p_arr, const godot_int p_idx, const godo  	a->operator[](p_idx) = *val;  } -godot_variant GDAPI *godot_array_get(godot_array *p_arr, const godot_int p_idx) { -	Array *a = (Array *)p_arr; -	return (godot_variant *)&a->operator[](p_idx); +godot_variant GDAPI godot_array_get(const godot_array *p_arr, const godot_int p_idx) { +	godot_variant raw_dest; +	Variant *dest = (Variant *)&raw_dest; +	memnew_placement(dest, Variant); +	const Array *a = (const Array *)p_arr; +	*dest = a->operator[](p_idx); +	return raw_dest;  }  void GDAPI godot_array_append(godot_array *p_arr, const godot_variant *p_value) { @@ -155,25 +159,25 @@ void GDAPI godot_array_clear(godot_array *p_arr) {  	a->clear();  } -godot_int GDAPI godot_array_count(godot_array *p_arr, const godot_variant *p_value) { -	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_value; +godot_int GDAPI godot_array_count(const godot_array *p_arr, const godot_variant *p_value) { +	const Array *a = (const Array *)p_arr; +	const Variant *val = (const Variant *)p_value;  	return a->count(*val);  }  godot_bool GDAPI godot_array_empty(const godot_array *p_arr) { -	Array *a = (Array *)p_arr; +	const Array *a = (const Array *)p_arr;  	return a->empty();  }  void GDAPI godot_array_erase(godot_array *p_arr, const godot_variant *p_value) {  	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_value; +	const Variant *val = (const Variant *)p_value;  	a->erase(*val);  }  godot_variant GDAPI godot_array_front(const godot_array *p_arr) { -	Array *a = (Array *)p_arr; +	const Array *a = (const Array *)p_arr;  	godot_variant v;  	Variant *val = (Variant *)&v;  	memnew_placement(val, Variant); @@ -182,7 +186,7 @@ godot_variant GDAPI godot_array_front(const godot_array *p_arr) {  }  godot_variant GDAPI godot_array_back(const godot_array *p_arr) { -	Array *a = (Array *)p_arr; +	const Array *a = (const Array *)p_arr;  	godot_variant v;  	Variant *val = (Variant *)&v;  	memnew_placement(val, Variant); @@ -191,31 +195,31 @@ godot_variant GDAPI godot_array_back(const godot_array *p_arr) {  }  godot_int GDAPI godot_array_find(const godot_array *p_arr, const godot_variant *p_what, const godot_int p_from) { -	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_what; +	const Array *a = (const Array *)p_arr; +	const Variant *val = (const Variant *)p_what;  	return a->find(*val, p_from);  }  godot_int GDAPI godot_array_find_last(const godot_array *p_arr, const godot_variant *p_what) { -	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_what; +	const Array *a = (const Array *)p_arr; +	const Variant *val = (const Variant *)p_what;  	return a->find_last(*val);  }  godot_bool GDAPI godot_array_has(const godot_array *p_arr, const godot_variant *p_value) { -	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_value; +	const Array *a = (const Array *)p_arr; +	const Variant *val = (const Variant *)p_value;  	return a->has(*val);  }  uint32_t GDAPI godot_array_hash(const godot_array *p_arr) { -	Array *a = (Array *)p_arr; +	const Array *a = (const Array *)p_arr;  	return a->hash();  }  void GDAPI godot_array_insert(godot_array *p_arr, const godot_int p_pos, const godot_variant *p_value) {  	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_value; +	const Variant *val = (const Variant *)p_value;  	a->insert(p_pos, *val);  } @@ -224,11 +228,6 @@ void GDAPI godot_array_invert(godot_array *p_arr) {  	a->invert();  } -godot_bool GDAPI godot_array_is_shared(const godot_array *p_arr) { -	Array *a = (Array *)p_arr; -	return false; // @Todo how do I do it? -} -  godot_variant GDAPI godot_array_pop_back(godot_array *p_arr) {  	Array *a = (Array *)p_arr;  	godot_variant v; @@ -249,13 +248,13 @@ godot_variant GDAPI godot_array_pop_front(godot_array *p_arr) {  void GDAPI godot_array_push_back(godot_array *p_arr, const godot_variant *p_value) {  	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_value; +	const Variant *val = (const Variant *)p_value;  	a->push_back(*val);  }  void GDAPI godot_array_push_front(godot_array *p_arr, const godot_variant *p_value) {  	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_value; +	const Variant *val = (const Variant *)p_value;  	a->push_front(*val);  } @@ -270,13 +269,13 @@ void GDAPI godot_array_resize(godot_array *p_arr, const godot_int p_size) {  }  godot_int GDAPI godot_array_rfind(const godot_array *p_arr, const godot_variant *p_what, const godot_int p_from) { -	Array *a = (Array *)p_arr; -	Variant *val = (Variant *)p_what; +	const Array *a = (const Array *)p_arr; +	const Variant *val = (const Variant *)p_what;  	return a->rfind(*val, p_from);  }  godot_int GDAPI godot_array_size(const godot_array *p_arr) { -	Array *a = (Array *)p_arr; +	const Array *a = (const Array *)p_arr;  	return a->size();  } @@ -287,7 +286,7 @@ void GDAPI godot_array_sort(godot_array *p_arr) {  void GDAPI godot_array_sort_custom(godot_array *p_arr, godot_object *p_obj, const godot_string *p_func) {  	Array *a = (Array *)p_arr; -	String *func = (String *)p_func; +	const String *func = (const String *)p_func;  	a->sort_custom((Object *)p_obj, *func);  } diff --git a/modules/gdnative/godot/godot_array.h b/modules/gdnative/godot/godot_array.h index b92ebb834f..29a76304d0 100644 --- a/modules/gdnative/godot/godot_array.h +++ b/modules/gdnative/godot/godot_array.h @@ -43,11 +43,11 @@ typedef struct godot_array {  } godot_array;  #endif -#include "../godot.h" -  #include "godot_pool_arrays.h"  #include "godot_variant.h" +#include "../godot.h" +  void GDAPI godot_array_new(godot_array *p_arr);  void GDAPI godot_array_new_pool_color_array(godot_array *p_arr, const godot_pool_color_array *p_pca);  void GDAPI godot_array_new_pool_vector3_array(godot_array *p_arr, const godot_pool_vector3_array *p_pv3a); @@ -59,13 +59,13 @@ void GDAPI godot_array_new_pool_byte_array(godot_array *p_arr, const godot_pool_  void GDAPI godot_array_set(godot_array *p_arr, const godot_int p_idx, const godot_variant *p_value); -godot_variant GDAPI *godot_array_get(godot_array *p_arr, const godot_int p_idx); +godot_variant GDAPI godot_array_get(const godot_array *p_arr, const godot_int p_idx);  void GDAPI godot_array_append(godot_array *p_arr, const godot_variant *p_value);  void GDAPI godot_array_clear(godot_array *p_arr); -godot_int GDAPI godot_array_count(godot_array *p_arr, const godot_variant *p_value); +godot_int GDAPI godot_array_count(const godot_array *p_arr, const godot_variant *p_value);  godot_bool GDAPI godot_array_empty(const godot_array *p_arr); @@ -87,8 +87,6 @@ void GDAPI godot_array_insert(godot_array *p_arr, const godot_int p_pos, const g  void GDAPI godot_array_invert(godot_array *p_arr); -godot_bool GDAPI godot_array_is_shared(const godot_array *p_arr); -  godot_variant GDAPI godot_array_pop_back(godot_array *p_arr);  godot_variant GDAPI godot_array_pop_front(godot_array *p_arr); diff --git a/modules/gdnative/godot/godot_basis.cpp b/modules/gdnative/godot/godot_basis.cpp index 474cd3d448..46464932c5 100644 --- a/modules/gdnative/godot/godot_basis.cpp +++ b/modules/gdnative/godot/godot_basis.cpp @@ -28,188 +28,245 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_basis.h" +#include "core/variant.h" -#include "math/matrix3.h" +#include "core/math/matrix3.h"  #ifdef __cplusplus  extern "C" {  #endif -void _basis_api_anchor() { +void _basis_api_anchor() {} + +void GDAPI godot_basis_new_with_rows(godot_basis *r_dest, const godot_vector3 *p_x_axis, const godot_vector3 *p_y_axis, const godot_vector3 *p_z_axis) { +	const Vector3 *x_axis = (const Vector3 *)p_x_axis; +	const Vector3 *y_axis = (const Vector3 *)p_y_axis; +	const Vector3 *z_axis = (const Vector3 *)p_z_axis; +	Basis *dest = (Basis *)r_dest; +	*dest = Basis(*x_axis, *y_axis, *z_axis);  } -void GDAPI godot_basis_new(godot_basis *p_v) { -	Basis *v = (Basis *)p_v; -	*v = Basis(); +void GDAPI godot_basis_new_with_axis_and_angle(godot_basis *r_dest, const godot_vector3 *p_axis, const godot_real p_phi) { +	const Vector3 *axis = (const Vector3 *)p_axis; +	Basis *dest = (Basis *)r_dest; +	*dest = Basis(*axis, p_phi);  } -void GDAPI godot_basis_new_with_euler_quat(godot_basis *p_v, const godot_quat *p_euler) { -	Basis *v = (Basis *)p_v; -	Quat *euler = (Quat *)p_euler; -	*v = Basis(*euler); +void GDAPI godot_basis_new_with_euler(godot_basis *r_dest, const godot_vector3 *p_euler) { +	const Vector3 *euler = (const Vector3 *)p_euler; +	Basis *dest = (Basis *)r_dest; +	*dest = Basis(*euler);  } -void GDAPI godot_basis_new_with_euler(godot_basis *p_v, const godot_vector3 p_euler) { -	Basis *v = (Basis *)p_v; -	Vector3 *euler = (Vector3 *)&p_euler; -	*v = Basis(*euler); +godot_string GDAPI godot_basis_as_string(const godot_basis *p_self) { +	godot_string ret; +	const Basis *self = (const Basis *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -void GDAPI godot_basis_new_with_axis_and_angle(godot_basis *p_v, const godot_vector3 p_axis, const godot_real p_phi) { -	Basis *v = (Basis *)p_v; -	const Vector3 *axis = (Vector3 *)&p_axis; -	*v = Basis(*axis, p_phi); +godot_basis GDAPI godot_basis_inverse(const godot_basis *p_self) { +	godot_basis dest; +	const Basis *self = (const Basis *)p_self; +	*((Basis *)&dest) = self->inverse(); +	return dest;  } -void GDAPI godot_basis_new_with_rows(godot_basis *p_v, const godot_vector3 p_row0, const godot_vector3 p_row1, const godot_vector3 p_row2) { -	Basis *v = (Basis *)p_v; -	const Vector3 *row0 = (Vector3 *)&p_row0; -	const Vector3 *row1 = (Vector3 *)&p_row1; -	const Vector3 *row2 = (Vector3 *)&p_row2; -	*v = Basis(*row0, *row1, *row2); +godot_basis GDAPI godot_basis_transposed(const godot_basis *p_self) { +	godot_basis dest; +	const Basis *self = (const Basis *)p_self; +	*((Basis *)&dest) = self->transposed(); +	return dest;  } -godot_quat GDAPI godot_basis_as_quat(const godot_basis *p_v) { -	const Basis *v = (const Basis *)p_v; -	godot_quat quat; -	Quat *p_quat = (Quat *)&quat; -	*p_quat = v->operator Quat(); -	return quat; +godot_basis GDAPI godot_basis_orthonormalized(const godot_basis *p_self) { +	godot_basis dest; +	const Basis *self = (const Basis *)p_self; +	*((Basis *)&dest) = self->orthonormalized(); +	return dest;  } -/* - * p_elements is a pointer to an array of 3 (!!) vector3 - */ -void GDAPI godot_basis_get_elements(godot_basis *p_v, godot_vector3 *p_elements) { -	Basis *v = (Basis *)p_v; -	Vector3 *elements = (Vector3 *)p_elements; -	elements[0] = v->elements[0]; -	elements[1] = v->elements[1]; -	elements[2] = v->elements[2]; +godot_real GDAPI godot_basis_determinant(const godot_basis *p_self) { +	const Basis *self = (const Basis *)p_self; +	return self->determinant();  } -godot_vector3 GDAPI godot_basis_get_axis(const godot_basis *p_v, const godot_int p_axis) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Basis *v = (Basis *)p_v; -	*d = v->get_axis(p_axis); +godot_basis GDAPI godot_basis_rotated(const godot_basis *p_self, const godot_vector3 *p_axis, const godot_real p_phi) { +	godot_basis dest; +	const Basis *self = (const Basis *)p_self; +	const Vector3 *axis = (const Vector3 *)p_axis; +	*((Basis *)&dest) = self->rotated(*axis, p_phi);  	return dest;  } -void GDAPI godot_basis_set_axis(godot_basis *p_v, const godot_int p_axis, const godot_vector3 p_value) { -	Basis *v = (Basis *)p_v; -	const Vector3 *value = (Vector3 *)&p_value; -	v->set_axis(p_axis, *value); +godot_basis GDAPI godot_basis_scaled(const godot_basis *p_self, const godot_vector3 *p_scale) { +	godot_basis dest; +	const Basis *self = (const Basis *)p_self; +	const Vector3 *scale = (const Vector3 *)p_scale; +	*((Basis *)&dest) = self->scaled(*scale); +	return dest;  } -godot_vector3 GDAPI godot_basis_get_row(const godot_basis *p_v, const godot_int p_row) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Basis *v = (Basis *)p_v; -	*d = v->get_row(p_row); -	return dest; +void GDAPI godot_basis_set_scale(godot_basis *p_self, const godot_vector3 *p_scale) { +	Basis *self = (Basis *)p_self; +	const Vector3 *scale = (const Vector3 *)p_scale; +	self->set_scale(*scale);  } -void GDAPI godot_basis_set_row(godot_basis *p_v, const godot_int p_row, const godot_vector3 p_value) { -	Basis *v = (Basis *)p_v; -	const Vector3 *value = (Vector3 *)&p_value; -	v->set_row(p_row, *value); +void GDAPI godot_basis_set_rotation_euler(godot_basis *p_self, const godot_vector3 *p_euler) { +	Basis *self = (Basis *)p_self; +	const Vector3 *euler = (const Vector3 *)p_euler; +	self->set_rotation_euler(*euler);  } -godot_real godot_basis_determinant(const godot_basis *p_v) { -	Basis *v = (Basis *)p_v; -	return v->determinant(); +void GDAPI godot_basis_set_rotation_axis_angle(godot_basis *p_self, const godot_vector3 *p_axis, const godot_real p_angle) { +	Basis *self = (Basis *)p_self; +	const Vector3 *axis = (const Vector3 *)p_axis; +	self->set_rotation_axis_angle(*axis, p_angle);  } -godot_vector3 godot_basis_get_euler(const godot_basis *p_v) { +godot_vector3 GDAPI godot_basis_get_scale(const godot_basis *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Basis *v = (Basis *)p_v; -	*d = v->get_euler(); +	const Basis *self = (const Basis *)p_self; +	*((Vector3 *)&dest) = self->get_scale();  	return dest;  } -godot_int godot_basis_get_orthogonal_index(const godot_basis *p_v) { -	const Basis *v = (Basis *)p_v; -	return v->get_orthogonal_index(); -} - -godot_vector3 godot_basis_get_scale(const godot_basis *p_v) { +godot_vector3 GDAPI godot_basis_get_euler(const godot_basis *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Basis *v = (Basis *)p_v; -	*d = v->get_scale(); +	const Basis *self = (const Basis *)p_self; +	*((Vector3 *)&dest) = self->get_euler();  	return dest;  } -void godot_basis_inverse(godot_basis *p_dest, const godot_basis *p_v) { -	Basis *d = (Basis *)p_dest; -	const Basis *v = (Basis *)p_v; -	*d = v->inverse(); +godot_real GDAPI godot_basis_tdotx(const godot_basis *p_self, const godot_vector3 *p_with) { +	const Basis *self = (const Basis *)p_self; +	const Vector3 *with = (const Vector3 *)p_with; +	return self->tdotx(*with); +} + +godot_real GDAPI godot_basis_tdoty(const godot_basis *p_self, const godot_vector3 *p_with) { +	const Basis *self = (const Basis *)p_self; +	const Vector3 *with = (const Vector3 *)p_with; +	return self->tdoty(*with);  } -void godot_basis_orthonormalized(godot_basis *p_dest, const godot_basis *p_v) { -	Basis *d = (Basis *)p_dest; -	const Basis *v = (Basis *)p_v; -	*d = v->orthonormalized(); +godot_real GDAPI godot_basis_tdotz(const godot_basis *p_self, const godot_vector3 *p_with) { +	const Basis *self = (const Basis *)p_self; +	const Vector3 *with = (const Vector3 *)p_with; +	return self->tdotz(*with);  } -void godot_basis_rotated(godot_basis *p_dest, const godot_basis *p_v, const godot_vector3 p_axis, const godot_real p_phi) { -	Basis *d = (Basis *)p_dest; -	const Basis *v = (Basis *)p_v; -	const Vector3 *axis = (Vector3 *)&p_axis; -	*d = v->rotated(*axis, p_phi); +godot_vector3 GDAPI godot_basis_xform(const godot_basis *p_self, const godot_vector3 *p_v) { +	godot_vector3 dest; +	const Basis *self = (const Basis *)p_self; +	const Vector3 *v = (const Vector3 *)p_v; +	*((Vector3 *)&dest) = self->xform(*v); +	return dest;  } -void godot_basis_scaled(godot_basis *p_dest, const godot_basis *p_v, const godot_vector3 p_scale) { -	Basis *d = (Basis *)p_dest; -	const Basis *v = (Basis *)p_v; -	const Vector3 *scale = (Vector3 *)&p_scale; -	*d = v->scaled(*scale); +godot_vector3 GDAPI godot_basis_xform_inv(const godot_basis *p_self, const godot_vector3 *p_v) { +	godot_vector3 dest; +	const Basis *self = (const Basis *)p_self; +	const Vector3 *v = (const Vector3 *)p_v; +	*((Vector3 *)&dest) = self->xform_inv(*v); +	return dest;  } -godot_real godot_basis_tdotx(const godot_basis *p_v, const godot_vector3 p_with) { -	const Basis *v = (Basis *)p_v; -	const Vector3 *with = (Vector3 *)&p_with; -	return v->tdotx(*with); +godot_int GDAPI godot_basis_get_orthogonal_index(const godot_basis *p_self) { +	const Basis *self = (const Basis *)p_self; +	return self->get_orthogonal_index();  } -godot_real godot_basis_tdoty(const godot_basis *p_v, const godot_vector3 p_with) { -	const Basis *v = (Basis *)p_v; -	const Vector3 *with = (Vector3 *)&p_with; -	return v->tdoty(*with); +void GDAPI godot_basis_new(godot_basis *r_dest) { +	Basis *dest = (Basis *)r_dest; +	*dest = Basis();  } -godot_real godot_basis_tdotz(const godot_basis *p_v, const godot_vector3 p_with) { -	const Basis *v = (Basis *)p_v; -	const Vector3 *with = (Vector3 *)&p_with; -	return v->tdotz(*with); +void GDAPI godot_basis_new_with_euler_quat(godot_basis *r_dest, const godot_quat *p_euler) { +	Basis *dest = (Basis *)r_dest; +	const Quat *euler = (const Quat *)p_euler; +	*dest = Basis(*euler);  } -void godot_basis_transposed(godot_basis *p_dest, const godot_basis *p_v) { -	Basis *d = (Basis *)p_dest; -	const Basis *v = (Basis *)p_v; -	*d = v->transposed(); +// p_elements is a pointer to an array of 3 (!!) vector3 +void GDAPI godot_basis_get_elements(godot_basis *p_self, godot_vector3 *p_elements) { +	const Basis *self = (const Basis *)p_self; +	Vector3 *elements = (Vector3 *)p_elements; +	elements[0] = self->elements[0]; +	elements[1] = self->elements[1]; +	elements[2] = self->elements[2];  } -godot_vector3 godot_basis_xform(const godot_basis *p_v, const godot_vector3 p_vect) { +godot_vector3 GDAPI godot_basis_get_axis(const godot_basis *p_self, const godot_int p_axis) {  	godot_vector3 dest;  	Vector3 *d = (Vector3 *)&dest; -	const Basis *v = (Basis *)p_v; -	const Vector3 *vect = (Vector3 *)&p_vect; -	*d = v->xform(*vect); +	const Basis *self = (const Basis *)p_self; +	*d = self->get_axis(p_axis);  	return dest;  } -godot_vector3 godot_basis_xform_inv(const godot_basis *p_v, const godot_vector3 p_vect) { +void GDAPI godot_basis_set_axis(godot_basis *p_self, const godot_int p_axis, const godot_vector3 *p_value) { +	Basis *self = (Basis *)p_self; +	const Vector3 *value = (const Vector3 *)p_value; +	self->set_axis(p_axis, *value); +} + +godot_vector3 GDAPI godot_basis_get_row(const godot_basis *p_self, const godot_int p_row) {  	godot_vector3 dest;  	Vector3 *d = (Vector3 *)&dest; -	const Basis *v = (Basis *)p_v; -	const Vector3 *vect = (Vector3 *)&p_vect; -	*d = v->xform_inv(*vect); +	const Basis *self = (const Basis *)p_self; +	*d = self->get_row(p_row);  	return dest;  } +void GDAPI godot_basis_set_row(godot_basis *p_self, const godot_int p_row, const godot_vector3 *p_value) { +	Basis *self = (Basis *)p_self; +	const Vector3 *value = (const Vector3 *)p_value; +	self->set_row(p_row, *value); +} + +godot_bool GDAPI godot_basis_operator_equal(const godot_basis *p_self, const godot_basis *p_b) { +	const Basis *self = (const Basis *)p_self; +	const Basis *b = (const Basis *)p_b; +	return *self == *b; +} + +godot_basis GDAPI godot_basis_operator_add(const godot_basis *p_self, const godot_basis *p_b) { +	godot_basis raw_dest; +	Basis *dest = (Basis *)&raw_dest; +	const Basis *self = (const Basis *)p_self; +	const Basis *b = (const Basis *)p_b; +	*dest = *self + *b; +	return raw_dest; +} + +godot_basis GDAPI godot_basis_operator_substract(const godot_basis *p_self, const godot_basis *p_b) { +	godot_basis raw_dest; +	Basis *dest = (Basis *)&raw_dest; +	const Basis *self = (const Basis *)p_self; +	const Basis *b = (const Basis *)p_b; +	*dest = *self - *b; +	return raw_dest; +} + +godot_basis GDAPI godot_basis_operator_multiply_vector(const godot_basis *p_self, const godot_basis *p_b) { +	godot_basis raw_dest; +	Basis *dest = (Basis *)&raw_dest; +	const Basis *self = (const Basis *)p_self; +	const Basis *b = (const Basis *)p_b; +	*dest = *self * *b; +	return raw_dest; +} + +godot_basis GDAPI godot_basis_operator_multiply_scalar(const godot_basis *p_self, const godot_real p_b) { +	godot_basis raw_dest; +	Basis *dest = (Basis *)&raw_dest; +	const Basis *self = (const Basis *)p_self; +	*dest = *self * p_b; +	return raw_dest; +} +  #ifdef __cplusplus  }  #endif diff --git a/modules/gdnative/godot/godot_basis.h b/modules/gdnative/godot/godot_basis.h index 2803396997..a096a8cc08 100644 --- a/modules/gdnative/godot/godot_basis.h +++ b/modules/gdnative/godot/godot_basis.h @@ -37,45 +37,79 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_BASIS_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_BASIS_TYPE_DEFINED  typedef struct godot_basis {  	uint8_t _dont_touch_that[36];  } godot_basis;  #endif  #include "../godot.h" -#include "godot_quat.h" - -void GDAPI godot_basis_new(godot_basis *p_v); -void GDAPI godot_basis_new_with_euler_quat(godot_basis *p_v, const godot_quat *p_euler); -void GDAPI godot_basis_new_with_euler(godot_basis *p_v, const godot_vector3 p_euler); -void GDAPI godot_basis_new_with_axis_and_angle(godot_basis *p_v, const godot_vector3 p_axis, const godot_real p_phi); -void GDAPI godot_basis_new_with_rows(godot_basis *p_v, const godot_vector3 p_row0, const godot_vector3 p_row1, const godot_vector3 p_row2); - -godot_quat GDAPI godot_basis_as_quat(const godot_basis *p_v); - -/* - * p_elements is a pointer to an array of 3 (!!) vector3 - */ -void GDAPI godot_basis_get_elements(godot_basis *p_v, godot_vector3 *p_elements); -godot_vector3 GDAPI godot_basis_get_axis(const godot_basis *p_v, const godot_int p_axis); -void GDAPI godot_basis_set_axis(godot_basis *p_v, const godot_int p_axis, const godot_vector3 p_value); -godot_vector3 GDAPI godot_basis_get_row(const godot_basis *p_v, const godot_int p_row); -void GDAPI godot_basis_set_row(godot_basis *p_v, const godot_int p_row, const godot_vector3 p_value); - -godot_real godot_basis_determinant(const godot_basis *p_v); -godot_vector3 godot_basis_get_euler(const godot_basis *p_v); -godot_int godot_basis_get_orthogonal_index(const godot_basis *p_v); -godot_vector3 godot_basis_get_scale(const godot_basis *p_v); -void godot_basis_inverse(godot_basis *p_dest, const godot_basis *p_v); -void godot_basis_orthonormalized(godot_basis *p_dest, const godot_basis *p_v); -void godot_basis_rotated(godot_basis *p_dest, const godot_basis *p_v, const godot_vector3 p_axis, const godot_real p_phi); -void godot_basis_scaled(godot_basis *p_dest, const godot_basis *p_v, const godot_vector3 p_scale); -godot_real godot_basis_tdotx(const godot_basis *p_v, const godot_vector3 p_with); -godot_real godot_basis_tdoty(const godot_basis *p_v, const godot_vector3 p_with); -godot_real godot_basis_tdotz(const godot_basis *p_v, const godot_vector3 p_with); -void godot_basis_transposed(godot_basis *p_dest, const godot_basis *p_v); -godot_vector3 godot_basis_xform(const godot_basis *p_v, const godot_vector3 p_vect); -godot_vector3 godot_basis_xform_inv(const godot_basis *p_v, const godot_vector3 p_vect); +#include "godot_vector3.h" + +void GDAPI godot_basis_new_with_rows(godot_basis *r_dest, const godot_vector3 *p_x_axis, const godot_vector3 *p_y_axis, const godot_vector3 *p_z_axis); +void GDAPI godot_basis_new_with_axis_and_angle(godot_basis *r_dest, const godot_vector3 *p_axis, const godot_real p_phi); +void GDAPI godot_basis_new_with_euler(godot_basis *r_dest, const godot_vector3 *p_euler); + +godot_string GDAPI godot_basis_as_string(const godot_basis *p_self); + +godot_basis GDAPI godot_basis_inverse(const godot_basis *p_self); + +godot_basis GDAPI godot_basis_transposed(const godot_basis *p_self); + +godot_basis GDAPI godot_basis_orthonormalized(const godot_basis *p_self); + +godot_real GDAPI godot_basis_determinant(const godot_basis *p_self); + +godot_basis GDAPI godot_basis_rotated(const godot_basis *p_self, const godot_vector3 *p_axis, const godot_real p_phi); + +godot_basis GDAPI godot_basis_scaled(const godot_basis *p_self, const godot_vector3 *p_scale); + +void GDAPI godot_basis_set_scale(godot_basis *p_self, const godot_vector3 *p_scale); + +void GDAPI godot_basis_set_rotation_euler(godot_basis *p_self, const godot_vector3 *p_euler); + +void GDAPI godot_basis_set_rotation_axis_angle(godot_basis *p_self, const godot_vector3 *p_axis, const godot_real p_angle); + +godot_vector3 GDAPI godot_basis_get_scale(const godot_basis *p_self); + +godot_vector3 GDAPI godot_basis_get_euler(const godot_basis *p_self); + +godot_real GDAPI godot_basis_tdotx(const godot_basis *p_self, const godot_vector3 *p_with); + +godot_real GDAPI godot_basis_tdoty(const godot_basis *p_self, const godot_vector3 *p_with); + +godot_real GDAPI godot_basis_tdotz(const godot_basis *p_self, const godot_vector3 *p_with); + +godot_vector3 GDAPI godot_basis_xform(const godot_basis *p_self, const godot_vector3 *p_v); + +godot_vector3 GDAPI godot_basis_xform_inv(const godot_basis *p_self, const godot_vector3 *p_v); + +godot_int GDAPI godot_basis_get_orthogonal_index(const godot_basis *p_self); + +void GDAPI godot_basis_new(godot_basis *r_dest); + +void GDAPI godot_basis_new_with_euler_quat(godot_basis *r_dest, const godot_quat *p_euler); + +// p_elements is a pointer to an array of 3 (!!) vector3 +void GDAPI godot_basis_get_elements(godot_basis *p_self, godot_vector3 *p_elements); + +godot_vector3 GDAPI godot_basis_get_axis(const godot_basis *p_self, const godot_int p_axis); + +void GDAPI godot_basis_set_axis(godot_basis *p_self, const godot_int p_axis, const godot_vector3 *p_value); + +godot_vector3 GDAPI godot_basis_get_row(const godot_basis *p_self, const godot_int p_row); + +void GDAPI godot_basis_set_row(godot_basis *p_self, const godot_int p_row, const godot_vector3 *p_value); + +godot_bool GDAPI godot_basis_operator_equal(const godot_basis *p_self, const godot_basis *p_b); + +godot_basis GDAPI godot_basis_operator_add(const godot_basis *p_self, const godot_basis *p_b); + +godot_basis GDAPI godot_basis_operator_substract(const godot_basis *p_self, const godot_basis *p_b); + +godot_basis GDAPI godot_basis_operator_multiply_vector(const godot_basis *p_self, const godot_basis *p_b); + +godot_basis GDAPI godot_basis_operator_multiply_scalar(const godot_basis *p_self, const godot_real p_b);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_color.cpp b/modules/gdnative/godot/godot_color.cpp index 203ce672fa..0417a828ab 100644 --- a/modules/gdnative/godot/godot_color.cpp +++ b/modules/gdnative/godot/godot_color.cpp @@ -28,34 +28,98 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_color.h" +#include "core/variant.h" -#include "color.h" +#include "core/color.h"  #ifdef __cplusplus  extern "C" {  #endif -void _color_api_anchor() { +void _color_api_anchor() {} + +void GDAPI godot_color_new_rgba(godot_color *r_dest, const godot_real p_r, const godot_real p_g, const godot_real p_b, const godot_real p_a) { + +	Color *dest = (Color *)r_dest; +	*dest = Color(p_r, p_g, p_b, p_a); +} + +void GDAPI godot_color_new_rgb(godot_color *r_dest, const godot_real p_r, const godot_real p_g, const godot_real p_b) { + +	Color *dest = (Color *)r_dest; +	*dest = Color(p_r, p_g, p_b); +} + +godot_string GDAPI godot_color_as_string(const godot_color *p_self) { +	godot_string ret; +	const Color *self = (const Color *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret; +} + +godot_int GDAPI godot_color_to_32(const godot_color *p_self) { +	const Color *self = (const Color *)p_self; +	return self->to_32(); +} + +godot_int GDAPI godot_color_to_ARGB32(const godot_color *p_self) { +	const Color *self = (const Color *)p_self; +	return self->to_ARGB32(); +} + +godot_real GDAPI godot_color_gray(const godot_color *p_self) { +	const Color *self = (const Color *)p_self; +	return self->gray(); +} + +godot_color GDAPI godot_color_inverted(const godot_color *p_self) { +	godot_color dest; +	const Color *self = (const Color *)p_self; +	*((Color *)&dest) = self->inverted(); +	return dest;  } -void GDAPI godot_color_new(godot_color *p_color) { -	Color *color = (Color *)p_color; -	*color = Color(); +godot_color GDAPI godot_color_contrasted(const godot_color *p_self) { +	godot_color dest; +	const Color *self = (const Color *)p_self; +	*((Color *)&dest) = self->contrasted(); +	return dest;  } -void GDAPI godot_color_new_rgba(godot_color *p_color, const godot_real r, const godot_real g, const godot_real b, const godot_real a) { -	Color *color = (Color *)p_color; -	*color = Color(r, g, b, a); +godot_color GDAPI godot_color_linear_interpolate(const godot_color *p_self, const godot_color *p_b, const godot_real p_t) { +	godot_color dest; +	const Color *self = (const Color *)p_self; +	const Color *b = (const Color *)p_b; +	*((Color *)&dest) = self->linear_interpolate(*b, p_t); +	return dest; +} + +godot_color GDAPI godot_color_blend(const godot_color *p_self, const godot_color *p_over) { +	godot_color dest; +	const Color *self = (const Color *)p_self; +	const Color *over = (const Color *)p_over; +	*((Color *)&dest) = self->blend(*over); +	return dest; +} + +godot_string GDAPI godot_color_to_html(const godot_color *p_self, const godot_bool p_with_alpha) { +	godot_string dest; +	const Color *self = (const Color *)p_self; + +	*((String *)&dest) = self->to_html(p_with_alpha); +	return dest;  } -uint32_t GDAPI godot_color_get_32(const godot_color *p_color) { -	const Color *color = (const Color *)p_color; -	return color->to_32(); +godot_bool GDAPI godot_color_operator_equal(const godot_color *p_self, const godot_color *p_b) { +	const Color *self = (const Color *)p_self; +	const Color *b = (const Color *)p_b; +	return *self == *b;  } -float GDAPI *godot_color_index(godot_color *p_color, const godot_int idx) { -	Color *color = (Color *)p_color; -	return &color->operator[](idx); +godot_bool GDAPI godot_color_operator_less(const godot_color *p_self, const godot_color *p_b) { +	const Color *self = (const Color *)p_self; +	const Color *b = (const Color *)p_b; +	return *self < *b;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_color.h b/modules/gdnative/godot/godot_color.h index b99a062a66..8588c997ea 100644 --- a/modules/gdnative/godot/godot_color.h +++ b/modules/gdnative/godot/godot_color.h @@ -37,19 +37,39 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_COLOR_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_COLOR_TYPE_DEFINED  typedef struct godot_color {  	uint8_t _dont_touch_that[16];  } godot_color;  #endif  #include "../godot.h" +#include "godot_string.h" -void GDAPI godot_color_new(godot_color *p_color); -void GDAPI godot_color_new_rgba(godot_color *p_color, const godot_real r, const godot_real g, const godot_real b, const godot_real a); +void GDAPI godot_color_new_rgba(godot_color *r_dest, const godot_real p_r, const godot_real p_g, const godot_real p_b, const godot_real p_a); +void GDAPI godot_color_new_rgb(godot_color *r_dest, const godot_real p_r, const godot_real p_g, const godot_real p_b); -uint32_t GDAPI godot_color_get_32(const godot_color *p_color); +godot_string GDAPI godot_color_as_string(const godot_color *p_self); -float GDAPI *godot_color_index(godot_color *p_color, const godot_int idx); +godot_int GDAPI godot_color_to_32(const godot_color *p_self); + +godot_int GDAPI godot_color_to_ARGB32(const godot_color *p_self); + +godot_real GDAPI godot_color_gray(const godot_color *p_self); + +godot_color GDAPI godot_color_inverted(const godot_color *p_self); + +godot_color GDAPI godot_color_contrasted(const godot_color *p_self); + +godot_color GDAPI godot_color_linear_interpolate(const godot_color *p_self, const godot_color *p_b, const godot_real p_t); + +godot_color GDAPI godot_color_blend(const godot_color *p_self, const godot_color *p_over); + +godot_string GDAPI godot_color_to_html(const godot_color *p_self, const godot_bool p_with_alpha); + +godot_bool GDAPI godot_color_operator_equal(const godot_color *p_self, const godot_color *p_b); + +godot_bool GDAPI godot_color_operator_less(const godot_color *p_self, const godot_color *p_b);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_dictionary.cpp b/modules/gdnative/godot/godot_dictionary.cpp index 16d08e58e2..dda245e59e 100644 --- a/modules/gdnative/godot/godot_dictionary.cpp +++ b/modules/gdnative/godot/godot_dictionary.cpp @@ -28,109 +28,100 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_dictionary.h" +#include "core/variant.h"  #include "core/dictionary.h" - -#include "core/os/memory.h" -  #include "core/io/json.h"  #ifdef __cplusplus  extern "C" {  #endif -void _dictionary_api_anchor() { +void _dictionary_api_anchor() {} + +void GDAPI godot_dictionary_new(godot_dictionary *r_dest) { +	Dictionary *dest = (Dictionary *)r_dest; +	memnew_placement(dest, Dictionary);  } -void GDAPI godot_dictionary_new(godot_dictionary *p_dict) { -	Dictionary *dict = (Dictionary *)p_dict; -	memnew_placement(dict, Dictionary); +void GDAPI godot_dictionary_destroy(godot_dictionary *p_self) { +	Dictionary *self = (Dictionary *)p_self; +	self->~Dictionary();  } -void GDAPI godot_dictionary_clear(godot_dictionary *p_dict) { -	Dictionary *dict = (Dictionary *)p_dict; -	dict->clear(); +godot_int GDAPI godot_dictionary_size(const godot_dictionary *p_self) { +	const Dictionary *self = (const Dictionary *)p_self; +	return self->size();  } -godot_bool GDAPI godot_dictionary_empty(const godot_dictionary *p_dict) { -	const Dictionary *dict = (const Dictionary *)p_dict; -	return dict->empty(); +godot_bool GDAPI godot_dictionary_empty(const godot_dictionary *p_self) { +	const Dictionary *self = (const Dictionary *)p_self; +	return self->empty();  } -void GDAPI godot_dictionary_erase(godot_dictionary *p_dict, const godot_variant *p_key) { -	Dictionary *dict = (Dictionary *)p_dict; -	Variant *key = (Variant *)p_key; -	dict->erase(*key); +void GDAPI godot_dictionary_clear(godot_dictionary *p_self) { +	Dictionary *self = (Dictionary *)p_self; +	self->clear();  } -godot_bool GDAPI godot_dictionary_has(const godot_dictionary *p_dict, const godot_variant *p_key) { -	const Dictionary *dict = (const Dictionary *)p_dict; +godot_bool GDAPI godot_dictionary_has(const godot_dictionary *p_self, const godot_variant *p_key) { +	const Dictionary *self = (const Dictionary *)p_self;  	const Variant *key = (const Variant *)p_key; -	return dict->has(*key); +	return self->has(*key);  } -godot_bool GDAPI godot_dictionary_has_all(const godot_dictionary *p_dict, const godot_array *p_keys) { -	const Dictionary *dict = (const Dictionary *)p_dict; +godot_bool GDAPI godot_dictionary_has_all(const godot_dictionary *p_self, const godot_array *p_keys) { +	const Dictionary *self = (const Dictionary *)p_self;  	const Array *keys = (const Array *)p_keys; -	return dict->has_all(*keys); +	return self->has_all(*keys);  } -uint32_t GDAPI godot_dictionary_hash(const godot_dictionary *p_dict) { -	const Dictionary *dict = (const Dictionary *)p_dict; -	return dict->hash(); +void GDAPI godot_dictionary_erase(godot_dictionary *p_self, const godot_variant *p_key) { +	Dictionary *self = (Dictionary *)p_self; +	const Variant *key = (const Variant *)p_key; +	self->erase(*key);  } -godot_array GDAPI godot_dictionary_keys(const godot_dictionary *p_dict) { -	godot_array a; -	godot_array_new(&a); -	const Dictionary *dict = (const Dictionary *)p_dict; -	Array *array = (Array *)&a; -	*array = dict->keys(); -	return a; +godot_int GDAPI godot_dictionary_hash(const godot_dictionary *p_self) { +	const Dictionary *self = (const Dictionary *)p_self; +	return self->hash();  } -godot_int GDAPI godot_dictionary_parse_json(godot_dictionary *p_dict, const godot_string *p_json) { -	Dictionary *dict = (Dictionary *)p_dict; -	const String *json = (const String *)p_json; -	Variant ret; -	int err_line; -	String err_str; -	int err = (int)JSON::parse(*json, ret, err_str, err_line); -	*dict = ret; -	return err; +godot_array GDAPI godot_dictionary_keys(const godot_dictionary *p_self) { +	godot_array dest; +	const Dictionary *self = (const Dictionary *)p_self; +	memnew_placement(&dest, Array(self->keys())); +	return dest;  } -godot_variant GDAPI *godot_dictionary_operator_index(godot_dictionary *p_dict, const godot_variant *p_key) { -	Dictionary *dict = (Dictionary *)p_dict; -	Variant *key = (Variant *)p_key; -	return (godot_variant *)&dict->operator[](*key); +godot_array GDAPI godot_dictionary_values(const godot_dictionary *p_self) { +	godot_array dest; +	const Dictionary *self = (const Dictionary *)p_self; +	memnew_placement(&dest, Array(self->values())); +	return dest;  } -godot_int GDAPI godot_dictionary_size(const godot_dictionary *p_dict) { +godot_variant GDAPI godot_dictionary_operator_index(godot_dictionary *p_dict, const godot_variant *p_key) { +	godot_variant raw_dest; +	Variant *dest = (Variant *)&raw_dest;  	const Dictionary *dict = (const Dictionary *)p_dict; -	return dict->size(); +	const Variant *key = (const Variant *)p_key; +	*dest = dict->operator[](*key); +	return raw_dest;  } -godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_dict) { -	const Dictionary *dict = (const Dictionary *)p_dict; -	godot_string str; -	godot_string_new(&str); -	String *s = (String *)&str; -	*s = JSON::print(Variant(*dict)); -	return str; +godot_bool GDAPI godot_dictionary_operator_equal(const godot_dictionary *p_self, const godot_dictionary *p_b) { +	const Dictionary *self = (const Dictionary *)p_self; +	const Dictionary *b = (const Dictionary *)p_b; +	return *self == *b;  } -godot_array GDAPI godot_dictionary_values(const godot_dictionary *p_dict) { -	godot_array a; -	godot_array_new(&a); +godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_dict) { +	godot_string raw_dest; +	String *dest = (String *)&raw_dest;  	const Dictionary *dict = (const Dictionary *)p_dict; -	Array *array = (Array *)&a; -	*array = dict->values(); -	return a; -} - -void GDAPI godot_dictionary_destroy(godot_dictionary *p_dict) { -	((Dictionary *)p_dict)->~Dictionary(); +	memnew_placement(dest, String(JSON::print(Variant(*dict)))); +	return raw_dest;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_dictionary.h b/modules/gdnative/godot/godot_dictionary.h index 3f7c504880..9f6de77aac 100644 --- a/modules/gdnative/godot/godot_dictionary.h +++ b/modules/gdnative/godot/godot_dictionary.h @@ -36,42 +36,43 @@ extern "C" {  #include <stdint.h> -#ifndef GODOT_CORE_API_GODOT_DICITIONARY_TYPE_DEFINED +#ifndef GODOT_CORE_API_GODOT_DICTIONARY_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_DICTIONARY_TYPE_DEFINED  typedef struct godot_dictionary {  	uint8_t _dont_touch_that[8];  } godot_dictionary;  #endif +#include "../godot.h"  #include "godot_array.h"  #include "godot_variant.h" -void GDAPI godot_dictionary_new(godot_dictionary *p_dict); +void GDAPI godot_dictionary_new(godot_dictionary *r_dest); +void GDAPI godot_dictionary_destroy(godot_dictionary *p_self); -void GDAPI godot_dictionary_clear(godot_dictionary *p_dict); +godot_int GDAPI godot_dictionary_size(const godot_dictionary *p_self); -godot_bool GDAPI godot_dictionary_empty(const godot_dictionary *p_dict); +godot_bool GDAPI godot_dictionary_empty(const godot_dictionary *p_self); -void GDAPI godot_dictionary_erase(godot_dictionary *p_dict, const godot_variant *p_key); +void GDAPI godot_dictionary_clear(godot_dictionary *p_self); -godot_bool GDAPI godot_dictionary_has(const godot_dictionary *p_dict, const godot_variant *p_key); +godot_bool GDAPI godot_dictionary_has(const godot_dictionary *p_self, const godot_variant *p_key); -godot_bool GDAPI godot_dictionary_has_all(const godot_dictionary *p_dict, const godot_array *p_keys); +godot_bool GDAPI godot_dictionary_has_all(const godot_dictionary *p_self, const godot_array *p_keys); -uint32_t GDAPI godot_dictionary_hash(const godot_dictionary *p_dict); +void GDAPI godot_dictionary_erase(godot_dictionary *p_self, const godot_variant *p_key); -godot_array GDAPI godot_dictionary_keys(const godot_dictionary *p_dict); +godot_int GDAPI godot_dictionary_hash(const godot_dictionary *p_self); -godot_int GDAPI godot_dictionary_parse_json(godot_dictionary *p_dict, const godot_string *p_json); +godot_array GDAPI godot_dictionary_keys(const godot_dictionary *p_self); -godot_variant GDAPI *godot_dictionary_operator_index(godot_dictionary *p_dict, const godot_variant *p_key); +godot_array GDAPI godot_dictionary_values(const godot_dictionary *p_self); -godot_int GDAPI godot_dictionary_size(const godot_dictionary *p_dict); +godot_variant GDAPI godot_dictionary_operator_index(godot_dictionary *p_dict, const godot_variant *p_key); -godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_dict); - -godot_array GDAPI godot_dictionary_values(const godot_dictionary *p_dict); +godot_bool GDAPI godot_dictionary_operator_equal(const godot_dictionary *p_self, const godot_dictionary *p_b); -void GDAPI godot_dictionary_destroy(godot_dictionary *p_dict); +godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_dict);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_image.cpp b/modules/gdnative/godot/godot_image.cpp deleted file mode 100644 index ae8290afc2..0000000000 --- a/modules/gdnative/godot/godot_image.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/*************************************************************************/ -/*  godot_image.cpp                                                      */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                    http://www.godotengine.org                         */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ -/*                                                                       */ -/* 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.                */ -/*************************************************************************/ -#include "godot_image.h" - -#include "image.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void _image_api_anchor() { -} - -#define memnew_placement_custom(m_placement, m_class, m_constr) _post_initialize(new (m_placement, sizeof(m_class), "") m_constr) - -void GDAPI godot_image_new(godot_image *p_img) { -	Image *img = (Image *)p_img; -	memnew_placement_custom(img, Image, Image()); -} - -void GDAPI godot_image_new_with_png_jpg(godot_image *p_img, const uint8_t *p_mem_png_jpg, int p_len) { -	Image *img = (Image *)p_img; -	memnew_placement_custom(img, Image, Image(p_mem_png_jpg, p_len)); -} - -void GDAPI godot_image_new_with_xpm(godot_image *p_img, const char **p_xpm) { -	Image *img = (Image *)p_img; -	memnew_placement_custom(img, Image, Image(p_xpm)); -} - -void GDAPI godot_image_new_with_size_format(godot_image *p_img, int p_width, int p_height, bool p_use_mipmaps, godot_image_format p_format) { -	Image *img = (Image *)p_img; -	memnew_placement_custom(img, Image, Image(p_width, p_height, p_use_mipmaps, (Image::Format)p_format)); -} - -void GDAPI godot_image_new_with_size_format_data(godot_image *p_img, int p_width, int p_height, bool p_use_mipmaps, godot_image_format p_format, godot_pool_byte_array *p_data) { -	Image *img = (Image *)p_img; -	PoolVector<uint8_t> *data = (PoolVector<uint8_t> *)p_data; -	memnew_placement_custom(img, Image, Image(p_width, p_height, p_use_mipmaps, (Image::Format)p_format, *data)); -} - -godot_pool_byte_array GDAPI godot_image_get_data(godot_image *p_img) { -	Image *img = (Image *)p_img; -	PoolVector<uint8_t> cpp_data = img->get_data(); -	godot_pool_byte_array *data = (godot_pool_byte_array *)&cpp_data; -	return *data; -} - -godot_error GDAPI godot_image_load(godot_image *p_img, const godot_string *p_path) { -	Image *img = (Image *)p_img; -	String *path = (String *)p_path; -	return (godot_error)img->load(*path); -} - -godot_error GDAPI godot_image_save_png(godot_image *p_img, const godot_string *p_path) { -	Image *img = (Image *)p_img; -	String *path = (String *)p_path; -	return (godot_error)img->save_png(*path); -} - -int GDAPI godot_image_get_width(const godot_image *p_img) { -	Image *img = (Image *)p_img; -	return img->get_width(); -} - -int GDAPI godot_image_get_height(const godot_image *p_img) { -	Image *img = (Image *)p_img; -	return img->get_height(); -} - -godot_bool GDAPI godot_image_has_mipmaps(const godot_image *p_img) { -	Image *img = (Image *)p_img; -	return img->has_mipmaps(); -} - -int GDAPI godot_image_get_mipmap_count(const godot_image *p_img) { -	Image *img = (Image *)p_img; -	return img->get_mipmap_count(); -} - -void GDAPI godot_image_destroy(godot_image *p_img) { -	((Image *)p_img)->~Image(); -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/godot/godot_image.h b/modules/gdnative/godot/godot_image.h deleted file mode 100644 index c43dd45148..0000000000 --- a/modules/gdnative/godot/godot_image.h +++ /dev/null @@ -1,124 +0,0 @@ -/*************************************************************************/ -/*  godot_image.h                                                        */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                    http://www.godotengine.org                         */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ -/*                                                                       */ -/* 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.                */ -/*************************************************************************/ -#ifndef GODOT_IMAGE_H -#define GODOT_IMAGE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -#ifndef GODOT_CORE_API_GODOT_IMAGE_TYPE_DEFINED -typedef struct godot_image { -	uint8_t _dont_touch_that[32]; -} godot_image; -#endif - -#include "godot_pool_arrays.h" - -#include "../godot.h" - -// This is a copypasta of the C++ enum inside the Image class -// There's no neat way of automatically updating the C enum / using the C++ enum directly -// if somebody knows a way feel free to open a PR or open an issue (or ask for Karroffel or bojidar-bg on IRC) - -enum godot_image_format { - -	GODOT_IMAGE_FORMAT_L8, //luminance -	GODOT_IMAGE_FORMAT_LA8, //luminance-alpha -	GODOT_IMAGE_FORMAT_R8, -	GODOT_IMAGE_FORMAT_RG8, -	GODOT_IMAGE_FORMAT_RGB8, -	GODOT_IMAGE_FORMAT_RGBA8, -	GODOT_IMAGE_FORMAT_RGB565, //16 bit -	GODOT_IMAGE_FORMAT_RGBA4444, -	GODOT_IMAGE_FORMAT_RGBA5551, -	GODOT_IMAGE_FORMAT_RF, //float -	GODOT_IMAGE_FORMAT_RGF, -	GODOT_IMAGE_FORMAT_RGBF, -	GODOT_IMAGE_FORMAT_RGBAF, -	GODOT_IMAGE_FORMAT_RH, //half float -	GODOT_IMAGE_FORMAT_RGH, -	GODOT_IMAGE_FORMAT_RGBH, -	GODOT_IMAGE_FORMAT_RGBAH, -	GODOT_IMAGE_FORMAT_DXT1, //s3tc bc1 -	GODOT_IMAGE_FORMAT_DXT3, //bc2 -	GODOT_IMAGE_FORMAT_DXT5, //bc3 -	GODOT_IMAGE_FORMAT_ATI1, //bc4 -	GODOT_IMAGE_FORMAT_ATI2, //bc5 -	GODOT_IMAGE_FORMAT_BPTC_RGBA, //btpc bc6h -	GODOT_IMAGE_FORMAT_BPTC_RGBF, //float / -	GODOT_IMAGE_FORMAT_BPTC_RGBFU, //unsigned float -	GODOT_IMAGE_FORMAT_PVRTC2, //pvrtc -	GODOT_IMAGE_FORMAT_PVRTC2A, -	GODOT_IMAGE_FORMAT_PVRTC4, -	GODOT_IMAGE_FORMAT_PVRTC4A, -	GODOT_IMAGE_FORMAT_ETC, //etc1 -	GODOT_IMAGE_FORMAT_ETC2_R11, //etc2 -	GODOT_IMAGE_FORMAT_ETC2_R11S, //signed, NOT srgb. -	GODOT_IMAGE_FORMAT_ETC2_RG11, -	GODOT_IMAGE_FORMAT_ETC2_RG11S, -	GODOT_IMAGE_FORMAT_ETC2_RGB8, -	GODOT_IMAGE_FORMAT_ETC2_RGBA8, -	GODOT_IMAGE_FORMAT_ETC2_RGB8A1, -	GODOT_IMAGE_FORMAT_MAX -}; -typedef enum godot_image_format godot_image_format; - -void GDAPI godot_image_new(godot_image *p_img); -// p_len can be -1 -void GDAPI godot_image_new_with_png_jpg(godot_image *p_img, const uint8_t *p_mem_png_jpg, int p_len); -void GDAPI godot_image_new_with_xpm(godot_image *p_img, const char **p_xpm); - -void GDAPI godot_image_new_with_size_format(godot_image *p_img, int p_width, int p_height, bool p_use_mipmaps, godot_image_format p_format); -void GDAPI godot_image_new_with_size_format_data(godot_image *p_img, int p_width, int p_height, bool p_use_mipmaps, godot_image_format p_format, godot_pool_byte_array *p_data); - -godot_pool_byte_array GDAPI godot_image_get_data(godot_image *p_img); - -godot_error GDAPI godot_image_load(godot_image *p_img, const godot_string *p_path); -godot_error GDAPI godot_image_save_png(godot_image *p_img, const godot_string *p_path); - -int GDAPI godot_image_get_width(const godot_image *p_img); -int GDAPI godot_image_get_height(const godot_image *p_img); -godot_bool GDAPI godot_image_has_mipmaps(const godot_image *p_img); -int GDAPI godot_image_get_mipmap_count(const godot_image *p_img); - -// @Incomplete -// I think it's too complex for the binding authors to implement the image class anew, so we should definitely -// export all methods here. That takes a while so it's on my @Todo list - -void GDAPI godot_image_destroy(godot_image *p_img); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_IMAGE_H diff --git a/modules/gdnative/godot/godot_input_event.cpp b/modules/gdnative/godot/godot_input_event.cpp deleted file mode 100644 index 0401c96a88..0000000000 --- a/modules/gdnative/godot/godot_input_event.cpp +++ /dev/null @@ -1,309 +0,0 @@ -/*************************************************************************/ -/*  godot_input_event.cpp                                                */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                    http://www.godotengine.org                         */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ -/*                                                                       */ -/* 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.                */ -/*************************************************************************/ -#include "godot_input_event.h" - -#include "os/input_event.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void _input_event_api_anchor() { -} - -void GDAPI godot_input_event_new(godot_input_event *p_ie) { -	InputEvent *ie = (InputEvent *)p_ie; -	*ie = InputEvent(); -} - -godot_bool GDAPI godot_input_event_is_pressed(const godot_input_event *p_ie) { -	const InputEvent *ie = (const InputEvent *)p_ie; -	return ie->is_pressed(); -} - -godot_bool GDAPI godot_input_event_is_action(const godot_input_event *p_ie, const godot_string *p_action) { -	const InputEvent *ie = (const InputEvent *)p_ie; -	const String *action = (const String *)p_action; -	return ie->is_action(*action); -} - -godot_bool GDAPI godot_input_event_is_action_pressed(const godot_input_event *p_ie, const godot_string *p_action) { -	const InputEvent *ie = (const InputEvent *)p_ie; -	const String *action = (const String *)p_action; -	return ie->is_action_pressed(*action); -} - -godot_bool GDAPI godot_input_event_is_action_released(const godot_input_event *p_ie, const godot_string *p_action) { -	const InputEvent *ie = (const InputEvent *)p_ie; -	const String *action = (const String *)p_action; -	return ie->is_action_released(*action); -} - -godot_bool GDAPI godot_input_event_is_echo(const godot_input_event *p_ie) { -	const InputEvent *ie = (const InputEvent *)p_ie; -	return ie->is_echo(); -} - -void GDAPI godot_input_event_set_as_action(godot_input_event *p_ie, const godot_string *p_action, const godot_bool p_pressed) { -	InputEvent *ie = (InputEvent *)p_ie; -	const String *action = (const String *)p_action; -	return ie->set_as_action(*action, p_pressed); -} - -godot_string GDAPI godot_input_event_as_string(const godot_input_event *p_ie) { -	const InputEvent *ie = (const InputEvent *)p_ie; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = (String)*ie; -	return str; -} - -uint32_t GDAPI *godot_input_event_get_id(godot_input_event *p_ie) { -	InputEvent *ie = (InputEvent *)p_ie; -	return &ie->ID; -} - -godot_input_event_type GDAPI *godot_input_event_get_type(godot_input_event *p_ie) { -	InputEvent *ie = (InputEvent *)p_ie; -	return (godot_input_event_type *)&ie->type; -} - -godot_int GDAPI *godot_input_event_get_device(godot_input_event *p_ie) { -	InputEvent *ie = (InputEvent *)p_ie; -	return &ie->device; -} - -static InputModifierState *_get_mod_for_type(InputEvent *ie) { -	switch (ie->type) { -		case InputEvent::MOUSE_BUTTON: -			return &ie->mouse_button.mod; -		case InputEvent::MOUSE_MOTION: -			return &ie->mouse_motion.mod; -		case InputEvent::KEY: -			return &ie->key.mod; -		default: -			return 0; -	} -} - -godot_bool GDAPI *godot_input_event_mod_get_alt(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	InputModifierState *mod = _get_mod_for_type(ie); -	return &mod->alt; -} - -godot_bool GDAPI *godot_input_event_mod_get_ctrl(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	InputModifierState *mod = _get_mod_for_type(ie); -	return &mod->control; -} - -godot_bool GDAPI *godot_input_event_mod_get_command(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	InputModifierState *mod = _get_mod_for_type(ie); -	return &mod->command; -} - -godot_bool GDAPI *godot_input_event_mod_get_shift(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	InputModifierState *mod = _get_mod_for_type(ie); -	return &mod->shift; -} - -godot_bool GDAPI *godot_input_event_mod_get_meta(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	InputModifierState *mod = _get_mod_for_type(ie); -	return &mod->meta; -} - -uint32_t GDAPI *godot_input_event_key_get_scancode(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->key.scancode; -} - -uint32_t GDAPI *godot_input_event_key_get_unicode(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->key.unicode; -} - -godot_bool GDAPI *godot_input_event_key_get_pressed(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->key.pressed; -} - -godot_bool GDAPI *godot_input_event_key_get_echo(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->key.echo; -} - -float GDAPI *godot_input_event_mouse_get_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.x; -} - -float GDAPI *godot_input_event_mouse_get_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.y; -} - -float GDAPI *godot_input_event_mouse_get_global_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.global_x; -} - -float GDAPI *godot_input_event_mouse_get_global_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.global_y; -} - -godot_int GDAPI *godot_input_event_mouse_get_button_mask(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.button_mask; -} - -godot_int GDAPI *godot_input_event_mouse_button_get_button_index(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.button_index; -} - -godot_bool GDAPI *godot_input_event_mouse_button_get_pressed(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.pressed; -} - -godot_bool GDAPI *godot_input_event_mouse_button_get_doubleclick(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_button.doubleclick; -} - -float GDAPI *godot_input_event_mouse_motion_get_relative_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_motion.relative_x; -} - -float GDAPI *godot_input_event_mouse_motion_get_relative_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_motion.relative_y; -} - -float GDAPI *godot_input_event_mouse_motion_get_speed_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_motion.speed_x; -} - -float GDAPI *godot_input_event_mouse_motion_get_speed_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->mouse_motion.speed_y; -} - -godot_int GDAPI *godot_input_event_joypad_motion_get_axis(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->joy_motion.axis; -} - -float GDAPI *godot_input_event_joypad_motion_get_axis_value(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->joy_motion.axis_value; -} - -godot_int GDAPI *godot_input_event_joypad_button_get_button_index(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->joy_button.button_index; -} - -godot_bool GDAPI *godot_input_event_joypad_button_get_pressed(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->joy_button.pressed; -} - -float GDAPI *godot_input_event_joypad_button_get_pressure(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->joy_button.pressure; -} - -godot_int GDAPI *godot_input_event_screen_touch_get_index(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_touch.index; -} - -float GDAPI *godot_input_event_screen_touch_get_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_touch.x; -} - -float GDAPI *godot_input_event_screen_touch_get_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_touch.y; -} - -godot_bool GDAPI *godot_input_event_screen_touch_get_pressed(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_touch.pressed; -} - -godot_int GDAPI *godot_input_event_screen_drag_get_index(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.index; -} - -float GDAPI *godot_input_event_screen_drag_get_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.x; -} - -float GDAPI *godot_input_event_screen_drag_get_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.y; -} - -float GDAPI *godot_input_event_screen_drag_get_relative_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.relative_x; -} - -float GDAPI *godot_input_event_screen_drag_get_relative_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.relative_y; -} - -float GDAPI *godot_input_event_screen_drag_get_speed_x(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.speed_x; -} - -float GDAPI *godot_input_event_screen_drag_get_speed_y(godot_input_event *p_event) { -	InputEvent *ie = (InputEvent *)p_event; -	return &ie->screen_drag.speed_y; -} - -#ifdef __cplusplus -} -#endif diff --git a/modules/gdnative/godot/godot_input_event.h b/modules/gdnative/godot/godot_input_event.h deleted file mode 100644 index b0a133e3d9..0000000000 --- a/modules/gdnative/godot/godot_input_event.h +++ /dev/null @@ -1,235 +0,0 @@ -/*************************************************************************/ -/*  godot_input_event.h                                                  */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                    http://www.godotengine.org                         */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ -/*                                                                       */ -/* 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.                */ -/*************************************************************************/ -#ifndef GODOT_INPUT_EVENT_H -#define GODOT_INPUT_EVENT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdint.h> - -#ifndef GODOT_CORE_API_GODOT_INPUT_EVENT_TYPE_DEFINED -typedef struct godot_input_event { -	uint8_t _dont_touch_that[56]; -} godot_input_event; -#endif - -enum godot_input_event_type { -	GODOT_INPUT_EVENT_TYPE_NONE, -	GODOT_INPUT_EVENT_TYPE_KEY, -	GODOT_INPUT_EVENT_TYPE_MOUSE_MOTION, -	GODOT_INPUT_EVENT_TYPE_MOUSE_BUTTON, -	GODOT_INPUT_EVENT_TYPE_JOYPAD_MOTION, -	GODOT_INPUT_EVENT_TYPE_JOYPAD_BUTTON, -	GODOT_INPUT_EVENT_TYPE_SCREEN_TOUCH, -	GODOT_INPUT_EVENT_TYPE_SCREEN_DRAG, -	GODOT_INPUT_EVENT_TYPE_ACTION, -	GODOT_INPUT_EVENT_TYPE_TYPE_MAX -}; -typedef enum godot_input_event_type godot_input_event_type; - -enum { -	GODOT_BUTTON_LEFT = 1, -	GODOT_BUTTON_RIGHT = 2, -	GODOT_BUTTON_MIDDLE = 3, -	GODOT_BUTTON_WHEEL_UP = 4, -	GODOT_BUTTON_WHEEL_DOWN = 5, -	GODOT_BUTTON_WHEEL_LEFT = 6, -	GODOT_BUTTON_WHEEL_RIGHT = 7, -	GODOT_BUTTON_MASK_LEFT = (1 << (GODOT_BUTTON_LEFT - 1)), -	GODOT_BUTTON_MASK_RIGHT = (1 << (GODOT_BUTTON_RIGHT - 1)), -	GODOT_BUTTON_MASK_MIDDLE = (1 << (GODOT_BUTTON_MIDDLE - 1)), - -}; - -enum { - -	GODOT_JOY_BUTTON_0 = 0, -	GODOT_JOY_BUTTON_1 = 1, -	GODOT_JOY_BUTTON_2 = 2, -	GODOT_JOY_BUTTON_3 = 3, -	GODOT_JOY_BUTTON_4 = 4, -	GODOT_JOY_BUTTON_5 = 5, -	GODOT_JOY_BUTTON_6 = 6, -	GODOT_JOY_BUTTON_7 = 7, -	GODOT_JOY_BUTTON_8 = 8, -	GODOT_JOY_BUTTON_9 = 9, -	GODOT_JOY_BUTTON_10 = 10, -	GODOT_JOY_BUTTON_11 = 11, -	GODOT_JOY_BUTTON_12 = 12, -	GODOT_JOY_BUTTON_13 = 13, -	GODOT_JOY_BUTTON_14 = 14, -	GODOT_JOY_BUTTON_15 = 15, -	GODOT_JOY_BUTTON_MAX = 16, - -	GODOT_JOY_L = GODOT_JOY_BUTTON_4, -	GODOT_JOY_R = GODOT_JOY_BUTTON_5, -	GODOT_JOY_L2 = GODOT_JOY_BUTTON_6, -	GODOT_JOY_R2 = GODOT_JOY_BUTTON_7, -	GODOT_JOY_L3 = GODOT_JOY_BUTTON_8, -	GODOT_JOY_R3 = GODOT_JOY_BUTTON_9, -	GODOT_JOY_SELECT = GODOT_JOY_BUTTON_10, -	GODOT_JOY_START = GODOT_JOY_BUTTON_11, -	GODOT_JOY_DPAD_UP = GODOT_JOY_BUTTON_12, -	GODOT_JOY_DPAD_DOWN = GODOT_JOY_BUTTON_13, -	GODOT_JOY_DPAD_LEFT = GODOT_JOY_BUTTON_14, -	GODOT_JOY_DPAD_RIGHT = GODOT_JOY_BUTTON_15, - -	// a little history about game controllers (who copied who) - -	GODOT_JOY_SNES_B = GODOT_JOY_BUTTON_0, -	GODOT_JOY_SNES_A = GODOT_JOY_BUTTON_1, -	GODOT_JOY_SNES_Y = GODOT_JOY_BUTTON_2, -	GODOT_JOY_SNES_X = GODOT_JOY_BUTTON_3, - -	GODOT_JOY_SONY_CIRCLE = GODOT_JOY_SNES_A, -	GODOT_JOY_SONY_X = GODOT_JOY_SNES_B, -	GODOT_JOY_SONY_SQUARE = GODOT_JOY_SNES_Y, -	GODOT_JOY_SONY_TRIANGLE = GODOT_JOY_SNES_X, - -	GODOT_JOY_SEGA_B = GODOT_JOY_SNES_A, -	GODOT_JOY_SEGA_A = GODOT_JOY_SNES_B, -	GODOT_JOY_SEGA_X = GODOT_JOY_SNES_Y, -	GODOT_JOY_SEGA_Y = GODOT_JOY_SNES_X, - -	GODOT_JOY_XBOX_B = GODOT_JOY_SEGA_B, -	GODOT_JOY_XBOX_A = GODOT_JOY_SEGA_A, -	GODOT_JOY_XBOX_X = GODOT_JOY_SEGA_X, -	GODOT_JOY_XBOX_Y = GODOT_JOY_SEGA_Y, - -	GODOT_JOY_DS_A = GODOT_JOY_SNES_A, -	GODOT_JOY_DS_B = GODOT_JOY_SNES_B, -	GODOT_JOY_DS_X = GODOT_JOY_SNES_X, -	GODOT_JOY_DS_Y = GODOT_JOY_SNES_Y, - -	GODOT_JOY_WII_C = GODOT_JOY_BUTTON_5, -	GODOT_JOY_WII_Z = GODOT_JOY_BUTTON_6, - -	GODOT_JOY_WII_MINUS = GODOT_JOY_BUTTON_9, -	GODOT_JOY_WII_PLUS = GODOT_JOY_BUTTON_10, - -	// end of history - -	GODOT_JOY_AXIS_0 = 0, -	GODOT_JOY_AXIS_1 = 1, -	GODOT_JOY_AXIS_2 = 2, -	GODOT_JOY_AXIS_3 = 3, -	GODOT_JOY_AXIS_4 = 4, -	GODOT_JOY_AXIS_5 = 5, -	GODOT_JOY_AXIS_6 = 6, -	GODOT_JOY_AXIS_7 = 7, -	GODOT_JOY_AXIS_MAX = 8, - -	GODOT_JOY_ANALOG_0_X = GODOT_JOY_AXIS_0, -	GODOT_JOY_ANALOG_0_Y = GODOT_JOY_AXIS_1, - -	GODOT_JOY_ANALOG_1_X = GODOT_JOY_AXIS_2, -	GODOT_JOY_ANALOG_1_Y = GODOT_JOY_AXIS_3, - -	GODOT_JOY_ANALOG_2_X = GODOT_JOY_AXIS_4, -	GODOT_JOY_ANALOG_2_Y = GODOT_JOY_AXIS_5, - -	GODOT_JOY_ANALOG_L2 = GODOT_JOY_AXIS_6, -	GODOT_JOY_ANALOG_R2 = GODOT_JOY_AXIS_7, -}; - -#include "../godot.h" - -void GDAPI godot_input_event_new(godot_input_event *p_ie); - -godot_bool GDAPI godot_input_event_is_pressed(const godot_input_event *p_ie); -godot_bool GDAPI godot_input_event_is_action(const godot_input_event *p_ie, const godot_string *p_action); -godot_bool GDAPI godot_input_event_is_action_pressed(const godot_input_event *p_ie, const godot_string *p_action); -godot_bool GDAPI godot_input_event_is_action_released(const godot_input_event *p_ie, const godot_string *p_action); -godot_bool GDAPI godot_input_event_is_echo(const godot_input_event *p_ie); -void GDAPI godot_input_event_set_as_action(godot_input_event *p_ie, const godot_string *p_action, const godot_bool p_pressed); - -godot_string GDAPI godot_input_event_as_string(const godot_input_event *p_ie); - -// Note: -// We're returning pointers to the fields in the unions. -// This is because I'm too lazy to write setter functions - -uint32_t GDAPI *godot_input_event_get_id(godot_input_event *p_ie); -godot_input_event_type GDAPI *godot_input_event_get_type(godot_input_event *p_ie); -godot_int GDAPI *godot_input_event_get_device(godot_input_event *p_ie); - -godot_bool GDAPI *godot_input_event_mod_get_alt(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_mod_get_ctrl(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_mod_get_command(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_mod_get_shift(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_mod_get_meta(godot_input_event *p_event); - -uint32_t GDAPI *godot_input_event_key_get_scancode(godot_input_event *p_event); -uint32_t GDAPI *godot_input_event_key_get_unicode(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_key_get_pressed(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_key_get_echo(godot_input_event *p_event); - -float GDAPI *godot_input_event_mouse_get_x(godot_input_event *p_event); -float GDAPI *godot_input_event_mouse_get_y(godot_input_event *p_event); -float GDAPI *godot_input_event_mouse_get_global_x(godot_input_event *p_event); -float GDAPI *godot_input_event_mouse_get_global_y(godot_input_event *p_event); -godot_int GDAPI *godot_input_event_mouse_get_button_mask(godot_input_event *p_event); - -godot_int GDAPI *godot_input_event_mouse_button_get_button_index(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_mouse_button_get_pressed(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_mouse_button_get_doubleclick(godot_input_event *p_event); - -float GDAPI *godot_input_event_mouse_motion_get_relative_x(godot_input_event *p_event); -float GDAPI *godot_input_event_mouse_motion_get_relative_y(godot_input_event *p_event); -float GDAPI *godot_input_event_mouse_motion_get_speed_x(godot_input_event *p_event); -float GDAPI *godot_input_event_mouse_motion_get_speed_y(godot_input_event *p_event); - -godot_int GDAPI *godot_input_event_joypad_motion_get_axis(godot_input_event *p_event); -float GDAPI *godot_input_event_joypad_motion_get_axis_value(godot_input_event *p_event); - -godot_int GDAPI *godot_input_event_joypad_button_get_button_index(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_joypad_button_get_pressed(godot_input_event *p_event); -float GDAPI *godot_input_event_joypad_button_get_pressure(godot_input_event *p_event); - -godot_int GDAPI *godot_input_event_screen_touch_get_index(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_touch_get_x(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_touch_get_y(godot_input_event *p_event); -godot_bool GDAPI *godot_input_event_screen_touch_get_pressed(godot_input_event *p_event); - -godot_int GDAPI *godot_input_event_screen_drag_get_index(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_drag_get_x(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_drag_get_y(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_drag_get_relative_x(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_drag_get_relative_y(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_drag_get_speed_x(godot_input_event *p_event); -float GDAPI *godot_input_event_screen_drag_get_speed_y(godot_input_event *p_event); - -#ifdef __cplusplus -} -#endif - -#endif // GODOT_INPUT_EVENT_H diff --git a/modules/gdnative/godot/godot_node_path.cpp b/modules/gdnative/godot/godot_node_path.cpp index a2c9e11699..165688a340 100644 --- a/modules/gdnative/godot/godot_node_path.cpp +++ b/modules/gdnative/godot/godot_node_path.cpp @@ -28,91 +28,81 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_node_path.h" +#include "core/variant.h" -#include "path_db.h" +#include "core/path_db.h"  #ifdef __cplusplus  extern "C" {  #endif -void _node_path_api_anchor() { -} - -#define memnew_placement_custom(m_placement, m_class, m_constr) _post_initialize(new (m_placement, sizeof(m_class), "") m_constr) - -// @Bug ? -// Do I need to memnew_placement when returning strings? +void _node_path_api_anchor() {} -void GDAPI godot_node_path_new(godot_node_path *p_np, const godot_string *p_from) { -	NodePath *np = (NodePath *)p_np; -	String *from = (String *)p_from; -	memnew_placement_custom(np, NodePath, NodePath(*from)); +void GDAPI godot_node_path_new(godot_node_path *r_dest, const godot_string *p_from) { +	NodePath *dest = (NodePath *)r_dest; +	const String *from = (const String *)p_from; +	memnew_placement(dest, NodePath(*from));  } -void GDAPI godot_node_path_copy(godot_node_path *p_np, const godot_node_path *p_from) { -	NodePath *np = (NodePath *)p_np; -	NodePath *from = (NodePath *)p_from; -	*np = *from; +void GDAPI godot_node_path_destroy(godot_node_path *p_self) { +	NodePath *self = (NodePath *)p_self; +	self->~NodePath();  } -godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = np->get_name(p_idx); -	return str; +godot_string GDAPI godot_node_path_as_string(const godot_node_path *p_self) { +	godot_string ret; +	const NodePath *self = (const NodePath *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->get_name_count(); +godot_bool GDAPI godot_node_path_is_absolute(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->is_absolute();  } -godot_string GDAPI godot_node_path_get_property(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = np->get_property(); -	return str; +godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->get_name_count();  } -godot_string GDAPI godot_node_path_get_subname(const godot_node_path *p_np, const godot_int p_idx) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = np->get_subname(p_idx); -	return str; +godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_self, const godot_int p_idx) { +	godot_string dest; +	const NodePath *self = (const NodePath *)p_self; + +	memnew_placement(&dest, String(self->get_name(p_idx))); +	return dest;  } -godot_int GDAPI godot_node_path_get_subname_count(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->get_subname_count(); +godot_int GDAPI godot_node_path_get_subname_count(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->get_subname_count();  } -godot_bool GDAPI godot_node_path_is_absolute(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->is_absolute(); +godot_string GDAPI godot_node_path_get_subname(const godot_node_path *p_self, const godot_int p_idx) { +	godot_string dest; +	const NodePath *self = (const NodePath *)p_self; + +	memnew_placement(&dest, String(self->get_subname(p_idx))); +	return dest;  } -godot_bool GDAPI godot_node_path_is_empty(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->is_empty(); +godot_string GDAPI godot_node_path_get_property(const godot_node_path *p_self) { +	godot_string dest; +	const NodePath *self = (const NodePath *)p_self; +	memnew_placement(&dest, String(self->get_property())); +	return dest;  } -godot_string GDAPI godot_node_path_as_string(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = *np; -	return str; +godot_bool GDAPI godot_node_path_is_empty(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->is_empty();  } -void GDAPI godot_node_path_destroy(godot_node_path *p_np) { -	((NodePath *)p_np)->~NodePath(); +godot_bool GDAPI godot_node_path_operator_equal(const godot_node_path *p_self, const godot_node_path *p_b) { +	const NodePath *self = (const NodePath *)p_self; +	const NodePath *b = (const NodePath *)p_b; +	return *self == *b;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_node_path.h b/modules/gdnative/godot/godot_node_path.h index c5f313d190..fb94bd3822 100644 --- a/modules/gdnative/godot/godot_node_path.h +++ b/modules/gdnative/godot/godot_node_path.h @@ -37,29 +37,35 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_NODE_PATH_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_NODE_PATH_TYPE_DEFINED  typedef struct godot_node_path {  	uint8_t _dont_touch_that[8];  } godot_node_path;  #endif  #include "../godot.h" +#include "godot_string.h" -void GDAPI godot_node_path_new(godot_node_path *p_np, const godot_string *p_from); -void GDAPI godot_node_path_copy(godot_node_path *p_np, const godot_node_path *p_from); +void GDAPI godot_node_path_new(godot_node_path *r_dest, const godot_string *p_from); +void GDAPI godot_node_path_destroy(godot_node_path *p_self); -godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx); -godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_np); +godot_string GDAPI godot_node_path_as_string(const godot_node_path *p_self); -godot_string GDAPI godot_node_path_get_property(const godot_node_path *p_np); -godot_string GDAPI godot_node_path_get_subname(const godot_node_path *p_np, const godot_int p_idx); -godot_int GDAPI godot_node_path_get_subname_count(const godot_node_path *p_np); +godot_bool GDAPI godot_node_path_is_absolute(const godot_node_path *p_self); -godot_bool GDAPI godot_node_path_is_absolute(const godot_node_path *p_np); -godot_bool GDAPI godot_node_path_is_empty(const godot_node_path *p_np); +godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_self); -godot_string GDAPI godot_node_path_as_string(const godot_node_path *p_np); +godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_self, const godot_int p_idx); -void GDAPI godot_node_path_destroy(godot_node_path *p_np); +godot_int GDAPI godot_node_path_get_subname_count(const godot_node_path *p_self); + +godot_string GDAPI godot_node_path_get_subname(const godot_node_path *p_self, const godot_int p_idx); + +godot_string GDAPI godot_node_path_get_property(const godot_node_path *p_self); + +godot_bool GDAPI godot_node_path_is_empty(const godot_node_path *p_self); + +godot_bool GDAPI godot_node_path_operator_equal(const godot_node_path *p_self, const godot_node_path *p_b);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_plane.cpp b/modules/gdnative/godot/godot_plane.cpp index 38329ef709..68adbd4a98 100644 --- a/modules/gdnative/godot/godot_plane.cpp +++ b/modules/gdnative/godot/godot_plane.cpp @@ -28,48 +28,149 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_plane.h" +#include "core/variant.h" -#include "math/plane.h" +#include "core/math/plane.h"  #ifdef __cplusplus  extern "C" {  #endif -void _plane_api_anchor() { +void _plane_api_anchor() {} + +void GDAPI godot_plane_new_with_reals(godot_plane *r_dest, const godot_real p_a, const godot_real p_b, const godot_real p_c, const godot_real p_d) { + +	Plane *dest = (Plane *)r_dest; +	*dest = Plane(p_a, p_b, p_c, p_d);  } -void GDAPI godot_plane_new(godot_plane *p_pl) { -	Plane *pl = (Plane *)p_pl; -	*pl = Plane(); +void GDAPI godot_plane_new_with_vectors(godot_plane *r_dest, const godot_vector3 *p_v1, const godot_vector3 *p_v2, const godot_vector3 *p_v3) { +	const Vector3 *v1 = (const Vector3 *)p_v1; +	const Vector3 *v2 = (const Vector3 *)p_v2; +	const Vector3 *v3 = (const Vector3 *)p_v3; +	Plane *dest = (Plane *)r_dest; +	*dest = Plane(*v1, *v2, *v3);  } -void GDAPI godot_plane_new_with_normal(godot_plane *p_pl, const godot_vector3 *p_normal, const godot_real p_d) { -	Plane *pl = (Plane *)p_pl; +void GDAPI godot_plane_new_with_normal(godot_plane *r_dest, const godot_vector3 *p_normal, const godot_real p_d) {  	const Vector3 *normal = (const Vector3 *)p_normal; -	*pl = Plane(*normal, p_d); +	Plane *dest = (Plane *)r_dest; +	*dest = Plane(*normal, p_d); +} + +godot_string GDAPI godot_plane_as_string(const godot_plane *p_self) { +	godot_string ret; +	const Plane *self = (const Plane *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret; +} + +godot_plane GDAPI godot_plane_normalized(const godot_plane *p_self) { +	godot_plane dest; +	const Plane *self = (const Plane *)p_self; +	*((Plane *)&dest) = self->normalized(); +	return dest; +} + +godot_vector3 GDAPI godot_plane_center(const godot_plane *p_self) { +	godot_vector3 dest; +	const Plane *self = (const Plane *)p_self; +	*((Vector3 *)&dest) = self->center(); +	return dest; +} + +godot_vector3 GDAPI godot_plane_get_any_point(const godot_plane *p_self) { +	godot_vector3 dest; +	const Plane *self = (const Plane *)p_self; +	*((Vector3 *)&dest) = self->get_any_point(); +	return dest; +} + +godot_bool GDAPI godot_plane_is_point_over(const godot_plane *p_self, const godot_vector3 *p_point) { +	const Plane *self = (const Plane *)p_self; +	const Vector3 *point = (const Vector3 *)p_point; +	return self->is_point_over(*point); +} + +godot_real GDAPI godot_plane_distance_to(const godot_plane *p_self, const godot_vector3 *p_point) { +	const Plane *self = (const Plane *)p_self; +	const Vector3 *point = (const Vector3 *)p_point; +	return self->distance_to(*point); +} + +godot_bool GDAPI godot_plane_has_point(const godot_plane *p_self, const godot_vector3 *p_point, const godot_real p_epsilon) { +	const Plane *self = (const Plane *)p_self; +	const Vector3 *point = (const Vector3 *)p_point; +	return self->has_point(*point, p_epsilon); +} + +godot_vector3 GDAPI godot_plane_project(const godot_plane *p_self, const godot_vector3 *p_point) { +	godot_vector3 dest; +	const Plane *self = (const Plane *)p_self; +	const Vector3 *point = (const Vector3 *)p_point; +	*((Vector3 *)&dest) = self->project(*point); +	return dest; +} + +godot_bool GDAPI godot_plane_intersect_3(const godot_plane *p_self, godot_vector3 *r_dest, const godot_plane *p_b, const godot_plane *p_c) { +	const Plane *self = (const Plane *)p_self; +	const Plane *b = (const Plane *)p_b; +	const Plane *c = (const Plane *)p_c; +	Vector3 *dest = (Vector3 *)r_dest; +	return self->intersect_3(*b, *c, dest); +} + +godot_bool GDAPI godot_plane_intersects_ray(const godot_plane *p_self, godot_vector3 *r_dest, const godot_vector3 *p_from, const godot_vector3 *p_dir) { +	const Plane *self = (const Plane *)p_self; +	const Vector3 *from = (const Vector3 *)p_from; +	const Vector3 *dir = (const Vector3 *)p_dir; +	Vector3 *dest = (Vector3 *)r_dest; +	return self->intersects_ray(*from, *dir, dest); +} + +godot_bool GDAPI godot_plane_intersects_segment(const godot_plane *p_self, godot_vector3 *r_dest, const godot_vector3 *p_begin, const godot_vector3 *p_end) { +	const Plane *self = (const Plane *)p_self; +	const Vector3 *begin = (const Vector3 *)p_begin; +	const Vector3 *end = (const Vector3 *)p_end; +	Vector3 *dest = (Vector3 *)r_dest; +	return self->intersects_segment(*begin, *end, dest); +} + +godot_plane GDAPI godot_plane_operator_neg(const godot_plane *p_self) { +	godot_plane raw_dest; +	Plane *dest = (Plane *)&raw_dest; +	const Plane *self = (const Plane *)p_self; +	*dest = -(*self); +	return raw_dest; +} + +godot_bool GDAPI godot_plane_operator_equal(const godot_plane *p_self, const godot_plane *p_b) { +	const Plane *self = (const Plane *)p_self; +	const Plane *b = (const Plane *)p_b; +	return *self == *b;  } -void GDAPI godot_plane_set_normal(godot_plane *p_pl, const godot_vector3 *p_normal) { -	Plane *pl = (Plane *)p_pl; +void GDAPI godot_plane_set_normal(godot_plane *p_self, const godot_vector3 *p_normal) { +	Plane *self = (Plane *)p_self;  	const Vector3 *normal = (const Vector3 *)p_normal; -	pl->set_normal(*normal); +	self->set_normal(*normal);  } -godot_vector3 godot_plane_get_normal(const godot_plane *p_pl) { -	const Plane *pl = (const Plane *)p_pl; -	const Vector3 normal = pl->get_normal(); +godot_vector3 GDAPI godot_plane_get_normal(const godot_plane *p_self) { +	const Plane *self = (const Plane *)p_self; +	const Vector3 normal = self->get_normal();  	godot_vector3 *v3 = (godot_vector3 *)&normal;  	return *v3;  } -void GDAPI godot_plane_set_d(godot_plane *p_pl, const godot_real p_d) { -	Plane *pl = (Plane *)p_pl; -	pl->d = p_d; +godot_real GDAPI godot_plane_get_d(const godot_plane *p_self) { +	const Plane *self = (const Plane *)p_self; +	return self->d;  } -godot_real GDAPI godot_plane_get_d(const godot_plane *p_pl) { -	const Plane *pl = (const Plane *)p_pl; -	return pl->d; +void GDAPI godot_plane_set_d(godot_plane *p_self, const godot_real p_d) { +	Plane *self = (Plane *)p_self; +	self->d = p_d;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_plane.h b/modules/gdnative/godot/godot_plane.h index c98e45c9cb..cfc955f277 100644 --- a/modules/gdnative/godot/godot_plane.h +++ b/modules/gdnative/godot/godot_plane.h @@ -37,27 +37,52 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_PLANE_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_PLANE_TYPE_DEFINED  typedef struct godot_plane {  	uint8_t _dont_touch_that[16];  } godot_plane;  #endif +#include "../godot.h"  #include "godot_vector3.h" -void GDAPI godot_plane_new(godot_plane *p_pl); -void GDAPI godot_plane_new_with_normal(godot_plane *p_pl, const godot_vector3 *p_normal, const godot_real p_d); +void GDAPI godot_plane_new_with_reals(godot_plane *r_dest, const godot_real p_a, const godot_real p_b, const godot_real p_c, const godot_real p_d); +void GDAPI godot_plane_new_with_vectors(godot_plane *r_dest, const godot_vector3 *p_v1, const godot_vector3 *p_v2, const godot_vector3 *p_v3); +void GDAPI godot_plane_new_with_normal(godot_plane *r_dest, const godot_vector3 *p_normal, const godot_real p_d); -// @Incomplete -// These are additional valid constructors -// _FORCE_INLINE_ Plane(const Vector3 &p_normal, real_t p_d); -// _FORCE_INLINE_ Plane(const Vector3 &p_point, const Vector3& p_normal); -// _FORCE_INLINE_ Plane(const Vector3 &p_point1, const Vector3 &p_point2,const Vector3 &p_point3,ClockDirection p_dir = CLOCKWISE); +godot_string GDAPI godot_plane_as_string(const godot_plane *p_self); -void GDAPI godot_plane_set_normal(godot_plane *p_pl, const godot_vector3 *p_normal); -godot_vector3 GDAPI godot_plane_get_normal(const godot_plane *p_pl); +godot_plane GDAPI godot_plane_normalized(const godot_plane *p_self); -godot_real GDAPI godot_plane_get_d(const godot_plane *p_pl); -void GDAPI godot_plane_set_d(godot_plane *p_pl, const godot_real p_d); +godot_vector3 GDAPI godot_plane_center(const godot_plane *p_self); + +godot_vector3 GDAPI godot_plane_get_any_point(const godot_plane *p_self); + +godot_bool GDAPI godot_plane_is_point_over(const godot_plane *p_self, const godot_vector3 *p_point); + +godot_real GDAPI godot_plane_distance_to(const godot_plane *p_self, const godot_vector3 *p_point); + +godot_bool GDAPI godot_plane_has_point(const godot_plane *p_self, const godot_vector3 *p_point, const godot_real p_epsilon); + +godot_vector3 GDAPI godot_plane_project(const godot_plane *p_self, const godot_vector3 *p_point); + +godot_bool GDAPI godot_plane_intersect_3(const godot_plane *p_self, godot_vector3 *r_dest, const godot_plane *p_b, const godot_plane *p_c); + +godot_bool GDAPI godot_plane_intersects_ray(const godot_plane *p_self, godot_vector3 *r_dest, const godot_vector3 *p_from, const godot_vector3 *p_dir); + +godot_bool GDAPI godot_plane_intersects_segment(const godot_plane *p_self, godot_vector3 *r_dest, const godot_vector3 *p_begin, const godot_vector3 *p_end); + +godot_plane GDAPI godot_plane_operator_neg(const godot_plane *p_self); + +godot_bool GDAPI godot_plane_operator_equal(const godot_plane *p_self, const godot_plane *p_b); + +void GDAPI godot_plane_set_normal(godot_plane *p_self, const godot_vector3 *p_normal); + +godot_vector3 GDAPI godot_plane_get_normal(const godot_plane *p_self); + +godot_real GDAPI godot_plane_get_d(const godot_plane *p_self); + +void GDAPI godot_plane_set_d(godot_plane *p_self, const godot_real p_d);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_pool_arrays.cpp b/modules/gdnative/godot/godot_pool_arrays.cpp index 93e9a9e9dc..10d5d6d939 100644 --- a/modules/gdnative/godot/godot_pool_arrays.cpp +++ b/modules/gdnative/godot/godot_pool_arrays.cpp @@ -101,13 +101,13 @@ void GDAPI godot_pool_byte_array_set(godot_pool_byte_array *p_pba, const godot_i  	pba->set(p_idx, p_data);  } -uint8_t GDAPI godot_pool_byte_array_get(godot_pool_byte_array *p_pba, const godot_int p_idx) { -	PoolVector<uint8_t> *pba = (PoolVector<uint8_t> *)p_pba; +uint8_t GDAPI godot_pool_byte_array_get(const godot_pool_byte_array *p_pba, const godot_int p_idx) { +	const PoolVector<uint8_t> *pba = (const PoolVector<uint8_t> *)p_pba;  	return pba->get(p_idx);  } -godot_int GDAPI godot_pool_byte_array_size(godot_pool_byte_array *p_pba) { -	PoolVector<uint8_t> *pba = (PoolVector<uint8_t> *)p_pba; +godot_int GDAPI godot_pool_byte_array_size(const godot_pool_byte_array *p_pba) { +	const PoolVector<uint8_t> *pba = (const PoolVector<uint8_t> *)p_pba;  	return pba->size();  } @@ -174,13 +174,13 @@ void GDAPI godot_pool_int_array_set(godot_pool_int_array *p_pba, const godot_int  	pba->set(p_idx, p_data);  } -godot_int GDAPI godot_pool_int_array_get(godot_pool_int_array *p_pba, const godot_int p_idx) { -	PoolVector<godot_int> *pba = (PoolVector<godot_int> *)p_pba; +godot_int GDAPI godot_pool_int_array_get(const godot_pool_int_array *p_pba, const godot_int p_idx) { +	const PoolVector<godot_int> *pba = (const PoolVector<godot_int> *)p_pba;  	return pba->get(p_idx);  } -godot_int GDAPI godot_pool_int_array_size(godot_pool_int_array *p_pba) { -	PoolVector<godot_int> *pba = (PoolVector<godot_int> *)p_pba; +godot_int GDAPI godot_pool_int_array_size(const godot_pool_int_array *p_pba) { +	const PoolVector<godot_int> *pba = (const PoolVector<godot_int> *)p_pba;  	return pba->size();  } @@ -247,13 +247,13 @@ void GDAPI godot_pool_real_array_set(godot_pool_real_array *p_pba, const godot_i  	pba->set(p_idx, p_data);  } -godot_real GDAPI godot_pool_real_array_get(godot_pool_real_array *p_pba, const godot_int p_idx) { -	PoolVector<godot_real> *pba = (PoolVector<godot_real> *)p_pba; +godot_real GDAPI godot_pool_real_array_get(const godot_pool_real_array *p_pba, const godot_int p_idx) { +	const PoolVector<godot_real> *pba = (const PoolVector<godot_real> *)p_pba;  	return pba->get(p_idx);  } -godot_int GDAPI godot_pool_real_array_size(godot_pool_real_array *p_pba) { -	PoolVector<godot_real> *pba = (PoolVector<godot_real> *)p_pba; +godot_int GDAPI godot_pool_real_array_size(const godot_pool_real_array *p_pba) { +	const PoolVector<godot_real> *pba = (const PoolVector<godot_real> *)p_pba;  	return pba->size();  } @@ -324,8 +324,8 @@ void GDAPI godot_pool_string_array_set(godot_pool_string_array *p_pba, const god  	pba->set(p_idx, s);  } -godot_string GDAPI godot_pool_string_array_get(godot_pool_string_array *p_pba, const godot_int p_idx) { -	PoolVector<String> *pba = (PoolVector<String> *)p_pba; +godot_string GDAPI godot_pool_string_array_get(const godot_pool_string_array *p_pba, const godot_int p_idx) { +	const PoolVector<String> *pba = (const PoolVector<String> *)p_pba;  	godot_string str;  	String *s = (String *)&str;  	memnew_placement(s, String); @@ -333,8 +333,8 @@ godot_string GDAPI godot_pool_string_array_get(godot_pool_string_array *p_pba, c  	return str;  } -godot_int GDAPI godot_pool_string_array_size(godot_pool_string_array *p_pba) { -	PoolVector<String> *pba = (PoolVector<String> *)p_pba; +godot_int GDAPI godot_pool_string_array_size(const godot_pool_string_array *p_pba) { +	const PoolVector<String> *pba = (const PoolVector<String> *)p_pba;  	return pba->size();  } @@ -405,16 +405,16 @@ void GDAPI godot_pool_vector2_array_set(godot_pool_vector2_array *p_pba, const g  	pba->set(p_idx, s);  } -godot_vector2 GDAPI godot_pool_vector2_array_get(godot_pool_vector2_array *p_pba, const godot_int p_idx) { -	PoolVector<Vector2> *pba = (PoolVector<Vector2> *)p_pba; +godot_vector2 GDAPI godot_pool_vector2_array_get(const godot_pool_vector2_array *p_pba, const godot_int p_idx) { +	const PoolVector<Vector2> *pba = (const PoolVector<Vector2> *)p_pba;  	godot_vector2 v;  	Vector2 *s = (Vector2 *)&v;  	*s = pba->get(p_idx);  	return v;  } -godot_int GDAPI godot_pool_vector2_array_size(godot_pool_vector2_array *p_pba) { -	PoolVector<Vector2> *pba = (PoolVector<Vector2> *)p_pba; +godot_int GDAPI godot_pool_vector2_array_size(const godot_pool_vector2_array *p_pba) { +	const PoolVector<Vector2> *pba = (const PoolVector<Vector2> *)p_pba;  	return pba->size();  } @@ -485,16 +485,16 @@ void GDAPI godot_pool_vector3_array_set(godot_pool_vector3_array *p_pba, const g  	pba->set(p_idx, s);  } -godot_vector3 GDAPI godot_pool_vector3_array_get(godot_pool_vector3_array *p_pba, const godot_int p_idx) { -	PoolVector<Vector3> *pba = (PoolVector<Vector3> *)p_pba; +godot_vector3 GDAPI godot_pool_vector3_array_get(const godot_pool_vector3_array *p_pba, const godot_int p_idx) { +	const PoolVector<Vector3> *pba = (const PoolVector<Vector3> *)p_pba;  	godot_vector3 v;  	Vector3 *s = (Vector3 *)&v;  	*s = pba->get(p_idx);  	return v;  } -godot_int GDAPI godot_pool_vector3_array_size(godot_pool_vector3_array *p_pba) { -	PoolVector<Vector3> *pba = (PoolVector<Vector3> *)p_pba; +godot_int GDAPI godot_pool_vector3_array_size(const godot_pool_vector3_array *p_pba) { +	const PoolVector<Vector3> *pba = (const PoolVector<Vector3> *)p_pba;  	return pba->size();  } @@ -565,16 +565,16 @@ void GDAPI godot_pool_color_array_set(godot_pool_color_array *p_pba, const godot  	pba->set(p_idx, s);  } -godot_color GDAPI godot_pool_color_array_get(godot_pool_color_array *p_pba, const godot_int p_idx) { -	PoolVector<Color> *pba = (PoolVector<Color> *)p_pba; +godot_color GDAPI godot_pool_color_array_get(const godot_pool_color_array *p_pba, const godot_int p_idx) { +	const PoolVector<Color> *pba = (const PoolVector<Color> *)p_pba;  	godot_color v;  	Color *s = (Color *)&v;  	*s = pba->get(p_idx);  	return v;  } -godot_int GDAPI godot_pool_color_array_size(godot_pool_color_array *p_pba) { -	PoolVector<Color> *pba = (PoolVector<Color> *)p_pba; +godot_int GDAPI godot_pool_color_array_size(const godot_pool_color_array *p_pba) { +	const PoolVector<Color> *pba = (const PoolVector<Color> *)p_pba;  	return pba->size();  } diff --git a/modules/gdnative/godot/godot_pool_arrays.h b/modules/gdnative/godot/godot_pool_arrays.h index ec9185f6f3..015be65c3e 100644 --- a/modules/gdnative/godot/godot_pool_arrays.h +++ b/modules/gdnative/godot/godot_pool_arrays.h @@ -92,9 +92,12 @@ typedef struct godot_pool_color_array {  } godot_pool_color_array;  #endif -#include "../godot.h" -  #include "godot_array.h" +#include "godot_color.h" +#include "godot_vector2.h" +#include "godot_vector3.h" + +#include "../godot.h"  // byte @@ -116,9 +119,9 @@ void GDAPI godot_pool_byte_array_remove(godot_pool_byte_array *p_pba, const godo  void GDAPI godot_pool_byte_array_resize(godot_pool_byte_array *p_pba, const godot_int p_size);  void GDAPI godot_pool_byte_array_set(godot_pool_byte_array *p_pba, const godot_int p_idx, const uint8_t p_data); -uint8_t GDAPI godot_pool_byte_array_get(godot_pool_byte_array *p_pba, const godot_int p_idx); +uint8_t GDAPI godot_pool_byte_array_get(const godot_pool_byte_array *p_pba, const godot_int p_idx); -godot_int GDAPI godot_pool_byte_array_size(godot_pool_byte_array *p_pba); +godot_int GDAPI godot_pool_byte_array_size(const godot_pool_byte_array *p_pba);  void GDAPI godot_pool_byte_array_destroy(godot_pool_byte_array *p_pba); @@ -142,9 +145,9 @@ void GDAPI godot_pool_int_array_remove(godot_pool_int_array *p_pia, const godot_  void GDAPI godot_pool_int_array_resize(godot_pool_int_array *p_pia, const godot_int p_size);  void GDAPI godot_pool_int_array_set(godot_pool_int_array *p_pia, const godot_int p_idx, const godot_int p_data); -godot_int GDAPI godot_pool_int_array_get(godot_pool_int_array *p_pia, const godot_int p_idx); +godot_int GDAPI godot_pool_int_array_get(const godot_pool_int_array *p_pia, const godot_int p_idx); -godot_int GDAPI godot_pool_int_array_size(godot_pool_int_array *p_pia); +godot_int GDAPI godot_pool_int_array_size(const godot_pool_int_array *p_pia);  void GDAPI godot_pool_int_array_destroy(godot_pool_int_array *p_pia); @@ -168,9 +171,9 @@ void GDAPI godot_pool_real_array_remove(godot_pool_real_array *p_pra, const godo  void GDAPI godot_pool_real_array_resize(godot_pool_real_array *p_pra, const godot_int p_size);  void GDAPI godot_pool_real_array_set(godot_pool_real_array *p_pra, const godot_int p_idx, const godot_real p_data); -godot_real GDAPI godot_pool_real_array_get(godot_pool_real_array *p_pra, const godot_int p_idx); +godot_real GDAPI godot_pool_real_array_get(const godot_pool_real_array *p_pra, const godot_int p_idx); -godot_int GDAPI godot_pool_real_array_size(godot_pool_real_array *p_pra); +godot_int GDAPI godot_pool_real_array_size(const godot_pool_real_array *p_pra);  void GDAPI godot_pool_real_array_destroy(godot_pool_real_array *p_pra); @@ -194,9 +197,9 @@ void GDAPI godot_pool_string_array_remove(godot_pool_string_array *p_psa, const  void GDAPI godot_pool_string_array_resize(godot_pool_string_array *p_psa, const godot_int p_size);  void GDAPI godot_pool_string_array_set(godot_pool_string_array *p_psa, const godot_int p_idx, const godot_string *p_data); -godot_string GDAPI godot_pool_string_array_get(godot_pool_string_array *p_psa, const godot_int p_idx); +godot_string GDAPI godot_pool_string_array_get(const godot_pool_string_array *p_psa, const godot_int p_idx); -godot_int GDAPI godot_pool_string_array_size(godot_pool_string_array *p_psa); +godot_int GDAPI godot_pool_string_array_size(const godot_pool_string_array *p_psa);  void GDAPI godot_pool_string_array_destroy(godot_pool_string_array *p_psa); @@ -220,9 +223,9 @@ void GDAPI godot_pool_vector2_array_remove(godot_pool_vector2_array *p_pv2a, con  void GDAPI godot_pool_vector2_array_resize(godot_pool_vector2_array *p_pv2a, const godot_int p_size);  void GDAPI godot_pool_vector2_array_set(godot_pool_vector2_array *p_pv2a, const godot_int p_idx, const godot_vector2 *p_data); -godot_vector2 GDAPI godot_pool_vector2_array_get(godot_pool_vector2_array *p_pv2a, const godot_int p_idx); +godot_vector2 GDAPI godot_pool_vector2_array_get(const godot_pool_vector2_array *p_pv2a, const godot_int p_idx); -godot_int GDAPI godot_pool_vector2_array_size(godot_pool_vector2_array *p_pv2a); +godot_int GDAPI godot_pool_vector2_array_size(const godot_pool_vector2_array *p_pv2a);  void GDAPI godot_pool_vector2_array_destroy(godot_pool_vector2_array *p_pv2a); @@ -246,9 +249,9 @@ void GDAPI godot_pool_vector3_array_remove(godot_pool_vector3_array *p_pv3a, con  void GDAPI godot_pool_vector3_array_resize(godot_pool_vector3_array *p_pv3a, const godot_int p_size);  void GDAPI godot_pool_vector3_array_set(godot_pool_vector3_array *p_pv3a, const godot_int p_idx, const godot_vector3 *p_data); -godot_vector3 GDAPI godot_pool_vector3_array_get(godot_pool_vector3_array *p_pv3a, const godot_int p_idx); +godot_vector3 GDAPI godot_pool_vector3_array_get(const godot_pool_vector3_array *p_pv3a, const godot_int p_idx); -godot_int GDAPI godot_pool_vector3_array_size(godot_pool_vector3_array *p_pv3a); +godot_int GDAPI godot_pool_vector3_array_size(const godot_pool_vector3_array *p_pv3a);  void GDAPI godot_pool_vector3_array_destroy(godot_pool_vector3_array *p_pv3a); @@ -272,9 +275,9 @@ void GDAPI godot_pool_color_array_remove(godot_pool_color_array *p_pca, const go  void GDAPI godot_pool_color_array_resize(godot_pool_color_array *p_pca, const godot_int p_size);  void GDAPI godot_pool_color_array_set(godot_pool_color_array *p_pca, const godot_int p_idx, const godot_color *p_data); -godot_color GDAPI godot_pool_color_array_get(godot_pool_color_array *p_pca, const godot_int p_idx); +godot_color GDAPI godot_pool_color_array_get(const godot_pool_color_array *p_pca, const godot_int p_idx); -godot_int GDAPI godot_pool_color_array_size(godot_pool_color_array *p_pca); +godot_int GDAPI godot_pool_color_array_size(const godot_pool_color_array *p_pca);  void GDAPI godot_pool_color_array_destroy(godot_pool_color_array *p_pca); diff --git a/modules/gdnative/godot/godot_quat.cpp b/modules/gdnative/godot/godot_quat.cpp index 7c3a71dfc0..4d38c4987c 100644 --- a/modules/gdnative/godot/godot_quat.cpp +++ b/modules/gdnative/godot/godot_quat.cpp @@ -28,77 +28,150 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_quat.h" +#include "core/variant.h" -#include "math/quat.h" +#include "core/math/quat.h"  #ifdef __cplusplus  extern "C" {  #endif -void _quat_api_anchor() { +void _quat_api_anchor() {} + +void GDAPI godot_quat_new(godot_quat *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_z, const godot_real p_w) { + +	Quat *dest = (Quat *)r_dest; +	*dest = Quat(p_x, p_y, p_z, p_w);  } -void GDAPI godot_quat_new(godot_quat *p_quat) { -	Quat *quat = (Quat *)p_quat; -	*quat = Quat(); +void GDAPI godot_quat_new_with_axis_angle(godot_quat *r_dest, const godot_vector3 *p_axis, const godot_real p_angle) { +	const Vector3 *axis = (const Vector3 *)p_axis; +	Quat *dest = (Quat *)r_dest; +	*dest = Quat(*axis, p_angle);  } -void GDAPI godot_quat_new_with_elements(godot_quat *p_quat, const godot_real x, const godot_real y, const godot_real z, const godot_real w) { -	Quat *quat = (Quat *)p_quat; -	*quat = Quat(x, y, z, w); +godot_string GDAPI godot_quat_as_string(const godot_quat *p_self) { +	godot_string ret; +	const Quat *self = (const Quat *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -void GDAPI godot_quat_new_with_rotation(godot_quat *p_quat, const godot_vector3 *p_axis, const godot_real p_angle) { -	Quat *quat = (Quat *)p_quat; -	const Vector3 *axis = (const Vector3 *)p_axis; -	*quat = Quat(*axis, p_angle); -} - -void GDAPI godot_quat_new_with_shortest_arc(godot_quat *p_quat, const godot_vector3 *p_v0, const godot_vector3 *p_v1) { -	Quat *quat = (Quat *)p_quat; -	const Vector3 *v0 = (const Vector3 *)p_v0; -	const Vector3 *v1 = (const Vector3 *)p_v1; -	*quat = Quat(*v0, *v1); -} - -godot_vector3 GDAPI godot_quat_get_euler(const godot_quat *p_quat) { -	Quat *quat = (Quat *)p_quat; -	Vector3 euler = quat->get_euler(); -	return *(godot_vector3 *)&euler; -} - -void GDAPI godot_quat_set_euler(godot_quat *p_quat, const godot_vector3 *p_euler) { -	Quat *quat = (Quat *)p_quat; -	const Vector3 *euler = (const Vector3 *)p_euler; -	quat->set_euler(*euler); -} - -godot_real GDAPI *godot_quat_index(godot_quat *p_quat, const godot_int p_idx) { -	Quat *quat = (Quat *)p_quat; -	switch (p_idx) { -		case 0: -			return &quat->x; -		case 1: -			return &quat->y; -		case 2: -			return &quat->z; -		default: -			return &quat->y; -	} -} - -godot_real GDAPI godot_quat_const_index(const godot_quat *p_quat, const godot_int p_idx) { -	const Quat *quat = (const Quat *)p_quat; -	switch (p_idx) { -		case 0: -			return quat->x; -		case 1: -			return quat->y; -		case 2: -			return quat->z; -		default: -			return quat->y; -	} +godot_real GDAPI godot_quat_length(const godot_quat *p_self) { +	const Quat *self = (const Quat *)p_self; +	return self->length(); +} + +godot_real GDAPI godot_quat_length_squared(const godot_quat *p_self) { +	const Quat *self = (const Quat *)p_self; +	return self->length_squared(); +} + +godot_quat GDAPI godot_quat_normalized(const godot_quat *p_self) { +	godot_quat dest; +	const Quat *self = (const Quat *)p_self; +	*((Quat *)&dest) = self->normalized(); +	return dest; +} + +godot_bool GDAPI godot_quat_is_normalized(const godot_quat *p_self) { +	const Quat *self = (const Quat *)p_self; +	return self->is_normalized(); +} + +godot_quat GDAPI godot_quat_inverse(const godot_quat *p_self) { +	godot_quat dest; +	const Quat *self = (const Quat *)p_self; +	*((Quat *)&dest) = self->inverse(); +	return dest; +} + +godot_real GDAPI godot_quat_dot(const godot_quat *p_self, const godot_quat *p_b) { +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	return self->dot(*b); +} + +godot_vector3 GDAPI godot_quat_xform(const godot_quat *p_self, const godot_vector3 *p_v) { +	godot_vector3 dest; +	const Quat *self = (const Quat *)p_self; +	const Vector3 *v = (const Vector3 *)p_v; +	*((Vector3 *)&dest) = self->xform(*v); +	return dest; +} + +godot_quat GDAPI godot_quat_slerp(const godot_quat *p_self, const godot_quat *p_b, const godot_real p_t) { +	godot_quat dest; +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	*((Quat *)&dest) = self->slerp(*b, p_t); +	return dest; +} + +godot_quat GDAPI godot_quat_slerpni(const godot_quat *p_self, const godot_quat *p_b, const godot_real p_t) { +	godot_quat dest; +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	*((Quat *)&dest) = self->slerpni(*b, p_t); +	return dest; +} + +godot_quat GDAPI godot_quat_cubic_slerp(const godot_quat *p_self, const godot_quat *p_b, const godot_quat *p_pre_a, const godot_quat *p_post_b, const godot_real p_t) { +	godot_quat dest; +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	const Quat *pre_a = (const Quat *)p_pre_a; +	const Quat *post_b = (const Quat *)p_post_b; +	*((Quat *)&dest) = self->cubic_slerp(*b, *pre_a, *post_b, p_t); +	return dest; +} + +godot_quat GDAPI godot_quat_operator_multiply(const godot_quat *p_self, const godot_real p_b) { +	godot_quat raw_dest; +	Quat *dest = (Quat *)&raw_dest; +	const Quat *self = (const Quat *)p_self; +	*dest = *self * p_b; +	return raw_dest; +} + +godot_quat GDAPI godot_quat_operator_add(const godot_quat *p_self, const godot_quat *p_b) { +	godot_quat raw_dest; +	Quat *dest = (Quat *)&raw_dest; +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	*dest = *self + *b; +	return raw_dest; +} + +godot_quat GDAPI godot_quat_operator_substract(const godot_quat *p_self, const godot_quat *p_b) { +	godot_quat raw_dest; +	Quat *dest = (Quat *)&raw_dest; +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	*dest = *self - *b; +	return raw_dest; +} + +godot_quat GDAPI godot_quat_operator_divide(const godot_quat *p_self, const godot_real p_b) { +	godot_quat raw_dest; +	Quat *dest = (Quat *)&raw_dest; +	const Quat *self = (const Quat *)p_self; +	*dest = *self / p_b; +	return raw_dest; +} + +godot_bool GDAPI godot_quat_operator_equal(const godot_quat *p_self, const godot_quat *p_b) { +	const Quat *self = (const Quat *)p_self; +	const Quat *b = (const Quat *)p_b; +	return *self == *b; +} + +godot_quat GDAPI godot_quat_operator_neg(const godot_quat *p_self) { +	godot_quat raw_dest; +	Quat *dest = (Quat *)&raw_dest; +	const Quat *self = (const Quat *)p_self; +	*dest = -(*self); +	return raw_dest;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_quat.h b/modules/gdnative/godot/godot_quat.h index 35b1acd3ed..6bdc33accf 100644 --- a/modules/gdnative/godot/godot_quat.h +++ b/modules/gdnative/godot/godot_quat.h @@ -37,23 +37,51 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_QUAT_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_QUAT_TYPE_DEFINED  typedef struct godot_quat {  	uint8_t _dont_touch_that[16];  } godot_quat;  #endif  #include "../godot.h" +#include "godot_vector3.h" -void GDAPI godot_quat_new(godot_quat *p_quat); -void GDAPI godot_quat_new_with_elements(godot_quat *p_quat, const godot_real x, const godot_real y, const godot_real z, const godot_real w); -void GDAPI godot_quat_new_with_rotation(godot_quat *p_quat, const godot_vector3 *p_axis, const godot_real p_angle); -void GDAPI godot_quat_new_with_shortest_arc(godot_quat *p_quat, const godot_vector3 *p_v0, const godot_vector3 *p_v1); +void GDAPI godot_quat_new(godot_quat *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_z, const godot_real p_w); +void GDAPI godot_quat_new_with_axis_angle(godot_quat *r_dest, const godot_vector3 *p_axis, const godot_real p_angle); -godot_vector3 GDAPI godot_quat_get_euler(const godot_quat *p_quat); -void GDAPI godot_quat_set_euler(godot_quat *p_quat, const godot_vector3 *p_euler); +godot_string GDAPI godot_quat_as_string(const godot_quat *p_self); -godot_real GDAPI *godot_quat_index(godot_quat *p_quat, const godot_int p_idx); -godot_real GDAPI godot_quat_const_index(const godot_quat *p_quat, const godot_int p_idx); +godot_real GDAPI godot_quat_length(const godot_quat *p_self); + +godot_real GDAPI godot_quat_length_squared(const godot_quat *p_self); + +godot_quat GDAPI godot_quat_normalized(const godot_quat *p_self); + +godot_bool GDAPI godot_quat_is_normalized(const godot_quat *p_self); + +godot_quat GDAPI godot_quat_inverse(const godot_quat *p_self); + +godot_real GDAPI godot_quat_dot(const godot_quat *p_self, const godot_quat *p_b); + +godot_vector3 GDAPI godot_quat_xform(const godot_quat *p_self, const godot_vector3 *p_v); + +godot_quat GDAPI godot_quat_slerp(const godot_quat *p_self, const godot_quat *p_b, const godot_real p_t); + +godot_quat GDAPI godot_quat_slerpni(const godot_quat *p_self, const godot_quat *p_b, const godot_real p_t); + +godot_quat GDAPI godot_quat_cubic_slerp(const godot_quat *p_self, const godot_quat *p_b, const godot_quat *p_pre_a, const godot_quat *p_post_b, const godot_real p_t); + +godot_quat GDAPI godot_quat_operator_multiply(const godot_quat *p_self, const godot_real p_b); + +godot_quat GDAPI godot_quat_operator_add(const godot_quat *p_self, const godot_quat *p_b); + +godot_quat GDAPI godot_quat_operator_substract(const godot_quat *p_self, const godot_quat *p_b); + +godot_quat GDAPI godot_quat_operator_divide(const godot_quat *p_self, const godot_real p_b); + +godot_bool GDAPI godot_quat_operator_equal(const godot_quat *p_self, const godot_quat *p_b); + +godot_quat GDAPI godot_quat_operator_neg(const godot_quat *p_self);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_rect2.cpp b/modules/gdnative/godot/godot_rect2.cpp index b19096b79e..eea95ca6fe 100644 --- a/modules/gdnative/godot/godot_rect2.cpp +++ b/modules/gdnative/godot/godot_rect2.cpp @@ -28,48 +28,128 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_rect2.h" +#include "core/variant.h" -#include "math/math_2d.h" +#include "core/math/math_2d.h"  #ifdef __cplusplus  extern "C" {  #endif -void _rect2_api_anchor() { +void _rect2_api_anchor() {} + +void GDAPI godot_rect2_new_with_pos_and_size(godot_rect2 *r_dest, const godot_vector2 *p_pos, const godot_vector2 *p_size) { +	const Vector2 *pos = (const Vector2 *)p_pos; +	const Vector2 *size = (const Vector2 *)p_size; +	Rect2 *dest = (Rect2 *)r_dest; +	*dest = Rect2(*pos, *size);  } -void GDAPI godot_rect2_new(godot_rect2 *p_rect) { -	Rect2 *rect = (Rect2 *)p_rect; -	*rect = Rect2(); +void GDAPI godot_rect2_new(godot_rect2 *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_width, const godot_real p_height) { + +	Rect2 *dest = (Rect2 *)r_dest; +	*dest = Rect2(p_x, p_y, p_width, p_height);  } -void GDAPI godot_rect2_new_with_pos_and_size(godot_rect2 *p_rect, const godot_vector2 *p_pos, const godot_vector2 *p_size) { -	Rect2 *rect = (Rect2 *)p_rect; -	const Vector2 *pos = (const Vector2 *)p_pos; -	const Vector2 *size = (const Vector2 *)p_size; -	*rect = Rect2(*pos, *size); +godot_string GDAPI godot_rect2_as_string(const godot_rect2 *p_self) { +	godot_string ret; +	const Rect2 *self = (const Rect2 *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -godot_vector2 GDAPI *godot_rect2_get_pos(godot_rect2 *p_rect) { -	Rect2 *rect = (Rect2 *)p_rect; -	return (godot_vector2 *)&rect->pos; +godot_real GDAPI godot_rect2_get_area(const godot_rect2 *p_self) { +	const Rect2 *self = (const Rect2 *)p_self; +	return self->get_area();  } -void GDAPI godot_rect2_set_pos(godot_rect2 *p_rect, const godot_vector2 *p_pos) { -	Rect2 *rect = (Rect2 *)p_rect; -	const Vector2 *pos = (const Vector2 *)p_pos; -	rect->pos = *pos; +godot_bool GDAPI godot_rect2_intersects(const godot_rect2 *p_self, const godot_rect2 *p_b) { +	const Rect2 *self = (const Rect2 *)p_self; +	const Rect2 *b = (const Rect2 *)p_b; +	return self->intersects(*b); +} + +godot_bool GDAPI godot_rect2_encloses(const godot_rect2 *p_self, const godot_rect2 *p_b) { +	const Rect2 *self = (const Rect2 *)p_self; +	const Rect2 *b = (const Rect2 *)p_b; +	return self->encloses(*b); +} + +godot_bool GDAPI godot_rect2_has_no_area(const godot_rect2 *p_self) { +	const Rect2 *self = (const Rect2 *)p_self; +	return self->has_no_area(); +} + +godot_rect2 GDAPI godot_rect2_clip(const godot_rect2 *p_self, const godot_rect2 *p_b) { +	godot_rect2 dest; +	const Rect2 *self = (const Rect2 *)p_self; +	const Rect2 *b = (const Rect2 *)p_b; +	*((Rect2 *)&dest) = self->clip(*b); +	return dest; +} + +godot_rect2 GDAPI godot_rect2_merge(const godot_rect2 *p_self, const godot_rect2 *p_b) { +	godot_rect2 dest; +	const Rect2 *self = (const Rect2 *)p_self; +	const Rect2 *b = (const Rect2 *)p_b; +	*((Rect2 *)&dest) = self->merge(*b); +	return dest;  } -godot_vector2 GDAPI *godot_rect2_get_size(godot_rect2 *p_rect) { -	Rect2 *rect = (Rect2 *)p_rect; -	return (godot_vector2 *)&rect->size; +godot_bool GDAPI godot_rect2_has_point(const godot_rect2 *p_self, const godot_vector2 *p_point) { +	const Rect2 *self = (const Rect2 *)p_self; +	const Vector2 *point = (const Vector2 *)p_point; +	return self->has_point(*point); +} + +godot_rect2 GDAPI godot_rect2_grow(const godot_rect2 *p_self, const godot_real p_by) { +	godot_rect2 dest; +	const Rect2 *self = (const Rect2 *)p_self; + +	*((Rect2 *)&dest) = self->grow(p_by); +	return dest; +} + +godot_rect2 GDAPI godot_rect2_expand(const godot_rect2 *p_self, const godot_vector2 *p_to) { +	godot_rect2 dest; +	const Rect2 *self = (const Rect2 *)p_self; +	const Vector2 *to = (const Vector2 *)p_to; +	*((Rect2 *)&dest) = self->expand(*to); +	return dest; +} + +godot_bool GDAPI godot_rect2_operator_equal(const godot_rect2 *p_self, const godot_rect2 *p_b) { +	const Rect2 *self = (const Rect2 *)p_self; +	const Rect2 *b = (const Rect2 *)p_b; +	return *self == *b; +} + +godot_vector2 GDAPI godot_rect2_get_pos(const godot_rect2 *p_self) { +	godot_vector2 dest; +	Vector2 *d = (Vector2 *)&dest; +	const Rect2 *self = (const Rect2 *)p_self; +	*d = self->get_pos(); +	return dest; +} + +godot_vector2 GDAPI godot_rect2_get_size(const godot_rect2 *p_self) { +	godot_vector2 dest; +	Vector2 *d = (Vector2 *)&dest; +	const Rect2 *self = (const Rect2 *)p_self; +	*d = self->get_size(); +	return dest; +} + +void GDAPI godot_rect2_set_pos(godot_rect2 *p_self, const godot_vector2 *p_pos) { +	Rect2 *self = (Rect2 *)p_self; +	const Vector2 *pos = (const Vector2 *)p_pos; +	self->set_pos(*pos);  } -void GDAPI godot_rect2_set_size(godot_rect2 *p_rect, const godot_vector2 *p_size) { -	Rect2 *rect = (Rect2 *)p_rect; +void GDAPI godot_rect2_set_size(godot_rect2 *p_self, const godot_vector2 *p_size) { +	Rect2 *self = (Rect2 *)p_self;  	const Vector2 *size = (const Vector2 *)p_size; -	rect->size = *size; +	self->set_size(*size);  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_rect2.h b/modules/gdnative/godot/godot_rect2.h index e9e4a26897..9743321a3b 100644 --- a/modules/gdnative/godot/godot_rect2.h +++ b/modules/gdnative/godot/godot_rect2.h @@ -37,24 +37,50 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_RECT2_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_RECT2_TYPE_DEFINED  typedef struct godot_rect2 {  	uint8_t _dont_touch_that[16];  } godot_rect2;  #endif  #include "../godot.h" +#include "godot_vector2.h" -void GDAPI godot_rect2_new(godot_rect2 *p_rect); -void GDAPI godot_rect2_new_with_pos_and_size(godot_rect2 *p_rect, const godot_vector2 *p_pos, const godot_vector2 *p_size); +void GDAPI godot_rect2_new_with_pos_and_size(godot_rect2 *r_dest, const godot_vector2 *p_pos, const godot_vector2 *p_size); +void GDAPI godot_rect2_new(godot_rect2 *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_width, const godot_real p_height); -godot_vector2 GDAPI *godot_rect2_get_pos(godot_rect2 *p_rect); -void GDAPI godot_rect2_set_pos(godot_rect2 *p_rect, const godot_vector2 *p_pos); +godot_string GDAPI godot_rect2_as_string(const godot_rect2 *p_self); -godot_vector2 GDAPI *godot_rect2_get_size(godot_rect2 *p_rect); -void GDAPI godot_rect2_set_size(godot_rect2 *p_rect, const godot_vector2 *p_size); +godot_real GDAPI godot_rect2_get_area(const godot_rect2 *p_self); + +godot_bool GDAPI godot_rect2_intersects(const godot_rect2 *p_self, const godot_rect2 *p_b); + +godot_bool GDAPI godot_rect2_encloses(const godot_rect2 *p_self, const godot_rect2 *p_b); + +godot_bool GDAPI godot_rect2_has_no_area(const godot_rect2 *p_self); + +godot_rect2 GDAPI godot_rect2_clip(const godot_rect2 *p_self, const godot_rect2 *p_b); + +godot_rect2 GDAPI godot_rect2_merge(const godot_rect2 *p_self, const godot_rect2 *p_b); + +godot_bool GDAPI godot_rect2_has_point(const godot_rect2 *p_self, const godot_vector2 *p_point); + +godot_rect2 GDAPI godot_rect2_grow(const godot_rect2 *p_self, const godot_real p_by); + +godot_rect2 GDAPI godot_rect2_expand(const godot_rect2 *p_self, const godot_vector2 *p_to); + +godot_bool GDAPI godot_rect2_operator_equal(const godot_rect2 *p_self, const godot_rect2 *p_b); + +godot_vector2 GDAPI godot_rect2_get_pos(const godot_rect2 *p_self); + +godot_vector2 GDAPI godot_rect2_get_size(const godot_rect2 *p_self); + +void GDAPI godot_rect2_set_pos(godot_rect2 *p_self, const godot_vector2 *p_pos); + +void GDAPI godot_rect2_set_size(godot_rect2 *p_self, const godot_vector2 *p_size);  #ifdef __cplusplus  }  #endif -#endif // GODOT_RECT3_H +#endif // GODOT_RECT2_H diff --git a/modules/gdnative/godot/godot_rect3.cpp b/modules/gdnative/godot/godot_rect3.cpp index 96c5d17b1a..c4f8a853c2 100644 --- a/modules/gdnative/godot/godot_rect3.cpp +++ b/modules/gdnative/godot/godot_rect3.cpp @@ -28,48 +28,162 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_rect3.h" +#include "core/variant.h" -#include "math/rect3.h" +#include "core/math/rect3.h"  #ifdef __cplusplus  extern "C" {  #endif -void _rect3_api_anchor() { +void _rect3_api_anchor() {} + +void GDAPI godot_rect3_new(godot_rect3 *r_dest, const godot_vector3 *p_pos, const godot_vector3 *p_size) { +	const Vector3 *pos = (const Vector3 *)p_pos; +	const Vector3 *size = (const Vector3 *)p_size; +	Rect3 *dest = (Rect3 *)r_dest; +	*dest = Rect3(*pos, *size);  } -void GDAPI godot_rect3_new(godot_rect3 *p_rect) { -	Rect3 *rect = (Rect3 *)p_rect; -	*rect = Rect3(); +godot_string GDAPI godot_rect3_as_string(const godot_rect3 *p_self) { +	godot_string ret; +	const Rect3 *self = (const Rect3 *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -void GDAPI godot_rect3_new_with_pos_and_size(godot_rect3 *p_rect, const godot_vector3 *p_pos, const godot_vector3 *p_size) { -	Rect3 *rect = (Rect3 *)p_rect; -	const Vector3 *pos = (const Vector3 *)p_pos; -	const Vector3 *size = (const Vector3 *)p_size; -	*rect = Rect3(*pos, *size); +godot_real GDAPI godot_rect3_get_area(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->get_area();  } -godot_vector3 GDAPI *godot_rect3_get_pos(godot_rect3 *p_rect) { -	Rect3 *rect = (Rect3 *)p_rect; -	return (godot_vector3 *)&rect->pos; +godot_bool GDAPI godot_rect3_has_no_area(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->has_no_area();  } -void GDAPI godot_rect3_set_pos(godot_rect3 *p_rect, const godot_vector3 *p_pos) { -	Rect3 *rect = (Rect3 *)p_rect; -	const Vector3 *pos = (const Vector3 *)p_pos; -	rect->pos = *pos; +godot_bool GDAPI godot_rect3_has_no_surface(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->has_no_surface();  } -godot_vector3 GDAPI *godot_rect3_get_size(godot_rect3 *p_rect) { -	Rect3 *rect = (Rect3 *)p_rect; -	return (godot_vector3 *)&rect->size; +godot_bool GDAPI godot_rect3_intersects(const godot_rect3 *p_self, const godot_rect3 *p_with) { +	const Rect3 *self = (const Rect3 *)p_self; +	const Rect3 *with = (const Rect3 *)p_with; +	return self->intersects(*with);  } -void GDAPI godot_rect3_set_size(godot_rect3 *p_rect, const godot_vector3 *p_size) { -	Rect3 *rect = (Rect3 *)p_rect; -	const Vector3 *size = (const Vector3 *)p_size; -	rect->size = *size; +godot_bool GDAPI godot_rect3_encloses(const godot_rect3 *p_self, const godot_rect3 *p_with) { +	const Rect3 *self = (const Rect3 *)p_self; +	const Rect3 *with = (const Rect3 *)p_with; +	return self->encloses(*with); +} + +godot_rect3 GDAPI godot_rect3_merge(const godot_rect3 *p_self, const godot_rect3 *p_with) { +	godot_rect3 dest; +	const Rect3 *self = (const Rect3 *)p_self; +	const Rect3 *with = (const Rect3 *)p_with; +	*((Rect3 *)&dest) = self->merge(*with); +	return dest; +} + +godot_rect3 GDAPI godot_rect3_intersection(const godot_rect3 *p_self, const godot_rect3 *p_with) { +	godot_rect3 dest; +	const Rect3 *self = (const Rect3 *)p_self; +	const Rect3 *with = (const Rect3 *)p_with; +	*((Rect3 *)&dest) = self->intersection(*with); +	return dest; +} + +godot_bool GDAPI godot_rect3_intersects_plane(const godot_rect3 *p_self, const godot_plane *p_plane) { +	const Rect3 *self = (const Rect3 *)p_self; +	const Plane *plane = (const Plane *)p_plane; +	return self->intersects_plane(*plane); +} + +godot_bool GDAPI godot_rect3_intersects_segment(const godot_rect3 *p_self, const godot_vector3 *p_from, const godot_vector3 *p_to) { +	const Rect3 *self = (const Rect3 *)p_self; +	const Vector3 *from = (const Vector3 *)p_from; +	const Vector3 *to = (const Vector3 *)p_to; +	return self->intersects_segment(*from, *to); +} + +godot_bool GDAPI godot_rect3_has_point(const godot_rect3 *p_self, const godot_vector3 *p_point) { +	const Rect3 *self = (const Rect3 *)p_self; +	const Vector3 *point = (const Vector3 *)p_point; +	return self->has_point(*point); +} + +godot_vector3 GDAPI godot_rect3_get_support(const godot_rect3 *p_self, const godot_vector3 *p_dir) { +	godot_vector3 dest; +	const Rect3 *self = (const Rect3 *)p_self; +	const Vector3 *dir = (const Vector3 *)p_dir; +	*((Vector3 *)&dest) = self->get_support(*dir); +	return dest; +} + +godot_vector3 GDAPI godot_rect3_get_longest_axis(const godot_rect3 *p_self) { +	godot_vector3 dest; +	const Rect3 *self = (const Rect3 *)p_self; +	*((Vector3 *)&dest) = self->get_longest_axis(); +	return dest; +} + +godot_int GDAPI godot_rect3_get_longest_axis_index(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->get_longest_axis_index(); +} + +godot_real GDAPI godot_rect3_get_longest_axis_size(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->get_longest_axis_size(); +} + +godot_vector3 GDAPI godot_rect3_get_shortest_axis(const godot_rect3 *p_self) { +	godot_vector3 dest; +	const Rect3 *self = (const Rect3 *)p_self; +	*((Vector3 *)&dest) = self->get_shortest_axis(); +	return dest; +} + +godot_int GDAPI godot_rect3_get_shortest_axis_index(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->get_shortest_axis_index(); +} + +godot_real GDAPI godot_rect3_get_shortest_axis_size(const godot_rect3 *p_self) { +	const Rect3 *self = (const Rect3 *)p_self; +	return self->get_shortest_axis_size(); +} + +godot_rect3 GDAPI godot_rect3_expand(const godot_rect3 *p_self, const godot_vector3 *p_to_point) { +	godot_rect3 dest; +	const Rect3 *self = (const Rect3 *)p_self; +	const Vector3 *to_point = (const Vector3 *)p_to_point; +	*((Rect3 *)&dest) = self->expand(*to_point); +	return dest; +} + +godot_rect3 GDAPI godot_rect3_grow(const godot_rect3 *p_self, const godot_real p_by) { +	godot_rect3 dest; +	const Rect3 *self = (const Rect3 *)p_self; + +	*((Rect3 *)&dest) = self->grow(p_by); +	return dest; +} + +godot_vector3 GDAPI godot_rect3_get_endpoint(const godot_rect3 *p_self, const godot_int p_idx) { +	godot_vector3 dest; +	const Rect3 *self = (const Rect3 *)p_self; + +	*((Vector3 *)&dest) = self->get_endpoint(p_idx); +	return dest; +} + +godot_bool GDAPI godot_rect3_operator_equal(const godot_rect3 *p_self, const godot_rect3 *p_b) { +	const Rect3 *self = (const Rect3 *)p_self; +	const Rect3 *b = (const Rect3 *)p_b; +	return *self == *b;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_rect3.h b/modules/gdnative/godot/godot_rect3.h index 562ac8379e..95969ab20e 100644 --- a/modules/gdnative/godot/godot_rect3.h +++ b/modules/gdnative/godot/godot_rect3.h @@ -37,21 +37,61 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_RECT3_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_RECT3_TYPE_DEFINED  typedef struct godot_rect3 {  	uint8_t _dont_touch_that[24];  } godot_rect3;  #endif  #include "../godot.h" +#include "godot_plane.h" +#include "godot_vector3.h" -void GDAPI godot_rect3_new(godot_rect3 *p_rect); -void GDAPI godot_rect3_new_with_pos_and_size(godot_rect3 *p_rect, const godot_vector3 *p_pos, const godot_vector3 *p_size); +void GDAPI godot_rect3_new(godot_rect3 *r_dest, const godot_vector3 *p_pos, const godot_vector3 *p_size); -godot_vector3 GDAPI *godot_rect3_get_pos(godot_rect3 *p_rect); -void GDAPI godot_rect3_set_pos(godot_rect3 *p_rect, const godot_vector3 *p_pos); +godot_string GDAPI godot_rect3_as_string(const godot_rect3 *p_self); -godot_vector3 GDAPI *godot_rect3_get_size(godot_rect3 *p_rect); -void GDAPI godot_rect3_set_size(godot_rect3 *p_rect, const godot_vector3 *p_size); +godot_real GDAPI godot_rect3_get_area(const godot_rect3 *p_self); + +godot_bool GDAPI godot_rect3_has_no_area(const godot_rect3 *p_self); + +godot_bool GDAPI godot_rect3_has_no_surface(const godot_rect3 *p_self); + +godot_bool GDAPI godot_rect3_intersects(const godot_rect3 *p_self, const godot_rect3 *p_with); + +godot_bool GDAPI godot_rect3_encloses(const godot_rect3 *p_self, const godot_rect3 *p_with); + +godot_rect3 GDAPI godot_rect3_merge(const godot_rect3 *p_self, const godot_rect3 *p_with); + +godot_rect3 GDAPI godot_rect3_intersection(const godot_rect3 *p_self, const godot_rect3 *p_with); + +godot_bool GDAPI godot_rect3_intersects_plane(const godot_rect3 *p_self, const godot_plane *p_plane); + +godot_bool GDAPI godot_rect3_intersects_segment(const godot_rect3 *p_self, const godot_vector3 *p_from, const godot_vector3 *p_to); + +godot_bool GDAPI godot_rect3_has_point(const godot_rect3 *p_self, const godot_vector3 *p_point); + +godot_vector3 GDAPI godot_rect3_get_support(const godot_rect3 *p_self, const godot_vector3 *p_dir); + +godot_vector3 GDAPI godot_rect3_get_longest_axis(const godot_rect3 *p_self); + +godot_int GDAPI godot_rect3_get_longest_axis_index(const godot_rect3 *p_self); + +godot_real GDAPI godot_rect3_get_longest_axis_size(const godot_rect3 *p_self); + +godot_vector3 GDAPI godot_rect3_get_shortest_axis(const godot_rect3 *p_self); + +godot_int GDAPI godot_rect3_get_shortest_axis_index(const godot_rect3 *p_self); + +godot_real GDAPI godot_rect3_get_shortest_axis_size(const godot_rect3 *p_self); + +godot_rect3 GDAPI godot_rect3_expand(const godot_rect3 *p_self, const godot_vector3 *p_to_point); + +godot_rect3 GDAPI godot_rect3_grow(const godot_rect3 *p_self, const godot_real p_by); + +godot_vector3 GDAPI godot_rect3_get_endpoint(const godot_rect3 *p_self, const godot_int p_idx); + +godot_bool GDAPI godot_rect3_operator_equal(const godot_rect3 *p_self, const godot_rect3 *p_b);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_rid.cpp b/modules/gdnative/godot/godot_rid.cpp index fff31e3992..343c004bff 100644 --- a/modules/gdnative/godot/godot_rid.cpp +++ b/modules/gdnative/godot/godot_rid.cpp @@ -28,36 +28,46 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_rid.h" +#include "core/variant.h" -#include "object.h" -#include "resource.h" +#include "core/resource.h" +#include "core/rid.h"  #ifdef __cplusplus  extern "C" {  #endif -void _rid_api_anchor() { -} - -void GDAPI godot_rid_new(godot_rid *p_rid, godot_object *p_from) { +void _rid_api_anchor() {} -	Resource *res_from = ((Object *)p_from)->cast_to<Resource>(); +void GDAPI godot_rid_new(godot_rid *r_dest) { +	RID *dest = (RID *)r_dest; +	memnew_placement(dest, RID); +} -	RID *rid = (RID *)p_rid; -	memnew_placement(rid, RID); +godot_int GDAPI godot_rid_get_id(const godot_rid *p_self) { +	const RID *self = (const RID *)p_self; +	return self->get_id(); +} +void GDAPI godot_rid_new_with_resource(godot_rid *r_dest, const godot_object *p_from) { +	const Resource *res_from = ((const Object *)p_from)->cast_to<Resource>(); +	godot_rid_new(r_dest);  	if (res_from) { -		*rid = RID(res_from->get_rid()); +		RID *dest = (RID *)r_dest; +		*dest = RID(res_from->get_rid());  	}  } -uint32_t GDAPI godot_rid_get_rid(const godot_rid *p_rid) { -	RID *rid = (RID *)p_rid; -	return rid->get_id(); +godot_bool GDAPI godot_rid_operator_equal(const godot_rid *p_self, const godot_rid *p_b) { +	const RID *self = (const RID *)p_self; +	const RID *b = (const RID *)p_b; +	return *self == *b;  } -void GDAPI godot_rid_destroy(godot_rid *p_rid) { -	((RID *)p_rid)->~RID(); +godot_bool GDAPI godot_rid_operator_less(const godot_rid *p_self, const godot_rid *p_b) { +	const RID *self = (const RID *)p_self; +	const RID *b = (const RID *)p_b; +	return *self < *b;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_rid.h b/modules/gdnative/godot/godot_rid.h index e00c8f89ad..25dc8d965e 100644 --- a/modules/gdnative/godot/godot_rid.h +++ b/modules/gdnative/godot/godot_rid.h @@ -37,6 +37,7 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_RID_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_RID_TYPE_DEFINED  typedef struct godot_rid {  	uint8_t _dont_touch_that[8];  } godot_rid; @@ -44,11 +45,15 @@ typedef struct godot_rid {  #include "../godot.h" -void GDAPI godot_rid_new(godot_rid *p_rid, godot_object *p_from); +void GDAPI godot_rid_new(godot_rid *r_dest); -uint32_t GDAPI godot_rid_get_rid(const godot_rid *p_rid); +godot_int GDAPI godot_rid_get_id(const godot_rid *p_self); -void GDAPI godot_rid_destroy(godot_rid *p_rid); +void GDAPI godot_rid_new_with_resource(godot_rid *r_dest, const godot_object *p_from); + +godot_bool GDAPI godot_rid_operator_equal(const godot_rid *p_self, const godot_rid *p_b); + +godot_bool GDAPI godot_rid_operator_less(const godot_rid *p_self, const godot_rid *p_b);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_string.cpp b/modules/gdnative/godot/godot_string.cpp index 92c0b04041..59d20c6d23 100644 --- a/modules/gdnative/godot/godot_string.cpp +++ b/modules/gdnative/godot/godot_string.cpp @@ -53,6 +53,12 @@ void GDAPI godot_string_new_data(godot_string *p_str, const char *p_contents, co  	*p = String::utf8(p_contents, p_size);  } +void GDAPI godot_string_new_unicode_data(godot_string *p_str, const wchar_t *p_contents, const int p_size) { +	String *p = (String *)p_str; +	memnew_placement(p, String); +	*p = String(p_contents, p_size); +} +  void GDAPI godot_string_get_data(const godot_string *p_str, char *p_dest, int *p_size) {  	String *p = (String *)p_str;  	if (p_size != NULL) { diff --git a/modules/gdnative/godot/godot_string.h b/modules/gdnative/godot/godot_string.h index 83ed5d6ec1..e0ba298a9c 100644 --- a/modules/gdnative/godot/godot_string.h +++ b/modules/gdnative/godot/godot_string.h @@ -47,6 +47,7 @@ typedef struct godot_string {  void GDAPI godot_string_new(godot_string *p_str);  void GDAPI godot_string_new_data(godot_string *p_str, const char *p_contents, const int p_size); +void GDAPI godot_string_new_unicode_data(godot_string *p_str, const wchar_t *p_contents, const int p_size);  void GDAPI godot_string_get_data(const godot_string *p_str, char *p_dest, int *p_size); diff --git a/modules/gdnative/godot/godot_transform.cpp b/modules/gdnative/godot/godot_transform.cpp index 681c2b049a..f5a012f59c 100644 --- a/modules/gdnative/godot/godot_transform.cpp +++ b/modules/gdnative/godot/godot_transform.cpp @@ -28,42 +28,168 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_transform.h" +#include "core/variant.h" -#include "math/transform.h" +#include "core/math/transform.h"  #ifdef __cplusplus  extern "C" {  #endif -void _transform_api_anchor() { -} +void _transform_api_anchor() {} -void GDAPI godot_transform_new(godot_transform *p_trans) { -	Transform *trans = (Transform *)p_trans; -	*trans = Transform(); +void GDAPI godot_transform_new_with_axis_origin(godot_transform *r_dest, const godot_vector3 *p_x_axis, const godot_vector3 *p_y_axis, const godot_vector3 *p_z_axis, const godot_vector3 *p_origin) { +	const Vector3 *x_axis = (const Vector3 *)p_x_axis; +	const Vector3 *y_axis = (const Vector3 *)p_y_axis; +	const Vector3 *z_axis = (const Vector3 *)p_z_axis; +	const Vector3 *origin = (const Vector3 *)p_origin; +	Transform *dest = (Transform *)r_dest; +	dest->basis.set_axis(0, *x_axis); +	dest->basis.set_axis(1, *y_axis); +	dest->basis.set_axis(2, *z_axis); +	dest->origin = *origin;  } -void GDAPI godot_transform_new_with_basis(godot_transform *p_trans, const godot_basis *p_basis) { -	Transform *trans = (Transform *)p_trans; +void GDAPI godot_transform_new(godot_transform *r_dest, const godot_basis *p_basis, const godot_vector3 *p_origin) {  	const Basis *basis = (const Basis *)p_basis; -	*trans = Transform(*basis); +	const Vector3 *origin = (const Vector3 *)p_origin; +	Transform *dest = (Transform *)r_dest; +	*dest = Transform(*basis, *origin);  } -void GDAPI godot_transform_new_with_basis_origin(godot_transform *p_trans, const godot_basis *p_basis, const godot_vector3 *p_origin) { -	Transform *trans = (Transform *)p_trans; -	const Basis *basis = (const Basis *)p_basis; -	const Vector3 *origin = (const Vector3 *)p_origin; -	*trans = Transform(*basis, *origin); +godot_string GDAPI godot_transform_as_string(const godot_transform *p_self) { +	godot_string ret; +	const Transform *self = (const Transform *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret; +} + +godot_transform GDAPI godot_transform_inverse(const godot_transform *p_self) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	*((Transform *)&dest) = self->inverse(); +	return dest; +} + +godot_transform GDAPI godot_transform_affine_inverse(const godot_transform *p_self) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	*((Transform *)&dest) = self->affine_inverse(); +	return dest; +} + +godot_transform GDAPI godot_transform_orthonormalized(const godot_transform *p_self) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	*((Transform *)&dest) = self->orthonormalized(); +	return dest; +} + +godot_transform GDAPI godot_transform_rotated(const godot_transform *p_self, const godot_vector3 *p_axis, const godot_real p_phi) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	const Vector3 *axis = (const Vector3 *)p_axis; +	*((Transform *)&dest) = self->rotated(*axis, p_phi); +	return dest; +} + +godot_transform GDAPI godot_transform_scaled(const godot_transform *p_self, const godot_vector3 *p_scale) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	const Vector3 *scale = (const Vector3 *)p_scale; +	*((Transform *)&dest) = self->scaled(*scale); +	return dest; +} + +godot_transform GDAPI godot_transform_translated(const godot_transform *p_self, const godot_vector3 *p_ofs) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	const Vector3 *ofs = (const Vector3 *)p_ofs; +	*((Transform *)&dest) = self->translated(*ofs); +	return dest; +} + +godot_transform GDAPI godot_transform_looking_at(const godot_transform *p_self, const godot_vector3 *p_target, const godot_vector3 *p_up) { +	godot_transform dest; +	const Transform *self = (const Transform *)p_self; +	const Vector3 *target = (const Vector3 *)p_target; +	const Vector3 *up = (const Vector3 *)p_up; +	*((Transform *)&dest) = self->looking_at(*target, *up); +	return dest; +} + +godot_plane GDAPI godot_transform_xform_plane(const godot_transform *p_self, const godot_plane *p_v) { +	godot_plane raw_dest; +	Plane *dest = (Plane *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Plane *v = (const Plane *)p_v; +	*dest = self->xform(*v); +	return raw_dest; +} + +godot_plane GDAPI godot_transform_xform_inv_plane(const godot_transform *p_self, const godot_plane *p_v) { +	godot_plane raw_dest; +	Plane *dest = (Plane *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Plane *v = (const Plane *)p_v; +	*dest = self->xform_inv(*v); +	return raw_dest; +} + +void GDAPI godot_transform_new_identity(godot_transform *r_dest) { +	Transform *dest = (Transform *)r_dest; +	*dest = Transform(); +} + +godot_bool GDAPI godot_transform_operator_equal(const godot_transform *p_self, const godot_transform *p_b) { +	const Transform *self = (const Transform *)p_self; +	const Transform *b = (const Transform *)p_b; +	return *self == *b; +} + +godot_transform GDAPI godot_transform_operator_multiply(const godot_transform *p_self, const godot_transform *p_b) { +	godot_transform raw_dest; +	Transform *dest = (Transform *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Transform *b = (const Transform *)p_b; +	*dest = *self * *b; +	return raw_dest; +} + +godot_vector3 GDAPI godot_transform_xform_vector3(const godot_transform *p_self, const godot_vector3 *p_v) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Vector3 *v = (const Vector3 *)p_v; +	*dest = self->xform(*v); +	return raw_dest; +} + +godot_vector3 GDAPI godot_transform_xform_inv_vector3(const godot_transform *p_self, const godot_vector3 *p_v) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Vector3 *v = (const Vector3 *)p_v; +	*dest = self->xform_inv(*v); +	return raw_dest;  } -godot_basis GDAPI *godot_transform_get_basis(godot_transform *p_trans) { -	Transform *trans = (Transform *)p_trans; -	return (godot_basis *)&trans->basis; +godot_rect3 GDAPI godot_transform_xform_rect3(const godot_transform *p_self, const godot_rect3 *p_v) { +	godot_rect3 raw_dest; +	Rect3 *dest = (Rect3 *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Rect3 *v = (const Rect3 *)p_v; +	*dest = self->xform(*v); +	return raw_dest;  } -godot_vector3 GDAPI *godot_transform_get_origin(godot_transform *p_trans) { -	Transform *trans = (Transform *)p_trans; -	return (godot_vector3 *)&trans->origin; +godot_rect3 GDAPI godot_transform_xform_inv_rect3(const godot_transform *p_self, const godot_rect3 *p_v) { +	godot_rect3 raw_dest; +	Rect3 *dest = (Rect3 *)&raw_dest; +	const Transform *self = (const Transform *)p_self; +	const Rect3 *v = (const Rect3 *)p_v; +	*dest = self->xform_inv(*v); +	return raw_dest;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_transform.h b/modules/gdnative/godot/godot_transform.h index 93817ffbf2..b15efc23b8 100644 --- a/modules/gdnative/godot/godot_transform.h +++ b/modules/gdnative/godot/godot_transform.h @@ -37,19 +37,53 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_TRANSFORM_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_TRANSFORM_TYPE_DEFINED  typedef struct godot_transform {  	uint8_t _dont_touch_that[48];  } godot_transform;  #endif  #include "../godot.h" +#include "godot_basis.h" +#include "godot_variant.h" +#include "godot_vector3.h" -void GDAPI godot_transform_new(godot_transform *p_trans); -void GDAPI godot_transform_new_with_basis(godot_transform *p_trans, const godot_basis *p_basis); -void GDAPI godot_transform_new_with_basis_origin(godot_transform *p_trans, const godot_basis *p_basis, const godot_vector3 *p_origin); +void GDAPI godot_transform_new_with_axis_origin(godot_transform *r_dest, const godot_vector3 *p_x_axis, const godot_vector3 *p_y_axis, const godot_vector3 *p_z_axis, const godot_vector3 *p_origin); +void GDAPI godot_transform_new(godot_transform *r_dest, const godot_basis *p_basis, const godot_vector3 *p_origin); -godot_basis GDAPI *godot_transform_get_basis(godot_transform *p_trans); -godot_vector3 GDAPI *godot_transform_get_origin(godot_transform *p_trans); +godot_string GDAPI godot_transform_as_string(const godot_transform *p_self); + +godot_transform GDAPI godot_transform_inverse(const godot_transform *p_self); + +godot_transform GDAPI godot_transform_affine_inverse(const godot_transform *p_self); + +godot_transform GDAPI godot_transform_orthonormalized(const godot_transform *p_self); + +godot_transform GDAPI godot_transform_rotated(const godot_transform *p_self, const godot_vector3 *p_axis, const godot_real p_phi); + +godot_transform GDAPI godot_transform_scaled(const godot_transform *p_self, const godot_vector3 *p_scale); + +godot_transform GDAPI godot_transform_translated(const godot_transform *p_self, const godot_vector3 *p_ofs); + +godot_transform GDAPI godot_transform_looking_at(const godot_transform *p_self, const godot_vector3 *p_target, const godot_vector3 *p_up); + +godot_plane GDAPI godot_transform_xform_plane(const godot_transform *p_self, const godot_plane *p_v); + +godot_plane GDAPI godot_transform_xform_inv_plane(const godot_transform *p_self, const godot_plane *p_v); + +void GDAPI godot_transform_new_identity(godot_transform *r_dest); + +godot_bool GDAPI godot_transform_operator_equal(const godot_transform *p_self, const godot_transform *p_b); + +godot_transform GDAPI godot_transform_operator_multiply(const godot_transform *p_self, const godot_transform *p_b); + +godot_vector3 GDAPI godot_transform_xform_vector3(const godot_transform *p_self, const godot_vector3 *p_v); + +godot_vector3 GDAPI godot_transform_xform_inv_vector3(const godot_transform *p_self, const godot_vector3 *p_v); + +godot_rect3 GDAPI godot_transform_xform_rect3(const godot_transform *p_self, const godot_rect3 *p_v); + +godot_rect3 GDAPI godot_transform_xform_inv_rect3(const godot_transform *p_self, const godot_rect3 *p_v);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_transform2d.cpp b/modules/gdnative/godot/godot_transform2d.cpp index ffc7167559..bdb5476f7d 100644 --- a/modules/gdnative/godot/godot_transform2d.cpp +++ b/modules/gdnative/godot/godot_transform2d.cpp @@ -28,60 +28,182 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_transform2d.h" +#include "core/variant.h" -#include "../godot.h" - -#include "math/math_2d.h" +#include "core/math/math_2d.h"  #ifdef __cplusplus  extern "C" {  #endif -void _transform2d_api_anchor() { +void _transform2d_api_anchor() {} + +void GDAPI godot_transform2d_new(godot_transform2d *r_dest, const godot_real p_rot, const godot_vector2 *p_pos) { +	const Vector2 *pos = (const Vector2 *)p_pos; +	Transform2D *dest = (Transform2D *)r_dest; +	*dest = Transform2D(p_rot, *pos); +} + +void GDAPI godot_transform2d_new_axis_origin(godot_transform2d *r_dest, const godot_vector2 *p_x_axis, const godot_vector2 *p_y_axis, const godot_vector2 *p_origin) { +	const Vector2 *x_axis = (const Vector2 *)p_x_axis; +	const Vector2 *y_axis = (const Vector2 *)p_y_axis; +	const Vector2 *origin = (const Vector2 *)p_origin; +	Transform2D *dest = (Transform2D *)r_dest; +	*dest = Transform2D(x_axis->x, x_axis->y, y_axis->x, y_axis->y, origin->x, origin->y); +} + +godot_string GDAPI godot_transform2d_as_string(const godot_transform2d *p_self) { +	godot_string ret; +	const Transform2D *self = (const Transform2D *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret; +} + +godot_transform2d GDAPI godot_transform2d_inverse(const godot_transform2d *p_self) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; +	*((Transform2D *)&dest) = self->inverse(); +	return dest; +} + +godot_transform2d GDAPI godot_transform2d_affine_inverse(const godot_transform2d *p_self) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; +	*((Transform2D *)&dest) = self->affine_inverse(); +	return dest; +} + +godot_real GDAPI godot_transform2d_get_rotation(const godot_transform2d *p_self) { +	const Transform2D *self = (const Transform2D *)p_self; +	return self->get_rotation(); +} + +godot_vector2 GDAPI godot_transform2d_get_origin(const godot_transform2d *p_self) { +	godot_vector2 dest; +	const Transform2D *self = (const Transform2D *)p_self; +	*((Vector2 *)&dest) = self->get_origin(); +	return dest; +} + +godot_vector2 GDAPI godot_transform2d_get_scale(const godot_transform2d *p_self) { +	godot_vector2 dest; +	const Transform2D *self = (const Transform2D *)p_self; +	*((Vector2 *)&dest) = self->get_scale(); +	return dest; +} + +godot_transform2d GDAPI godot_transform2d_orthonormalized(const godot_transform2d *p_self) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; +	*((Transform2D *)&dest) = self->orthonormalized(); +	return dest; +} + +godot_transform2d GDAPI godot_transform2d_rotated(const godot_transform2d *p_self, const godot_real p_phi) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; + +	*((Transform2D *)&dest) = self->rotated(p_phi); +	return dest; +} + +godot_transform2d GDAPI godot_transform2d_scaled(const godot_transform2d *p_self, const godot_vector2 *p_scale) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Vector2 *scale = (const Vector2 *)p_scale; +	*((Transform2D *)&dest) = self->scaled(*scale); +	return dest;  } -void GDAPI godot_transform2d_new_identity(godot_transform2d *p_t) { -	Transform2D *t = (Transform2D *)p_t; -	*t = Transform2D(); +godot_transform2d GDAPI godot_transform2d_translated(const godot_transform2d *p_self, const godot_vector2 *p_offset) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Vector2 *offset = (const Vector2 *)p_offset; +	*((Transform2D *)&dest) = self->translated(*offset); +	return dest;  } -void GDAPI godot_transform2d_new_elements(godot_transform2d *p_t, const godot_vector2 *p_a, const godot_vector2 *p_b, const godot_vector2 *p_c) { -	Transform2D *t = (Transform2D *)p_t; -	Vector2 *a = (Vector2 *)p_a; -	Vector2 *b = (Vector2 *)p_b; -	Vector2 *c = (Vector2 *)p_c; -	*t = Transform2D(a->x, a->y, b->x, b->y, c->x, c->y); +godot_vector2 GDAPI godot_transform2d_xform_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Vector2 *v = (const Vector2 *)p_v; +	*dest = self->xform(*v); +	return raw_dest;  } -void GDAPI godot_transform2d_new(godot_transform2d *p_t, const godot_real p_rot, const godot_vector2 *p_pos) { -	Transform2D *t = (Transform2D *)p_t; -	Vector2 *pos = (Vector2 *)p_pos; -	*t = Transform2D(p_rot, *pos); +godot_vector2 GDAPI godot_transform2d_xform_inv_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Vector2 *v = (const Vector2 *)p_v; +	*dest = self->xform_inv(*v); +	return raw_dest;  } -godot_vector2 const GDAPI *godot_transform2d_const_index(const godot_transform2d *p_t, const godot_int p_idx) { -	const Transform2D *t = (const Transform2D *)p_t; -	const Vector2 *e = &t->operator[](p_idx); -	return (godot_vector2 const *)e; +godot_vector2 GDAPI godot_transform2d_basis_xform_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Vector2 *v = (const Vector2 *)p_v; +	*dest = self->basis_xform(*v); +	return raw_dest;  } -godot_vector2 GDAPI *godot_transform2d_index(godot_transform2d *p_t, const godot_int p_idx) { -	Transform2D *t = (Transform2D *)p_t; -	Vector2 *e = &t->operator[](p_idx); -	return (godot_vector2 *)e; +godot_vector2 GDAPI godot_transform2d_basis_xform_inv_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Vector2 *v = (const Vector2 *)p_v; +	*dest = self->basis_xform_inv(*v); +	return raw_dest;  } -godot_vector2 GDAPI godot_transform2d_get_axis(const godot_transform2d *p_t, const godot_int p_axis) { -	return *godot_transform2d_const_index(p_t, p_axis); +godot_transform2d GDAPI godot_transform2d_interpolate_with(const godot_transform2d *p_self, const godot_transform2d *p_m, const godot_real p_c) { +	godot_transform2d dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Transform2D *m = (const Transform2D *)p_m; +	*((Transform2D *)&dest) = self->interpolate_with(*m, p_c); +	return dest;  } -void GDAPI godot_transform2d_set_axis(godot_transform2d *p_t, const godot_int p_axis, const godot_vector2 *p_vec) { -	godot_vector2 *origin_v = godot_transform2d_index(p_t, p_axis); -	*origin_v = *p_vec; +godot_bool GDAPI godot_transform2d_operator_equal(const godot_transform2d *p_self, const godot_transform2d *p_b) { +	const Transform2D *self = (const Transform2D *)p_self; +	const Transform2D *b = (const Transform2D *)p_b; +	return *self == *b;  } -// @Incomplete -// See header file +godot_transform2d GDAPI godot_transform2d_operator_multiply(const godot_transform2d *p_self, const godot_transform2d *p_b) { +	godot_transform2d raw_dest; +	Transform2D *dest = (Transform2D *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Transform2D *b = (const Transform2D *)p_b; +	*dest = *self * *b; +	return raw_dest; +} + +void GDAPI godot_transform2d_new_identity(godot_transform2d *r_dest) { +	Transform2D *dest = (Transform2D *)r_dest; +	*dest = Transform2D(); +} + +godot_rect2 GDAPI godot_transform2d_xform_rect2(const godot_transform2d *p_self, const godot_rect2 *p_v) { +	godot_rect2 raw_dest; +	Rect2 *dest = (Rect2 *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Rect2 *v = (const Rect2 *)p_v; +	*dest = self->xform(*v); +	return raw_dest; +} + +godot_rect2 GDAPI godot_transform2d_xform_inv_rect2(const godot_transform2d *p_self, const godot_rect2 *p_v) { +	godot_rect2 raw_dest; +	Rect2 *dest = (Rect2 *)&raw_dest; +	const Transform2D *self = (const Transform2D *)p_self; +	const Rect2 *v = (const Rect2 *)p_v; +	*dest = self->xform_inv(*v); +	return raw_dest; +}  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_transform2d.h b/modules/gdnative/godot/godot_transform2d.h index ae0569dbe8..c375e90af7 100644 --- a/modules/gdnative/godot/godot_transform2d.h +++ b/modules/gdnative/godot/godot_transform2d.h @@ -44,31 +44,51 @@ typedef struct godot_transform2d {  #endif  #include "../godot.h" - +#include "godot_variant.h"  #include "godot_vector2.h" -void GDAPI godot_transform2d_new_identity(godot_transform2d *p_t); -void GDAPI godot_transform2d_new_elements(godot_transform2d *p_t, const godot_vector2 *p_a, const godot_vector2 *p_b, const godot_vector2 *p_c); -void GDAPI godot_transform2d_new(godot_transform2d *p_t, const godot_real p_rot, const godot_vector2 *p_pos); +void GDAPI godot_transform2d_new(godot_transform2d *r_dest, const godot_real p_rot, const godot_vector2 *p_pos); +void GDAPI godot_transform2d_new_axis_origin(godot_transform2d *r_dest, const godot_vector2 *p_x_axis, const godot_vector2 *p_y_axis, const godot_vector2 *p_origin); + +godot_string GDAPI godot_transform2d_as_string(const godot_transform2d *p_self); + +godot_transform2d GDAPI godot_transform2d_inverse(const godot_transform2d *p_self); + +godot_transform2d GDAPI godot_transform2d_affine_inverse(const godot_transform2d *p_self); + +godot_real GDAPI godot_transform2d_get_rotation(const godot_transform2d *p_self); + +godot_vector2 GDAPI godot_transform2d_get_origin(const godot_transform2d *p_self); + +godot_vector2 GDAPI godot_transform2d_get_scale(const godot_transform2d *p_self); + +godot_transform2d GDAPI godot_transform2d_orthonormalized(const godot_transform2d *p_self); + +godot_transform2d GDAPI godot_transform2d_rotated(const godot_transform2d *p_self, const godot_real p_phi); + +godot_transform2d GDAPI godot_transform2d_scaled(const godot_transform2d *p_self, const godot_vector2 *p_scale); + +godot_transform2d GDAPI godot_transform2d_translated(const godot_transform2d *p_self, const godot_vector2 *p_offset); + +godot_vector2 GDAPI godot_transform2d_xform_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v); + +godot_vector2 GDAPI godot_transform2d_xform_inv_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v); + +godot_vector2 GDAPI godot_transform2d_basis_xform_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v); + +godot_vector2 GDAPI godot_transform2d_basis_xform_inv_vector2(const godot_transform2d *p_self, const godot_vector2 *p_v); + +godot_transform2d GDAPI godot_transform2d_interpolate_with(const godot_transform2d *p_self, const godot_transform2d *p_m, const godot_real p_c); -/* -godot_real GDAPI godot_transform2d_tdotx(const godot_transform2d *p_t, const godot_vector2 *p_v); -godot_real GDAPI godot_transform2d_tdoty(const godot_transform2d *p_t, const godot_vector2 *p_v); -*/ +godot_bool GDAPI godot_transform2d_operator_equal(const godot_transform2d *p_self, const godot_transform2d *p_b); -godot_vector2 const GDAPI *godot_transform2d_const_index(const godot_transform2d *p_t, const godot_int p_idx); -godot_vector2 GDAPI *godot_transform2d_index(godot_transform2d *p_t, const godot_int p_idx); +godot_transform2d GDAPI godot_transform2d_operator_multiply(const godot_transform2d *p_self, const godot_transform2d *p_b); -godot_vector2 GDAPI godot_transform2d_get_axis(const godot_transform2d *p_t, const godot_int p_axis); -void GDAPI godot_transform2d_set_axis(godot_transform2d *p_t, const godot_int p_axis, const godot_vector2 *p_vec); +void GDAPI godot_transform2d_new_identity(godot_transform2d *r_dest); -/* -void GDAPI godot_transform2d_invert(godot_transform2d *p_t); -godot_transform2d GDAPI godot_transform2d_inverse(const godot_transform2d *p_t); -*/ +godot_rect2 GDAPI godot_transform2d_xform_rect2(const godot_transform2d *p_self, const godot_rect2 *p_v); -// @Incomplete -// I feel like it should be enough to expose get and set, the whole logic can be done in the bindings. +godot_rect2 GDAPI godot_transform2d_xform_inv_rect2(const godot_transform2d *p_self, const godot_rect2 *p_v);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_variant.cpp b/modules/gdnative/godot/godot_variant.cpp index e9fa4eb8c6..9381fb86d3 100644 --- a/modules/gdnative/godot/godot_variant.cpp +++ b/modules/gdnative/godot/godot_variant.cpp @@ -28,23 +28,21 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_variant.h" - -#include "../godot.h" - -#include "variant.h" +#include "core/variant.h"  #ifdef __cplusplus  extern "C" {  #endif -void _variant_api_anchor() { -} +void _variant_api_anchor() {}  #define memnew_placement_custom(m_placement, m_class, m_constr) _post_initialize(new (m_placement, sizeof(m_class), "") m_constr) -godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	return (godot_variant_type)v->get_type(); +// Constructors + +godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_self) { +	const Variant *self = (const Variant *)p_self; +	return (godot_variant_type)self->get_type();  }  void GDAPI godot_variant_copy(godot_variant *p_dest, const godot_variant *p_src) { @@ -53,461 +51,429 @@ void GDAPI godot_variant_copy(godot_variant *p_dest, const godot_variant *p_src)  	*dest = *src;  } -void GDAPI godot_variant_new_nil(godot_variant *p_v) { -	Variant *v = (Variant *)p_v; -	memnew_placement(v, Variant); +void GDAPI godot_variant_new_nil(godot_variant *r_dest) { +	Variant *dest = (Variant *)r_dest; +	memnew_placement(dest, Variant);  } -void GDAPI godot_variant_new_bool(godot_variant *p_v, const godot_bool p_b) { -	Variant *v = (Variant *)p_v; -	memnew_placement_custom(v, Variant, Variant(p_b)); +void GDAPI godot_variant_new_bool(godot_variant *r_dest, const godot_bool p_b) { +	Variant *dest = (Variant *)r_dest; +	memnew_placement_custom(dest, Variant, Variant(p_b));  } -void GDAPI godot_variant_new_uint(godot_variant *p_v, const uint64_t p_i) { -	Variant *v = (Variant *)p_v; -	memnew_placement_custom(v, Variant, Variant(p_i)); +void GDAPI godot_variant_new_uint(godot_variant *r_dest, const uint64_t p_i) { +	Variant *dest = (Variant *)r_dest; +	memnew_placement_custom(dest, Variant, Variant(p_i));  } -void GDAPI godot_variant_new_int(godot_variant *p_v, const int64_t p_i) { -	Variant *v = (Variant *)p_v; -	memnew_placement_custom(v, Variant, Variant(p_i)); +void GDAPI godot_variant_new_int(godot_variant *r_dest, const int64_t p_i) { +	Variant *dest = (Variant *)r_dest; +	memnew_placement_custom(dest, Variant, Variant(p_i));  } -void GDAPI godot_variant_new_real(godot_variant *p_v, const double p_r) { -	Variant *v = (Variant *)p_v; -	memnew_placement_custom(v, Variant, Variant(p_r)); +void GDAPI godot_variant_new_real(godot_variant *r_dest, const double p_r) { +	Variant *dest = (Variant *)r_dest; +	memnew_placement_custom(dest, Variant, Variant(p_r));  } -void GDAPI godot_variant_new_string(godot_variant *p_v, const godot_string *p_s) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_string(godot_variant *r_dest, const godot_string *p_s) { +	Variant *dest = (Variant *)r_dest;  	String *s = (String *)p_s; -	memnew_placement_custom(v, Variant, Variant(*s)); +	memnew_placement_custom(dest, Variant, Variant(*s));  } -void GDAPI godot_variant_new_vector2(godot_variant *p_v, const godot_vector2 *p_v2) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_vector2(godot_variant *r_dest, const godot_vector2 *p_v2) { +	Variant *dest = (Variant *)r_dest;  	Vector2 *v2 = (Vector2 *)p_v2; -	memnew_placement_custom(v, Variant, Variant(*v2)); +	memnew_placement_custom(dest, Variant, Variant(*v2));  } -void GDAPI godot_variant_new_rect2(godot_variant *p_v, const godot_rect2 *p_rect2) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_rect2(godot_variant *r_dest, const godot_rect2 *p_rect2) { +	Variant *dest = (Variant *)r_dest;  	Rect2 *rect2 = (Rect2 *)p_rect2; -	memnew_placement_custom(v, Variant, Variant(*rect2)); +	memnew_placement_custom(dest, Variant, Variant(*rect2));  } -void GDAPI godot_variant_new_vector3(godot_variant *p_v, const godot_vector3 *p_v3) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_vector3(godot_variant *r_dest, const godot_vector3 *p_v3) { +	Variant *dest = (Variant *)r_dest;  	Vector3 *v3 = (Vector3 *)p_v3; -	memnew_placement_custom(v, Variant, Variant(*v3)); +	memnew_placement_custom(dest, Variant, Variant(*v3));  } -void GDAPI godot_variant_new_transform2d(godot_variant *p_v, const godot_transform2d *p_t2d) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_transform2d(godot_variant *r_dest, const godot_transform2d *p_t2d) { +	Variant *dest = (Variant *)r_dest;  	Transform2D *t2d = (Transform2D *)p_t2d; -	memnew_placement_custom(v, Variant, Variant(*t2d)); +	memnew_placement_custom(dest, Variant, Variant(*t2d));  } -void GDAPI godot_variant_new_plane(godot_variant *p_v, const godot_plane *p_plane) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_plane(godot_variant *r_dest, const godot_plane *p_plane) { +	Variant *dest = (Variant *)r_dest;  	Plane *plane = (Plane *)p_plane; -	memnew_placement_custom(v, Variant, Variant(*plane)); +	memnew_placement_custom(dest, Variant, Variant(*plane));  } -void GDAPI godot_variant_new_quat(godot_variant *p_v, const godot_quat *p_quat) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_quat(godot_variant *r_dest, const godot_quat *p_quat) { +	Variant *dest = (Variant *)r_dest;  	Quat *quat = (Quat *)p_quat; -	memnew_placement_custom(v, Variant, Variant(*quat)); +	memnew_placement_custom(dest, Variant, Variant(*quat));  } -void GDAPI godot_variant_new_rect3(godot_variant *p_v, const godot_rect3 *p_rect3) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_rect3(godot_variant *r_dest, const godot_rect3 *p_rect3) { +	Variant *dest = (Variant *)r_dest;  	Rect3 *rect3 = (Rect3 *)p_rect3; -	memnew_placement_custom(v, Variant, Variant(*rect3)); +	memnew_placement_custom(dest, Variant, Variant(*rect3));  } -void GDAPI godot_variant_new_basis(godot_variant *p_v, const godot_basis *p_basis) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_basis(godot_variant *r_dest, const godot_basis *p_basis) { +	Variant *dest = (Variant *)r_dest;  	Basis *basis = (Basis *)p_basis; -	memnew_placement_custom(v, Variant, Variant(*basis)); +	memnew_placement_custom(dest, Variant, Variant(*basis));  } -void GDAPI godot_variant_new_transform(godot_variant *p_v, const godot_transform *p_trans) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_transform(godot_variant *r_dest, const godot_transform *p_trans) { +	Variant *dest = (Variant *)r_dest;  	Transform *trans = (Transform *)p_trans; -	memnew_placement_custom(v, Variant, Variant(*trans)); +	memnew_placement_custom(dest, Variant, Variant(*trans));  } -void GDAPI godot_variant_new_color(godot_variant *p_v, const godot_color *p_color) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_color(godot_variant *r_dest, const godot_color *p_color) { +	Variant *dest = (Variant *)r_dest;  	Color *color = (Color *)p_color; -	memnew_placement_custom(v, Variant, Variant(*color)); +	memnew_placement_custom(dest, Variant, Variant(*color));  } -void GDAPI godot_variant_new_image(godot_variant *p_v, const godot_image *p_img) { -	Variant *v = (Variant *)p_v; -	Image *img = (Image *)p_img; -	memnew_placement_custom(v, Variant, Variant(*img)); -} - -void GDAPI godot_variant_new_node_path(godot_variant *p_v, const godot_node_path *p_np) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_node_path(godot_variant *r_dest, const godot_node_path *p_np) { +	Variant *dest = (Variant *)r_dest;  	NodePath *np = (NodePath *)p_np; -	memnew_placement_custom(v, Variant, Variant(*np)); +	memnew_placement_custom(dest, Variant, Variant(*np));  } -void GDAPI godot_variant_new_rid(godot_variant *p_v, const godot_rid *p_rid) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_rid(godot_variant *r_dest, const godot_rid *p_rid) { +	Variant *dest = (Variant *)r_dest;  	RID *rid = (RID *)p_rid; -	memnew_placement_custom(v, Variant, Variant(*rid)); +	memnew_placement_custom(dest, Variant, Variant(*rid));  } -void GDAPI godot_variant_new_object(godot_variant *p_v, const godot_object *p_obj) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_object(godot_variant *r_dest, const godot_object *p_obj) { +	Variant *dest = (Variant *)r_dest;  	Object *obj = (Object *)p_obj; -	memnew_placement_custom(v, Variant, Variant(obj)); -} - -void GDAPI godot_variant_new_input_event(godot_variant *p_v, const godot_input_event *p_event) { -	Variant *v = (Variant *)p_v; -	InputEvent *event = (InputEvent *)p_event; -	memnew_placement_custom(v, Variant, Variant(*event)); +	memnew_placement_custom(dest, Variant, Variant(obj));  } -void GDAPI godot_variant_new_dictionary(godot_variant *p_v, const godot_dictionary *p_dict) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_dictionary(godot_variant *r_dest, const godot_dictionary *p_dict) { +	Variant *dest = (Variant *)r_dest;  	Dictionary *dict = (Dictionary *)p_dict; -	memnew_placement_custom(v, Variant, Variant(*dict)); +	memnew_placement_custom(dest, Variant, Variant(*dict));  } -void GDAPI godot_variant_new_array(godot_variant *p_v, const godot_array *p_arr) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_array(godot_variant *r_dest, const godot_array *p_arr) { +	Variant *dest = (Variant *)r_dest;  	Array *arr = (Array *)p_arr; -	memnew_placement_custom(v, Variant, Variant(*arr)); +	memnew_placement_custom(dest, Variant, Variant(*arr));  } -void GDAPI godot_variant_new_pool_byte_array(godot_variant *p_v, const godot_pool_byte_array *p_pba) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_byte_array(godot_variant *r_dest, const godot_pool_byte_array *p_pba) { +	Variant *dest = (Variant *)r_dest;  	PoolByteArray *pba = (PoolByteArray *)p_pba; -	memnew_placement_custom(v, Variant, Variant(*pba)); +	memnew_placement_custom(dest, Variant, Variant(*pba));  } -void GDAPI godot_variant_new_pool_int_array(godot_variant *p_v, const godot_pool_int_array *p_pia) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_int_array(godot_variant *r_dest, const godot_pool_int_array *p_pia) { +	Variant *dest = (Variant *)r_dest;  	PoolIntArray *pia = (PoolIntArray *)p_pia; -	memnew_placement_custom(v, Variant, Variant(*pia)); +	memnew_placement_custom(dest, Variant, Variant(*pia));  } -void GDAPI godot_variant_new_pool_real_array(godot_variant *p_v, const godot_pool_real_array *p_pra) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_real_array(godot_variant *r_dest, const godot_pool_real_array *p_pra) { +	Variant *dest = (Variant *)r_dest;  	PoolRealArray *pra = (PoolRealArray *)p_pra; -	memnew_placement_custom(v, Variant, Variant(*pra)); +	memnew_placement_custom(dest, Variant, Variant(*pra));  } -void GDAPI godot_variant_new_pool_string_array(godot_variant *p_v, const godot_pool_string_array *p_psa) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_string_array(godot_variant *r_dest, const godot_pool_string_array *p_psa) { +	Variant *dest = (Variant *)r_dest;  	PoolStringArray *psa = (PoolStringArray *)p_psa; -	memnew_placement_custom(v, Variant, Variant(*psa)); +	memnew_placement_custom(dest, Variant, Variant(*psa));  } -void GDAPI godot_variant_new_pool_vector2_array(godot_variant *p_v, const godot_pool_vector2_array *p_pv2a) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_vector2_array(godot_variant *r_dest, const godot_pool_vector2_array *p_pv2a) { +	Variant *dest = (Variant *)r_dest;  	PoolVector2Array *pv2a = (PoolVector2Array *)p_pv2a; -	memnew_placement_custom(v, Variant, Variant(*pv2a)); +	memnew_placement_custom(dest, Variant, Variant(*pv2a));  } -void GDAPI godot_variant_new_pool_vector3_array(godot_variant *p_v, const godot_pool_vector3_array *p_pv3a) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_vector3_array(godot_variant *r_dest, const godot_pool_vector3_array *p_pv3a) { +	Variant *dest = (Variant *)r_dest;  	PoolVector3Array *pv3a = (PoolVector3Array *)p_pv3a; -	memnew_placement_custom(v, Variant, Variant(*pv3a)); +	memnew_placement_custom(dest, Variant, Variant(*pv3a));  } -void GDAPI godot_variant_new_pool_color_array(godot_variant *p_v, const godot_pool_color_array *p_pca) { -	Variant *v = (Variant *)p_v; +void GDAPI godot_variant_new_pool_color_array(godot_variant *r_dest, const godot_pool_color_array *p_pca) { +	Variant *dest = (Variant *)r_dest;  	PoolColorArray *pca = (PoolColorArray *)p_pca; -	memnew_placement_custom(v, Variant, Variant(*pca)); +	memnew_placement_custom(dest, Variant, Variant(*pca));  } -godot_bool GDAPI godot_variant_as_bool(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	return v->operator bool(); +godot_bool GDAPI godot_variant_as_bool(const godot_variant *p_self) { +	const Variant *self = (const Variant *)p_self; +	return self->operator bool();  } -uint64_t GDAPI godot_variant_as_uint(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	return v->operator uint64_t(); +uint64_t GDAPI godot_variant_as_uint(const godot_variant *p_self) { +	const Variant *self = (const Variant *)p_self; +	return self->operator uint64_t();  } -int64_t GDAPI godot_variant_as_int(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	return v->operator int64_t(); +int64_t GDAPI godot_variant_as_int(const godot_variant *p_self) { +	const Variant *self = (const Variant *)p_self; +	return self->operator int64_t();  } -double GDAPI godot_variant_as_real(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	return v->operator double(); +double GDAPI godot_variant_as_real(const godot_variant *p_self) { +	const Variant *self = (const Variant *)p_self; +	return self->operator double();  } -godot_string GDAPI godot_variant_as_string(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_string s; -	godot_string_new(&s); -	String *str = (String *)&s; -	*str = v->operator String(); -	return s; +godot_string GDAPI godot_variant_as_string(const godot_variant *p_self) { +	godot_string raw_dest; +	const Variant *self = (const Variant *)p_self; +	String *dest = (String *)&raw_dest; +	memnew_placement(dest, String(self->operator String())); // operator = is overloaded by String +	return raw_dest;  } -godot_vector2 GDAPI godot_variant_as_vector2(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_vector2 v2; -	Vector2 *vec2 = (Vector2 *)&v2; -	*vec2 = *v; -	return v2; +godot_vector2 GDAPI godot_variant_as_vector2(const godot_variant *p_self) { +	godot_vector2 raw_dest; +	const Variant *self = (const Variant *)p_self; +	Vector2 *dest = (Vector2 *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_rect2 GDAPI godot_variant_as_rect2(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_rect2 r2; -	Rect2 *rect2 = (Rect2 *)&r2; -	*rect2 = *v; -	return r2; +godot_rect2 GDAPI godot_variant_as_rect2(const godot_variant *p_self) { +	godot_rect2 raw_dest; +	const Variant *self = (const Variant *)p_self; +	Rect2 *dest = (Rect2 *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_vector3 GDAPI godot_variant_as_vector3(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_vector3 v3; -	Vector3 *vec3 = (Vector3 *)&v3; -	*vec3 = *v; -	return v3; +godot_vector3 GDAPI godot_variant_as_vector3(const godot_variant *p_self) { +	godot_vector3 raw_dest; +	const Variant *self = (const Variant *)p_self; +	Vector3 *dest = (Vector3 *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_transform2d GDAPI godot_variant_as_transform2d(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_transform2d t2; -	Transform2D *t = (Transform2D *)&t2; -	*t = *v; -	return t2; +godot_transform2d GDAPI godot_variant_as_transform2d(const godot_variant *p_self) { +	godot_transform2d raw_dest; +	const Variant *self = (const Variant *)p_self; +	Transform2D *dest = (Transform2D *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_plane GDAPI godot_variant_as_plane(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_plane p; -	Plane *pl = (Plane *)&p; -	*pl = *v; -	return p; +godot_plane GDAPI godot_variant_as_plane(const godot_variant *p_self) { +	godot_plane raw_dest; +	const Variant *self = (const Variant *)p_self; +	Plane *dest = (Plane *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_quat GDAPI godot_variant_as_quat(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_quat q; -	Quat *qt = (Quat *)&q; -	*qt = *v; -	return q; +godot_quat GDAPI godot_variant_as_quat(const godot_variant *p_self) { +	godot_quat raw_dest; +	const Variant *self = (const Variant *)p_self; +	Quat *dest = (Quat *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_rect3 GDAPI godot_variant_as_rect3(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_rect3 r; -	Rect3 *r3 = (Rect3 *)&r; -	*r3 = *v; -	return r; +godot_rect3 GDAPI godot_variant_as_rect3(const godot_variant *p_self) { +	godot_rect3 raw_dest; +	const Variant *self = (const Variant *)p_self; +	Rect3 *dest = (Rect3 *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_basis b; -	Basis *bs = (Basis *)&b; -	*bs = *v; -	return b; +godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_self) { +	godot_basis raw_dest; +	const Variant *self = (const Variant *)p_self; +	Basis *dest = (Basis *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_transform GDAPI godot_variant_as_transform(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_transform t; -	Transform *tr = (Transform *)&t; -	*tr = *v; -	return t; +godot_transform GDAPI godot_variant_as_transform(const godot_variant *p_self) { +	godot_transform raw_dest; +	const Variant *self = (const Variant *)p_self; +	Transform *dest = (Transform *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_color GDAPI godot_variant_as_color(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_color c; -	Color *col = (Color *)&c; -	*col = *v; -	return c; +godot_color GDAPI godot_variant_as_color(const godot_variant *p_self) { +	godot_color raw_dest; +	const Variant *self = (const Variant *)p_self; +	Color *dest = (Color *)&raw_dest; +	*dest = *self; +	return raw_dest;  } -godot_image GDAPI godot_variant_as_image(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_image img; -	godot_image_new(&img); -	Image *i = (Image *)&img; -	*i = *v; -	return img; -} - -godot_node_path GDAPI godot_variant_as_node_path(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_node_path np; -	memnew_placement_custom((NodePath *)&np, NodePath, NodePath((String)*v)); -	return np; -} - -godot_rid GDAPI godot_variant_as_rid(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_rid rid; -	memnew_placement_custom((RID *)&rid, RID, RID(*v)); -	return rid; -} - -godot_object GDAPI *godot_variant_as_object(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_object *p = NULL; -	Object **op = (Object **)&p; -	*op = *v; -	return p; -} - -godot_input_event GDAPI godot_variant_as_input_event(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_input_event ev; -	InputEvent *event = (InputEvent *)&ev; -	*event = *v; -	return ev; -} - -godot_dictionary GDAPI godot_variant_as_dictionary(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_dictionary dict; -	godot_dictionary_new(&dict); -	Dictionary *d = (Dictionary *)&dict; -	*d = *v; -	return dict; -} - -godot_array GDAPI godot_variant_as_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_array array; -	godot_array_new(&array); -	Array *a = (Array *)&array; -	*a = *v; -	return array; -} - -godot_pool_byte_array GDAPI godot_variant_as_pool_byte_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_byte_array pba; -	godot_pool_byte_array_new(&pba); -	PoolByteArray *p = (PoolByteArray *)&pba; -	*p = *v; -	return pba; -} - -godot_pool_int_array GDAPI godot_variant_as_pool_int_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_int_array pba; -	godot_pool_int_array_new(&pba); -	PoolIntArray *p = (PoolIntArray *)&pba; -	*p = *v; -	return pba; -} - -godot_pool_real_array GDAPI godot_variant_as_pool_real_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_real_array pba; -	godot_pool_real_array_new(&pba); -	PoolRealArray *p = (PoolRealArray *)&pba; -	*p = *v; -	return pba; -} - -godot_pool_string_array GDAPI godot_variant_as_pool_string_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_string_array pba; -	godot_pool_string_array_new(&pba); -	PoolStringArray *p = (PoolStringArray *)&pba; -	*p = *v; -	return pba; -} - -godot_pool_vector2_array GDAPI godot_variant_as_pool_vector2_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_vector2_array pba; -	godot_pool_vector2_array_new(&pba); -	PoolVector2Array *p = (PoolVector2Array *)&pba; -	*p = *v; -	return pba; -} - -godot_pool_vector3_array GDAPI godot_variant_as_pool_vector3_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_vector3_array pba; -	godot_pool_vector3_array_new(&pba); -	PoolVector3Array *p = (PoolVector3Array *)&pba; -	*p = *v; -	return pba; -} - -godot_pool_color_array GDAPI godot_variant_as_pool_color_array(const godot_variant *p_v) { -	const Variant *v = (const Variant *)p_v; -	godot_pool_color_array pba; -	godot_pool_color_array_new(&pba); -	PoolColorArray *p = (PoolColorArray *)&pba; -	*p = *v; -	return pba; -} - -godot_variant GDAPI godot_variant_call(godot_variant *p_v, const godot_string *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant_call_error *p_error) { -	Variant *v = (Variant *)p_v; -	String *method = (String *)p_method; -	const Variant **args = (const Variant **)p_args; -	godot_variant res; -	godot_variant_new_nil(&res); +godot_node_path GDAPI godot_variant_as_node_path(const godot_variant *p_self) { +	godot_node_path raw_dest; +	const Variant *self = (const Variant *)p_self; +	NodePath *dest = (NodePath *)&raw_dest; +	memnew_placement(dest, NodePath(self->operator NodePath())); // operator = is overloaded by NodePath +	return raw_dest; +} + +godot_rid GDAPI godot_variant_as_rid(const godot_variant *p_self) { +	godot_rid raw_dest; +	const Variant *self = (const Variant *)p_self; +	RID *dest = (RID *)&raw_dest; +	*dest = *self; +	return raw_dest; +} + +godot_object GDAPI *godot_variant_as_object(const godot_variant *p_self) { +	const Variant *self = (const Variant *)p_self; +	Object *dest; +	dest = *self; +	return (godot_object *)dest; +} + +godot_dictionary GDAPI godot_variant_as_dictionary(const godot_variant *p_self) { +	godot_dictionary raw_dest; +	const Variant *self = (const Variant *)p_self; +	Dictionary *dest = (Dictionary *)&raw_dest; +	memnew_placement(dest, Dictionary(self->operator Dictionary())); // operator = is overloaded by Dictionary +	return raw_dest; +} + +godot_array GDAPI godot_variant_as_array(const godot_variant *p_self) { +	godot_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	Array *dest = (Array *)&raw_dest; +	memnew_placement(dest, Array(self->operator Array())); // operator = is overloaded by Array +	return raw_dest; +} + +godot_pool_byte_array GDAPI godot_variant_as_pool_byte_array(const godot_variant *p_self) { +	godot_pool_byte_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolByteArray *dest = (PoolByteArray *)&raw_dest; +	memnew_placement(dest, PoolByteArray(self->operator PoolByteArray())); // operator = is overloaded by PoolByteArray +	*dest = *self; +	return raw_dest; +} + +godot_pool_int_array GDAPI godot_variant_as_pool_int_array(const godot_variant *p_self) { +	godot_pool_int_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolIntArray *dest = (PoolIntArray *)&raw_dest; +	memnew_placement(dest, PoolIntArray(self->operator PoolIntArray())); // operator = is overloaded by PoolIntArray +	*dest = *self; +	return raw_dest; +} + +godot_pool_real_array GDAPI godot_variant_as_pool_real_array(const godot_variant *p_self) { +	godot_pool_real_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolRealArray *dest = (PoolRealArray *)&raw_dest; +	memnew_placement(dest, PoolRealArray(self->operator PoolRealArray())); // operator = is overloaded by PoolRealArray +	*dest = *self; +	return raw_dest; +} -	Variant *ret_val = (Variant *)&res; +godot_pool_string_array GDAPI godot_variant_as_pool_string_array(const godot_variant *p_self) { +	godot_pool_string_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolStringArray *dest = (PoolStringArray *)&raw_dest; +	memnew_placement(dest, PoolStringArray(self->operator PoolStringArray())); // operator = is overloaded by PoolStringArray +	*dest = *self; +	return raw_dest; +} -	Variant::CallError r_error; -	*ret_val = v->call(StringName(*method), args, p_argcount, r_error); -	if (p_error) { -		p_error->error = (godot_variant_call_error_error)r_error.error; -		p_error->argument = r_error.argument; -		p_error->expected = (godot_variant_type)r_error.expected; +godot_pool_vector2_array GDAPI godot_variant_as_pool_vector2_array(const godot_variant *p_self) { +	godot_pool_vector2_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolVector2Array *dest = (PoolVector2Array *)&raw_dest; +	memnew_placement(dest, PoolVector2Array(self->operator PoolVector2Array())); // operator = is overloaded by PoolVector2Array +	*dest = *self; +	return raw_dest; +} + +godot_pool_vector3_array GDAPI godot_variant_as_pool_vector3_array(const godot_variant *p_self) { +	godot_pool_vector3_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolVector3Array *dest = (PoolVector3Array *)&raw_dest; +	memnew_placement(dest, PoolVector3Array(self->operator PoolVector3Array())); // operator = is overloaded by PoolVector3Array +	*dest = *self; +	return raw_dest; +} + +godot_pool_color_array GDAPI godot_variant_as_pool_color_array(const godot_variant *p_self) { +	godot_pool_color_array raw_dest; +	const Variant *self = (const Variant *)p_self; +	PoolColorArray *dest = (PoolColorArray *)&raw_dest; +	memnew_placement(dest, PoolColorArray(self->operator PoolColorArray())); // operator = is overloaded by PoolColorArray +	*dest = *self; +	return raw_dest; +} + +godot_variant GDAPI godot_variant_call(godot_variant *p_self, const godot_string *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant_call_error *r_error) { +	Variant *self = (Variant *)p_self; +	String *method = (String *)p_method; +	const Variant **args = (const Variant **)p_args; +	godot_variant raw_dest; +	Variant *dest = (Variant *)&raw_dest; +	Variant::CallError error; +	memnew_placement_custom(dest, Variant, Variant(self->call(*method, args, p_argcount, error))); +	*dest = self->call(StringName(*method), args, p_argcount, r_error); +	if (r_error) { +		r_error->error = (godot_variant_call_error_error)error.error; +		r_error->argument = error.argument; +		r_error->expected = (godot_variant_type)error.expected;  	} -	return res; +	return raw_dest;  } -godot_bool GDAPI godot_variant_has_method(godot_variant *p_v, const godot_string *p_method) { -	Variant *v = (Variant *)p_v; -	String *method = (String *)p_method; -	return v->has_method(*method); +godot_bool GDAPI godot_variant_has_method(const godot_variant *p_self, const godot_string *p_method) { +	const Variant *self = (const Variant *)p_self; +	const String *method = (const String *)p_method; +	return self->has_method(*method);  } -godot_bool GDAPI godot_variant_operator_equal(const godot_variant *p_a, const godot_variant *p_b) { -	const Variant *a = (const Variant *)p_a; -	const Variant *b = (const Variant *)p_b; -	return a->operator==(*b); +godot_bool GDAPI godot_variant_operator_equal(const godot_variant *p_self, const godot_variant *p_other) { +	const Variant *self = (const Variant *)p_self; +	const Variant *other = (const Variant *)p_other; +	return self->operator==(*other);  } -godot_bool GDAPI godot_variant_operator_less(const godot_variant *p_a, const godot_variant *p_b) { -	const Variant *a = (const Variant *)p_a; -	const Variant *b = (const Variant *)p_b; -	return a->operator<(*b); +godot_bool GDAPI godot_variant_operator_less(const godot_variant *p_self, const godot_variant *p_other) { +	const Variant *self = (const Variant *)p_self; +	const Variant *other = (const Variant *)p_other; +	return self->operator<(*other);  } -godot_bool GDAPI godot_variant_hash_compare(const godot_variant *p_a, const godot_variant *p_b) { -	const Variant *a = (const Variant *)p_a; -	const Variant *b = (const Variant *)p_b; -	return a->hash_compare(*b); +godot_bool GDAPI godot_variant_hash_compare(const godot_variant *p_self, const godot_variant *p_other) { +	const Variant *self = (const Variant *)p_self; +	const Variant *other = (const Variant *)p_other; +	return self->hash_compare(*other);  } -godot_bool GDAPI godot_variant_booleanize(const godot_variant *p_v, godot_bool *p_valid) { -	const Variant *v = (const Variant *)p_v; -	bool &valid = *p_valid; -	return v->booleanize(valid); +godot_bool GDAPI godot_variant_booleanize(const godot_variant *p_self, godot_bool *r_valid) { +	const Variant *self = (const Variant *)p_self; +	bool &valid = *r_valid; +	return self->booleanize(valid);  } -void GDAPI godot_variant_destroy(godot_variant *p_v) { -	((Variant *)p_v)->~Variant(); +void GDAPI godot_variant_destroy(godot_variant *p_self) { +	Variant *self = (Variant *)p_self; +	self->~Variant();  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_variant.h b/modules/gdnative/godot/godot_variant.h index bf0e2bf64e..d46b87c41b 100644 --- a/modules/gdnative/godot/godot_variant.h +++ b/modules/gdnative/godot/godot_variant.h @@ -42,9 +42,6 @@ typedef struct godot_variant {  } godot_variant;  #endif -struct godot_transform2d; -typedef struct godot_transform2d godot_transform2d; -  typedef enum godot_variant_type {  	GODOT_VARIANT_TYPE_NIL, @@ -68,20 +65,19 @@ typedef enum godot_variant_type {  	// misc types  	GODOT_VARIANT_TYPE_COLOR, -	GODOT_VARIANT_TYPE_IMAGE, // 15 -	GODOT_VARIANT_TYPE_NODE_PATH, +	GODOT_VARIANT_TYPE_NODE_PATH, // 15  	GODOT_VARIANT_TYPE_RID,  	GODOT_VARIANT_TYPE_OBJECT, -	GODOT_VARIANT_TYPE_INPUT_EVENT, -	GODOT_VARIANT_TYPE_DICTIONARY, // 20 -	GODOT_VARIANT_TYPE_ARRAY, +	GODOT_VARIANT_TYPE_INPUT_EVENT, // TODO: remove me once input_event is removed from main Godot codebase +	GODOT_VARIANT_TYPE_DICTIONARY, +	GODOT_VARIANT_TYPE_ARRAY, // 20  	// arrays  	GODOT_VARIANT_TYPE_POOL_BYTE_ARRAY,  	GODOT_VARIANT_TYPE_POOL_INT_ARRAY,  	GODOT_VARIANT_TYPE_POOL_REAL_ARRAY, -	GODOT_VARIANT_TYPE_POOL_STRING_ARRAY, // 25 -	GODOT_VARIANT_TYPE_POOL_VECTOR2_ARRAY, +	GODOT_VARIANT_TYPE_POOL_STRING_ARRAY, +	GODOT_VARIANT_TYPE_POOL_VECTOR2_ARRAY, // 25  	GODOT_VARIANT_TYPE_POOL_VECTOR3_ARRAY,  	GODOT_VARIANT_TYPE_POOL_COLOR_ARRAY,  } godot_variant_type; @@ -102,90 +98,99 @@ typedef struct godot_variant_call_error {  } godot_variant_call_error;  #include "godot_array.h" +#include "godot_basis.h" +#include "godot_color.h"  #include "godot_dictionary.h" -#include "godot_input_event.h"  #include "godot_node_path.h" +#include "godot_plane.h" +#include "godot_pool_arrays.h" +#include "godot_quat.h" +#include "godot_rect2.h" +#include "godot_rect3.h"  #include "godot_rid.h" +#include "godot_string.h" +#include "godot_transform.h"  #include "godot_transform2d.h" +#include "godot_variant.h" +#include "godot_vector2.h" +#include "godot_vector3.h" + +#include "../godot.h"  godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_v); -void GDAPI godot_variant_copy(godot_variant *p_dest, const godot_variant *p_src); +void GDAPI godot_variant_copy(godot_variant *r_dest, const godot_variant *p_src); -void GDAPI godot_variant_new_nil(godot_variant *p_v); +void GDAPI godot_variant_new_nil(godot_variant *r_dest);  void GDAPI godot_variant_new_bool(godot_variant *p_v, const godot_bool p_b); -void GDAPI godot_variant_new_uint(godot_variant *p_v, const uint64_t p_i); -void GDAPI godot_variant_new_int(godot_variant *p_v, const int64_t p_i); -void GDAPI godot_variant_new_real(godot_variant *p_v, const double p_r); -void GDAPI godot_variant_new_string(godot_variant *p_v, const godot_string *p_s); -void GDAPI godot_variant_new_vector2(godot_variant *p_v, const godot_vector2 *p_v2); -void GDAPI godot_variant_new_rect2(godot_variant *p_v, const godot_rect2 *p_rect2); -void GDAPI godot_variant_new_vector3(godot_variant *p_v, const godot_vector3 *p_v3); -void GDAPI godot_variant_new_transform2d(godot_variant *p_v, const godot_transform2d *p_t2d); -void GDAPI godot_variant_new_plane(godot_variant *p_v, const godot_plane *p_plane); -void GDAPI godot_variant_new_quat(godot_variant *p_v, const godot_quat *p_quat); -void GDAPI godot_variant_new_rect3(godot_variant *p_v, const godot_rect3 *p_rect3); -void GDAPI godot_variant_new_basis(godot_variant *p_v, const godot_basis *p_basis); -void GDAPI godot_variant_new_transform(godot_variant *p_v, const godot_transform *p_trans); -void GDAPI godot_variant_new_color(godot_variant *p_v, const godot_color *p_color); -void GDAPI godot_variant_new_image(godot_variant *p_v, const godot_image *p_img); -void GDAPI godot_variant_new_node_path(godot_variant *p_v, const godot_node_path *p_np); -void GDAPI godot_variant_new_rid(godot_variant *p_v, const godot_rid *p_rid); -void GDAPI godot_variant_new_object(godot_variant *p_v, const godot_object *p_obj); -void GDAPI godot_variant_new_input_event(godot_variant *p_v, const godot_input_event *p_event); -void GDAPI godot_variant_new_dictionary(godot_variant *p_v, const godot_dictionary *p_dict); -void GDAPI godot_variant_new_array(godot_variant *p_v, const godot_array *p_arr); -void GDAPI godot_variant_new_pool_byte_array(godot_variant *p_v, const godot_pool_byte_array *p_pba); -void GDAPI godot_variant_new_pool_int_array(godot_variant *p_v, const godot_pool_int_array *p_pia); -void GDAPI godot_variant_new_pool_real_array(godot_variant *p_v, const godot_pool_real_array *p_pra); -void GDAPI godot_variant_new_pool_string_array(godot_variant *p_v, const godot_pool_string_array *p_psa); -void GDAPI godot_variant_new_pool_vector2_array(godot_variant *p_v, const godot_pool_vector2_array *p_pv2a); -void GDAPI godot_variant_new_pool_vector3_array(godot_variant *p_v, const godot_pool_vector3_array *p_pv3a); -void GDAPI godot_variant_new_pool_color_array(godot_variant *p_v, const godot_pool_color_array *p_pca); - -godot_bool GDAPI godot_variant_as_bool(const godot_variant *p_v); -uint64_t GDAPI godot_variant_as_uint(const godot_variant *p_v); -int64_t GDAPI godot_variant_as_int(const godot_variant *p_v); -double GDAPI godot_variant_as_real(const godot_variant *p_v); -godot_string GDAPI godot_variant_as_string(const godot_variant *p_v); -godot_vector2 GDAPI godot_variant_as_vector2(const godot_variant *p_v); -godot_rect2 GDAPI godot_variant_as_rect2(const godot_variant *p_v); -godot_vector3 GDAPI godot_variant_as_vector3(const godot_variant *p_v); -godot_transform2d GDAPI godot_variant_as_transform2d(const godot_variant *p_v); -godot_plane GDAPI godot_variant_as_plane(const godot_variant *p_v); -godot_quat GDAPI godot_variant_as_quat(const godot_variant *p_v); -godot_rect3 GDAPI godot_variant_as_rect3(const godot_variant *p_v); -godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_v); -godot_transform GDAPI godot_variant_as_transform(const godot_variant *p_v); -godot_color GDAPI godot_variant_as_color(const godot_variant *p_v); -godot_image GDAPI godot_variant_as_image(const godot_variant *p_v); -godot_node_path GDAPI godot_variant_as_node_path(const godot_variant *p_v); -godot_rid GDAPI godot_variant_as_rid(const godot_variant *p_v); -godot_object GDAPI *godot_variant_as_object(const godot_variant *p_v); -godot_input_event GDAPI godot_variant_as_input_event(const godot_variant *p_v); -godot_dictionary GDAPI godot_variant_as_dictionary(const godot_variant *p_v); -godot_array GDAPI godot_variant_as_array(const godot_variant *p_v); -godot_pool_byte_array GDAPI godot_variant_as_pool_byte_array(const godot_variant *p_v); -godot_pool_int_array GDAPI godot_variant_as_pool_int_array(const godot_variant *p_v); -godot_pool_real_array GDAPI godot_variant_as_pool_real_array(const godot_variant *p_v); -godot_pool_string_array GDAPI godot_variant_as_pool_string_array(const godot_variant *p_v); -godot_pool_vector2_array GDAPI godot_variant_as_pool_vector2_array(const godot_variant *p_v); -godot_pool_vector3_array GDAPI godot_variant_as_pool_vector3_array(const godot_variant *p_v); -godot_pool_color_array GDAPI godot_variant_as_pool_color_array(const godot_variant *p_v); - -godot_variant GDAPI godot_variant_call(godot_variant *p_v, const godot_string *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant_call_error *p_error); - -godot_bool GDAPI godot_variant_has_method(godot_variant *p_v, const godot_string *p_method); - -godot_bool GDAPI godot_variant_operator_equal(const godot_variant *p_a, const godot_variant *p_b); -godot_bool GDAPI godot_variant_operator_less(const godot_variant *p_a, const godot_variant *p_b); - -godot_bool GDAPI godot_variant_hash_compare(const godot_variant *p_a, const godot_variant *p_b); - -godot_bool GDAPI godot_variant_booleanize(const godot_variant *p_v, godot_bool *p_valid); - -void GDAPI godot_variant_destroy(godot_variant *p_v); +void GDAPI godot_variant_new_uint(godot_variant *r_dest, const uint64_t p_i); +void GDAPI godot_variant_new_int(godot_variant *r_dest, const int64_t p_i); +void GDAPI godot_variant_new_real(godot_variant *r_dest, const double p_r); +void GDAPI godot_variant_new_string(godot_variant *r_dest, const godot_string *p_s); +void GDAPI godot_variant_new_vector2(godot_variant *r_dest, const godot_vector2 *p_v2); +void GDAPI godot_variant_new_rect2(godot_variant *r_dest, const godot_rect2 *p_rect2); +void GDAPI godot_variant_new_vector3(godot_variant *r_dest, const godot_vector3 *p_v3); +void GDAPI godot_variant_new_transform2d(godot_variant *r_dest, const godot_transform2d *p_t2d); +void GDAPI godot_variant_new_plane(godot_variant *r_dest, const godot_plane *p_plane); +void GDAPI godot_variant_new_quat(godot_variant *r_dest, const godot_quat *p_quat); +void GDAPI godot_variant_new_rect3(godot_variant *r_dest, const godot_rect3 *p_rect3); +void GDAPI godot_variant_new_basis(godot_variant *r_dest, const godot_basis *p_basis); +void GDAPI godot_variant_new_transform(godot_variant *r_dest, const godot_transform *p_trans); +void GDAPI godot_variant_new_color(godot_variant *r_dest, const godot_color *p_color); +void GDAPI godot_variant_new_node_path(godot_variant *r_dest, const godot_node_path *p_np); +void GDAPI godot_variant_new_rid(godot_variant *r_dest, const godot_rid *p_rid); +void GDAPI godot_variant_new_object(godot_variant *r_dest, const godot_object *p_obj); +void GDAPI godot_variant_new_dictionary(godot_variant *r_dest, const godot_dictionary *p_dict); +void GDAPI godot_variant_new_array(godot_variant *r_dest, const godot_array *p_arr); +void GDAPI godot_variant_new_pool_byte_array(godot_variant *r_dest, const godot_pool_byte_array *p_pba); +void GDAPI godot_variant_new_pool_int_array(godot_variant *r_dest, const godot_pool_int_array *p_pia); +void GDAPI godot_variant_new_pool_real_array(godot_variant *r_dest, const godot_pool_real_array *p_pra); +void GDAPI godot_variant_new_pool_string_array(godot_variant *r_dest, const godot_pool_string_array *p_psa); +void GDAPI godot_variant_new_pool_vector2_array(godot_variant *r_dest, const godot_pool_vector2_array *p_pv2a); +void GDAPI godot_variant_new_pool_vector3_array(godot_variant *r_dest, const godot_pool_vector3_array *p_pv3a); +void GDAPI godot_variant_new_pool_color_array(godot_variant *r_dest, const godot_pool_color_array *p_pca); + +godot_bool GDAPI godot_variant_as_bool(const godot_variant *p_self); +uint64_t GDAPI godot_variant_as_uint(const godot_variant *p_self); +int64_t GDAPI godot_variant_as_int(const godot_variant *p_self); +double GDAPI godot_variant_as_real(const godot_variant *p_self); +godot_string GDAPI godot_variant_as_string(const godot_variant *p_self); +godot_vector2 GDAPI godot_variant_as_vector2(const godot_variant *p_self); +godot_rect2 GDAPI godot_variant_as_rect2(const godot_variant *p_self); +godot_vector3 GDAPI godot_variant_as_vector3(const godot_variant *p_self); +godot_transform2d GDAPI godot_variant_as_transform2d(const godot_variant *p_self); +godot_plane GDAPI godot_variant_as_plane(const godot_variant *p_self); +godot_quat GDAPI godot_variant_as_quat(const godot_variant *p_self); +godot_rect3 GDAPI godot_variant_as_rect3(const godot_variant *p_self); +godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_self); +godot_transform GDAPI godot_variant_as_transform(const godot_variant *p_self); +godot_color GDAPI godot_variant_as_color(const godot_variant *p_self); +godot_node_path GDAPI godot_variant_as_node_path(const godot_variant *p_self); +godot_rid GDAPI godot_variant_as_rid(const godot_variant *p_self); +godot_object GDAPI *godot_variant_as_object(const godot_variant *p_self); +godot_dictionary GDAPI godot_variant_as_dictionary(const godot_variant *p_self); +godot_array GDAPI godot_variant_as_array(const godot_variant *p_self); +godot_pool_byte_array GDAPI godot_variant_as_pool_byte_array(const godot_variant *p_self); +godot_pool_int_array GDAPI godot_variant_as_pool_int_array(const godot_variant *p_self); +godot_pool_real_array GDAPI godot_variant_as_pool_real_array(const godot_variant *p_self); +godot_pool_string_array GDAPI godot_variant_as_pool_string_array(const godot_variant *p_self); +godot_pool_vector2_array GDAPI godot_variant_as_pool_vector2_array(const godot_variant *p_self); +godot_pool_vector3_array GDAPI godot_variant_as_pool_vector3_array(const godot_variant *p_self); +godot_pool_color_array GDAPI godot_variant_as_pool_color_array(const godot_variant *p_self); + +godot_variant GDAPI godot_variant_call(godot_variant *p_self, const godot_string *p_method, const godot_variant **p_args, const godot_int p_argcount, godot_variant_call_error *r_error); + +godot_bool GDAPI godot_variant_has_method(const godot_variant *p_self, const godot_string *p_method); + +godot_bool GDAPI godot_variant_operator_equal(const godot_variant *p_self, const godot_variant *p_other); +godot_bool GDAPI godot_variant_operator_less(const godot_variant *p_self, const godot_variant *p_other); + +godot_bool GDAPI godot_variant_hash_compare(const godot_variant *p_self, const godot_variant *p_other); + +godot_bool GDAPI godot_variant_booleanize(const godot_variant *p_self, godot_bool *r_valid); + +void GDAPI godot_variant_destroy(godot_variant *p_self);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_vector2.cpp b/modules/gdnative/godot/godot_vector2.cpp index 87e60b6245..0ced800872 100644 --- a/modules/gdnative/godot/godot_vector2.cpp +++ b/modules/gdnative/godot/godot_vector2.cpp @@ -28,8 +28,9 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_vector2.h" +#include "core/variant.h" -#include "math/math_2d.h" +#include "core/math/math_2d.h"  #ifdef __cplusplus  extern "C" { @@ -37,258 +38,258 @@ extern "C" {  void _vector2_api_anchor() {} -godot_vector2 GDAPI godot_vector2_new(const godot_real p_x, const godot_real p_y) { -	godot_vector2 value; -	Vector2 *v = (Vector2 *)&value; -	v->x = p_x; -	v->y = p_y; -	return value; +void GDAPI godot_vector2_new(godot_vector2 *r_dest, const godot_real p_x, const godot_real p_y) { + +	Vector2 *dest = (Vector2 *)r_dest; +	*dest = Vector2(p_x, p_y);  } -void GDAPI godot_vector2_set_x(godot_vector2 *p_v, const godot_real p_x) { -	Vector2 *v = (Vector2 *)p_v; -	v->x = p_x; +godot_string GDAPI godot_vector2_as_string(const godot_vector2 *p_self) { +	godot_string ret; +	const Vector2 *self = (const Vector2 *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -void GDAPI godot_vector2_set_y(godot_vector2 *p_v, const godot_real p_y) { -	Vector2 *v = (Vector2 *)p_v; -	v->y = p_y; +godot_vector2 GDAPI godot_vector2_normalized(const godot_vector2 *p_self) { +	godot_vector2 dest; +	const Vector2 *self = (const Vector2 *)p_self; +	*((Vector2 *)&dest) = self->normalized(); +	return dest;  } -godot_real GDAPI godot_vector2_get_x(const godot_vector2 *p_v) { -	const Vector2 *v = (Vector2 *)p_v; -	return v->x; +godot_real GDAPI godot_vector2_length(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->length();  } -godot_real GDAPI godot_vector2_get_y(const godot_vector2 *p_v) { -	const Vector2 *v = (Vector2 *)p_v; -	return v->y; + +godot_real GDAPI godot_vector2_angle(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->angle();  } -void GDAPI godot_vector2_normalize(godot_vector2 *p_v) { -	Vector2 *v = (Vector2 *)p_v; -	v->normalize(); +godot_real GDAPI godot_vector2_length_squared(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->length_squared();  } -godot_vector2 GDAPI godot_vector2_normalized(const godot_vector2 *p_v) { -	godot_vector2 dest; -	const Vector2 *v = (Vector2 *)p_v; -	Vector2 *d = (Vector2 *)&dest; -	*d = v->normalized(); -	return dest; +godot_bool GDAPI godot_vector2_is_normalized(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->is_normalized();  } -godot_real GDAPI godot_vector2_length(const godot_vector2 *p_v) { -	const Vector2 *v = (Vector2 *)p_v; -	return v->length(); +godot_real GDAPI godot_vector2_distance_to(const godot_vector2 *p_self, const godot_vector2 *p_to) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *to = (const Vector2 *)p_to; +	return self->distance_to(*to);  } -godot_real GDAPI godot_vector2_length_squared(const godot_vector2 *p_v) { -	const Vector2 *v = (Vector2 *)p_v; -	return v->length_squared(); +godot_real GDAPI godot_vector2_distance_squared_to(const godot_vector2 *p_self, const godot_vector2 *p_to) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *to = (const Vector2 *)p_to; +	return self->distance_squared_to(*to);  } -godot_real GDAPI godot_vector2_distance_to(const godot_vector2 *p_v, const godot_vector2 p_b) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	return v->distance_to(*b); +godot_real GDAPI godot_vector2_angle_to(const godot_vector2 *p_self, const godot_vector2 *p_to) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *to = (const Vector2 *)p_to; +	return self->angle_to(*to);  } -godot_real GDAPI godot_vector2_distance_squared_to(const godot_vector2 *p_v, const godot_vector2 p_b) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	return v->distance_squared_to(*b); +godot_real GDAPI godot_vector2_angle_to_point(const godot_vector2 *p_self, const godot_vector2 *p_to) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *to = (const Vector2 *)p_to; +	return self->angle_to_point(*to);  } -godot_vector2 GDAPI godot_vector2_operator_add(const godot_vector2 *p_v, const godot_vector2 p_b) { +godot_vector2 GDAPI godot_vector2_linear_interpolate(const godot_vector2 *p_self, const godot_vector2 *p_b, const godot_real p_t) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	*d = *v + *b; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	*((Vector2 *)&dest) = self->linear_interpolate(*b, p_t);  	return dest;  } -godot_vector2 GDAPI godot_vector2_operator_subtract(const godot_vector2 *p_v, const godot_vector2 p_b) { +godot_vector2 GDAPI godot_vector2_cubic_interpolate(const godot_vector2 *p_self, const godot_vector2 *p_b, const godot_vector2 *p_pre_a, const godot_vector2 *p_post_b, const godot_real p_t) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	*d = *v - *b; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	const Vector2 *pre_a = (const Vector2 *)p_pre_a; +	const Vector2 *post_b = (const Vector2 *)p_post_b; +	*((Vector2 *)&dest) = self->cubic_interpolate(*b, *pre_a, *post_b, p_t);  	return dest;  } -godot_vector2 GDAPI godot_vector2_operator_multiply_vector(const godot_vector2 *p_v, const godot_vector2 p_b) { +godot_vector2 GDAPI godot_vector2_rotated(const godot_vector2 *p_self, const godot_real p_phi) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	*d = *v * *b; +	const Vector2 *self = (const Vector2 *)p_self; + +	*((Vector2 *)&dest) = self->rotated(p_phi);  	return dest;  } -godot_vector2 GDAPI godot_vector2_operator_multiply_scalar(const godot_vector2 *p_v, const godot_real p_b) { +godot_vector2 GDAPI godot_vector2_tangent(const godot_vector2 *p_self) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = *v * p_b; +	const Vector2 *self = (const Vector2 *)p_self; +	*((Vector2 *)&dest) = self->tangent();  	return dest;  } -godot_vector2 GDAPI godot_vector2_operator_divide_vector(const godot_vector2 *p_v, const godot_vector2 p_b) { +godot_vector2 GDAPI godot_vector2_floor(const godot_vector2 *p_self) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	*d = *v / *b; +	const Vector2 *self = (const Vector2 *)p_self; +	*((Vector2 *)&dest) = self->floor();  	return dest;  } -godot_vector2 GDAPI godot_vector2_operator_divide_scalar(const godot_vector2 *p_v, const godot_real p_b) { +godot_vector2 GDAPI godot_vector2_snapped(const godot_vector2 *p_self, const godot_vector2 *p_by) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = *v / p_b; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *by = (const Vector2 *)p_by; +	*((Vector2 *)&dest) = self->snapped(*by);  	return dest;  } -godot_bool GDAPI godot_vector2_operator_equal(const godot_vector2 *p_v, const godot_vector2 p_b) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	return *v == *b; +godot_real GDAPI godot_vector2_aspect(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->aspect();  } -godot_bool GDAPI godot_vector2_operator_less(const godot_vector2 *p_v, const godot_vector2 p_b) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	return *v < *b; +godot_real GDAPI godot_vector2_dot(const godot_vector2 *p_self, const godot_vector2 *p_with) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *with = (const Vector2 *)p_with; +	return self->dot(*with);  } -godot_vector2 GDAPI godot_vector2_abs(const godot_vector2 *p_v) { +godot_vector2 GDAPI godot_vector2_slide(const godot_vector2 *p_self, const godot_vector2 *p_n) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = v->abs(); +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *n = (const Vector2 *)p_n; +	*((Vector2 *)&dest) = self->slide(*n);  	return dest;  } -godot_real GDAPI godot_vector2_angle(const godot_vector2 *p_v) { -	const Vector2 *v = (Vector2 *)p_v; -	return v->angle(); -} - -godot_real GDAPI godot_vector2_angle_to(const godot_vector2 *p_v, const godot_vector2 p_to) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *to = (Vector2 *)&p_to; -	return v->angle_to(*to); +godot_vector2 GDAPI godot_vector2_bounce(const godot_vector2 *p_self, const godot_vector2 *p_n) { +	godot_vector2 dest; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *n = (const Vector2 *)p_n; +	*((Vector2 *)&dest) = self->bounce(*n); +	return dest;  } -godot_real GDAPI godot_vector2_angle_to_point(const godot_vector2 *p_v, const godot_vector2 p_to) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *to = (Vector2 *)&p_to; -	return v->angle_to_point(*to); +godot_vector2 GDAPI godot_vector2_reflect(const godot_vector2 *p_self, const godot_vector2 *p_n) { +	godot_vector2 dest; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *n = (const Vector2 *)p_n; +	*((Vector2 *)&dest) = self->reflect(*n); +	return dest;  } -godot_vector2 GDAPI godot_vector2_clamped(const godot_vector2 *p_v, const godot_real length) { +godot_vector2 GDAPI godot_vector2_abs(const godot_vector2 *p_self) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = v->clamped(length); +	const Vector2 *self = (const Vector2 *)p_self; +	*((Vector2 *)&dest) = self->abs();  	return dest;  } -godot_vector2 GDAPI godot_vector2_cubic_interpolate( -		const godot_vector2 *p_v, const godot_vector2 p_b, const godot_vector2 p_pre_a, -		const godot_vector2 p_post_b, godot_real t) { +godot_vector2 GDAPI godot_vector2_clamped(const godot_vector2 *p_self, const godot_real p_length) {  	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	const Vector2 *pre_a = (Vector2 *)&p_pre_a; -	const Vector2 *post_b = (Vector2 *)&p_post_b; -	*d = v->cubic_interpolate(*b, *pre_a, *post_b, t); +	const Vector2 *self = (const Vector2 *)p_self; + +	*((Vector2 *)&dest) = self->clamped(p_length);  	return dest;  } -godot_real GDAPI godot_vector2_dot(const godot_vector2 *p_v, const godot_vector2 p_with) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *with = (Vector2 *)&p_with; -	return v->dot(*with); +godot_vector2 GDAPI godot_vector2_operator_add(const godot_vector2 *p_self, const godot_vector2 *p_b) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	*dest = *self + *b; +	return raw_dest;  } -godot_vector2 GDAPI godot_vector2_floor(const godot_vector2 *p_v) { -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = v->floor(); -	return dest; +godot_vector2 GDAPI godot_vector2_operator_substract(const godot_vector2 *p_self, const godot_vector2 *p_b) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	*dest = *self - *b; +	return raw_dest;  } -godot_real GDAPI godot_vector2_aspect(const godot_vector2 *p_v) { -	const Vector2 *v = (Vector2 *)p_v; -	return v->aspect(); +godot_vector2 GDAPI godot_vector2_operator_multiply_vector(const godot_vector2 *p_self, const godot_vector2 *p_b) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	*dest = *self * *b; +	return raw_dest;  } -godot_vector2 GDAPI godot_vector2_linear_interpolate( -		const godot_vector2 *p_v, -		const godot_vector2 p_b, -		godot_real t) { -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *b = (Vector2 *)&p_b; -	*d = v->linear_interpolate(*b, t); -	return dest; +godot_vector2 GDAPI godot_vector2_operator_multiply_scalar(const godot_vector2 *p_self, const godot_real p_b) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	*dest = *self * p_b; +	return raw_dest;  } -godot_vector2 GDAPI godot_vector2_reflect(const godot_vector2 *p_v, const godot_vector2 p_vec) { -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *vec = (Vector2 *)&p_vec; -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	*d = v->reflect(*vec); -	return dest; +godot_vector2 GDAPI godot_vector2_operator_divide_vector(const godot_vector2 *p_self, const godot_vector2 *p_b) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	*dest = *self / *b; +	return raw_dest;  } -godot_vector2 GDAPI godot_vector2_rotated(const godot_vector2 *p_v, godot_real phi) { -	const Vector2 *v = (Vector2 *)p_v; -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	*d = v->rotated(phi); -	return dest; +godot_vector2 GDAPI godot_vector2_operator_divide_scalar(const godot_vector2 *p_self, const godot_real p_b) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	*dest = *self / p_b; +	return raw_dest;  } -godot_vector2 GDAPI godot_vector2_slide(const godot_vector2 *p_v, godot_vector2 p_vec) { -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *vec = (Vector2 *)&p_vec; -	*d = v->slide(*vec); -	return dest; +godot_bool GDAPI godot_vector2_operator_equal(const godot_vector2 *p_self, const godot_vector2 *p_b) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	return *self == *b;  } -godot_vector2 GDAPI godot_vector2_snapped(const godot_vector2 *p_v, godot_vector2 p_by) { -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	const Vector2 *by = (Vector2 *)&p_by; -	*d = v->snapped(*by); -	return dest; +godot_bool GDAPI godot_vector2_operator_less(const godot_vector2 *p_self, const godot_vector2 *p_b) { +	const Vector2 *self = (const Vector2 *)p_self; +	const Vector2 *b = (const Vector2 *)p_b; +	return *self < *b;  } -godot_vector2 GDAPI godot_vector2_tangent(const godot_vector2 *p_v) { -	godot_vector2 dest; -	Vector2 *d = (Vector2 *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = v->tangent(); -	return dest; +godot_vector2 GDAPI godot_vector2_operator_neg(const godot_vector2 *p_self) { +	godot_vector2 raw_dest; +	Vector2 *dest = (Vector2 *)&raw_dest; +	const Vector2 *self = (const Vector2 *)p_self; +	*dest = -(*self); +	return raw_dest;  } -godot_string GDAPI godot_vector2_to_string(const godot_vector2 *p_v) { -	godot_string dest; -	String *d = (String *)&dest; -	const Vector2 *v = (Vector2 *)p_v; -	*d = "(" + *v + ")"; -	return dest; +void GDAPI godot_vector2_set_x(godot_vector2 *p_self, const godot_real p_x) { +	Vector2 *self = (Vector2 *)p_self; +	self->x = p_x; +} + +void GDAPI godot_vector2_set_y(godot_vector2 *p_self, const godot_real p_y) { +	Vector2 *self = (Vector2 *)p_self; +	self->y = p_y; +} + +godot_real GDAPI godot_vector2_get_x(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->x; +} + +godot_real GDAPI godot_vector2_get_y(const godot_vector2 *p_self) { +	const Vector2 *self = (const Vector2 *)p_self; +	return self->y;  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_vector2.h b/modules/gdnative/godot/godot_vector2.h index 36a4f01d03..9c7590fedf 100644 --- a/modules/gdnative/godot/godot_vector2.h +++ b/modules/gdnative/godot/godot_vector2.h @@ -45,51 +45,79 @@ typedef struct godot_vector2 {  #include "../godot.h" -godot_vector2 GDAPI godot_vector2_new(const godot_real p_x, const godot_real p_y); - -void GDAPI godot_vector2_set_x(godot_vector2 *p_v, const godot_real p_x); -void GDAPI godot_vector2_set_y(godot_vector2 *p_v, const godot_real p_y); -godot_real GDAPI godot_vector2_get_x(const godot_vector2 *p_v); -godot_real GDAPI godot_vector2_get_y(const godot_vector2 *p_v); - -void GDAPI godot_vector2_normalize(godot_vector2 *p_v); -godot_vector2 GDAPI godot_vector2_normalized(const godot_vector2 *p_v); - -godot_real GDAPI godot_vector2_length(const godot_vector2 *p_v); -godot_real GDAPI godot_vector2_length_squared(const godot_vector2 *p_v); - -godot_real GDAPI godot_vector2_distance_to(const godot_vector2 *p_v, const godot_vector2 p_b); -godot_real GDAPI godot_vector2_distance_squared_to(const godot_vector2 *p_v, const godot_vector2 p_b); - -godot_vector2 GDAPI godot_vector2_abs(const godot_vector2 *p_v); -godot_real GDAPI godot_vector2_angle(const godot_vector2 *p_v); -godot_real GDAPI godot_vector2_angle_to(const godot_vector2 *p_v, const godot_vector2 p_to); -godot_real GDAPI godot_vector2_angle_to_point(const godot_vector2 *p_v, const godot_vector2 p_to); -godot_vector2 GDAPI godot_vector2_clamped(const godot_vector2 *p_v, godot_real length); -godot_vector2 GDAPI godot_vector2_cubic_interpolate(const godot_vector2 *p_v, -		const godot_vector2 p_b, const godot_vector2 p_pre_a, -		const godot_vector2 p_post_b, godot_real t); -godot_real GDAPI godot_vector2_dot(const godot_vector2 *p_v, const godot_vector2 p_with); -godot_vector2 GDAPI godot_vector2_floor(const godot_vector2 *p_v); -godot_real GDAPI godot_vector2_aspect(const godot_vector2 *p_v); -godot_vector2 GDAPI godot_vector2_linear_interpolate(const godot_vector2 *p_v, -		const godot_vector2 p_b, godot_real t); -godot_vector2 GDAPI godot_vector2_reflect(const godot_vector2 *p_v, const godot_vector2 p_vec); -godot_vector2 GDAPI godot_vector2_rotated(const godot_vector2 *p_v, godot_real phi); -godot_vector2 GDAPI godot_vector2_slide(const godot_vector2 *p_v, godot_vector2 p_vec); -godot_vector2 GDAPI godot_vector2_snapped(const godot_vector2 *p_v, godot_vector2 p_by); -godot_vector2 GDAPI godot_vector2_tangent(const godot_vector2 *p_v); -godot_string GDAPI godot_vector2_to_string(const godot_vector2 *p_v); - -godot_vector2 GDAPI godot_vector2_operator_add(const godot_vector2 *p_v, const godot_vector2 p_b); -godot_vector2 GDAPI godot_vector2_operator_subtract(const godot_vector2 *p_v, const godot_vector2 p_b); -godot_vector2 GDAPI godot_vector2_operator_multiply_vector(const godot_vector2 *p_v, const godot_vector2 p_b); -godot_vector2 GDAPI godot_vector2_operator_multiply_scalar(const godot_vector2 *p_v, const godot_real p_b); -godot_vector2 GDAPI godot_vector2_operator_divide_vector(const godot_vector2 *p_v, const godot_vector2 p_b); -godot_vector2 GDAPI godot_vector2_operator_divide_scalar(const godot_vector2 *p_v, const godot_real p_b); - -godot_bool GDAPI godot_vector2_operator_equal(const godot_vector2 *p_v, const godot_vector2 p_b); -godot_bool GDAPI godot_vector2_operator_less(const godot_vector2 *p_v, const godot_vector2 p_b); +void GDAPI godot_vector2_new(godot_vector2 *r_dest, const godot_real p_x, const godot_real p_y); + +godot_string GDAPI godot_vector2_as_string(const godot_vector2 *p_self); + +godot_vector2 GDAPI godot_vector2_normalized(const godot_vector2 *p_self); + +godot_real GDAPI godot_vector2_length(const godot_vector2 *p_self); + +godot_real GDAPI godot_vector2_angle(const godot_vector2 *p_self); + +godot_real GDAPI godot_vector2_length_squared(const godot_vector2 *p_self); + +godot_bool GDAPI godot_vector2_is_normalized(const godot_vector2 *p_self); + +godot_real GDAPI godot_vector2_distance_to(const godot_vector2 *p_self, const godot_vector2 *p_to); + +godot_real GDAPI godot_vector2_distance_squared_to(const godot_vector2 *p_self, const godot_vector2 *p_to); + +godot_real GDAPI godot_vector2_angle_to(const godot_vector2 *p_self, const godot_vector2 *p_to); + +godot_real GDAPI godot_vector2_angle_to_point(const godot_vector2 *p_self, const godot_vector2 *p_to); + +godot_vector2 GDAPI godot_vector2_linear_interpolate(const godot_vector2 *p_self, const godot_vector2 *p_b, const godot_real p_t); + +godot_vector2 GDAPI godot_vector2_cubic_interpolate(const godot_vector2 *p_self, const godot_vector2 *p_b, const godot_vector2 *p_pre_a, const godot_vector2 *p_post_b, const godot_real p_t); + +godot_vector2 GDAPI godot_vector2_rotated(const godot_vector2 *p_self, const godot_real p_phi); + +godot_vector2 GDAPI godot_vector2_tangent(const godot_vector2 *p_self); + +godot_vector2 GDAPI godot_vector2_floor(const godot_vector2 *p_self); + +godot_vector2 GDAPI godot_vector2_snapped(const godot_vector2 *p_self, const godot_vector2 *p_by); + +godot_real GDAPI godot_vector2_aspect(const godot_vector2 *p_self); + +godot_real GDAPI godot_vector2_dot(const godot_vector2 *p_self, const godot_vector2 *p_with); + +godot_vector2 GDAPI godot_vector2_slide(const godot_vector2 *p_self, const godot_vector2 *p_n); + +godot_vector2 GDAPI godot_vector2_bounce(const godot_vector2 *p_self, const godot_vector2 *p_n); + +godot_vector2 GDAPI godot_vector2_reflect(const godot_vector2 *p_self, const godot_vector2 *p_n); + +godot_vector2 GDAPI godot_vector2_abs(const godot_vector2 *p_self); + +godot_vector2 GDAPI godot_vector2_clamped(const godot_vector2 *p_self, const godot_real p_length); + +godot_vector2 GDAPI godot_vector2_operator_add(const godot_vector2 *p_self, const godot_vector2 *p_b); + +godot_vector2 GDAPI godot_vector2_operator_substract(const godot_vector2 *p_self, const godot_vector2 *p_b); + +godot_vector2 GDAPI godot_vector2_operator_multiply_vector(const godot_vector2 *p_self, const godot_vector2 *p_b); + +godot_vector2 GDAPI godot_vector2_operator_multiply_scalar(const godot_vector2 *p_self, const godot_real p_b); + +godot_vector2 GDAPI godot_vector2_operator_divide_vector(const godot_vector2 *p_self, const godot_vector2 *p_b); + +godot_vector2 GDAPI godot_vector2_operator_divide_scalar(const godot_vector2 *p_self, const godot_real p_b); + +godot_bool GDAPI godot_vector2_operator_equal(const godot_vector2 *p_self, const godot_vector2 *p_b); + +godot_bool GDAPI godot_vector2_operator_less(const godot_vector2 *p_self, const godot_vector2 *p_b); + +godot_vector2 GDAPI godot_vector2_operator_neg(const godot_vector2 *p_self); + +void GDAPI godot_vector2_set_x(godot_vector2 *p_self, const godot_real p_x); + +void GDAPI godot_vector2_set_y(godot_vector2 *p_self, const godot_real p_y); + +godot_real GDAPI godot_vector2_get_x(const godot_vector2 *p_self); + +godot_real GDAPI godot_vector2_get_y(const godot_vector2 *p_self);  #ifdef __cplusplus  } diff --git a/modules/gdnative/godot/godot_vector3.cpp b/modules/gdnative/godot/godot_vector3.cpp index 5f71b9f7e4..f9942af6e5 100644 --- a/modules/gdnative/godot/godot_vector3.cpp +++ b/modules/gdnative/godot/godot_vector3.cpp @@ -28,313 +28,274 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_vector3.h" +#include "core/variant.h" -#include "math/vector3.h" +#include "core/vector.h"  #ifdef __cplusplus  extern "C" {  #endif -void _vector3_api_anchor() { -} +void _vector3_api_anchor() {} -godot_vector3 GDAPI godot_vector3_new(const godot_real p_x, const godot_real p_y, const godot_real p_z) { -	godot_vector3 value; -	Vector3 *v = (Vector3 *)&value; -	*v = Vector3(p_x, p_y, p_z); -	return value; -} +void GDAPI godot_vector3_new(godot_vector3 *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_z) { -void GDAPI godot_vector3_set_axis(godot_vector3 *p_v, const godot_int p_axis, const godot_real p_val) { -	Vector3 *v = (Vector3 *)p_v; -	v->set_axis(p_axis, p_val); +	Vector3 *dest = (Vector3 *)r_dest; +	*dest = Vector3(p_x, p_y, p_z);  } -godot_real GDAPI godot_vector3_get_axis(const godot_vector3 *p_v, const godot_int p_axis) { -	Vector3 *v = (Vector3 *)p_v; -	return v->get_axis(p_axis); +godot_string GDAPI godot_vector3_as_string(const godot_vector3 *p_self) { +	godot_string ret; +	const Vector3 *self = (const Vector3 *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -godot_int GDAPI godot_vector3_min_axis(const godot_vector3 *p_v) { -	Vector3 *v = (Vector3 *)p_v; -	return v->min_axis(); +godot_int GDAPI godot_vector3_min_axis(const godot_vector3 *p_self) { +	const Vector3 *self = (const Vector3 *)p_self; +	return self->min_axis();  } -godot_int GDAPI godot_vector3_max_axis(const godot_vector3 *p_v) { -	Vector3 *v = (Vector3 *)p_v; -	return v->max_axis(); +godot_int GDAPI godot_vector3_max_axis(const godot_vector3 *p_self) { +	const Vector3 *self = (const Vector3 *)p_self; +	return self->max_axis();  } -godot_real GDAPI godot_vector3_length(const godot_vector3 *p_v) { -	Vector3 *v = (Vector3 *)p_v; -	return v->length(); +godot_real GDAPI godot_vector3_length(const godot_vector3 *p_self) { +	const Vector3 *self = (const Vector3 *)p_self; +	return self->length();  } -godot_real GDAPI godot_vector3_length_squared(const godot_vector3 *p_v) { -	Vector3 *v = (Vector3 *)p_v; -	return v->length_squared(); +godot_real GDAPI godot_vector3_length_squared(const godot_vector3 *p_self) { +	const Vector3 *self = (const Vector3 *)p_self; +	return self->length_squared();  } -void GDAPI godot_vector3_normalize(godot_vector3 *p_v) { -	Vector3 *v = (Vector3 *)p_v; -	v->normalize(); +godot_bool GDAPI godot_vector3_is_normalized(const godot_vector3 *p_self) { +	const Vector3 *self = (const Vector3 *)p_self; +	return self->is_normalized();  } -godot_vector3 GDAPI godot_vector3_normalized(const godot_vector3 *p_v) { +godot_vector3 GDAPI godot_vector3_normalized(const godot_vector3 *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	*d = v->normalized(); +	const Vector3 *self = (const Vector3 *)p_self; +	*((Vector3 *)&dest) = self->normalized();  	return dest;  } -godot_vector3 godot_vector3_inverse(const godot_vector3 *p_v) { +godot_vector3 GDAPI godot_vector3_inverse(const godot_vector3 *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = v->inverse(); +	const Vector3 *self = (const Vector3 *)p_self; +	*((Vector3 *)&dest) = self->inverse();  	return dest;  } -void godot_vector3_zero(godot_vector3 *p_v) { -	Vector3 *v = (Vector3 *)p_v; -	v->zero(); -} - -void godot_vector3_snap(godot_vector3 *p_v, const godot_real val) { -	Vector3 *v = (Vector3 *)p_v; -	v->snap(val); -} - -godot_vector3 godot_vector3_snapped(const godot_vector3 *p_v, const godot_real val) { +godot_vector3 GDAPI godot_vector3_snapped(const godot_vector3 *p_self, const godot_real p_by) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = v->snapped(val); -	return dest; -} +	const Vector3 *self = (const Vector3 *)p_self; -void godot_vector3_rotate(godot_vector3 *p_v, const godot_vector3 p_axis, const godot_real phi) { -	Vector3 *v = (Vector3 *)p_v; -	const Vector3 *axis = (Vector3 *)&p_axis; -	v->rotate(*axis, phi); +	*((Vector3 *)&dest) = self->snapped(p_by); +	return dest;  } -godot_vector3 godot_vector3_rotated(const godot_vector3 *p_v, const godot_vector3 p_axis, const godot_real phi) { +godot_vector3 GDAPI godot_vector3_rotated(const godot_vector3 *p_self, const godot_vector3 *p_axis, const godot_real p_phi) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *axis = (Vector3 *)&p_axis; -	*d = v->rotated(*axis, phi); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *axis = (const Vector3 *)p_axis; +	*((Vector3 *)&dest) = self->rotated(*axis, p_phi);  	return dest;  } -godot_vector3 godot_vector3_linear_interpolate(const godot_vector3 *p_v, const godot_vector3 p_b, const godot_real t) { +godot_vector3 GDAPI godot_vector3_linear_interpolate(const godot_vector3 *p_self, const godot_vector3 *p_b, const godot_real p_t) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *b = (Vector3 *)&p_b; -	*d = v->linear_interpolate(*b, t); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*((Vector3 *)&dest) = self->linear_interpolate(*b, p_t);  	return dest;  } -godot_vector3 godot_vector3_cubic_interpolate(const godot_vector3 *p_v, -		const godot_vector3 p_b, const godot_vector3 p_pre_a, -		const godot_vector3 p_post_b, const godot_real t) { +godot_vector3 GDAPI godot_vector3_cubic_interpolate(const godot_vector3 *p_self, const godot_vector3 *p_b, const godot_vector3 *p_pre_a, const godot_vector3 *p_post_b, const godot_real p_t) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *b = (Vector3 *)&p_b; -	const Vector3 *pre_a = (Vector3 *)&p_pre_a; -	const Vector3 *post_b = (Vector3 *)&p_post_b; -	*d = v->cubic_interpolate(*b, *pre_a, *post_b, t); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	const Vector3 *pre_a = (const Vector3 *)p_pre_a; +	const Vector3 *post_b = (const Vector3 *)p_post_b; +	*((Vector3 *)&dest) = self->cubic_interpolate(*b, *pre_a, *post_b, p_t);  	return dest;  } -godot_vector3 godot_vector3_cubic_interpolaten(const godot_vector3 *p_v, -		const godot_vector3 p_b, const godot_vector3 p_pre_a, -		const godot_vector3 p_post_b, const godot_real t) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *b = (Vector3 *)&p_b; -	const Vector3 *pre_a = (Vector3 *)&p_pre_a; -	const Vector3 *post_b = (Vector3 *)&p_post_b; -	*d = v->cubic_interpolaten(*b, *pre_a, *post_b, t); -	return dest; +godot_real GDAPI godot_vector3_dot(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	return self->dot(*b);  } -godot_vector3 godot_vector3_cross(const godot_vector3 *p_v, const godot_vector3 p_b) { +godot_vector3 GDAPI godot_vector3_cross(const godot_vector3 *p_self, const godot_vector3 *p_b) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *b = (Vector3 *)&p_b; -	*d = v->cross(*b); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*((Vector3 *)&dest) = self->cross(*b);  	return dest;  } -godot_real godot_vector3_dot(const godot_vector3 *p_v, const godot_vector3 p_b) { -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *b = (Vector3 *)&p_b; -	return v->dot(*b); -} - -godot_basis godot_vector3_outer(const godot_vector3 *p_v, const godot_vector3 p_b) { +godot_basis GDAPI godot_vector3_outer(const godot_vector3 *p_self, const godot_vector3 *p_b) {  	godot_basis dest; -	Basis *d = (Basis *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *b = (Vector3 *)&p_b; -	*d = v->outer(*b); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*((Basis *)&dest) = self->outer(*b);  	return dest;  } -godot_basis godot_vector3_to_diagonal_matrix(const godot_vector3 *p_v) { +godot_basis GDAPI godot_vector3_to_diagonal_matrix(const godot_vector3 *p_self) {  	godot_basis dest; -	Basis *d = (Basis *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = v->to_diagonal_matrix(); +	const Vector3 *self = (const Vector3 *)p_self; +	*((Basis *)&dest) = self->to_diagonal_matrix();  	return dest;  } -godot_vector3 godot_vector3_abs(const godot_vector3 *p_v) { +godot_vector3 GDAPI godot_vector3_abs(const godot_vector3 *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = v->abs(); +	const Vector3 *self = (const Vector3 *)p_self; +	*((Vector3 *)&dest) = self->abs();  	return dest;  } -godot_vector3 godot_vector3_floor(const godot_vector3 *p_v) { +godot_vector3 GDAPI godot_vector3_floor(const godot_vector3 *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = v->floor(); +	const Vector3 *self = (const Vector3 *)p_self; +	*((Vector3 *)&dest) = self->floor();  	return dest;  } -godot_vector3 godot_vector3_ceil(const godot_vector3 *p_v) { +godot_vector3 GDAPI godot_vector3_ceil(const godot_vector3 *p_self) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = v->ceil(); +	const Vector3 *self = (const Vector3 *)p_self; +	*((Vector3 *)&dest) = self->ceil();  	return dest;  } -godot_real GDAPI godot_vector3_distance_to(const godot_vector3 *p_v, const godot_vector3 p_b) { -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	return v->distance_to(*b); +godot_real GDAPI godot_vector3_distance_to(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	return self->distance_to(*b);  } -godot_real GDAPI godot_vector3_distance_squared_to(const godot_vector3 *p_v, const godot_vector3 p_b) { -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	return v->distance_squared_to(*b); +godot_real GDAPI godot_vector3_distance_squared_to(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	return self->distance_squared_to(*b);  } -godot_real GDAPI godot_vector3_angle_to(const godot_vector3 *p_v, const godot_vector3 p_b) { -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	return v->angle_to(*b); +godot_real GDAPI godot_vector3_angle_to(const godot_vector3 *p_self, const godot_vector3 *p_to) { +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *to = (const Vector3 *)p_to; +	return self->angle_to(*to);  } -godot_vector3 godot_vector3_slide(const godot_vector3 *p_v, const godot_vector3 p_vec) { +godot_vector3 GDAPI godot_vector3_slide(const godot_vector3 *p_self, const godot_vector3 *p_n) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *vec = (Vector3 *)&p_vec; -	*d = v->slide(*vec); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *n = (const Vector3 *)p_n; +	*((Vector3 *)&dest) = self->slide(*n);  	return dest;  } -godot_vector3 godot_vector3_bounce(const godot_vector3 *p_v, const godot_vector3 p_vec) { +godot_vector3 GDAPI godot_vector3_bounce(const godot_vector3 *p_self, const godot_vector3 *p_n) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *vec = (Vector3 *)&p_vec; -	*d = v->bounce(*vec); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *n = (const Vector3 *)p_n; +	*((Vector3 *)&dest) = self->bounce(*n);  	return dest;  } -godot_vector3 godot_vector3_reflect(const godot_vector3 *p_v, const godot_vector3 p_vec) { +godot_vector3 GDAPI godot_vector3_reflect(const godot_vector3 *p_self, const godot_vector3 *p_n) {  	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	const Vector3 *vec = (Vector3 *)&p_vec; -	*d = v->reflect(*vec); +	const Vector3 *self = (const Vector3 *)p_self; +	const Vector3 *n = (const Vector3 *)p_n; +	*((Vector3 *)&dest) = self->reflect(*n);  	return dest;  } -godot_vector3 GDAPI godot_vector3_operator_add(const godot_vector3 *p_v, const godot_vector3 p_b) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	*d = *v + *b; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_add(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	Vector3 *self = (Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*dest = *self + *b; +	return raw_dest;  } -godot_vector3 GDAPI godot_vector3_operator_subtract(const godot_vector3 *p_v, const godot_vector3 p_b) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	*d = *v - *b; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_substract(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	Vector3 *self = (Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*dest = *self - *b; +	return raw_dest;  } -godot_vector3 GDAPI godot_vector3_operator_multiply_vector(const godot_vector3 *p_v, const godot_vector3 p_b) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	*d = *v * *b; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_multiply_vector(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	Vector3 *self = (Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*dest = *self * *b; +	return raw_dest;  } -godot_vector3 GDAPI godot_vector3_operator_multiply_scalar(const godot_vector3 *p_v, const godot_real p_b) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	*d = *v * p_b; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_multiply_scalar(const godot_vector3 *p_self, const godot_real p_b) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	Vector3 *self = (Vector3 *)p_self; +	*dest = *self * p_b; +	return raw_dest;  } -godot_vector3 GDAPI godot_vector3_operator_divide_vector(const godot_vector3 *p_v, const godot_vector3 p_b) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	*d = *v / *b; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_divide_vector(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	Vector3 *self = (Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	*dest = *self / *b; +	return raw_dest;  } -godot_vector3 GDAPI godot_vector3_operator_divide_scalar(const godot_vector3 *p_v, const godot_real p_b) { -	godot_vector3 dest; -	Vector3 *d = (Vector3 *)&dest; -	Vector3 *v = (Vector3 *)p_v; -	*d = *v / p_b; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_divide_scalar(const godot_vector3 *p_self, const godot_real p_b) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	Vector3 *self = (Vector3 *)p_self; +	*dest = *self / p_b; +	return raw_dest;  } -godot_bool GDAPI godot_vector3_operator_equal(const godot_vector3 *p_v, const godot_vector3 p_b) { -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	return *v == *b; +godot_bool GDAPI godot_vector3_operator_equal(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	Vector3 *self = (Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	return *self == *b;  } -godot_bool GDAPI godot_vector3_operator_less(const godot_vector3 *p_v, const godot_vector3 p_b) { -	Vector3 *v = (Vector3 *)p_v; -	Vector3 *b = (Vector3 *)&p_b; -	return *v < *b; +godot_bool GDAPI godot_vector3_operator_less(const godot_vector3 *p_self, const godot_vector3 *p_b) { +	Vector3 *self = (Vector3 *)p_self; +	const Vector3 *b = (const Vector3 *)p_b; +	return *self < *b;  } -godot_string GDAPI godot_vector3_to_string(const godot_vector3 *p_v) { -	godot_string dest; -	String *d = (String *)&dest; -	const Vector3 *v = (Vector3 *)p_v; -	*d = "(" + *v + ")"; -	return dest; +godot_vector3 GDAPI godot_vector3_operator_neg(const godot_vector3 *p_self) { +	godot_vector3 raw_dest; +	Vector3 *dest = (Vector3 *)&raw_dest; +	const Vector3 *self = (const Vector3 *)p_self; +	*dest = -(*self); +	return raw_dest; +} + +void GDAPI godot_vector3_set_axis(godot_vector3 *p_self, const godot_vector3_axis p_axis, const godot_real p_val) { +	Vector3 *self = (Vector3 *)p_self; +	self->set_axis(p_axis, p_val); +} + +godot_real GDAPI godot_vector3_get_axis(const godot_vector3 *p_self, const godot_vector3_axis p_axis) { +	const Vector3 *self = (const Vector3 *)p_self; +	return self->get_axis(p_axis);  }  #ifdef __cplusplus diff --git a/modules/gdnative/godot/godot_vector3.h b/modules/gdnative/godot/godot_vector3.h index 654ddd7792..8e2aed8173 100644 --- a/modules/gdnative/godot/godot_vector3.h +++ b/modules/gdnative/godot/godot_vector3.h @@ -37,74 +37,94 @@ extern "C" {  #include <stdint.h>  #ifndef GODOT_CORE_API_GODOT_VECTOR3_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_VECTOR3_TYPE_DEFINED  typedef struct godot_vector3 {  	uint8_t _dont_touch_that[12];  } godot_vector3;  #endif -#define GODOT_VECTOR3_AXIX_X 0 -#define GODOT_VECTOR3_AXIX_Y 1 -#define GODOT_VECTOR3_AXIX_Z 2 -  #include "../godot.h"  #include "godot_basis.h" -godot_vector3 GDAPI godot_vector3_new(const godot_real p_x, const godot_real p_y, const godot_real p_z); - -void GDAPI godot_vector3_set_axis(godot_vector3 *p_v, const godot_int p_axis, const godot_real p_val); -godot_real GDAPI godot_vector3_get_axis(const godot_vector3 *p_v, const godot_int p_axis); - -godot_int GDAPI godot_vector3_min_axis(const godot_vector3 *p_v); -godot_int GDAPI godot_vector3_max_axis(const godot_vector3 *p_v); - -godot_real GDAPI godot_vector3_length(const godot_vector3 *p_v); -godot_real GDAPI godot_vector3_length_squared(const godot_vector3 *p_v); - -void GDAPI godot_vector3_normalize(godot_vector3 *p_v); -godot_vector3 GDAPI godot_vector3_normalized(const godot_vector3 *p_v); - -godot_vector3 GDAPI godot_vector3_inverse(const godot_vector3 *p_v); -void GDAPI godot_vector3_zero(godot_vector3 *p_v); -void GDAPI godot_vector3_snap(godot_vector3 *p_v, const godot_real val); -godot_vector3 GDAPI godot_vector3_snapped(const godot_vector3 *p_v, const godot_real val); -void GDAPI godot_vector3_rotate(godot_vector3 *p_v, const godot_vector3 p_axis, const godot_real phi); -godot_vector3 GDAPI godot_vector3_rotated(const godot_vector3 *p_v, -		const godot_vector3 p_axis, const godot_real phi); -godot_vector3 GDAPI godot_vector3_linear_interpolate(const godot_vector3 *p_v, -		const godot_vector3 p_b, const godot_real t); -godot_vector3 GDAPI godot_vector3_cubic_interpolate(const godot_vector3 *p_v, -		const godot_vector3 p_b, const godot_vector3 p_pre_a, -		const godot_vector3 p_post_b, const godot_real t); -godot_vector3 GDAPI godot_vector3_cubic_interpolaten(const godot_vector3 *p_v, -		const godot_vector3 p_b, const godot_vector3 p_pre_a, -		const godot_vector3 p_post_b, const godot_real t); -godot_vector3 GDAPI godot_vector3_cross(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_real GDAPI godot_vector3_dot(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_basis GDAPI godot_vector3_outer(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_basis GDAPI godot_vector3_to_diagonal_matrix(const godot_vector3 *p_v); -godot_vector3 GDAPI godot_vector3_abs(const godot_vector3 *p_v); -godot_vector3 GDAPI godot_vector3_floor(const godot_vector3 *p_v); -godot_vector3 GDAPI godot_vector3_ceil(const godot_vector3 *p_v); - -godot_real GDAPI godot_vector3_distance_to(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_real GDAPI godot_vector3_distance_squared_to(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_real GDAPI godot_vector3_angle_to(const godot_vector3 *p_v, const godot_vector3 p_b); - -godot_vector3 GDAPI godot_vector3_slide(const godot_vector3 *p_v, const godot_vector3 p_vec); -godot_vector3 GDAPI godot_vector3_bounce(const godot_vector3 *p_v, const godot_vector3 p_vec); -godot_vector3 GDAPI godot_vector3_reflect(const godot_vector3 *p_v, const godot_vector3 p_vec); - -godot_vector3 GDAPI godot_vector3_operator_add(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_vector3 GDAPI godot_vector3_operator_subtract(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_vector3 GDAPI godot_vector3_operator_multiply_vector(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_vector3 GDAPI godot_vector3_operator_multiply_scalar(const godot_vector3 *p_v, const godot_real p_b); -godot_vector3 GDAPI godot_vector3_operator_divide_vector(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_vector3 GDAPI godot_vector3_operator_divide_scalar(const godot_vector3 *p_v, const godot_real p_b); - -godot_bool GDAPI godot_vector3_operator_equal(const godot_vector3 *p_v, const godot_vector3 p_b); -godot_bool GDAPI godot_vector3_operator_less(const godot_vector3 *p_v, const godot_vector3 p_b); - -godot_string GDAPI godot_vector3_to_string(const godot_vector3 *p_v); +typedef enum { +	GODOT_VECTOR3_AXIS_X, +	GODOT_VECTOR3_AXIS_Y, +	GODOT_VECTOR3_AXIS_Z, +} godot_vector3_axis; + +void GDAPI godot_vector3_new(godot_vector3 *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_z); + +godot_string GDAPI godot_vector3_as_string(const godot_vector3 *p_self); + +godot_int GDAPI godot_vector3_min_axis(const godot_vector3 *p_self); + +godot_int GDAPI godot_vector3_max_axis(const godot_vector3 *p_self); + +godot_real GDAPI godot_vector3_length(const godot_vector3 *p_self); + +godot_real GDAPI godot_vector3_length_squared(const godot_vector3 *p_self); + +godot_bool GDAPI godot_vector3_is_normalized(const godot_vector3 *p_self); + +godot_vector3 GDAPI godot_vector3_normalized(const godot_vector3 *p_self); + +godot_vector3 GDAPI godot_vector3_inverse(const godot_vector3 *p_self); + +godot_vector3 GDAPI godot_vector3_snapped(const godot_vector3 *p_self, const godot_real p_by); + +godot_vector3 GDAPI godot_vector3_rotated(const godot_vector3 *p_self, const godot_vector3 *p_axis, const godot_real p_phi); + +godot_vector3 GDAPI godot_vector3_linear_interpolate(const godot_vector3 *p_self, const godot_vector3 *p_b, const godot_real p_t); + +godot_vector3 GDAPI godot_vector3_cubic_interpolate(const godot_vector3 *p_self, const godot_vector3 *p_b, const godot_vector3 *p_pre_a, const godot_vector3 *p_post_b, const godot_real p_t); + +godot_real GDAPI godot_vector3_dot(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_vector3 GDAPI godot_vector3_cross(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_basis GDAPI godot_vector3_outer(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_basis GDAPI godot_vector3_to_diagonal_matrix(const godot_vector3 *p_self); + +godot_vector3 GDAPI godot_vector3_abs(const godot_vector3 *p_self); + +godot_vector3 GDAPI godot_vector3_floor(const godot_vector3 *p_self); + +godot_vector3 GDAPI godot_vector3_ceil(const godot_vector3 *p_self); + +godot_real GDAPI godot_vector3_distance_to(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_real GDAPI godot_vector3_distance_squared_to(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_real GDAPI godot_vector3_angle_to(const godot_vector3 *p_self, const godot_vector3 *p_to); + +godot_vector3 GDAPI godot_vector3_slide(const godot_vector3 *p_self, const godot_vector3 *p_n); + +godot_vector3 GDAPI godot_vector3_bounce(const godot_vector3 *p_self, const godot_vector3 *p_n); + +godot_vector3 GDAPI godot_vector3_reflect(const godot_vector3 *p_self, const godot_vector3 *p_n); + +godot_vector3 GDAPI godot_vector3_operator_add(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_vector3 GDAPI godot_vector3_operator_substract(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_vector3 GDAPI godot_vector3_operator_multiply_vector(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_vector3 GDAPI godot_vector3_operator_multiply_scalar(const godot_vector3 *p_self, const godot_real p_b); + +godot_vector3 GDAPI godot_vector3_operator_divide_vector(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_vector3 GDAPI godot_vector3_operator_divide_scalar(const godot_vector3 *p_self, const godot_real p_b); + +godot_bool GDAPI godot_vector3_operator_equal(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_bool GDAPI godot_vector3_operator_less(const godot_vector3 *p_self, const godot_vector3 *p_b); + +godot_vector3 GDAPI godot_vector3_operator_neg(const godot_vector3 *p_self); + +void GDAPI godot_vector3_set_axis(godot_vector3 *p_self, const godot_vector3_axis p_axis, const godot_real p_val); + +godot_real GDAPI godot_vector3_get_axis(const godot_vector3 *p_self, const godot_vector3_axis p_axis);  #ifdef __cplusplus  } diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index 340e2fe637..9c77a2ce5e 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -488,7 +488,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {  		}  		if (EditorSettings::get_singleton()->has("editors/visual_script/color_" + node->get_category())) { -			gnode->set_self_modulate(EditorSettings::get_singleton()->get("editors/visual_script/color_" + node->get_category())); +			gnode->set_modulate(EditorSettings::get_singleton()->get("editors/visual_script/color_" + node->get_category()));  		}  		gnode->set_meta("__vnode", node); @@ -2830,7 +2830,7 @@ void VisualScriptEditor::_node_filter_changed(const String &p_text) {  void VisualScriptEditor::_notification(int p_what) {  	if (p_what == NOTIFICATION_READY) { -		node_filter_icon->set_texture(Control::get_icon("Search", "EditorIcons")); +		node_filter_icon->set_texture(Control::get_icon("Zoom", "EditorIcons"));  	}  } diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java index 044efba1f3..6f308af360 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java @@ -355,36 +355,35 @@ public class PaymentsManager {  						tempList.add(s);  					}  					packs.add(tempList); - -					for (ArrayList<String> skuPartList : packs) { -						Bundle querySkus = new Bundle(); -						querySkus.putStringArrayList("ITEM_ID_LIST", skuPartList); -						Bundle skuDetails = null; -						try { -							skuDetails = mService.getSkuDetails(3, activity.getPackageName(), "inapp", querySkus); -							if (!skuDetails.containsKey("DETAILS_LIST")) { -								int response = getResponseCodeFromBundle(skuDetails); -								if (response != BILLING_RESPONSE_RESULT_OK) { -									godotPaymentV3.errorSkuDetail(getResponseDesc(response)); -								} else { -									godotPaymentV3.errorSkuDetail("No error but no detail list."); -								} -								return; +				} +				for (ArrayList<String> skuPartList : packs) { +					Bundle querySkus = new Bundle(); +					querySkus.putStringArrayList("ITEM_ID_LIST", skuPartList); +					Bundle skuDetails = null; +					try { +						skuDetails = mService.getSkuDetails(3, activity.getPackageName(), "inapp", querySkus); +						if (!skuDetails.containsKey("DETAILS_LIST")) { +							int response = getResponseCodeFromBundle(skuDetails); +							if (response != BILLING_RESPONSE_RESULT_OK) { +								godotPaymentV3.errorSkuDetail(getResponseDesc(response)); +							} else { +								godotPaymentV3.errorSkuDetail("No error but no detail list.");  							} +							return; +						} -							ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST"); +						ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST"); -							for (String thisResponse : responseList) { -								Log.d("godot", "response = "+thisResponse); -								godotPaymentV3.addSkuDetail(thisResponse); -							} -						} catch (RemoteException e) { -							e.printStackTrace(); -							godotPaymentV3.errorSkuDetail("RemoteException error!"); +						for (String thisResponse : responseList) { +							Log.d("godot", "response = "+thisResponse); +							godotPaymentV3.addSkuDetail(thisResponse);  						} +					} catch (RemoteException e) { +						e.printStackTrace(); +						godotPaymentV3.errorSkuDetail("RemoteException error!");  					} -					godotPaymentV3.completeSkuDetail();  				} +				godotPaymentV3.completeSkuDetail();  			}  		})).start();  	} diff --git a/platform/iphone/SCsub b/platform/iphone/SCsub index 5d3267cff3..466b8241de 100644 --- a/platform/iphone/SCsub +++ b/platform/iphone/SCsub @@ -5,7 +5,6 @@ Import('env')  iphone_lib = [      'os_iphone.cpp', -    #'rasterizer_iphone.cpp',      'audio_driver_iphone.cpp',      'sem_iphone.cpp',      'gl_view.mm', diff --git a/platform/iphone/rasterizer_iphone.cpp b/platform/iphone/rasterizer_iphone.cpp deleted file mode 100644 index ff13ff1b89..0000000000 --- a/platform/iphone/rasterizer_iphone.cpp +++ /dev/null @@ -1,2585 +0,0 @@ -/*************************************************************************/ -/*  rasterizer_iphone.cpp                                                */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                    http://www.godotengine.org                         */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ -/*                                                                       */ -/* 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.                */ -/*************************************************************************/ -#ifdef IPHONE_ENABLED - -#include "rasterizer_iphone.h" -#include "global_config.h" -#include "os/os.h" -#include <stdio.h> - -_FORCE_INLINE_ static void _gl_load_transform(const Transform &tr) { - -	GLfloat matrix[16] = { /* build a 16x16 matrix */ -		tr.basis.elements[0][0], -		tr.basis.elements[1][0], -		tr.basis.elements[2][0], -		0, -		tr.basis.elements[0][1], -		tr.basis.elements[1][1], -		tr.basis.elements[2][1], -		0, -		tr.basis.elements[0][2], -		tr.basis.elements[1][2], -		tr.basis.elements[2][2], -		0, -		tr.origin.x, -		tr.origin.y, -		tr.origin.z, -		1 -	}; - -	glLoadMatrixf(matrix); -}; - -_FORCE_INLINE_ static void _gl_mult_transform(const Transform &tr) { - -	GLfloat matrix[16] = { /* build a 16x16 matrix */ -		tr.basis.elements[0][0], -		tr.basis.elements[1][0], -		tr.basis.elements[2][0], -		0, -		tr.basis.elements[0][1], -		tr.basis.elements[1][1], -		tr.basis.elements[2][1], -		0, -		tr.basis.elements[0][2], -		tr.basis.elements[1][2], -		tr.basis.elements[2][2], -		0, -		tr.origin.x, -		tr.origin.y, -		tr.origin.z, -		1 -	}; - -	glMultMatrixf(matrix); -}; - -static const GLenum prim_type[] = { GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN }; - -static void _draw_primitive(int p_points, const float *p_vertices, const float *p_normals, const float *p_colors, const float *p_uvs, const Plane *p_tangents = NULL, int p_instanced = 1) { - -	ERR_FAIL_COND(!p_vertices); -	ERR_FAIL_COND(p_points < 1 || p_points > 4); - -	GLenum type = prim_type[p_points - 1]; - -	if (!p_colors) { -		glColor4f(1, 1, 1, 1); -	}; - -	glEnableClientState(GL_VERTEX_ARRAY); -	glVertexPointer(3, GL_FLOAT, 0, (GLvoid *)p_vertices); - -	if (p_normals) { - -		glEnableClientState(GL_NORMAL_ARRAY); -		glNormalPointer(GL_FLOAT, 0, (GLvoid *)p_normals); -	}; - -	if (p_colors) { -		glEnableClientState(GL_COLOR_ARRAY); -		glColorPointer(4, GL_FLOAT, 0, p_colors); -	}; - -	if (p_uvs) { - -		glClientActiveTexture(GL_TEXTURE0); -		glEnableClientState(GL_TEXTURE_COORD_ARRAY); -		glTexCoordPointer(2, GL_FLOAT, 0, p_uvs); -	}; - -	glDrawArrays(type, 0, p_points); - -	glDisableClientState(GL_VERTEX_ARRAY); -	glDisableClientState(GL_NORMAL_ARRAY); -	glDisableClientState(GL_COLOR_ARRAY); -	glDisableClientState(GL_TEXTURE_COORD_ARRAY); -}; - -/* TEXTURE API */ - -static Image _get_gl_image_and_format(const Image &p_image, Image::Format p_format, uint32_t p_flags, GLenum &r_gl_format, int &r_gl_components, bool &r_has_alpha_cache) { - -	r_has_alpha_cache = false; -	Image image = p_image; - -	switch (p_format) { - -		case Image::FORMAT_L8: { -			r_gl_components = 1; -			r_gl_format = GL_LUMINANCE; - -		} break; -		case Image::FORMAT_INTENSITY: { - -			image.convert(Image::FORMAT_RGBA8); -			r_gl_components = 4; -			r_gl_format = GL_RGBA; -			r_has_alpha_cache = true; -		} break; -		case Image::FORMAT_LA8: { - -			image.convert(Image::FORMAT_RGBA8); -			r_gl_components = 4; -			r_gl_format = GL_RGBA; -			r_has_alpha_cache = true; -		} break; - -		case Image::FORMAT_INDEXED: { - -			image.convert(Image::FORMAT_RGB8); -			r_gl_components = 3; -			r_gl_format = GL_RGB; - -		} break; - -		case Image::FORMAT_INDEXED_ALPHA: { - -			image.convert(Image::FORMAT_RGBA8); -			r_gl_components = 4; -			r_gl_format = GL_RGB; -			r_has_alpha_cache = true; - -		} break; -		case Image::FORMAT_RGB8: { - -			r_gl_components = 3; -			r_gl_format = GL_RGB; -		} break; -		case Image::FORMAT_RGBA8: { - -			r_gl_components = 4; -			r_gl_format = GL_RGBA; -			r_has_alpha_cache = true; -		} break; -		default: { - -			ERR_FAIL_V(Image()); -		} -	} - -	return image; -} - -RID RasterizerIPhone::texture_create() { - -	Texture *texture = memnew(Texture); -	ERR_FAIL_COND_V(!texture, RID()); -	glGenTextures(1, &texture->tex_id); -	texture->active = false; - -	return texture_owner.make_rid(texture); -} - -void RasterizerIPhone::texture_allocate(RID p_texture, int p_width, int p_height, Image::Format p_format, uint32_t p_flags) { - -	bool has_alpha_cache; -	int components; -	GLenum format; - -	Texture *texture = texture_owner.get(p_texture); -	ERR_FAIL_COND(!texture); -	texture->width = p_width; -	texture->height = p_height; -	texture->format = p_format; -	texture->flags = p_flags; -	//texture->target = (p_flags & VS::TEXTURE_FLAG_CUBEMAP) ? GL_TEXTURE_CUBE_MAP : GL_TEXTURE_2D; -	texture->target = GL_TEXTURE_2D; - -	_get_gl_image_and_format(Image(), texture->format, texture->flags, format, components, has_alpha_cache); - -	texture->gl_components_cache = components; -	texture->gl_format_cache = format; -	texture->format_has_alpha = has_alpha_cache; -	texture->has_alpha = false; //by default it doesn't have alpha unless something with alpha is blitteds - -	glBindTexture(texture->target, texture->tex_id); - -	if (texture->flags & VS::TEXTURE_FLAG_MIPMAPS) { -		glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); -	} - -	if (texture->target == GL_TEXTURE_2D) { -		glTexImage2D(texture->target, 0, format, texture->width, texture->height, 0, format, GL_UNSIGNED_BYTE, NULL); -	} - -	/* -	else { -		//cubemappor -		for (int i=0;i<6;i++) -			glTexImage2D(_cube_side_enum[i], 0, format, texture->width, texture->height, 0, format, GL_UNSIGNED_BYTE,NULL); -	} -	*/ - -	glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Linear Filtering - -	if (texture->flags & VS::TEXTURE_FLAG_FILTER) { - -		glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Filtering -		if (texture->flags & VS::TEXTURE_FLAG_MIPMAPS) { -			//glTexParameteri(texture->target,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); -		}; -	} - -	if (texture->flags & VS::TEXTURE_FLAG_REPEAT /* && texture->target != GL_TEXTURE_CUBE_MAP*/) { - -		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); -		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); -	} else { - -		//glTexParameterf( texture->target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE ); -		glTexParameterf(texture->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -		glTexParameterf(texture->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -	} - -	texture->active = true; -} - -void RasterizerIPhone::texture_blit_rect(RID p_texture, int p_x, int p_y, const Image &p_image, VS::CubeMapSide p_cube_side) { - -	Texture *texture = texture_owner.get(p_texture); - -	ERR_FAIL_COND(!texture); -	ERR_FAIL_COND(!texture->active); -	ERR_FAIL_COND(texture->format != p_image.get_format()); - -	int components; -	GLenum format; -	bool alpha; - -	Image img = _get_gl_image_and_format(p_image, p_image.get_format(), texture->flags, format, components, alpha); - -	if (img.detect_alpha()) -		texture->has_alpha = true; - -	GLenum blit_target = GL_TEXTURE_2D; //(texture->target == GL_TEXTURE_CUBE_MAP)?_cube_side_enum[p_cube_side]:GL_TEXTURE_2D; - -	PoolVector<uint8_t>::Read read = img.get_data().read(); - -	glBindTexture(texture->target, texture->tex_id); -	glTexSubImage2D(blit_target, 0, p_x, p_y, img.get_width(), img.get_height(), format, GL_UNSIGNED_BYTE, read.ptr()); - -	//glGenerateMipmap( texture->target ); -} - -Image RasterizerIPhone::texture_get_rect(RID p_texture, int p_x, int p_y, int p_width, int p_height, VS::CubeMapSide p_cube_side) const { - -	return Image(); -} -void RasterizerIPhone::texture_set_flags(RID p_texture, uint32_t p_flags) { - -	Texture *texture = texture_owner.get(p_texture); -	ERR_FAIL_COND(!texture); - -	glBindTexture(texture->target, texture->tex_id); -	uint32_t cube = texture->flags & VS::TEXTURE_FLAG_CUBEMAP; -	texture->flags = p_flags | cube; // can't remove a cube from being a cube - -	if (texture->flags & VS::TEXTURE_FLAG_REPEAT /*&& texture->target != GL_TEXTURE_CUBE_MAP*/) { - -		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); -		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); -	} else { -		//glTexParameterf( texture->target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE ); -		glTexParameterf(texture->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -		glTexParameterf(texture->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -	} - -	if (texture->flags & VS::TEXTURE_FLAG_FILTER) { - -		glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Filtering -		if (texture->flags & VS::TEXTURE_FLAG_MIPMAPS) -			glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - -	} else { - -		glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // nearest -	} -} -uint32_t RasterizerIPhone::texture_get_flags(RID p_texture) const { - -	Texture *texture = texture_owner.get(p_texture); - -	ERR_FAIL_COND_V(!texture, 0); - -	return texture->flags; -} -Image::Format RasterizerIPhone::texture_get_format(RID p_texture) const { - -	Texture *texture = texture_owner.get(p_texture); - -	ERR_FAIL_COND_V(!texture, Image::FORMAT_L8); - -	return texture->format; -} -uint32_t RasterizerIPhone::texture_get_width(RID p_texture) const { - -	Texture *texture = texture_owner.get(p_texture); - -	ERR_FAIL_COND_V(!texture, 0); - -	return texture->width; -} -uint32_t RasterizerIPhone::texture_get_height(RID p_texture) const { - -	Texture *texture = texture_owner.get(p_texture); - -	ERR_FAIL_COND_V(!texture, 0); - -	return texture->height; -} - -bool RasterizerIPhone::texture_has_alpha(RID p_texture) const { - -	Texture *texture = texture_owner.get(p_texture); - -	ERR_FAIL_COND_V(!texture, 0); - -	return texture->has_alpha; -} - -/* SHADER API */ - -RID RasterizerIPhone::shader_create() { - -	return RID(); -} - -void RasterizerIPhone::shader_node_add(RID p_shader, VS::ShaderNodeType p_type, int p_id) { -} -void RasterizerIPhone::shader_node_remove(RID p_shader, int p_id) { -} -void RasterizerIPhone::shader_node_change_type(RID p_shader, int p_id, VS::ShaderNodeType p_type) { -} -void RasterizerIPhone::shader_node_set_param(RID p_shader, int p_id, const Variant &p_value) { -} - -void RasterizerIPhone::shader_get_node_list(RID p_shader, List<int> *p_node_list) const { -} -VS::ShaderNodeType RasterizerIPhone::shader_node_get_type(RID p_shader, int p_id) const { - -	return VS::NODE_ADD; -} -Variant RasterizerIPhone::shader_node_get_param(RID p_shader, int p_id) const { - -	return Variant(); -} - -void RasterizerIPhone::shader_connect(RID p_shader, int p_src_id, int p_src_slot, int p_dst_id, int p_dst_slot) { -} -bool RasterizerIPhone::shader_is_connected(RID p_shader, int p_src_id, int p_src_slot, int p_dst_id, int p_dst_slot) const { - -	return false; -} - -void RasterizerIPhone::shader_disconnect(RID p_shader, int p_src_id, int p_src_slot, int p_dst_id, int p_dst_slot) { -} - -void RasterizerIPhone::shader_get_connections(RID p_shader, List<VS::ShaderConnection> *p_connections) const { -} - -void RasterizerIPhone::shader_clear(RID p_shader) { -} - -/* COMMON MATERIAL API */ - -void RasterizerIPhone::material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) { -} -Variant RasterizerIPhone::material_get_param(RID p_material, const StringName &p_param) const { - -	return Variant(); -} -void RasterizerIPhone::material_get_param_list(RID p_material, List<String> *p_param_list) const { -} - -void RasterizerIPhone::material_set_flag(RID p_material, VS::MaterialFlag p_flag, bool p_enabled) { -} -bool RasterizerIPhone::material_get_flag(RID p_material, VS::MaterialFlag p_flag) const { - -	return false; -} - -void RasterizerIPhone::material_set_blend_mode(RID p_material, VS::MaterialBlendMode p_mode) { -} -VS::MaterialBlendMode RasterizerIPhone::material_get_blend_mode(RID p_material) const { - -	return VS::MATERIAL_BLEND_MODE_ADD; -} - -void RasterizerIPhone::material_set_line_width(RID p_material, float p_line_width) { -} -float RasterizerIPhone::material_get_line_width(RID p_material) const { - -	return 0; -} - -/* FIXED MATERIAL */ - -RID RasterizerIPhone::material_create() { - -	return material_owner.make_rid(memnew(Material)); -} - -void RasterizerIPhone::fixed_material_set_parameter(RID p_material, VS::SpatialMaterialParam p_parameter, const Variant &p_value) { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND(!m); -	ERR_FAIL_INDEX(p_parameter, VisualServer::FIXED_MATERIAL_PARAM_MAX); - -	m->parameters[p_parameter] = p_value; -} -Variant RasterizerIPhone::fixed_material_get_parameter(RID p_material, VS::SpatialMaterialParam p_parameter) const { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND_V(!m, Variant()); -	ERR_FAIL_INDEX_V(p_parameter, VisualServer::FIXED_MATERIAL_PARAM_MAX, Variant()); - -	return m->parameters[p_parameter]; -} - -void RasterizerIPhone::fixed_material_set_texture(RID p_material, VS::SpatialMaterialParam p_parameter, RID p_texture) { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND(!m); -	ERR_FAIL_INDEX(p_parameter, VisualServer::FIXED_MATERIAL_PARAM_MAX); - -	m->textures[p_parameter] = p_texture; -} -RID RasterizerIPhone::fixed_material_get_texture(RID p_material, VS::SpatialMaterialParam p_parameter) const { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND_V(!m, RID()); -	ERR_FAIL_INDEX_V(p_parameter, VisualServer::FIXED_MATERIAL_PARAM_MAX, Variant()); - -	return m->textures[p_parameter]; -} - -void RasterizerIPhone::fixed_material_set_detail_blend_mode(RID p_material, VS::MaterialBlendMode p_mode) { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND(!m); - -	m->detail_blend_mode = p_mode; -} -VS::MaterialBlendMode RasterizerIPhone::fixed_material_get_detail_blend_mode(RID p_material) const { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND_V(!m, VS::MATERIAL_BLEND_MODE_MIX); - -	return m->detail_blend_mode; -} - -void RasterizerIPhone::fixed_material_set_texcoord_mode(RID p_material, VS::SpatialMaterialParam p_parameter, VS::SpatialMaterialTexCoordMode p_mode) { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND(!m); -	ERR_FAIL_INDEX(p_parameter, VisualServer::FIXED_MATERIAL_PARAM_MAX); - -	m->texcoord_mode[p_parameter] = p_mode; -} -VS::SpatialMaterialTexCoordMode RasterizerIPhone::fixed_material_get_texcoord_mode(RID p_material, VS::SpatialMaterialParam p_parameter) const { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND_V(!m, VS::FIXED_MATERIAL_TEXCOORD_TEXGEN); -	ERR_FAIL_INDEX_V(p_parameter, VisualServer::FIXED_MATERIAL_PARAM_MAX, VS::FIXED_MATERIAL_TEXCOORD_UV); - -	return m->texcoord_mode[p_parameter]; // for now -} - -void RasterizerIPhone::fixed_material_set_texgen_mode(RID p_material, VS::SpatialMaterialTexGenMode p_mode) { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND(!m); - -	m->texgen_mode = p_mode; -}; - -VS::SpatialMaterialTexGenMode RasterizerIPhone::fixed_material_get_texgen_mode(RID p_material) const { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND_V(!m, VS::FIXED_MATERIAL_TEXGEN_SPHERE); - -	return m->texgen_mode; -}; - -void RasterizerIPhone::fixed_material_set_uv_transform(RID p_material, const Transform &p_transform) { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND(!m); - -	m->uv_transform = p_transform; -} -Transform RasterizerIPhone::fixed_material_get_uv_transform(RID p_material) const { - -	Material *m = material_owner.get(p_material); -	ERR_FAIL_COND_V(!m, Transform()); - -	return m->uv_transform; -} - -/* SHADER MATERIAL */ - -RID RasterizerIPhone::shader_material_create() const { - -	return RID(); -} - -void RasterizerIPhone::shader_material_set_vertex_shader(RID p_material, RID p_shader, bool p_owned) { -} -RID RasterizerIPhone::shader_material_get_vertex_shader(RID p_material) const { - -	return RID(); -} - -void RasterizerIPhone::shader_material_set_fragment_shader(RID p_material, RID p_shader, bool p_owned) { -} -RID RasterizerIPhone::shader_material_get_fragment_shader(RID p_material) const { - -	return RID(); -} - -/* MESH API */ - -RID RasterizerIPhone::mesh_create() { - -	return mesh_owner.make_rid(memnew(Mesh)); -} - -void RasterizerIPhone::mesh_add_surface(RID p_mesh, VS::PrimitiveType p_primitive, uint32_t p_format, int p_array_len, int p_index_array_len) { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND(!mesh); - -	ERR_FAIL_COND((p_format & VS::ARRAY_FORMAT_VERTEX) == 0); // mandatory -	ERR_FAIL_COND(p_array_len <= 0); -	ERR_FAIL_COND(p_index_array_len == 0); -	ERR_FAIL_INDEX(p_primitive, VS::PRIMITIVE_MAX); - -	Surface *surface = memnew(Surface); -	ERR_FAIL_COND(!surface); - -	int total_elem_size = 0; - -	bool use_VBO = true; //glGenBuffersARB!=NULL; // TODO detect if it's in there -	if (p_format & VS::ARRAY_FORMAT_WEIGHTS) { - -		use_VBO = false; -	} - -	for (int i = 0; i < VS::ARRAY_MAX; i++) { - -		Surface::ArrayData &ad = surface->array[i]; -		ad.size = 0; -		ad.configured = false; -		ad.ofs = 0; -		int elem_size = 0; -		int elem_count = 0; - -		if (!(p_format & (1 << i))) // no array -			continue; - -		switch (i) { - -			case VS::ARRAY_VERTEX: -			case VS::ARRAY_NORMAL: { - -				elem_size = 3 * sizeof(GLfloat); // vertex -				elem_count = 3; -			} break; -			case VS::ARRAY_TANGENT: { -				elem_size = 4 * sizeof(GLfloat); // vertex -				elem_count = 4; - -			} break; -			case VS::ARRAY_COLOR: { - -				elem_size = 4; /* RGBA */ -				elem_count = 4; -			} break; -			case VS::ARRAY_TEX_UV: { -				elem_size = 2 * sizeof(GLfloat); -				elem_count = 2; - -			} break; -			case VS::ARRAY_WEIGHTS: -			case VS::ARRAY_BONES: { - -				elem_size = VS::ARRAY_WEIGHTS_SIZE * sizeof(GLfloat); -				elem_count = VS::ARRAY_WEIGHTS_SIZE; - -			} break; -			case VS::ARRAY_INDEX: { - -				if (p_index_array_len <= 0) { -					ERR_PRINT("p_index_array_len==NO_INDEX_ARRAY"); -					break; -				} -				/* determine wether using 8 or 16 bits indices */ -				if (p_index_array_len > (1 << 8)) { - -					elem_size = 2; -				} else { -					elem_size = 1; -				} - -				if (use_VBO) { - -					glGenBuffers(1, &surface->index_id); -					ERR_FAIL_COND(surface->index_id == 0); -					glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, surface->index_id); -					glBufferData(GL_ELEMENT_ARRAY_BUFFER, p_index_array_len * elem_size, NULL, GL_STATIC_DRAW); -					glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); //unbind -				} else { -					surface->index_array_local = (uint8_t *)memalloc(p_index_array_len * elem_size); -				}; - -				surface->index_array_len = p_index_array_len; // only way it can exist -				ad.ofs = 0; -				ad.size = elem_size; -				ad.configured = false; -				ad.components = 1; - -				continue; -			} break; -			default: { -				ERR_FAIL(); -			} -		} - -		ad.ofs = total_elem_size; -		ad.size = elem_size; -		ad.components = elem_count; -		total_elem_size += elem_size; -		ad.configured = false; -	} - -	surface->stride = total_elem_size; -	surface->array_len = p_array_len; -	surface->format = p_format; -	surface->primitive = p_primitive; - -	/* bind the bigass buffers */ -	if (use_VBO) { - -		glGenBuffers(1, &surface->vertex_id); -		ERR_FAIL_COND(surface->vertex_id == 0); -		glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id); -		glBufferData(GL_ARRAY_BUFFER, surface->array_len * surface->stride, NULL, GL_STATIC_DRAW); -		glBindBuffer(GL_ARRAY_BUFFER, 0); //unbind -	} else { -		surface->array_local = (uint8_t *)memalloc(surface->array_len * surface->stride); -	}; - -	mesh->surfaces.push_back(surface); -} - -Error RasterizerIPhone::mesh_surface_set_array(RID p_mesh, int p_surface, VS::ArrayType p_type, const Variant &p_array) { - -	ERR_FAIL_INDEX_V(p_type, VS::ARRAY_MAX, ERR_INVALID_PARAMETER); - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, ERR_INVALID_PARAMETER); -	ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), ERR_INVALID_PARAMETER); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND_V(!surface, ERR_INVALID_PARAMETER); - -	ERR_FAIL_COND_V(surface->array[p_type].size == 0, ERR_INVALID_PARAMETER); - -	Surface::ArrayData &a = surface->array[p_type]; - -	switch (p_type) { - -		case VS::ARRAY_INDEX: { -			ERR_FAIL_COND_V(surface->index_array_len <= 0, ERR_INVALID_DATA); -			ERR_FAIL_COND_V(p_array.get_type() != Variant::INT_ARRAY, ERR_INVALID_PARAMETER); - -			PoolVector<int> indices = p_array; -			ERR_FAIL_COND_V(indices.size() == 0, ERR_INVALID_PARAMETER); -			ERR_FAIL_COND_V(indices.size() != surface->index_array_len, ERR_INVALID_PARAMETER); - -			/* determine wether using 16 or 32 bits indices */ - -			if (surface->index_array_local == 0) { -				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, surface->index_id); -			}; - -			PoolVector<int>::Read read = indices.read(); -			const int *src = read.ptr(); - -			for (int i = 0; i < surface->index_array_len; i++) { - -				if (surface->index_array_local) { - -					if (a.size <= (1 << 8)) { -						uint8_t v = src[i]; - -						copymem(&surface->array_local[i * a.size], &v, a.size); -					} else { -						uint16_t v = src[i]; - -						copymem(&surface->array_local[i * a.size], &v, a.size); -					} - -				} else { -					if (a.size <= (1 << 8)) { -						uint8_t v = src[i]; - -						glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, i * a.size, a.size, &v); -					} else { -						uint16_t v = src[i]; - -						glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, i * a.size, a.size, &v); -					} -				}; -			} -			if (surface->index_array_local == 0) { -				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); -			}; -			a.configured = true; -			return OK; -		} break; -		case VS::ARRAY_VERTEX: -		case VS::ARRAY_NORMAL: { - -			ERR_FAIL_COND_V(p_array.get_type() != Variant::VECTOR3_ARRAY, ERR_INVALID_PARAMETER); - -			PoolVector<Vector3> array = p_array; -			ERR_FAIL_COND_V(array.size() != surface->array_len, ERR_INVALID_PARAMETER); - -			if (surface->array_local == 0) { -				glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id); -			}; - -			PoolVector<Vector3>::Read read = array.read(); -			const Vector3 *src = read.ptr(); - -			// setting vertices means regenerating the AABB -			if (p_type == VS::ARRAY_VERTEX) -				surface->aabb = AABB(); - -			for (int i = 0; i < surface->array_len; i++) { - -				GLfloat vector[3] = { src[i].x, src[i].y, src[i].z }; - -				if (surface->array_local == 0) { -					glBufferSubData(GL_ARRAY_BUFFER, a.ofs + i * surface->stride, a.size, vector); -				} else { -					copymem(&surface->array_local[a.ofs + i * surface->stride], vector, a.size); -				} - -				if (p_type == VS::ARRAY_VERTEX) { - -					if (i == 0) { - -						surface->aabb = AABB(src[i], Vector3()); -					} else { - -						surface->aabb.expand_to(src[i]); -					} -				} -			} - -			if (surface->array_local == 0) { -				glBindBuffer(GL_ARRAY_BUFFER, 0); -			}; - -		} break; -		case VS::ARRAY_TANGENT: { - -			ERR_FAIL_COND_V(p_array.get_type() != Variant::REAL_ARRAY, ERR_INVALID_PARAMETER); - -			PoolVector<real_t> array = p_array; - -			ERR_FAIL_COND_V(array.size() != surface->array_len * 4, ERR_INVALID_PARAMETER); - -			if (surface->array_local == 0) { -				glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id); -			}; - -			PoolVector<real_t>::Read read = array.read(); -			const real_t *src = read.ptr(); - -			for (int i = 0; i < surface->array_len; i++) { - -				GLfloat xyzw[4] = { -					src[i * 4 + 0], -					src[i * 4 + 1], -					src[i * 4 + 2], -					src[i * 4 + 3] -				}; - -				if (surface->array_local == 0) { - -					glBufferSubData(GL_ARRAY_BUFFER, a.ofs + i * surface->stride, a.size, xyzw); -				} else { - -					copymem(&surface->array_local[a.ofs + i * surface->stride], xyzw, a.size); -				}; -			} - -			if (surface->array_local == 0) { -				glBindBuffer(GL_ARRAY_BUFFER, 0); -			}; -		} break; -		case VS::ARRAY_COLOR: { - -			ERR_FAIL_COND_V(p_array.get_type() != Variant::COLOR_ARRAY, ERR_INVALID_PARAMETER); - -			PoolVector<Color> array = p_array; - -			ERR_FAIL_COND_V(array.size() != surface->array_len, ERR_INVALID_PARAMETER); - -			if (surface->array_local == 0) -				glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id); - -			PoolVector<Color>::Read read = array.read(); -			const Color *src = read.ptr(); -			surface->has_alpha_cache = false; - -			for (int i = 0; i < surface->array_len; i++) { - -				if (src[i].a < 0.98) // tolerate alpha a bit, for crappy exporters -					surface->has_alpha_cache = true; -				uint8_t colors[4] = { src[i].r * 255.0, src[i].g * 255.0, src[i].b * 255.0, src[i].a * 255.0 }; -				// I'm not sure if this is correct, endianness-wise, i should re-check the GL spec - -				if (surface->array_local == 0) -					glBufferSubData(GL_ARRAY_BUFFER, a.ofs + i * surface->stride, a.size, colors); -				else -					copymem(&surface->array_local[a.ofs + i * surface->stride], colors, a.size); -			} - -			if (surface->array_local == 0) -				glBindBuffer(GL_ARRAY_BUFFER, 0); - -		} break; -		case VS::ARRAY_TEX_UV: { - -			ERR_FAIL_COND_V(p_array.get_type() != Variant::VECTOR3_ARRAY, ERR_INVALID_PARAMETER); - -			PoolVector<Vector3> array = p_array; - -			ERR_FAIL_COND_V(array.size() != surface->array_len, ERR_INVALID_PARAMETER); - -			if (surface->array_local == 0) -				glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id); - -			PoolVector<Vector3>::Read read = array.read(); - -			const Vector3 *src = read.ptr(); - -			for (int i = 0; i < surface->array_len; i++) { - -				GLfloat uv[2] = { src[i].x, src[i].y }; - -				if (surface->array_local == 0) -					glBufferSubData(GL_ARRAY_BUFFER, a.ofs + i * surface->stride, a.size, uv); -				else -					copymem(&surface->array_local[a.ofs + i * surface->stride], uv, a.size); -			} - -			if (surface->array_local == 0) -				glBindBuffer(GL_ARRAY_BUFFER, 0); - -		} break; -		case VS::ARRAY_BONES: -		case VS::ARRAY_WEIGHTS: { - -			ERR_FAIL_COND_V(p_array.get_type() != Variant::REAL_ARRAY, ERR_INVALID_PARAMETER); - -			PoolVector<real_t> array = p_array; - -			ERR_FAIL_COND_V(array.size() != surface->array_len * VS::ARRAY_WEIGHTS_SIZE, ERR_INVALID_PARAMETER); - -			if (surface->array_local == 0) -				glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id); - -			PoolVector<real_t>::Read read = array.read(); - -			const real_t *src = read.ptr(); - -			for (int i = 0; i < surface->array_len; i++) { - -				GLfloat data[VS::ARRAY_WEIGHTS_SIZE]; -				for (int j = 0; j < VS::ARRAY_WEIGHTS_SIZE; j++) -					data[j] = src[i * VS::ARRAY_WEIGHTS_SIZE + j]; - -				if (surface->array_local == 0) -					glBufferSubData(GL_ARRAY_BUFFER, a.ofs + i * surface->stride, a.size, data); -				else -					copymem(&surface->array_local[a.ofs + i * surface->stride], data, a.size); -			} - -			if (surface->array_local == 0) -				glBindBuffer(GL_ARRAY_BUFFER, 0); -		} break; -		default: { ERR_FAIL_V(ERR_INVALID_PARAMETER); } -	} - -	a.configured = true; - -	return OK; -} -Variant RasterizerIPhone::mesh_surface_get_array(RID p_mesh, int p_surface, VS::ArrayType p_type) const { - -	return Variant(); -} - -void RasterizerIPhone::mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material, bool p_owned) { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND(!mesh); -	ERR_FAIL_INDEX(p_surface, mesh->surfaces.size()); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND(!surface); - -	if (surface->material_owned && surface->material.is_valid()) -		free(surface->material); - -	surface->material_owned = p_owned; - -	surface->material = p_material; -} - -RID RasterizerIPhone::mesh_surface_get_material(RID p_mesh, int p_surface) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, RID()); -	ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), RID()); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND_V(!surface, RID()); - -	return surface->material; -} - -int RasterizerIPhone::mesh_surface_get_array_len(RID p_mesh, int p_surface) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, -1); -	ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), -1); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND_V(!surface, -1); - -	return surface->array_len; -} -int RasterizerIPhone::mesh_surface_get_array_index_len(RID p_mesh, int p_surface) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, -1); -	ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), -1); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND_V(!surface, -1); - -	return surface->index_array_len; -} -uint32_t RasterizerIPhone::mesh_surface_get_format(RID p_mesh, int p_surface) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, 0); -	ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), 0); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND_V(!surface, 0); - -	return surface->format; -} -VS::PrimitiveType RasterizerIPhone::mesh_surface_get_primitive_type(RID p_mesh, int p_surface) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, VS::PRIMITIVE_POINTS); -	ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), VS::PRIMITIVE_POINTS); -	Surface *surface = mesh->surfaces[p_surface]; -	ERR_FAIL_COND_V(!surface, VS::PRIMITIVE_POINTS); - -	return surface->primitive; -} - -void RasterizerIPhone::mesh_erase_surface(RID p_mesh, int p_index) { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND(!mesh); -	ERR_FAIL_INDEX(p_index, mesh->surfaces.size()); -	Surface *surface = mesh->surfaces[p_index]; -	ERR_FAIL_COND(!surface); - -	memdelete(mesh->surfaces[p_index]); -	mesh->surfaces.remove(p_index); -} -int RasterizerIPhone::mesh_get_surface_count(RID p_mesh) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, -1); - -	return mesh->surfaces.size(); -} - -AABB RasterizerIPhone::mesh_get_aabb(RID p_mesh) const { - -	Mesh *mesh = mesh_owner.get(p_mesh); -	ERR_FAIL_COND_V(!mesh, AABB()); - -	AABB aabb; - -	for (int i = 0; i < mesh->surfaces.size(); i++) { - -		if (i == 0) -			aabb = mesh->surfaces[i]->aabb; -		else -			aabb.merge_with(mesh->surfaces[i]->aabb); -	} - -	return aabb; -} - -/* MULTIMESH API */ - -RID RasterizerIPhone::multimesh_create() { - -	return RID(); -} - -void RasterizerIPhone::multimesh_set_instance_count(RID p_multimesh, int p_count) { -} -int RasterizerIPhone::multimesh_get_instance_count(RID p_multimesh) const { - -	return 0; -} - -void RasterizerIPhone::multimesh_set_mesh(RID p_multimesh, RID p_mesh) { -} -void RasterizerIPhone::multimesh_set_aabb(RID p_multimesh, const AABB &p_aabb) { -} -void RasterizerIPhone::multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform &p_transform) { -} -void RasterizerIPhone::multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color) { -} - -RID RasterizerIPhone::multimesh_get_mesh(RID p_multimesh) const { - -	return RID(); -} -AABB RasterizerIPhone::multimesh_get_aabb(RID p_multimesh) const { - -	return AABB(); -} - -Transform RasterizerIPhone::multimesh_instance_get_transform(RID p_multimesh, int p_index) const { - -	return Transform(); -} -Color RasterizerIPhone::multimesh_instance_get_color(RID p_multimesh, int p_index) const { - -	return Color(); -} - -/* POLY API */ - -RID RasterizerIPhone::poly_create() { - -	return RID(); -} -void RasterizerIPhone::poly_set_material(RID p_poly, RID p_material, bool p_owned) { -} -void RasterizerIPhone::poly_add_primitive(RID p_poly, const Vector<Vector3> &p_points, const Vector<Vector3> &p_normals, const Vector<Color> &p_colors, const Vector<Vector3> &p_uvs) { -} -void RasterizerIPhone::poly_clear(RID p_poly) { -} - -AABB RasterizerIPhone::poly_get_aabb(RID p_poly) const { - -	return AABB(); -} - -/* PARTICLES API */ - -RID RasterizerIPhone::particles_create() { - -	return RID(); -} - -void RasterizerIPhone::particles_set_amount(RID p_particles, int p_amount) { -} -int RasterizerIPhone::particles_get_amount(RID p_particles) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_emitting(RID p_particles, bool p_emitting) { -} - -bool RasterizerIPhone::particles_is_emitting(RID p_particles) const { - -	return false; -} - -void RasterizerIPhone::particles_set_visibility_aabb(RID p_particles, const AABB &p_visibility) { -} -AABB RasterizerIPhone::particles_get_visibility_aabb(RID p_particles) const { - -	return AABB(); -} - -void RasterizerIPhone::particles_set_emission_half_extents(RID p_particles, const Vector3 &p_half_extents) { -} -Vector3 RasterizerIPhone::particles_get_emission_half_extents(RID p_particles) const { - -	return Vector3(); -} - -void RasterizerIPhone::particles_set_gravity_normal(RID p_particles, const Vector3 &p_normal) { -} -Vector3 RasterizerIPhone::particles_get_gravity_normal(RID p_particles) const { - -	return Vector3(); -} - -void RasterizerIPhone::particles_set_variable(RID p_particles, VS::ParticleVariable p_variable, float p_value) { -} -float RasterizerIPhone::particles_get_variable(RID p_particles, VS::ParticleVariable p_variable) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_randomness(RID p_particles, VS::ParticleVariable p_variable, float p_randomness) { -} -float RasterizerIPhone::particles_get_randomness(RID p_particles, VS::ParticleVariable p_variable) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_color_phase_pos(RID p_particles, int p_phase, float p_pos) { -} -float RasterizerIPhone::particles_get_color_phase_pos(RID p_particles, int p_phase) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_color_phases(RID p_particles, int p_phases) { -} -int RasterizerIPhone::particles_get_color_phases(RID p_particles) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_color_phase_color(RID p_particles, int p_phase, const Color &p_color) { -} -Color RasterizerIPhone::particles_get_color_phase_color(RID p_particles, int p_phase) const { - -	return Color(); -} - -void RasterizerIPhone::particles_set_attractors(RID p_particles, int p_attractors) { -} -int RasterizerIPhone::particles_get_attractors(RID p_particles) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_attractor_pos(RID p_particles, int p_attractor, const Vector3 &p_pos) { -} -Vector3 RasterizerIPhone::particles_get_attractor_pos(RID p_particles, int p_attractor) const { - -	return Vector3(); -} - -void RasterizerIPhone::particles_set_attractor_strength(RID p_particles, int p_attractor, float p_force) { -} -float RasterizerIPhone::particles_get_attractor_strength(RID p_particles, int p_attractor) const { - -	return 0; -} - -void RasterizerIPhone::particles_set_material(RID p_particles, RID p_material, bool p_owned) { -} - -RID RasterizerIPhone::particles_get_material(RID p_particles) const { - -	return RID(); -} - -AABB RasterizerIPhone::particles_get_aabb(RID p_particles) const { - -	return AABB(); -} -/* BEAM API */ - -RID RasterizerIPhone::beam_create() { - -	return RID(); -} - -void RasterizerIPhone::beam_set_point_count(RID p_beam, int p_count) { -} -int RasterizerIPhone::beam_get_point_count(RID p_beam) const { - -	return 0; -} -void RasterizerIPhone::beam_clear(RID p_beam) { -} - -void RasterizerIPhone::beam_set_point(RID p_beam, int p_point, Vector3 &p_pos) { -} -Vector3 RasterizerIPhone::beam_get_point(RID p_beam, int p_point) const { - -	return Vector3(); -} - -void RasterizerIPhone::beam_set_primitive(RID p_beam, VS::BeamPrimitive p_primitive) { -} - -VS::BeamPrimitive RasterizerIPhone::beam_get_primitive(RID p_beam) const { - -	return VS::BEAM_CUBIC; -} - -void RasterizerIPhone::beam_set_material(RID p_beam, RID p_material) { -} -RID RasterizerIPhone::beam_get_material(RID p_beam) const { - -	return RID(); -} - -AABB RasterizerIPhone::beam_get_aabb(RID p_particles) const { - -	return AABB(); -} -/* SKELETON API */ - -RID RasterizerIPhone::skeleton_create() { - -	Skeleton *skeleton = memnew(Skeleton); -	ERR_FAIL_COND_V(!skeleton, RID()); -	return skeleton_owner.make_rid(skeleton); -} -void RasterizerIPhone::skeleton_resize(RID p_skeleton, int p_bones) { - -	Skeleton *skeleton = skeleton_owner.get(p_skeleton); -	ERR_FAIL_COND(!skeleton); -	if (p_bones == skeleton->bones.size()) { -		return; -	}; -	ERR_FAIL_COND(p_bones < 0 || p_bones > 256); - -	skeleton->bones.resize(p_bones); -} -int RasterizerIPhone::skeleton_get_bone_count(RID p_skeleton) const { - -	Skeleton *skeleton = skeleton_owner.get(p_skeleton); -	ERR_FAIL_COND_V(!skeleton, -1); -	return skeleton->bones.size(); -} -void RasterizerIPhone::skeleton_bone_set_transform(RID p_skeleton, int p_bone, const Transform &p_transform) { - -	Skeleton *skeleton = skeleton_owner.get(p_skeleton); -	ERR_FAIL_COND(!skeleton); -	ERR_FAIL_INDEX(p_bone, skeleton->bones.size()); - -	skeleton->bones[p_bone] = p_transform; -} -Transform RasterizerIPhone::skeleton_bone_get_transform(RID p_skeleton, int p_bone) { - -	Skeleton *skeleton = skeleton_owner.get(p_skeleton); -	ERR_FAIL_COND_V(!skeleton, Transform()); -	ERR_FAIL_INDEX_V(p_bone, skeleton->bones.size(), Transform()); - -	// something -	return skeleton->bones[p_bone]; -} - -/* LIGHT API */ - -RID RasterizerIPhone::light_create(VS::LightType p_type) { - -	Light *light = memnew(Light); -	light->type = p_type; -	return light_owner.make_rid(light); -} - -VS::LightType RasterizerIPhone::light_get_type(RID p_light) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, VS::LIGHT_OMNI); -	return light->type; -} - -void RasterizerIPhone::light_set_color(RID p_light, VS::LightColor p_type, const Color &p_color) { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND(!light); -	ERR_FAIL_INDEX(p_type, 3); -	light->colors[p_type] = p_color; -} -Color RasterizerIPhone::light_get_color(RID p_light, VS::LightColor p_type) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, Color()); -	ERR_FAIL_INDEX_V(p_type, 3, Color()); -	return light->colors[p_type]; -} - -void RasterizerIPhone::light_set_shadow(RID p_light, bool p_enabled) { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND(!light); -	light->shadow_enabled = p_enabled; -} - -bool RasterizerIPhone::light_has_shadow(RID p_light) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, false); -	return light->shadow_enabled; -} - -void RasterizerIPhone::light_set_volumetric(RID p_light, bool p_enabled) { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND(!light); -	light->volumetric_enabled = p_enabled; -} -bool RasterizerIPhone::light_is_volumetric(RID p_light) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, false); -	return light->volumetric_enabled; -} - -void RasterizerIPhone::light_set_projector(RID p_light, RID p_texture) { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND(!light); -	light->projector = p_texture; -} -RID RasterizerIPhone::light_get_projector(RID p_light) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, RID()); -	return light->projector; -} - -void RasterizerIPhone::light_set_var(RID p_light, VS::LightParam p_var, float p_value) { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND(!light); -	ERR_FAIL_INDEX(p_var, VS::LIGHT_PARAM_MAX); - -	light->vars[p_var] = p_value; -} -float RasterizerIPhone::light_get_var(RID p_light, VS::LightParam p_var) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, 0); - -	ERR_FAIL_INDEX_V(p_var, VS::LIGHT_PARAM_MAX, 0); - -	return light->vars[p_var]; -} - -AABB RasterizerIPhone::light_get_aabb(RID p_light) const { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, AABB()); - -	switch (light->type) { - -		case VS::LIGHT_SPOT: { - -			float len = light->vars[VS::LIGHT_PARAM_RADIUS]; -			float size = Math::tan(Math::deg2rad(light->vars[VS::LIGHT_PARAM_SPOT_ANGLE])) * len; -			return AABB(Vector3(-size, -size, -len), Vector3(size * 2, size * 2, len)); -		} break; -		case VS::LIGHT_OMNI: { - -			float r = light->vars[VS::LIGHT_PARAM_RADIUS]; -			return AABB(-Vector3(r, r, r), Vector3(r, r, r) * 2); -		} break; -		case VS::LIGHT_DIRECTIONAL: { - -			return AABB(); -		} break; -		default: {} -	} - -	ERR_FAIL_V(AABB()); -} - -RID RasterizerIPhone::light_instance_create(RID p_light) { - -	Light *light = light_owner.get(p_light); -	ERR_FAIL_COND_V(!light, RID()); - -	LightInstance *light_instance = memnew(LightInstance); - -	light_instance->light = p_light; -	light_instance->base = light; -	light_instance->last_pass = 0; - -	return light_instance_owner.make_rid(light_instance); -} -void RasterizerIPhone::light_instance_set_transform(RID p_light_instance, const Transform &p_transform) { - -	LightInstance *lighti = light_instance_owner.get(p_light_instance); -	ERR_FAIL_COND(!lighti); -	lighti->transform = p_transform; -} - -void RasterizerIPhone::light_instance_set_active_hint(RID p_light_instance) { - -	LightInstance *lighti = light_instance_owner.get(p_light_instance); -	ERR_FAIL_COND(!lighti); -	lighti->last_pass = frame; -} -bool RasterizerIPhone::light_instance_has_shadow(RID p_light_instance) const { - -	return false; -} -bool RasterizerIPhone::light_instance_assign_shadow(RID p_light_instance) { - -	return false; -} -Rasterizer::ShadowType RasterizerIPhone::light_instance_get_shadow_type(RID p_light_instance) const { - -	return Rasterizer::SHADOW_CUBE; -} -int RasterizerIPhone::light_instance_get_shadow_passes(RID p_light_instance) const { - -	return 0; -} -void RasterizerIPhone::light_instance_set_pssm_split_info(RID p_light_instance, int p_split, float p_near, float p_far, const CameraMatrix &p_camera, const Transform &p_transform) { -} - -/* PARTICLES INSTANCE */ - -RID RasterizerIPhone::particles_instance_create(RID p_particles) { - -	return RID(); -} -void RasterizerIPhone::particles_instance_set_transform(RID p_particles_instance, const Transform &p_transform) { -} - -/* RENDER API */ -/* all calls (inside begin/end shadow) are always warranted to be in the following order: */ - -static GLfloat rtri; // Angle For The Triangle ( NEW ) -static GLfloat rquad; // Angle For The Quad ( NEW ) - -void RasterizerIPhone::begin_frame() { - -	window_size = Size2(OS::get_singleton()->get_video_mode().width, OS::get_singleton()->get_video_mode().height); - -	double time = (OS::get_singleton()->get_ticks_usec() / 1000); // get msec -	time /= 1000.0; // make secs -	time_delta = time - last_time; -	last_time = time; -	frame++; -	glClearColor(0, 0, 1, 1); -	glClear(GL_COLOR_BUFFER_BIT); - -/* nehe ?*/ - -#if 0 -	glViewport(0,0,window_size.width,window_size.height);						// Reset The Current Viewport - -	glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix -	glLoadIdentity();									// Reset The Projection Matrix - -	// Calculate The Aspect Ratio Of The Window -	gluPerspective(45.0f,(GLfloat)window_size.width/(GLfloat)window_size.height,0.1f,100.0f); - -	glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix -	glLoadIdentity();									// Reset The Modelview Matrix - - - -	glShadeModel(GL_SMOOTH);							// Enable Smooth Shading -	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);				// Black Background -	glClearDepth(1.0f);									// Depth Buffer Setup -	glEnable(GL_DEPTH_TEST);							// Enables Depth Testing -	glDepthFunc(GL_LEQUAL);								// The Type Of Depth Testing To Do -	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	// Really Nice Perspective Calculations - -	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// Clear Screen And Depth Buffer -	glLoadIdentity();									// Reset The Current Modelview Matrix -	glTranslatef(-1.5f,0.0f,-6.0f);						// Move Left 1.5 Units And Into The Screen 6.0 -	glRotatef(rtri,0.0f,1.0f,0.0f);						// Rotate The Triangle On The Y axis ( NEW ) -	glBegin(GL_TRIANGLES);								// Start Drawing A Triangle -		glColor3f(1.0f,0.0f,0.0f);						// Red -		glVertex3f( 0.0f, 1.0f, 0.0f);					// Top Of Triangle (Front) -		glColor3f(0.0f,1.0f,0.0f);						// Green -		glVertex3f(-1.0f,-1.0f, 1.0f);					// Left Of Triangle (Front) -		glColor3f(0.0f,0.0f,1.0f);						// Blue -		glVertex3f( 1.0f,-1.0f, 1.0f);					// Right Of Triangle (Front) -		glColor3f(1.0f,0.0f,0.0f);						// Red -		glVertex3f( 0.0f, 1.0f, 0.0f);					// Top Of Triangle (Right) -		glColor3f(0.0f,0.0f,1.0f);						// Blue -		glVertex3f( 1.0f,-1.0f, 1.0f);					// Left Of Triangle (Right) -		glColor3f(0.0f,1.0f,0.0f);						// Green -		glVertex3f( 1.0f,-1.0f, -1.0f);					// Right Of Triangle (Right) -		glColor3f(1.0f,0.0f,0.0f);						// Red -		glVertex3f( 0.0f, 1.0f, 0.0f);					// Top Of Triangle (Back) -		glColor3f(0.0f,1.0f,0.0f);						// Green -		glVertex3f( 1.0f,-1.0f, -1.0f);					// Left Of Triangle (Back) -		glColor3f(0.0f,0.0f,1.0f);						// Blue -		glVertex3f(-1.0f,-1.0f, -1.0f);					// Right Of Triangle (Back) -		glColor3f(1.0f,0.0f,0.0f);						// Red -		glVertex3f( 0.0f, 1.0f, 0.0f);					// Top Of Triangle (Left) -		glColor3f(0.0f,0.0f,1.0f);						// Blue -		glVertex3f(-1.0f,-1.0f,-1.0f);					// Left Of Triangle (Left) -		glColor3f(0.0f,1.0f,0.0f);						// Green -		glVertex3f(-1.0f,-1.0f, 1.0f);					// Right Of Triangle (Left) -	glEnd();											// Done Drawing The Pyramid - -	glLoadIdentity();									// Reset The Current Modelview Matrix -	glTranslatef(1.5f,0.0f,-7.0f);						// Move Right 1.5 Units And Into The Screen 7.0 -	glRotatef(rquad,1.0f,1.0f,1.0f);					// Rotate The Quad On The X axis ( NEW ) -	glBegin(GL_QUADS);									// Draw A Quad -		glColor3f(0.0f,1.0f,0.0f);						// Set The Color To Green -		glVertex3f( 1.0f, 1.0f,-1.0f);					// Top Right Of The Quad (Top) -		glVertex3f(-1.0f, 1.0f,-1.0f);					// Top Left Of The Quad (Top) -		glVertex3f(-1.0f, 1.0f, 1.0f);					// Bottom Left Of The Quad (Top) -		glVertex3f( 1.0f, 1.0f, 1.0f);					// Bottom Right Of The Quad (Top) -		glColor3f(1.0f,0.5f,0.0f);						// Set The Color To Orange -		glVertex3f( 1.0f,-1.0f, 1.0f);					// Top Right Of The Quad (Bottom) -		glVertex3f(-1.0f,-1.0f, 1.0f);					// Top Left Of The Quad (Bottom) -		glVertex3f(-1.0f,-1.0f,-1.0f);					// Bottom Left Of The Quad (Bottom) -		glVertex3f( 1.0f,-1.0f,-1.0f);					// Bottom Right Of The Quad (Bottom) -		glColor3f(1.0f,0.0f,0.0f);						// Set The Color To Red -		glVertex3f( 1.0f, 1.0f, 1.0f);					// Top Right Of The Quad (Front) -		glVertex3f(-1.0f, 1.0f, 1.0f);					// Top Left Of The Quad (Front) -		glVertex3f(-1.0f,-1.0f, 1.0f);					// Bottom Left Of The Quad (Front) -		glVertex3f( 1.0f,-1.0f, 1.0f);					// Bottom Right Of The Quad (Front) -		glColor3f(1.0f,1.0f,0.0f);						// Set The Color To Yellow -		glVertex3f( 1.0f,-1.0f,-1.0f);					// Top Right Of The Quad (Back) -		glVertex3f(-1.0f,-1.0f,-1.0f);					// Top Left Of The Quad (Back) -		glVertex3f(-1.0f, 1.0f,-1.0f);					// Bottom Left Of The Quad (Back) -		glVertex3f( 1.0f, 1.0f,-1.0f);					// Bottom Right Of The Quad (Back) -		glColor3f(0.0f,0.0f,1.0f);						// Set The Color To Blue -		glVertex3f(-1.0f, 1.0f, 1.0f);					// Top Right Of The Quad (Left) -		glVertex3f(-1.0f, 1.0f,-1.0f);					// Top Left Of The Quad (Left) -		glVertex3f(-1.0f,-1.0f,-1.0f);					// Bottom Left Of The Quad (Left) -		glVertex3f(-1.0f,-1.0f, 1.0f);					// Bottom Right Of The Quad (Left) -		glColor3f(1.0f,0.0f,1.0f);						// Set The Color To Violet -		glVertex3f( 1.0f, 1.0f,-1.0f);					// Top Right Of The Quad (Right) -		glVertex3f( 1.0f, 1.0f, 1.0f);					// Top Left Of The Quad (Right) -		glVertex3f( 1.0f,-1.0f, 1.0f);					// Bottom Left Of The Quad (Right) -		glVertex3f( 1.0f,-1.0f,-1.0f);					// Bottom Right Of The Quad (Right) -	glEnd();											// Done Drawing The Quad - -	rtri+=0.2f;											// Increase The Rotation Variable For The Triangle ( NEW ) -	rquad-=0.15f;										// Decrease The Rotation Variable For The Quad ( NEW ) - -#endif -} - -void RasterizerIPhone::set_viewport(const VS::ViewportRect &p_viewport) { - -	viewport = p_viewport; -	canvas_transform = Transform(); -	canvas_transform.translate(-(viewport.width / 2.0f), -(viewport.height / 2.0f), 0.0f); -	canvas_transform.scale(Vector3(2.0f / viewport.width, -2.0f / viewport.height, 1.0f)); - -	glViewport(viewport.x, window_size.height - (viewport.height + viewport.y), viewport.width, viewport.height); -} - -void RasterizerIPhone::begin_scene(RID p_fx, VS::ScenarioDebugMode p_debug) { - -	opaque_render_list.clear(); -	alpha_render_list.clear(); -	light_instance_count = 0; -	scene_fx = p_fx.is_valid() ? fx_owner.get(p_fx) : NULL; -}; - -void RasterizerIPhone::begin_shadow_map(RID p_light_instance, int p_shadow_pass) { -} - -void RasterizerIPhone::set_camera(const Transform &p_world, const CameraMatrix &p_projection) { - -	camera_transform = p_world; -	camera_transform_inverse = camera_transform.inverse(); -	camera_projection = p_projection; -	camera_plane = Plane(camera_transform.origin, camera_transform.basis.get_axis(2)); -	camera_z_near = camera_projection.get_z_near(); -	camera_z_far = camera_projection.get_z_far(); -	camera_projection.get_viewport_size(camera_vp_size.x, camera_vp_size.y); -} - -void RasterizerIPhone::add_light(RID p_light_instance) { - -#define LIGHT_FADE_TRESHOLD 0.05 - -	ERR_FAIL_COND(light_instance_count >= MAX_LIGHTS); - -	LightInstance *li = light_instance_owner.get(p_light_instance); -	ERR_FAIL_COND(!li); - -	/* make light hash */ - -	// actually, not really a hash, but helps to sort the lights -	// and avoid recompiling redudant shader versions - -	li->hash_aux = li->base->type; - -	if (li->base->shadow_enabled) -		li->hash_aux |= (1 << 3); - -	if (li->base->projector.is_valid()) -		li->hash_aux |= (1 << 4); - -	if (li->base->shadow_enabled && li->base->volumetric_enabled) -		li->hash_aux |= (1 << 5); - -	switch (li->base->type) { - -		case VisualServer::LIGHT_DIRECTIONAL: { - -			Vector3 dir = li->transform.basis.get_axis(2); -			li->light_vector.x = dir.x; -			li->light_vector.y = dir.y; -			li->light_vector.z = dir.z; - -		} break; -		case VisualServer::LIGHT_OMNI: { - -			float radius = li->base->vars[VisualServer::LIGHT_PARAM_RADIUS]; -			if (radius == 0) -				radius = 0.0001; -			li->linear_att = (1 / LIGHT_FADE_TRESHOLD) / radius; -			li->light_vector.x = li->transform.origin.x; -			li->light_vector.y = li->transform.origin.y; -			li->light_vector.z = li->transform.origin.z; - -		} break; -		case VisualServer::LIGHT_SPOT: { - -			float radius = li->base->vars[VisualServer::LIGHT_PARAM_RADIUS]; -			if (radius == 0) -				radius = 0.0001; -			li->linear_att = (1 / LIGHT_FADE_TRESHOLD) / radius; -			li->light_vector.x = li->transform.origin.x; -			li->light_vector.y = li->transform.origin.y; -			li->light_vector.z = li->transform.origin.z; -			Vector3 dir = -li->transform.basis.get_axis(2); -			li->spot_vector.x = dir.x; -			li->spot_vector.y = dir.y; -			li->spot_vector.z = dir.z; - -		} break; -	} - -	light_instances[light_instance_count++] = li; -} - -void RasterizerIPhone::_add_geometry(const Geometry *p_geometry, const Transform &p_world, uint32_t p_vertex_format, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides, const Skeleton *p_skeleton, GeometryOwner *p_owner) { - -	Material *m = NULL; - -	if (p_geometry->material.is_valid()) -		m = material_owner.get(p_geometry->material); - -	if (!m) { -		m = material_owner.get(default_material); -	} - -	ERR_FAIL_COND(!m); - -	LightInstance *lights[RenderList::MAX_LIGHTS]; -	int light_count = 0; - -	RenderList *render_list = &opaque_render_list; -	if (p_geometry->has_alpha || m->detail_blend_mode != VS::MATERIAL_BLEND_MODE_MIX) { -		render_list = &alpha_render_list; -	}; - -	if (!m->flags[VS::MATERIAL_FLAG_UNSHADED]) { - -		light_count = p_light_count; -		for (int i = 0; i < light_count; i++) { -			lights[i] = light_instance_owner.get(p_light_instances[i]); -		} -	} - -	render_list->add_element(p_geometry, m, p_world, lights, light_count, p_material_overrides, p_skeleton, camera_plane.distance(p_world.origin), p_owner); -} - -void RasterizerIPhone::add_mesh(RID p_mesh, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides, RID p_skeleton) { - -	Mesh *mesh = mesh_owner.get(p_mesh); - -	int ssize = mesh->surfaces.size(); - -	for (int i = 0; i < ssize; i++) { - -		Surface *s = mesh->surfaces[i]; -		Skeleton *sk = p_skeleton.is_valid() ? skeleton_owner.get(p_skeleton) : NULL; - -		_add_geometry(s, *p_world, s->format, p_light_instances, p_light_count, p_material_overrides, sk, NULL); -	} - -	mesh->last_pass = frame; -} - -void RasterizerIPhone::add_multimesh(RID p_multimesh, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides) { -} - -void RasterizerIPhone::add_poly(RID p_poly, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides) { - -	Poly *p = poly_owner.get(p_poly); -	if (!p->primitives.empty()) { -		const Poly::Primitive *pp = &p->primitives[0]; - -		uint32_t format = VisualServer::ARRAY_FORMAT_VERTEX; - -		if (!pp->normals.empty()) -			format |= VisualServer::ARRAY_FORMAT_NORMAL; -		if (!pp->colors.empty()) -			format |= VisualServer::ARRAY_FORMAT_COLOR; -		if (!pp->uvs.empty()) -			format |= VisualServer::ARRAY_TEX_UV; - -		_add_geometry(p, *p_world, format, p_light_instances, p_light_count, p_material_overrides, NULL, NULL); -	} -} - -void RasterizerIPhone::add_beam(RID p_beam, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides) { -} - -void RasterizerIPhone::add_particles(RID p_particle_instance, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides) { -} - -void RasterizerIPhone::_setup_material(const Geometry *p_geometry, const Material *p_material) { - -	if (p_material->flags[VS::MATERIAL_FLAG_DOUBLE_SIDED]) -		glDisable(GL_CULL_FACE); -	else { -		glEnable(GL_CULL_FACE); -		glCullFace((p_material->flags[VS::MATERIAL_FLAG_INVERT_FACES]) ? GL_FRONT : GL_BACK); -	} - -	glEnable(GL_COLOR_MATERIAL); /* unused, unless color array */ -	//glColorMaterial( GL_FRONT_AND_BACK, GL_DIFFUSE ); -	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - -	///ambient @TODO offer global ambient group option -	float ambient_rgba[4] = { -		1, -		1, -		1, -		1.0 -	}; -	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient_rgba); - -	///diffuse -	const Color &diffuse_color = p_material->parameters[VS::FIXED_MATERIAL_PARAM_DIFFUSE]; -	float diffuse_rgba[4] = { -		(float)diffuse_color.r, -		(float)diffuse_color.g, -		(float)diffuse_color.b, -		(float)diffuse_color.a -	}; - -	glColor4f(diffuse_rgba[0], diffuse_rgba[1], diffuse_rgba[2], diffuse_rgba[3]); - -	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse_rgba); - -	//specular - -	const Color &specular_color = p_material->parameters[VS::FIXED_MATERIAL_PARAM_SPECULAR]; -	float specular_rgba[4] = { -		(float)specular_color.r, -		(float)specular_color.g, -		(float)specular_color.b, -		1.0 -	}; - -	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular_rgba); - -	const Color &emission_color = p_material->parameters[VS::FIXED_MATERIAL_PARAM_EMISSION]; -	float emission_rgba[4] = { -		(float)emission_color.r, -		(float)emission_color.g, -		(float)emission_color.b, -		1.0 -	}; - -	glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission_rgba); - -	glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, p_material->parameters[VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP]); - -	if (p_material->flags[VS::MATERIAL_FLAG_UNSHADED]) { -		glDisable(GL_LIGHTING); -	} else { -		glEnable(GL_LIGHTING); -		glDisable(GL_LIGHTING); -	} - -	//depth test? -	/* -	if (p_material->flags[VS::MATERIAL_FLAG_WIREFRAME]) -		glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); -	else -		glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); -	*/ -	if (p_material->textures[VS::FIXED_MATERIAL_PARAM_DIFFUSE]) { - -		Texture *texture = texture_owner.get(p_material->textures[VS::FIXED_MATERIAL_PARAM_DIFFUSE]); -		ERR_FAIL_COND(!texture); -		glActiveTexture(GL_TEXTURE0); -		glEnable(GL_TEXTURE_2D); -		glBindTexture(GL_TEXTURE_2D, texture->tex_id); -	}; -}; - -void RasterizerIPhone::_setup_light(LightInstance *p_instance, int p_idx) { - -	Light *ld = p_instance->base; - -	int glid = GL_LIGHT0 + p_idx; -	glLightfv(glid, GL_AMBIENT, ld->colors[VS::LIGHT_COLOR_AMBIENT].components); -	glLightfv(glid, GL_DIFFUSE, ld->colors[VS::LIGHT_COLOR_DIFFUSE].components); -	glLightfv(glid, GL_SPECULAR, ld->colors[VS::LIGHT_COLOR_SPECULAR].components); - -	switch (ld->type) { - -		case VS::LIGHT_DIRECTIONAL: { -			/* This doesn't have attenuation */ - -			glMatrixMode(GL_MODELVIEW); -			glPushMatrix(); -			glLoadIdentity(); -			Vector3 v(0.0, 0.0, -1.0); // directional lights point up by default -			v = p_instance->transform.get_basis().xform(v); -			v = camera_transform_inverse.get_basis().xform(v); -			v.normalize(); // this sucks, so it will be optimized at some point -			v = -v; -			float lightpos[4] = { v.x, v.y, v.z, 0.0 }; - -			glLightfv(glid, GL_POSITION, lightpos); //at modelview - -			glPopMatrix(); - -		} break; -		case VS::LIGHT_OMNI: { - -			glLightf(glid, GL_SPOT_CUTOFF, 180.0); -			glLightf(glid, GL_CONSTANT_ATTENUATION, ld->vars[VS::LIGHT_PARAM_ATTENUATION]); -			glLightf(glid, GL_LINEAR_ATTENUATION, ld->vars[VS::LIGHT_PARAM_RADIUS]); -			glLightf(glid, GL_QUADRATIC_ATTENUATION, ld->vars[VS::LIGHT_PARAM_ENERGY]); // wut? - -			glMatrixMode(GL_MODELVIEW); -			glPushMatrix(); -			glLoadIdentity(); -			Vector3 pos = p_instance->transform.get_origin(); -			pos = camera_transform_inverse.xform(pos); -			float lightpos[4] = { pos.x, pos.y, pos.z, 1.0 }; -			glLightfv(glid, GL_POSITION, lightpos); //at modelview - -			glPopMatrix(); - -		} break; -		case VS::LIGHT_SPOT: { - -			glLightf(glid, GL_SPOT_CUTOFF, ld->vars[VS::LIGHT_PARAM_SPOT_ANGLE]); -			glLightf(glid, GL_SPOT_EXPONENT, ld->vars[VS::LIGHT_PARAM_SPOT_ATTENUATION]); -			glLightf(glid, GL_CONSTANT_ATTENUATION, ld->vars[VS::LIGHT_PARAM_ATTENUATION]); -			glLightf(glid, GL_LINEAR_ATTENUATION, ld->vars[VS::LIGHT_PARAM_RADIUS]); -			glLightf(glid, GL_QUADRATIC_ATTENUATION, ld->vars[VS::LIGHT_PARAM_ENERGY]); // wut? - -			glMatrixMode(GL_MODELVIEW); -			glPushMatrix(); -			glLoadIdentity(); - -			Vector3 v(0.0, 0.0, -1.0); // directional lights point up by default -			v = p_instance->transform.get_basis().xform(v); -			v = camera_transform_inverse.get_basis().xform(v); -			v.normalize(); // this sucks, so it will be optimized at some point -			float lightdir[4] = { v.x, v.y, v.z, 1.0 }; -			glLightfv(glid, GL_SPOT_DIRECTION, lightdir); //at modelview - -			v = p_instance->transform.get_origin(); -			v = camera_transform_inverse.xform(v); -			float lightpos[4] = { v.x, v.y, v.z, 1.0 }; -			glLightfv(glid, GL_POSITION, lightpos); //at modelview - -			glPopMatrix(); - -		} break; -		default: break; -	} -}; - -void RasterizerIPhone::_setup_lights(LightInstance **p_lights, int p_light_count) { - -	for (int i = 0; i < MAX_LIGHTS; i++) { - -		if (i < p_light_count) { -			glEnable(GL_LIGHT0 + i); -			_setup_light(p_lights[i], i); -		} else { -			glDisable(GL_LIGHT0 + i); -		} -	} -} - -static const int gl_client_states[] = { - -	GL_VERTEX_ARRAY, -	GL_NORMAL_ARRAY, -	-1, // ARRAY_TANGENT -	GL_COLOR_ARRAY, -	GL_TEXTURE_COORD_ARRAY, // ARRAY_TEX_UV -	GL_TEXTURE_COORD_ARRAY, // ARRAY_TEX_UV2 -	-1, // ARRAY_BONES -	-1, // ARRAY_WEIGHTS -	-1, // ARRAY_INDEX -}; - -void RasterizerIPhone::_setup_geometry(const Geometry *p_geometry, const Material *p_material) { - -	switch (p_geometry->type) { - -		case Geometry::GEOMETRY_SURFACE: { - -			Surface *surf = (Surface *)p_geometry; -			uint8_t *base = 0; -			bool use_VBO = (surf->array_local == 0); - -			if (!use_VBO) { - -				base = surf->array_local; -				glBindBuffer(GL_ARRAY_BUFFER, 0); - -			} else { - -				glBindBuffer(GL_ARRAY_BUFFER, surf->vertex_id); -			}; - -			const Surface::ArrayData *a = surf->array; -			for (int i = 0; i < VS::ARRAY_MAX; i++) { - -				const Surface::ArrayData &ad = surf->array[i]; -				if (ad.size == 0) { -					if (gl_client_states[i] != -1) { -						glDisableClientState(gl_client_states[i]); -					}; -					continue; // this one is disabled. -				} -				ERR_CONTINUE(!ad.configured); - -				if (gl_client_states[i] != -1) { -					glEnableClientState(gl_client_states[i]); -				}; - -				switch (i) { - -					case VS::ARRAY_VERTEX: -						if (!use_VBO) -							glVertexPointer(3, GL_FLOAT, surf->stride, (GLvoid *)&base[a->ofs]); -						else if (surf->array[VS::ARRAY_BONES].size) -							glVertexPointer(3, GL_FLOAT, 0, skinned_buffer); -						else -							glVertexPointer(3, GL_FLOAT, surf->stride, (GLvoid *)a->ofs); -						break; - -					case VS::ARRAY_NORMAL: -						if (use_VBO) -							glNormalPointer(GL_FLOAT, surf->stride, (GLvoid *)a->ofs); -						else -							glNormalPointer(GL_FLOAT, surf->stride, (GLvoid *)&base[a->ofs]); -						break; -					case VS::ARRAY_TANGENT: -						break; -					case VS::ARRAY_COLOR: -						if (use_VBO) -							glColorPointer(4, GL_UNSIGNED_BYTE, surf->stride, (GLvoid *)a->ofs); -						else -							glColorPointer(4, GL_UNSIGNED_BYTE, surf->stride, (GLvoid *)&base[a->ofs]); -						break; -					case VS::ARRAY_TEX_UV: -					case VS::ARRAY_TEX_UV2: -						if (use_VBO) -							glTexCoordPointer(2, GL_FLOAT, surf->stride, (GLvoid *)a->ofs); -						else -							glTexCoordPointer(2, GL_FLOAT, surf->stride, &base[a->ofs]); -						break; -					case VS::ARRAY_BONES: -					case VS::ARRAY_WEIGHTS: -					case VS::ARRAY_INDEX: -						break; -				}; -			} - -			// process skeleton here - -		} break; - -		default: break; -	}; -}; - -static const GLenum gl_primitive[] = { -	GL_POINTS, -	GL_LINES, -	GL_LINE_STRIP, -	GL_LINE_LOOP, -	GL_TRIANGLES, -	GL_TRIANGLE_STRIP, -	GL_TRIANGLE_FAN -}; - -void RasterizerIPhone::_render(const Geometry *p_geometry, const Material *p_material, const Skeleton *p_skeleton) { - -	switch (p_geometry->type) { - -		case Geometry::GEOMETRY_SURFACE: { - -			Surface *s = (Surface *)p_geometry; - -			if (s->index_array_len > 0) { - -				if (s->index_array_local) { - -					glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->index_array_len > (1 << 8)) ? GL_UNSIGNED_SHORT : GL_UNSIGNED_BYTE, s->index_array_local); - -				} else { - -					glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->index_id); -					glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->index_array_len > (1 << 8)) ? GL_UNSIGNED_SHORT : GL_UNSIGNED_BYTE, 0); -				} - -			} else { - -				glDrawArrays(gl_primitive[s->primitive], 0, s->array_len); -			}; -		} break; - -		default: break; -	}; -}; - -void RasterizerIPhone::_render_list_forward(RenderList *p_render_list) { - -	const Material *prev_material = NULL; -	uint64_t prev_light_hash = 0; -	const Skeleton *prev_skeleton = NULL; -	const Geometry *prev_geometry = NULL; -	const ParamOverrideMap *prev_overrides = NULL; // make it different than NULL - -	Geometry::Type prev_geometry_type = Geometry::GEOMETRY_INVALID; - -	glMatrixMode(GL_PROJECTION); -	glLoadMatrixf(&camera_projection.matrix[0][0]); - -	for (int i = 0; i < p_render_list->element_count; i++) { - -		RenderList::Element *e = p_render_list->elements[i]; -		const Material *material = e->material; -		uint64_t light_hash = e->light_hash; -		const Skeleton *skeleton = e->skeleton; -		const Geometry *geometry = e->geometry; -		const ParamOverrideMap *material_overrides = e->material_overrides; - -		if (material != prev_material || geometry->type != prev_geometry_type) { -			_setup_material(e->geometry, material); -			//_setup_material_overrides(e->material,NULL,material_overrides); -			//_setup_material_skeleton(material,skeleton); -		} else { - -			if (material_overrides != prev_overrides) { - -				//_setup_material_overrides(e->material,prev_overrides,material_overrides); -			} - -			if (prev_skeleton != skeleton) { -				//_setup_material_skeleton(material,skeleton); -			}; -		} - -		if (geometry != prev_geometry || geometry->type != prev_geometry_type) { - -			_setup_geometry(geometry, material); -		}; - -		if (i == 0 || light_hash != prev_light_hash) -			_setup_lights(e->lights, e->light_count); - -		glMatrixMode(GL_MODELVIEW); -		_gl_load_transform(camera_transform_inverse); -		_gl_mult_transform(e->transform); - -		_render(geometry, material, skeleton); - -		prev_material = material; -		prev_skeleton = skeleton; -		prev_geometry = geometry; -		prev_light_hash = e->light_hash; -		prev_geometry_type = geometry->type; -		prev_overrides = material_overrides; -	} -}; - -void RasterizerIPhone::end_scene() { - -	glEnable(GL_BLEND); -	glDepthMask(GL_FALSE); - -	opaque_render_list.sort_mat_light(); -	_render_list_forward(&opaque_render_list); - -	glDisable(GL_BLEND); -	glDepthMask(GL_TRUE); - -	alpha_render_list.sort_z(); -	_render_list_forward(&alpha_render_list); -} -void RasterizerIPhone::end_shadow_map() { -} - -void RasterizerIPhone::end_frame() { - -	//ContextGL::get_singleton()->swap_buffers(); -} - -/* CANVAS API */ - -void RasterizerIPhone::canvas_begin() { - -	glDisable(GL_CULL_FACE); -	glDisable(GL_DEPTH_TEST); -	glEnable(GL_BLEND); -	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -	glLineWidth(1.0); -	glDisable(GL_LIGHTING); - -	glMatrixMode(GL_PROJECTION); -	glLoadIdentity(); -} -void RasterizerIPhone::canvas_set_transparency(float p_transparency) { -} - -void RasterizerIPhone::canvas_set_rect(const Rect2 &p_rect, bool p_clip) { - -	glMatrixMode(GL_MODELVIEW); -	glLoadIdentity(); -	glScalef(2.0 / window_size.x, -2.0 / window_size.y, 0); -	glTranslatef((-(window_size.x / 2.0)) + p_rect.pos.x, (-(window_size.y / 2.0)) + p_rect.pos.y, 0); - -	if (p_clip) { - -		glEnable(GL_SCISSOR_TEST); -		glScissor(viewport.x + p_rect.pos.x, viewport.y + (viewport.height - (p_rect.pos.y + p_rect.size.height)), -				p_rect.size.width, p_rect.size.height); -	} else { - -		glDisable(GL_SCISSOR_TEST); -	} -} -void RasterizerIPhone::canvas_draw_line(const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width) { - -	glColor4f(1, 1, 1, 1); - -	float verts[6] = { -		p_from.x, p_from.y, 0, -		p_to.x, p_to.y, 0 -	}; - -	float colors[] = { -		p_color.r, p_color.g, p_color.b, p_color.a, -		p_color.r, p_color.g, p_color.b, p_color.a, -	}; -	glLineWidth(p_width); -	_draw_primitive(2, verts, 0, colors, 0); -} - -static void _draw_textured_quad(const Rect2 &p_rect, const Rect2 &p_src_region, const Size2 &p_tex_size) { - -	float texcoords[] = { -		p_src_region.pos.x / p_tex_size.width, -		p_src_region.pos.y / p_tex_size.height, - -		(p_src_region.pos.x + p_src_region.size.width) / p_tex_size.width, -		p_src_region.pos.y / p_tex_size.height, - -		(p_src_region.pos.x + p_src_region.size.width) / p_tex_size.width, -		(p_src_region.pos.y + p_src_region.size.height) / p_tex_size.height, - -		p_src_region.pos.x / p_tex_size.width, -		(p_src_region.pos.y + p_src_region.size.height) / p_tex_size.height, -	}; - -	float coords[] = { -		p_rect.pos.x, p_rect.pos.y, 0, -		p_rect.pos.x + p_rect.size.width, p_rect.pos.y, 0, -		p_rect.pos.x + p_rect.size.width, p_rect.pos.y + p_rect.size.height, 0, -		p_rect.pos.x, p_rect.pos.y + p_rect.size.height, 0 -	}; - -	_draw_primitive(4, coords, 0, 0, texcoords); -} - -static void _draw_quad(const Rect2 &p_rect) { - -	float coords[] = { -		p_rect.pos.x, p_rect.pos.y, 0, -		p_rect.pos.x + p_rect.size.width, p_rect.pos.y, 0, -		p_rect.pos.x + p_rect.size.width, p_rect.pos.y + p_rect.size.height, 0, -		p_rect.pos.x, p_rect.pos.y + p_rect.size.height, 0 -	}; - -	_draw_primitive(4, coords, 0, 0, 0); -} - -void RasterizerIPhone::canvas_draw_rect(const Rect2 &p_rect, bool p_region, const Rect2 &p_source, bool p_tile, RID p_texture, const Color &p_modulate) { - -	glColor4f(p_modulate.r, p_modulate.g, p_modulate.b, p_modulate.a); - -	if (p_texture.is_valid()) { - -		glEnable(GL_TEXTURE_2D); -		Texture *texture = texture_owner.get(p_texture); -		ERR_FAIL_COND(!texture); -		glActiveTexture(GL_TEXTURE0); -		glBindTexture(GL_TEXTURE_2D, texture->tex_id); - -		if (!p_region) { - -			Rect2 region = Rect2(0, 0, texture->width, texture->height); -			_draw_textured_quad(p_rect, region, region.size); - -		} else { - -			_draw_textured_quad(p_rect, p_source, Size2(texture->width, texture->height)); -		} -	} else { - -		_draw_quad(p_rect); -	} -} -void RasterizerIPhone::canvas_draw_style_box(const Rect2 &p_rect, const Rect2 &p_src_region, RID p_texture, const float *p_margin, bool p_draw_center) { - -	glColor4f(1, 1, 1, 1); - -	Texture *texture = texture_owner.get(p_texture); -	ERR_FAIL_COND(!texture); - -	glEnable(GL_TEXTURE_2D); -	glActiveTexture(GL_TEXTURE0); -	glBindTexture(GL_TEXTURE_2D, texture->tex_id); - -	Rect2 region = p_src_region; -	if (region.size.width <= 0) -		region.size.width = texture->width; -	if (region.size.height <= 0) -		region.size.height = texture->height; -	/* CORNERS */ -	_draw_textured_quad( // top left -			Rect2(p_rect.pos, Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_TOP])), -			Rect2(region.pos, Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_TOP])), -			Size2(texture->width, texture->height)); - -	_draw_textured_quad( // top right -			Rect2(Point2(p_rect.pos.x + p_rect.size.width - p_margin[MARGIN_RIGHT], p_rect.pos.y), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_TOP])), -			Rect2(Point2(region.pos.x + region.size.width - p_margin[MARGIN_RIGHT], region.pos.y), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_TOP])), -			Size2(texture->width, texture->height)); - -	_draw_textured_quad( // bottom left -			Rect2(Point2(p_rect.pos.x, p_rect.pos.y + p_rect.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_BOTTOM])), -			Rect2(Point2(region.pos.x, region.pos.y + region.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_BOTTOM])), -			Size2(texture->width, texture->height)); - -	_draw_textured_quad( // bottom right -			Rect2(Point2(p_rect.pos.x + p_rect.size.width - p_margin[MARGIN_RIGHT], p_rect.pos.y + p_rect.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_BOTTOM])), -			Rect2(Point2(region.pos.x + region.size.width - p_margin[MARGIN_RIGHT], region.pos.y + region.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_BOTTOM])), -			Size2(texture->width, texture->height)); - -	Rect2 rect_center(p_rect.pos + Point2(p_margin[MARGIN_LEFT], p_margin[MARGIN_TOP]), Size2(p_rect.size.width - p_margin[MARGIN_LEFT] - p_margin[MARGIN_RIGHT], p_rect.size.height - p_margin[MARGIN_TOP] - p_margin[MARGIN_BOTTOM])); - -	Rect2 src_center(Point2(region.pos.x + p_margin[MARGIN_LEFT], region.pos.y + p_margin[MARGIN_TOP]), Size2(region.size.width - p_margin[MARGIN_LEFT] - p_margin[MARGIN_RIGHT], region.size.height - p_margin[MARGIN_TOP] - p_margin[MARGIN_BOTTOM])); - -	_draw_textured_quad( // top -			Rect2(Point2(rect_center.pos.x, p_rect.pos.y), Size2(rect_center.size.width, p_margin[MARGIN_TOP])), -			Rect2(Point2(src_center.pos.x, region.pos.y), Size2(src_center.size.width, p_margin[MARGIN_TOP])), -			Size2(texture->width, texture->height)); - -	_draw_textured_quad( // bottom -			Rect2(Point2(rect_center.pos.x, rect_center.pos.y + rect_center.size.height), Size2(rect_center.size.width, p_margin[MARGIN_BOTTOM])), -			Rect2(Point2(src_center.pos.x, src_center.pos.y + src_center.size.height), Size2(src_center.size.width, p_margin[MARGIN_BOTTOM])), -			Size2(texture->width, texture->height)); - -	_draw_textured_quad( // left -			Rect2(Point2(p_rect.pos.x, rect_center.pos.y), Size2(p_margin[MARGIN_LEFT], rect_center.size.height)), -			Rect2(Point2(region.pos.x, region.pos.y + p_margin[MARGIN_TOP]), Size2(p_margin[MARGIN_LEFT], src_center.size.height)), -			Size2(texture->width, texture->height)); - -	_draw_textured_quad( // right -			Rect2(Point2(rect_center.pos.x + rect_center.size.width, rect_center.pos.y), Size2(p_margin[MARGIN_RIGHT], rect_center.size.height)), -			Rect2(Point2(src_center.pos.x + src_center.size.width, region.pos.y + p_margin[MARGIN_TOP]), Size2(p_margin[MARGIN_RIGHT], src_center.size.height)), -			Size2(texture->width, texture->height)); - -	if (p_draw_center) { - -		_draw_textured_quad( -				rect_center, -				src_center, -				Size2(texture->width, texture->height)); -	} -} -void RasterizerIPhone::canvas_draw_primitive(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture) { - -	ERR_FAIL_COND(p_points.size() < 1); -	float verts[12]; -	float uvs[8]; -	float colors[16]; - -	glColor4f(1, 1, 1, 1); - -	int idx = 0; -	for (int i = 0; i < p_points.size(); i++) { - -		verts[idx++] = p_points[i].x; -		verts[idx++] = p_points[i].y; -		verts[idx++] = 0; -	} - -	idx = 0; -	for (int i = 0; i < p_uvs.size(); i++) { - -		uvs[idx++] = p_uvs[i].x; -		uvs[idx++] = p_uvs[i].y; -	} - -	idx = 0; -	for (int i = 0; i < p_colors.size(); i++) { - -		colors[idx++] = p_colors[i].r; -		colors[idx++] = p_colors[i].g; -		colors[idx++] = p_colors[i].b; -		colors[idx++] = p_colors[i].a; -	}; - -	if (p_texture.is_valid()) { -		glEnable(GL_TEXTURE_2D); -		Texture *texture = texture_owner.get(p_texture); -		if (texture) { -			glActiveTexture(GL_TEXTURE0); -			glBindTexture(GL_TEXTURE_2D, texture->tex_id); -		} -	} - -	_draw_primitive(p_points.size(), &verts[0], NULL, p_colors.size() ? &colors[0] : NULL, p_uvs.size() ? uvs : NULL); -} - -/* FX */ - -RID RasterizerIPhone::fx_create() { - -	return RID(); -} -void RasterizerIPhone::fx_get_effects(RID p_fx, List<String> *p_effects) const { -} -void RasterizerIPhone::fx_set_active(RID p_fx, const String &p_effect, bool p_active) { -} -bool RasterizerIPhone::fx_is_active(RID p_fx, const String &p_effect) const { - -	return false; -} -void RasterizerIPhone::fx_get_effect_params(RID p_fx, const String &p_effect, List<PropertyInfo> *p_params) const { -} -Variant RasterizerIPhone::fx_get_effect_param(RID p_fx, const String &p_effect, const String &p_param) const { - -	return Variant(); -} -void RasterizerIPhone::fx_set_effect_param(RID p_fx, const String &p_effect, const String &p_param, const Variant &p_pvalue) { -} - -/*MISC*/ - -bool RasterizerIPhone::is_texture(const RID &p_rid) const { - -	return texture_owner.owns(p_rid); -} -bool RasterizerIPhone::is_material(const RID &p_rid) const { - -	return material_owner.owns(p_rid); -} -bool RasterizerIPhone::is_mesh(const RID &p_rid) const { - -	return mesh_owner.owns(p_rid); -} -bool RasterizerIPhone::is_multimesh(const RID &p_rid) const { - -	return false; -} -bool RasterizerIPhone::is_poly(const RID &p_rid) const { - -	return poly_owner.owns(p_rid); -} -bool RasterizerIPhone::is_particles(const RID &p_beam) const { - -	return false; -} - -bool RasterizerIPhone::is_beam(const RID &p_beam) const { - -	return false; -} - -bool RasterizerIPhone::is_light(const RID &p_rid) const { - -	return light_owner.owns(p_rid); -} -bool RasterizerIPhone::is_light_instance(const RID &p_rid) const { - -	return light_instance_owner.owns(p_rid); -} -bool RasterizerIPhone::is_particles_instance(const RID &p_rid) const { - -	return false; -} -bool RasterizerIPhone::is_skeleton(const RID &p_rid) const { - -	return skeleton_owner.owns(p_rid); -} -bool RasterizerIPhone::is_fx(const RID &p_rid) const { - -	return fx_owner.owns(p_rid); -} -bool RasterizerIPhone::is_shader(const RID &p_rid) const { - -	return false; -} - -void RasterizerIPhone::free(const RID &p_rid) const { - -	if (texture_owner.owns(p_rid)) { - -		// delete the texture -		Texture *texture = texture_owner.get(p_rid); - -		glDeleteTextures(1, &texture->tex_id); - -		texture_owner.free(p_rid); -		memdelete(texture); - -	} else if (material_owner.owns(p_rid)) { - -		Material *material = material_owner.get(p_rid); -		ERR_FAIL_COND(!material); - -		material_owner.free(p_rid); -		memdelete(material); - -	} else if (mesh_owner.owns(p_rid)) { - -		Mesh *mesh = mesh_owner.get(p_rid); -		ERR_FAIL_COND(!mesh); -		for (int i = 0; i < mesh->surfaces.size(); i++) { - -			Surface *surface = mesh->surfaces[i]; -			if (surface->array_local != 0) { -				memfree(surface->array_local); -			}; -			if (surface->index_array_local != 0) { -				memfree(surface->index_array_local); -			}; - -			if (surface->vertex_id) -				glDeleteBuffers(1, &surface->vertex_id); -			if (surface->index_id) -				glDeleteBuffers(1, &surface->index_id); - -			memdelete(surface); -		}; - -		mesh->surfaces.clear(); - -		mesh_owner.free(p_rid); -		memdelete(mesh); - -	} else if (skeleton_owner.owns(p_rid)) { - -		Skeleton *skeleton = skeleton_owner.get(p_rid); -		ERR_FAIL_COND(!skeleton) - -		skeleton_owner.free(p_rid); -		memdelete(skeleton); - -	} else if (light_owner.owns(p_rid)) { - -		Light *light = light_owner.get(p_rid); -		ERR_FAIL_COND(!light) - -		light_owner.free(p_rid); -		memdelete(light); - -	} else if (light_instance_owner.owns(p_rid)) { - -		LightInstance *light_instance = light_instance_owner.get(p_rid); -		ERR_FAIL_COND(!light_instance); - -		light_instance_owner.free(p_rid); -		memdelete(light_instance); - -	} else if (fx_owner.owns(p_rid)) { - -		FX *fx = fx_owner.get(p_rid); -		ERR_FAIL_COND(!fx); - -		fx_owner.free(p_rid); -		memdelete(fx); -	}; -} - -void RasterizerIPhone::init() { - -	glEnable(GL_DEPTH_TEST); -	glDepthFunc(GL_LEQUAL); -	glFrontFace(GL_CW); - -	glEnable(GL_TEXTURE_2D); -} - -void RasterizerIPhone::finish() { -} - -int RasterizerIPhone::get_render_info(VS::RenderInfo p_info) { - -	return false; -} - -RasterizerIPhone::RasterizerIPhone() { - -	frame = 0; -}; - -RasterizerIPhone::~RasterizerIPhone(){ - -}; - -#endif diff --git a/platform/iphone/rasterizer_iphone.h b/platform/iphone/rasterizer_iphone.h deleted file mode 100644 index f886738da9..0000000000 --- a/platform/iphone/rasterizer_iphone.h +++ /dev/null @@ -1,881 +0,0 @@ -/*************************************************************************/ -/*  rasterizer_iphone.h                                                  */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                    http://www.godotengine.org                         */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ -/*                                                                       */ -/* 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.                */ -/*************************************************************************/ -#ifdef IPHONE_ENABLED - -#ifndef RASTERIZER_IPHONE_H -#define RASTERIZER_IPHONE_H - -#include "servers/visual/rasterizer.h" - -#include "camera_matrix.h" -#include "image.h" -#include "list.h" -#include "map.h" -#include "rid.h" -#include "servers/visual_server.h" -#include "sort.h" -#include <ES1/gl.h> - -/** -        @author Juan Linietsky <reduzio@gmail.com> -*/ -class RasterizerIPhone : public Rasterizer { - -	enum { -		SKINNED_BUFFER_SIZE = 1024 * 128, // 10k vertices -		MAX_LIGHTS = 8, -	}; - -	uint8_t skinned_buffer[SKINNED_BUFFER_SIZE]; - -	struct Texture { - -		uint32_t flags; -		int width, height; -		Image::Format format; - -		GLenum target; -		GLenum gl_format_cache; -		int gl_components_cache; -		bool has_alpha; -		bool format_has_alpha; - -		bool active; -		GLuint tex_id; -		bool mipmap_dirty; - -		Texture() { - -			flags = width = height = 0; -			tex_id = 0; -			format = Image::FORMAT_L8; -			gl_components_cache = 0; -			format_has_alpha = false; -			has_alpha = false; -			active = false; -			mipmap_dirty = true; -		} - -		~Texture() { - -			if (tex_id != 0) { - -				glDeleteTextures(1, &tex_id); -			} -		} -	}; - -	mutable RID_Owner<Texture> texture_owner; - -	struct Material { - -		bool flags[VS::MATERIAL_FLAG_MAX]; -		Variant parameters[VisualServer::FIXED_MATERIAL_PARAM_MAX]; -		RID textures[VisualServer::FIXED_MATERIAL_PARAM_MAX]; - -		Transform uv_transform; -		VS::SpatialMaterialTexCoordMode texcoord_mode[VisualServer::FIXED_MATERIAL_PARAM_MAX]; - -		VS::MaterialBlendMode detail_blend_mode; - -		VS::SpatialMaterialTexGenMode texgen_mode; - -		Material() { - -			flags[VS::MATERIAL_FLAG_VISIBLE] = true; -			flags[VS::MATERIAL_FLAG_DOUBLE_SIDED] = false; -			flags[VS::MATERIAL_FLAG_INVERT_FACES] = false; -			flags[VS::MATERIAL_FLAG_UNSHADED] = false; -			flags[VS::MATERIAL_FLAG_WIREFRAME] = false; - -			parameters[VS::FIXED_MATERIAL_PARAM_DIFFUSE] = Color(0.8, 0.8, 0.8); -			parameters[VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP] = 12; - -			for (int i = 0; i < VisualServer::FIXED_MATERIAL_PARAM_MAX; i++) { -				texcoord_mode[i] = VS::FIXED_MATERIAL_TEXCOORD_UV; -			}; -			detail_blend_mode = VS::MATERIAL_BLEND_MODE_MIX; -			texgen_mode = VS::FIXED_MATERIAL_TEXGEN_SPHERE; -		} -	}; -	mutable RID_Owner<Material> material_owner; - -	struct Geometry { - -		enum Type { -			GEOMETRY_INVALID, -			GEOMETRY_SURFACE, -			GEOMETRY_POLY, -			GEOMETRY_PARTICLES, -			GEOMETRY_BEAM, -			GEOMETRY_DETAILER, -		}; - -		Type type; -		RID material; -		bool has_alpha; -		bool material_owned; - -		Vector3 scale; -		Vector3 uv_scale; - -		Geometry() -			: scale(1, 1, 1) { -			has_alpha = false; -			material_owned = false; -		} -		virtual ~Geometry(){}; -	}; - -	struct GeometryOwner { - -		virtual ~GeometryOwner() {} -	}; - -	struct Surface : public Geometry { - -		struct ArrayData { - -			uint32_t ofs, size; -			bool configured; -			int components; -			ArrayData() { -				ofs = 0; -				size = 0; -				configured = false; -			} -		}; - -		ArrayData array[VS::ARRAY_MAX]; -		// support for vertex array objects -		GLuint array_object_id; -		// support for vertex buffer object -		GLuint vertex_id; // 0 means, unconfigured -		GLuint index_id; // 0 means, unconfigured -		// no support for the above, array in localmem. -		uint8_t *array_local; -		uint8_t *index_array_local; - -		AABB aabb; - -		int array_len; -		int index_array_len; - -		VS::PrimitiveType primitive; - -		uint32_t format; - -		int stride; - -		bool active; - -		Point2 uv_min; -		Point2 uv_max; - -		bool has_alpha_cache; - -		Surface() { - -			array_len = 0; -			type = GEOMETRY_SURFACE; -			primitive = VS::PRIMITIVE_POINTS; -			index_array_len = VS::NO_INDEX_ARRAY; -			format = 0; -			stride = 0; - -			array_local = index_array_local = 0; -			vertex_id = index_id = 0; - -			active = false; -		} - -		~Surface() { -		} -	}; - -	struct Mesh { - -		bool active; -		Vector<Surface *> surfaces; - -		mutable uint64_t last_pass; -		Mesh() { -			last_pass = 0; -			active = false; -		} -	}; -	mutable RID_Owner<Mesh> mesh_owner; - -	struct Poly : public Geometry { - -		struct Primitive { - -			Vector<Vector3> vertices; -			Vector<Vector3> normals; -			Vector<Vector3> uvs; -			Vector<Color> colors; -		}; - -		AABB aabb; -		List<Primitive> primitives; -		Poly() { - -			type = GEOMETRY_POLY; -		} -	}; - -	mutable RID_Owner<Poly> poly_owner; - -	struct Skeleton { - -		Vector<Transform> bones; -	}; - -	mutable RID_Owner<Skeleton> skeleton_owner; - -	struct Light { - -		VS::LightType type; -		float vars[VS::LIGHT_PARAM_MAX]; -		Color colors[3]; -		bool shadow_enabled; -		RID projector; -		bool volumetric_enabled; -		Color volumetric_color; - -		Light() { - -			vars[VS::LIGHT_PARAM_SPOT_ATTENUATION] = 1; -			vars[VS::LIGHT_PARAM_SPOT_ANGLE] = 45; -			vars[VS::LIGHT_PARAM_ATTENUATION] = 1.0; -			vars[VS::LIGHT_PARAM_ENERGY] = 1.0; -			vars[VS::LIGHT_PARAM_RADIUS] = 1.0; -			colors[VS::LIGHT_COLOR_AMBIENT] = Color(0, 0, 0); -			colors[VS::LIGHT_COLOR_DIFFUSE] = Color(1, 1, 1); -			colors[VS::LIGHT_COLOR_SPECULAR] = Color(1, 1, 1); -			shadow_enabled = false; -			volumetric_enabled = false; -		} -	}; - -	struct ShadowBuffer; - -	struct LightInstance { - -		struct SplitInfo { - -			CameraMatrix camera; -			Transform transform; -			float near; -			float far; -		}; - -		RID light; -		Light *base; -		uint64_t last_pass; -		Transform transform; - -		CameraMatrix projection; -		Vector<SplitInfo> splits; - -		Vector3 light_vector; -		Vector3 spot_vector; -		float linear_att; - -		uint64_t hash_aux; -	}; -	mutable RID_Owner<Light> light_owner; -	mutable RID_Owner<LightInstance> light_instance_owner; - -	LightInstance *light_instances[MAX_LIGHTS]; -	int light_instance_count; - -	struct RenderList { - -		enum { -			MAX_ELEMENTS = 4096, -			MAX_LIGHTS = 4 -		}; - -		struct Element { - -			float depth; -			const Skeleton *skeleton; -			Transform transform; -			LightInstance *lights[MAX_LIGHTS]; -			int light_count; -			const Geometry *geometry; -			const Material *material; -			uint64_t light_hash; -			GeometryOwner *owner; -			const ParamOverrideMap *material_overrides; -		}; - -		Element _elements[MAX_ELEMENTS]; -		Element *elements[MAX_ELEMENTS]; -		int element_count; - -		void clear() { - -			element_count = 0; -		} - -		struct SortZ { - -			_FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const { - -				return A->depth > B->depth; -			} -		}; - -		void sort_z() { - -			SortArray<Element *, SortZ> sorter; -			sorter.sort(elements, element_count); -		} - -		struct SortSkel { - -			_FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const { - -				if (A->geometry < B->geometry) -					return true; -				else if (A->geometry > B->geometry) -					return false; -				else -					return (!A->skeleton && B->skeleton); -			} -		}; - -		void sort_skel() { - -			SortArray<Element *, SortSkel> sorter; -			sorter.sort(elements, element_count); -		} - -		struct SortMat { - -			_FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const { - -				if (A->geometry == B->geometry) { - -					if (A->material == B->material) { - -						return (A->material_overrides < B->material_overrides); -					} else { - -						return (A->material < B->material); -					} -				} else { - -					return (A->geometry < B->geometry); -				} -			} -		}; - -		void sort_mat() { - -			SortArray<Element *, SortMat> sorter; -			sorter.sort(elements, element_count); -		} - -		struct SortMatLight { - -			_FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const { - -				if (A->geometry == B->geometry) { - -					if (A->material == B->material) { - -						if (A->light_hash == B->light_hash) -							return (A->material_overrides < B->material_overrides); -						else -							return A->light_hash < B->light_hash; -					} else { - -						return (A->material < B->material); -					} -				} else { - -					return (A->geometry < B->geometry); -				} -			} -		}; - -		void sort_mat_light() { - -			SortArray<Element *, SortMatLight> sorter; -			sorter.sort(elements, element_count); -		} - -		struct LISort { - -			_FORCE_INLINE_ bool operator()(const LightInstance *A, const LightInstance *B) const { - -				return (A->hash_aux < B->hash_aux); -			} -		}; - -		_FORCE_INLINE_ void add_element(const Geometry *p_geometry, const Material *p_material, const Transform &p_transform, LightInstance **p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides, const Skeleton *p_skeleton, float p_depth, GeometryOwner *p_owner = NULL) { - -			ERR_FAIL_COND(element_count >= MAX_ELEMENTS); -			Element *e = elements[element_count++]; - -			e->geometry = p_geometry; -			e->material = p_material; -			e->transform = p_transform; -			e->skeleton = p_skeleton; -			e->light_hash = 0; -			e->light_count = p_light_count; -			e->owner = p_owner; -			e->material_overrides = p_material_overrides; - -			if (e->light_count > 0) { - -				SortArray<LightInstance *, LISort> light_sort; -				light_sort.sort(p_light_instances, p_light_count); -				//@TODO OPTIOMIZE - -				for (int i = 0; i < p_light_count; i++) { - -					e->lights[i] = p_light_instances[i]; - -					if (i == 0) -						e->light_hash = hash_djb2_one_64(make_uint64_t(e->lights[i])); -					else -						e->light_hash = hash_djb2_one_64(make_uint64_t(e->lights[i]), e->light_hash); -				} -			} -		} - -		RenderList() { - -			for (int i = 0; i < MAX_ELEMENTS; i++) -				elements[i] = &_elements[i]; // assign elements -		} -	}; - -	RenderList opaque_render_list; -	RenderList alpha_render_list; - -	RID default_material; - -	struct FX { - -		bool bgcolor_active; -		Color bgcolor; - -		bool skybox_active; -		RID skybox_cubemap; - -		bool antialias_active; -		float antialias_tolerance; - -		bool glow_active; -		int glow_passes; -		float glow_attenuation; -		float glow_bloom; - -		bool ssao_active; -		float ssao_attenuation; -		float ssao_radius; -		float ssao_max_distance; -		float ssao_range_max; -		float ssao_range_min; -		bool ssao_only; - -		bool fog_active; -		float fog_distance; -		float fog_attenuation; -		Color fog_color_near; -		Color fog_color_far; -		bool fog_bg; - -		bool toon_active; -		float toon_treshold; -		float toon_soft; - -		bool edge_active; -		Color edge_color; -		float edge_size; - -		FX(); -	}; -	mutable RID_Owner<FX> fx_owner; - -	FX *scene_fx; -	CameraMatrix camera_projection; -	Transform camera_transform; -	Transform camera_transform_inverse; -	float camera_z_near; -	float camera_z_far; -	Size2 camera_vp_size; - -	Plane camera_plane; - -	void _add_geometry(const Geometry *p_geometry, const Transform &p_world, uint32_t p_vertex_format, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides, const Skeleton *p_skeleton, GeometryOwner *p_owner); -	void _render_list_forward(RenderList *p_render_list); - -	void _setup_light(LightInstance *p_instance, int p_idx); -	void _setup_lights(LightInstance **p_lights, int p_light_count); -	void _setup_material(const Geometry *p_geometry, const Material *p_material); - -	void _setup_geometry(const Geometry *p_geometry, const Material *p_material); -	void _render(const Geometry *p_geometry, const Material *p_material, const Skeleton *p_skeleton); - -	/*********/ -	/* FRAME */ -	/*********/ - -	Size2 window_size; -	VS::ViewportRect viewport; -	Transform canvas_transform; -	double last_time; -	double time_delta; -	uint64_t frame; - -public: -	/* TEXTURE API */ - -	virtual RID texture_create(); -	virtual void texture_allocate(RID p_texture, int p_width, int p_height, Image::Format p_format, uint32_t p_flags = VS::TEXTURE_FLAGS_DEFAULT); -	virtual void texture_blit_rect(RID p_texture, int p_x, int p_y, const Image &p_image, VS::CubeMapSide p_cube_side = VS::CUBEMAP_LEFT); -	virtual Image texture_get_rect(RID p_texture, int p_x, int p_y, int p_width, int p_height, VS::CubeMapSide p_cube_side = VS::CUBEMAP_LEFT) const; -	virtual void texture_set_flags(RID p_texture, uint32_t p_flags); -	virtual uint32_t texture_get_flags(RID p_texture) const; -	virtual Image::Format texture_get_format(RID p_texture) const; -	virtual uint32_t texture_get_width(RID p_texture) const; -	virtual uint32_t texture_get_height(RID p_texture) const; -	virtual bool texture_has_alpha(RID p_texture) const; - -	/* SHADER API */ - -	virtual RID shader_create(); - -	virtual void shader_node_add(RID p_shader, VS::ShaderNodeType p_type, int p_id); -	virtual void shader_node_remove(RID p_shader, int p_id); -	virtual void shader_node_change_type(RID p_shader, int p_id, VS::ShaderNodeType p_type); -	virtual void shader_node_set_param(RID p_shader, int p_id, const Variant &p_value); - -	virtual void shader_get_node_list(RID p_shader, List<int> *p_node_list) const; -	virtual VS::ShaderNodeType shader_node_get_type(RID p_shader, int p_id) const; -	virtual Variant shader_node_get_param(RID p_shader, int p_id) const; - -	virtual void shader_connect(RID p_shader, int p_src_id, int p_src_slot, int p_dst_id, int p_dst_slot); -	virtual bool shader_is_connected(RID p_shader, int p_src_id, int p_src_slot, int p_dst_id, int p_dst_slot) const; -	virtual void shader_disconnect(RID p_shader, int p_src_id, int p_src_slot, int p_dst_id, int p_dst_slot); - -	virtual void shader_get_connections(RID p_shader, List<VS::ShaderConnection> *p_connections) const; - -	virtual void shader_clear(RID p_shader); - -	/* COMMON MATERIAL API */ - -	virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value); -	virtual Variant material_get_param(RID p_material, const StringName &p_param) const; -	virtual void material_get_param_list(RID p_material, List<String> *p_param_list) const; - -	virtual void material_set_flag(RID p_material, VS::MaterialFlag p_flag, bool p_enabled); -	virtual bool material_get_flag(RID p_material, VS::MaterialFlag p_flag) const; - -	virtual void material_set_blend_mode(RID p_material, VS::MaterialBlendMode p_mode); -	virtual VS::MaterialBlendMode material_get_blend_mode(RID p_material) const; - -	virtual void material_set_line_width(RID p_material, float p_line_width); -	virtual float material_get_line_width(RID p_material) const; - -	/* FIXED MATERIAL */ - -	virtual RID material_create(); - -	virtual void fixed_material_set_parameter(RID p_material, VS::SpatialMaterialParam p_parameter, const Variant &p_value); -	virtual Variant fixed_material_get_parameter(RID p_material, VS::SpatialMaterialParam p_parameter) const; - -	virtual void fixed_material_set_texture(RID p_material, VS::SpatialMaterialParam p_parameter, RID p_texture); -	virtual RID fixed_material_get_texture(RID p_material, VS::SpatialMaterialParam p_parameter) const; - -	virtual void fixed_material_set_detail_blend_mode(RID p_material, VS::MaterialBlendMode p_mode); -	virtual VS::MaterialBlendMode fixed_material_get_detail_blend_mode(RID p_material) const; - -	virtual void fixed_material_set_texgen_mode(RID p_material, VS::SpatialMaterialTexGenMode p_mode); -	virtual VS::SpatialMaterialTexGenMode fixed_material_get_texgen_mode(RID p_material) const; - -	virtual void fixed_material_set_texcoord_mode(RID p_material, VS::SpatialMaterialParam p_parameter, VS::SpatialMaterialTexCoordMode p_mode); -	virtual VS::SpatialMaterialTexCoordMode fixed_material_get_texcoord_mode(RID p_material, VS::SpatialMaterialParam p_parameter) const; - -	virtual void fixed_material_set_uv_transform(RID p_material, const Transform &p_transform); -	virtual Transform fixed_material_get_uv_transform(RID p_material) const; - -	/* SHADER MATERIAL */ - -	virtual RID shader_material_create() const; - -	virtual void shader_material_set_vertex_shader(RID p_material, RID p_shader, bool p_owned = false); -	virtual RID shader_material_get_vertex_shader(RID p_material) const; - -	virtual void shader_material_set_fragment_shader(RID p_material, RID p_shader, bool p_owned = false); -	virtual RID shader_material_get_fragment_shader(RID p_material) const; - -	/* MESH API */ - -	virtual RID mesh_create(); - -	virtual void mesh_add_surface(RID p_mesh, VS::PrimitiveType p_primitive, uint32_t p_format, int p_array_len, int p_index_array_len = VS::NO_INDEX_ARRAY); - -	virtual Error mesh_surface_set_array(RID p_mesh, int p_surface, VS::ArrayType p_type, const Variant &p_array); -	virtual Variant mesh_surface_get_array(RID p_mesh, int p_surface, VS::ArrayType p_type) const; - -	virtual void mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material, bool p_owned = false); -	virtual RID mesh_surface_get_material(RID p_mesh, int p_surface) const; - -	virtual int mesh_surface_get_array_len(RID p_mesh, int p_surface) const; -	virtual int mesh_surface_get_array_index_len(RID p_mesh, int p_surface) const; -	virtual uint32_t mesh_surface_get_format(RID p_mesh, int p_surface) const; -	virtual VS::PrimitiveType mesh_surface_get_primitive_type(RID p_mesh, int p_surface) const; - -	virtual void mesh_erase_surface(RID p_mesh, int p_index); -	virtual int mesh_get_surface_count(RID p_mesh) const; - -	virtual AABB mesh_get_aabb(RID p_mesh) const; - -	/* MULTIMESH API */ - -	virtual RID multimesh_create(); - -	virtual void multimesh_set_instance_count(RID p_multimesh, int p_count); -	virtual int multimesh_get_instance_count(RID p_multimesh) const; - -	virtual void multimesh_set_mesh(RID p_multimesh, RID p_mesh); -	virtual void multimesh_set_aabb(RID p_multimesh, const AABB &p_aabb); -	virtual void multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform &p_transform); -	virtual void multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color); - -	virtual RID multimesh_get_mesh(RID p_multimesh) const; -	virtual AABB multimesh_get_aabb(RID p_multimesh) const; - -	virtual Transform multimesh_instance_get_transform(RID p_multimesh, int p_index) const; -	virtual Color multimesh_instance_get_color(RID p_multimesh, int p_index) const; - -	/* POLY API */ - -	virtual RID poly_create(); -	virtual void poly_set_material(RID p_poly, RID p_material, bool p_owned = false); -	virtual void poly_add_primitive(RID p_poly, const Vector<Vector3> &p_points, const Vector<Vector3> &p_normals, const Vector<Color> &p_colors, const Vector<Vector3> &p_uvs); -	virtual void poly_clear(RID p_poly); - -	virtual AABB poly_get_aabb(RID p_poly) const; - -	/* PARTICLES API */ - -	virtual RID particles_create(); - -	virtual void particles_set_amount(RID p_particles, int p_amount); -	virtual int particles_get_amount(RID p_particles) const; - -	virtual void particles_set_emitting(RID p_particles, bool p_emitting); -	virtual bool particles_is_emitting(RID p_particles) const; - -	virtual void particles_set_visibility_aabb(RID p_particles, const AABB &p_visibility); -	virtual AABB particles_get_visibility_aabb(RID p_particles) const; - -	virtual void particles_set_emission_half_extents(RID p_particles, const Vector3 &p_half_extents); -	virtual Vector3 particles_get_emission_half_extents(RID p_particles) const; - -	virtual void particles_set_gravity_normal(RID p_particles, const Vector3 &p_normal); -	virtual Vector3 particles_get_gravity_normal(RID p_particles) const; - -	virtual void particles_set_variable(RID p_particles, VS::ParticleVariable p_variable, float p_value); -	virtual float particles_get_variable(RID p_particles, VS::ParticleVariable p_variable) const; - -	virtual void particles_set_randomness(RID p_particles, VS::ParticleVariable p_variable, float p_randomness); -	virtual float particles_get_randomness(RID p_particles, VS::ParticleVariable p_variable) const; - -	virtual void particles_set_color_phase_pos(RID p_particles, int p_phase, float p_pos); -	virtual float particles_get_color_phase_pos(RID p_particles, int p_phase) const; - -	virtual void particles_set_color_phases(RID p_particles, int p_phases); -	virtual int particles_get_color_phases(RID p_particles) const; - -	virtual void particles_set_color_phase_color(RID p_particles, int p_phase, const Color &p_color); -	virtual Color particles_get_color_phase_color(RID p_particles, int p_phase) const; - -	virtual void particles_set_attractors(RID p_particles, int p_attractors); -	virtual int particles_get_attractors(RID p_particles) const; - -	virtual void particles_set_attractor_pos(RID p_particles, int p_attractor, const Vector3 &p_pos); -	virtual Vector3 particles_get_attractor_pos(RID p_particles, int p_attractor) const; - -	virtual void particles_set_attractor_strength(RID p_particles, int p_attractor, float p_force); -	virtual float particles_get_attractor_strength(RID p_particles, int p_attractor) const; - -	virtual void particles_set_material(RID p_particles, RID p_material, bool p_owned = false); -	virtual RID particles_get_material(RID p_particles) const; - -	virtual AABB particles_get_aabb(RID p_particles) const; -	/* BEAM API */ - -	virtual RID beam_create(); - -	virtual void beam_set_point_count(RID p_beam, int p_count); -	virtual int beam_get_point_count(RID p_beam) const; -	virtual void beam_clear(RID p_beam); - -	virtual void beam_set_point(RID p_beam, int p_point, Vector3 &p_pos); -	virtual Vector3 beam_get_point(RID p_beam, int p_point) const; - -	virtual void beam_set_primitive(RID p_beam, VS::BeamPrimitive p_primitive); -	virtual VS::BeamPrimitive beam_get_primitive(RID p_beam) const; - -	virtual void beam_set_material(RID p_beam, RID p_material); -	virtual RID beam_get_material(RID p_beam) const; - -	virtual AABB beam_get_aabb(RID p_particles) const; -	/* SKELETON API */ - -	virtual RID skeleton_create(); -	virtual void skeleton_resize(RID p_skeleton, int p_bones); -	virtual int skeleton_get_bone_count(RID p_skeleton) const; -	virtual void skeleton_bone_set_transform(RID p_skeleton, int p_bone, const Transform &p_transform); -	virtual Transform skeleton_bone_get_transform(RID p_skeleton, int p_bone); - -	/* LIGHT API */ - -	virtual RID light_create(VS::LightType p_type); -	virtual VS::LightType light_get_type(RID p_light) const; - -	virtual void light_set_color(RID p_light, VS::LightColor p_type, const Color &p_color); -	virtual Color light_get_color(RID p_light, VS::LightColor p_type) const; - -	virtual void light_set_shadow(RID p_light, bool p_enabled); -	virtual bool light_has_shadow(RID p_light) const; - -	virtual void light_set_volumetric(RID p_light, bool p_enabled); -	virtual bool light_is_volumetric(RID p_light) const; - -	virtual void light_set_projector(RID p_light, RID p_texture); -	virtual RID light_get_projector(RID p_light) const; - -	virtual void light_set_var(RID p_light, VS::LightParam p_var, float p_value); -	virtual float light_get_var(RID p_light, VS::LightParam p_var) const; - -	virtual AABB light_get_aabb(RID p_poly) const; - -	virtual RID light_instance_create(RID p_light); -	virtual void light_instance_set_transform(RID p_light_instance, const Transform &p_transform); - -	virtual void light_instance_set_active_hint(RID p_light_instance); -	virtual bool light_instance_has_shadow(RID p_light_instance) const; -	virtual bool light_instance_assign_shadow(RID p_light_instance); -	virtual ShadowType light_instance_get_shadow_type(RID p_light_instance) const; -	virtual int light_instance_get_shadow_passes(RID p_light_instance) const; -	virtual void light_instance_set_pssm_split_info(RID p_light_instance, int p_split, float p_near, float p_far, const CameraMatrix &p_camera, const Transform &p_transform); - -	/* PARTICLES INSTANCE */ - -	virtual RID particles_instance_create(RID p_particles); -	virtual void particles_instance_set_transform(RID p_particles_instance, const Transform &p_transform); - -	/* RENDER API */ -	/* all calls (inside begin/end shadow) are always warranted to be in the following order: */ - -	virtual void begin_frame(); - -	virtual void set_viewport(const VS::ViewportRect &p_viewport); - -	virtual void begin_scene(RID p_fx = RID(), VS::ScenarioDebugMode p_debug = VS::SCENARIO_DEBUG_DISABLED); -	virtual void begin_shadow_map(RID p_light_instance, int p_shadow_pass); - -	virtual void set_camera(const Transform &p_world, const CameraMatrix &p_projection); - -	virtual void add_light(RID p_light_instance); ///< all "add_light" calls happen before add_geometry calls - -	typedef Map<StringName, Variant> ParamOverrideMap; - -	virtual void add_mesh(RID p_mesh, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides = NULL, RID p_skeleton = RID()); -	virtual void add_multimesh(RID p_multimesh, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides = NULL); -	virtual void add_poly(RID p_poly, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides = NULL); -	virtual void add_beam(RID p_beam, const Transform *p_world, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides = NULL); -	virtual void add_particles(RID p_particle_instance, const RID *p_light_instances, int p_light_count, const ParamOverrideMap *p_material_overrides = NULL); - -	virtual void end_scene(); -	virtual void end_shadow_map(); - -	virtual void end_frame(); - -	/* CANVAS API */ - -	virtual void canvas_begin(); -	virtual void canvas_set_transparency(float p_transparency); -	virtual void canvas_set_rect(const Rect2 &p_rect, bool p_clip); -	virtual void canvas_draw_line(const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width); -	virtual void canvas_draw_rect(const Rect2 &p_rect, bool p_region, const Rect2 &p_source, bool p_tile, RID p_texture, const Color &p_modulate); -	virtual void canvas_draw_style_box(const Rect2 &p_rect, RID p_texture, const float *p_margins, bool p_draw_center = true); -	virtual void canvas_draw_primitive(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture); - -	/* FX */ - -	virtual RID fx_create(); -	virtual void fx_get_effects(RID p_fx, List<String> *p_effects) const; -	virtual void fx_set_active(RID p_fx, const String &p_effect, bool p_active); -	virtual bool fx_is_active(RID p_fx, const String &p_effect) const; -	virtual void fx_get_effect_params(RID p_fx, const String &p_effect, List<PropertyInfo> *p_params) const; -	virtual Variant fx_get_effect_param(RID p_fx, const String &p_effect, const String &p_param) const; -	virtual void fx_set_effect_param(RID p_fx, const String &p_effect, const String &p_param, const Variant &p_pvalue); - -	/*MISC*/ - -	virtual bool is_texture(const RID &p_rid) const; -	virtual bool is_material(const RID &p_rid) const; -	virtual bool is_mesh(const RID &p_rid) const; -	virtual bool is_multimesh(const RID &p_rid) const; -	virtual bool is_poly(const RID &p_rid) const; -	virtual bool is_particles(const RID &p_beam) const; -	virtual bool is_beam(const RID &p_beam) const; - -	virtual bool is_light(const RID &p_rid) const; -	virtual bool is_light_instance(const RID &p_rid) const; -	virtual bool is_particles_instance(const RID &p_rid) const; -	virtual bool is_skeleton(const RID &p_rid) const; -	virtual bool is_fx(const RID &p_rid) const; -	virtual bool is_shader(const RID &p_rid) const; - -	virtual void free(const RID &p_rid) const; - -	virtual void init(); -	virtual void finish(); - -	virtual int get_render_info(VS::RenderInfo p_info); - -	RasterizerIPhone(); -	virtual ~RasterizerIPhone(); -}; - -#endif -#endif diff --git a/scene/audio/audio_player.cpp b/scene/audio/audio_player.cpp index a320a30e8a..ad72a512d8 100644 --- a/scene/audio/audio_player.cpp +++ b/scene/audio/audio_player.cpp @@ -113,6 +113,7 @@ void AudioPlayer::_notification(int p_what) {  void AudioPlayer::set_stream(Ref<AudioStream> p_stream) { +	ERR_FAIL_COND(!p_stream.is_valid());  	AudioServer::get_singleton()->lock();  	mix_buffer.resize(AudioServer::get_singleton()->thread_get_mix_buffer_size()); diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp index f57b3d0fd1..a456759281 100644 --- a/scene/gui/button.cpp +++ b/scene/gui/button.cpp @@ -69,48 +69,58 @@ void Button::_notification(int p_what) {  		RID ci = get_canvas_item();  		Size2 size = get_size();  		Color color; -		Color icon_color = Color(1, 1, 1); +		Color color_icon(1, 1, 1, 1);  		//print_line(get_text()+": "+itos(is_flat())+" hover "+itos(get_draw_mode())); -		String style_name = ""; +		Ref<StyleBox> style = get_stylebox("normal"); +  		switch (get_draw_mode()) {  			case DRAW_NORMAL: { -				style_name = "normal"; +				style = get_stylebox("normal"); +				if (!flat) +					style->draw(ci, Rect2(Point2(0, 0), size));  				color = get_color("font_color"); - +				if (has_color("icon_color_normal")) +					color_icon = get_color("icon_color_normal");  			} break;  			case DRAW_PRESSED: { -				style_name = "pressed"; -				if (has_color("font_color_pressed")) { +				style = get_stylebox("pressed"); +				style->draw(ci, Rect2(Point2(0, 0), size)); +				if (has_color("font_color_pressed"))  					color = get_color("font_color_pressed"); -					icon_color = color; -				} else +				else  					color = get_color("font_color"); +				if (has_color("icon_color_pressed")) +					color_icon = get_color("icon_color_pressed");  			} break;  			case DRAW_HOVER: { -				style_name = "hover"; +				style = get_stylebox("hover"); +				style->draw(ci, Rect2(Point2(0, 0), size));  				color = get_color("font_color_hover"); +				if (has_color("icon_color_hover")) +					color_icon = get_color("icon_color_hover");  			} break;  			case DRAW_DISABLED: { -				style_name = "disabled"; +				style = get_stylebox("disabled"); +				style->draw(ci, Rect2(Point2(0, 0), size));  				color = get_color("font_color_disabled"); +				if (has_color("icon_color_disabled")) +					color_icon = get_color("icon_color_disabled");  			} break;  		} -		if (style_name != "" && !flat) get_stylebox(style_name)->draw(ci, Rect2(Point2(0, 0), size)); - -		Ref<StyleBox> style = get_stylebox(style_name);  		if (has_focus()) { +			Ref<StyleBox> style = get_stylebox("focus");  			style->draw(ci, Rect2(Point2(), size));  		} @@ -147,8 +157,9 @@ void Button::_notification(int p_what) {  		if (!_icon.is_null()) {  			int valign = size.height - style->get_minimum_size().y; - -			_icon->draw(ci, style->get_offset() + Point2(0, Math::floor((valign - _icon->get_height()) / 2.0)), is_disabled() ? Color(1, 1, 1, 0.4) : icon_color); +			if (is_disabled()) +				color_icon.a = 0.4; +			_icon->draw(ci, style->get_offset() + Point2(0, Math::floor((valign - _icon->get_height()) / 2.0)), color_icon);  		}  	}  } diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index cf5321e907..053be515ac 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -53,25 +53,34 @@ void WindowDialog::_fix_size() {  	Size2i viewport_size = get_viewport_rect().size;  	// Windows require additional padding to keep the window chrome visible. -	Ref<StyleBoxTexture> panel = get_stylebox("panel", "WindowDialog"); - +	Ref<StyleBox> panel = get_stylebox("panel", "WindowDialog"); +	float top = 0; +	float left = 0; +	float bottom = 0; +	float right = 0;  	// Check validity, because the theme could contain a different type of StyleBox -	if (panel.is_valid()) { -		float top = panel->get_expand_margin_size(MARGIN_TOP); -		float left = panel->get_expand_margin_size(MARGIN_LEFT); -		float bottom = panel->get_expand_margin_size(MARGIN_BOTTOM); -		float right = panel->get_expand_margin_size(MARGIN_RIGHT); - -		pos.x = MAX(left, MIN(pos.x, viewport_size.x - size.x - right)); -		pos.y = MAX(top, MIN(pos.y, viewport_size.y - size.y - bottom)); -		set_global_position(pos); - -		// Also resize the window to fit if a resize should be possible at all. -		if (resizable) { -			size.x = MIN(size.x, viewport_size.x - left - right); -			size.y = MIN(size.y, viewport_size.y - top - bottom); -			set_size(size); -		} +	if (panel->get_class() == "StyleBoxTexture") { +		Ref<StyleBoxTexture> panel_texture = panel->cast_to<StyleBoxTexture>(); +		top = panel_texture->get_expand_margin_size(MARGIN_TOP); +		left = panel_texture->get_expand_margin_size(MARGIN_LEFT); +		bottom = panel_texture->get_expand_margin_size(MARGIN_BOTTOM); +		right = panel_texture->get_expand_margin_size(MARGIN_RIGHT); +	} else if (panel->get_class() == "StyleBoxFlat") { +		Ref<StyleBoxFlat> panel_flat = panel->cast_to<StyleBoxFlat>(); +		top = panel_flat->_get_additional_border_size(MARGIN_TOP); +		left = panel_flat->_get_additional_border_size(MARGIN_LEFT); +		bottom = panel_flat->_get_additional_border_size(MARGIN_BOTTOM); +		right = panel_flat->_get_additional_border_size(MARGIN_RIGHT); +	} + +	pos.x = MAX(left, MIN(pos.x, viewport_size.x - size.x - right)); +	pos.y = MAX(top, MIN(pos.y, viewport_size.y - size.y - bottom)); +	set_global_position(pos); + +	if (resizable) { +		size.x = MIN(size.x, viewport_size.x - left - right); +		size.y = MIN(size.y, viewport_size.y - top - bottom); +		set_size(size);  	}  } @@ -200,7 +209,7 @@ void WindowDialog::_notification(int p_what) {  		case NOTIFICATION_ENTER_TREE: {  			close_button->set_normal_texture(get_icon("close", "WindowDialog"));  			close_button->set_pressed_texture(get_icon("close", "WindowDialog")); -			close_button->set_hover_texture(get_icon("close_hilite", "WindowDialog")); +			close_button->set_hover_texture(get_icon("close_highlight", "WindowDialog"));  			close_button->set_anchor(MARGIN_LEFT, ANCHOR_END);  			close_button->set_begin(Point2(get_constant("close_h_ofs", "WindowDialog"), -get_constant("close_v_ofs", "WindowDialog")));  		} break; diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index d5df3bac67..cfa09f538d 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -579,7 +579,7 @@ void GraphEdit::_bake_segment2d(CanvasItem *p_where, float p_begin, float p_end,  	if (p_depth >= p_min_depth && (dp < p_tol || p_depth >= p_max_depth)) { -		p_where->draw_line(beg, end, p_color.linear_interpolate(p_to_color, mp), 4, true); +		p_where->draw_line(beg, end, p_color.linear_interpolate(p_to_color, mp), 2, true);  		lines++;  	} else {  		_bake_segment2d(p_where, p_begin, mp, p_a, p_out, p_b, p_in, p_depth + 1, p_min_depth, p_max_depth, p_tol, p_color, p_to_color, lines); @@ -598,7 +598,7 @@ void GraphEdit::_draw_cos_line(CanvasItem *p_where, const Vector2 &p_from, const  	int cp_neg_len = get_constant("bezier_len_neg");  	if (diff > 0) { -		cp_offset = MIN(cp_len, diff * 0.5); +		cp_offset = MAX(cp_len, diff * 0.5);  	} else {  		cp_offset = MAX(MIN(cp_len - diff, cp_neg_len), -diff * 0.5);  	} diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index b79104ba39..bbfe1b61bb 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -42,7 +42,6 @@ void ItemList::add_item(const String &p_item, const Ref<Texture> &p_texture, boo  	item.disabled = false;  	item.tooltip_enabled = true;  	item.custom_bg = Color(0, 0, 0, 0); -	item.custom_font_color = get_color("font_color");  	items.push_back(item);  	update(); @@ -152,20 +151,6 @@ Color ItemList::get_item_custom_bg_color(int p_idx) const {  	return items[p_idx].custom_bg;  } -void ItemList::set_item_custom_font_color(int p_idx, const Color &p_custom_font_color) { - -	ERR_FAIL_INDEX(p_idx, items.size()); - -	items[p_idx].custom_font_color = p_custom_font_color; -} - -Color ItemList::get_item_custom_font_color(int p_idx) const { - -	ERR_FAIL_INDEX_V(p_idx, items.size(), Color()); - -	return items[p_idx].custom_font_color; -} -  void ItemList::set_item_tag_icon(int p_idx, const Ref<Texture> &p_tag_icon) {  	ERR_FAIL_INDEX(p_idx, items.size()); @@ -1032,8 +1017,7 @@ void ItemList::_notification(int p_what) {  				else  					max_len = size.x; -				Color font_color_2 = items[i].custom_font_color; -				Color modulate = items[i].selected ? font_color_selected : font_color_2; +				Color modulate = items[i].selected ? font_color_selected : font_color;  				if (items[i].disabled)  					modulate.a *= 0.5; diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index 96a894d3fd..4b896de77c 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -62,7 +62,6 @@ private:  		Variant metadata;  		String tooltip;  		Color custom_bg; -		Color custom_font_color;  		Rect2 rect_cache;  		Rect2 min_rect_cache; @@ -145,9 +144,6 @@ public:  	void set_item_custom_bg_color(int p_idx, const Color &p_custom_bg_color);  	Color get_item_custom_bg_color(int p_idx) const; -	void set_item_custom_font_color(int p_idx, const Color &p_custom_font_color); -	Color get_item_custom_font_color(int p_idx) const; -  	void select(int p_idx, bool p_single = true);  	void unselect(int p_idx);  	bool is_selected(int p_idx) const; diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 8bb6828fa6..4ceaeeba04 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -576,7 +576,7 @@ void LineEdit::_notification(int p_what) {  			RID ci = get_canvas_item(); -			Ref<StyleBox> style = has_focus() ? get_stylebox("active") : get_stylebox("normal"); +			Ref<StyleBox> style = get_stylebox("normal");  			if (!is_editable())  				style = get_stylebox("read_only"); @@ -617,7 +617,7 @@ void LineEdit::_notification(int p_what) {  			int font_ascent = font->get_ascent();  			Color selection_color = get_color("selection_color"); -			Color font_color = is_editable() ? has_focus() ? get_color("font_color_active") : get_color("font_color") : get_color("font_color_read_only"); +			Color font_color = get_color("font_color");  			Color font_color_selected = get_color("font_color_selected");  			Color cursor_color = get_color("cursor_color"); diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp index b967a1a7ce..0806d35d48 100644 --- a/scene/gui/option_button.cpp +++ b/scene/gui/option_button.cpp @@ -56,24 +56,7 @@ void OptionButton::_notification(int p_what) {  			Size2 size = get_size();  			Point2 ofs(size.width - arrow->get_width() - get_constant("arrow_margin"), int(Math::abs((size.height - arrow->get_height()) / 2))); - -			Color arrow_color = get_color("font_color"); -			switch (get_draw_mode()) { -				case DRAW_NORMAL: { -					arrow_color = get_color("font_color"); -				} break; -				case DRAW_PRESSED: { -					arrow_color = get_color("font_color_pressed"); -				} break; -				case DRAW_HOVER: { -					arrow_color = get_color("font_color_hover"); -				} break; -				case DRAW_DISABLED: { -					arrow_color = get_color("font_color_disabled"); -				} break; -			} - -			arrow->draw(ci, ofs, arrow_color); +			arrow->draw(ci, ofs);  		} break;  	} diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp index 6475371eb9..bf44493b51 100644 --- a/scene/gui/scroll_bar.cpp +++ b/scene/gui/scroll_bar.cpp @@ -151,24 +151,24 @@ void ScrollBar::_gui_input(InputEvent p_event) {  				double incr_size = orientation == VERTICAL ? incr->get_height() : incr->get_width();  				double total = orientation == VERTICAL ? get_size().height : get_size().width; -				HiliteStatus new_hilite; +				HighlightStatus new_highlight;  				if (ofs < decr_size) { -					new_hilite = HILITE_DECR; +					new_highlight = HIGHLIGHT_DECR;  				} else if (ofs > total - incr_size) { -					new_hilite = HILITE_INCR; +					new_highlight = HIGHLIGHT_INCR;  				} else { -					new_hilite = HILITE_RANGE; +					new_highlight = HIGHLIGHT_RANGE;  				} -				if (new_hilite != hilite) { +				if (new_highlight != highlight) { -					hilite = new_hilite; +					highlight = new_highlight;  					update();  				}  			} @@ -233,10 +233,10 @@ void ScrollBar::_notification(int p_what) {  		RID ci = get_canvas_item(); -		Ref<Texture> decr = hilite == HILITE_DECR ? get_icon("decrement_hilite") : get_icon("decrement"); -		Ref<Texture> incr = hilite == HILITE_INCR ? get_icon("increment_hilite") : get_icon("increment"); +		Ref<Texture> decr = highlight == HIGHLIGHT_DECR ? get_icon("decrement_highlight") : get_icon("decrement"); +		Ref<Texture> incr = highlight == HIGHLIGHT_INCR ? get_icon("increment_highlight") : get_icon("increment");  		Ref<StyleBox> bg = has_focus() ? get_stylebox("scroll_focus") : get_stylebox("scroll"); -		Ref<StyleBox> grabber = (drag.active || hilite == HILITE_RANGE) ? get_stylebox("grabber_hilite") : get_stylebox("grabber"); +		Ref<StyleBox> grabber = (drag.active || highlight == HIGHLIGHT_RANGE) ? get_stylebox("grabber_highlight") : get_stylebox("grabber");  		Point2 ofs; @@ -386,7 +386,7 @@ void ScrollBar::_notification(int p_what) {  	if (p_what == NOTIFICATION_MOUSE_EXIT) { -		hilite = HILITE_NONE; +		highlight = HIGHLIGHT_NONE;  		update();  	}  } @@ -784,7 +784,7 @@ void ScrollBar::_bind_methods() {  ScrollBar::ScrollBar(Orientation p_orientation) {  	orientation = p_orientation; -	hilite = HILITE_NONE; +	highlight = HIGHLIGHT_NONE;  	custom_step = -1;  	drag_slave = NULL; diff --git a/scene/gui/scroll_bar.h b/scene/gui/scroll_bar.h index 9f035b4901..cb6bf227a0 100644 --- a/scene/gui/scroll_bar.h +++ b/scene/gui/scroll_bar.h @@ -39,11 +39,11 @@ class ScrollBar : public Range {  	GDCLASS(ScrollBar, Range); -	enum HiliteStatus { -		HILITE_NONE, -		HILITE_DECR, -		HILITE_RANGE, -		HILITE_INCR, +	enum HighlightStatus { +		HIGHLIGHT_NONE, +		HIGHLIGHT_DECR, +		HIGHLIGHT_RANGE, +		HIGHLIGHT_INCR,  	};  	static bool focus_by_default; @@ -52,7 +52,7 @@ class ScrollBar : public Range {  	Size2 size;  	float custom_step; -	HiliteStatus hilite; +	HighlightStatus highlight;  	struct Drag { diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp index d2a2ff7966..ae52d6d452 100644 --- a/scene/gui/slider.cpp +++ b/scene/gui/slider.cpp @@ -45,7 +45,7 @@ void Slider::_gui_input(InputEvent p_event) {  		if (mb.button_index == BUTTON_LEFT) {  			if (mb.pressed) { -				Ref<Texture> grabber = get_icon(mouse_inside || has_focus() ? "grabber_hilite" : "grabber"); +				Ref<Texture> grabber = get_icon(mouse_inside || has_focus() ? "grabber_highlight" : "grabber");  				grab.pos = orientation == VERTICAL ? mb.y : mb.x;  				double grab_width = (double)grabber->get_size().width;  				double grab_height = (double)grabber->get_size().height; @@ -153,7 +153,7 @@ void Slider::_notification(int p_what) {  			Size2i size = get_size();  			Ref<StyleBox> style = get_stylebox("slider");  			Ref<StyleBox> focus = get_stylebox("focus"); -			Ref<Texture> grabber = get_icon(mouse_inside || has_focus() ? "grabber_hilite" : "grabber"); +			Ref<Texture> grabber = get_icon(mouse_inside || has_focus() ? "grabber_highlight" : "grabber");  			Ref<Texture> tick = get_icon("tick");  			if (orientation == VERTICAL) { diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index 83d535a2e7..77bfd3edf7 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -194,12 +194,7 @@ void SpinBox::_notification(int p_what) {  		RID ci = get_canvas_item();  		Size2i size = get_size(); -		Color color = has_focus() ? line_edit->get_color("font_color_active") : line_edit->get_color("font_color"); -		if (!is_editable()) -			color = line_edit->get_color("font_color_read_only"); -		updown->draw(ci, Point2i(size.width - updown->get_width(), (size.height - updown->get_height()) / 2), color); - -	} else if (p_what == NOTIFICATION_FOCUS_EXIT) { +		updown->draw(ci, Point2i(size.width - updown->get_width(), (size.height - updown->get_height()) / 2));  	} else if (p_what == NOTIFICATION_FOCUS_EXIT) { diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index 952f2a9710..0c7a58dc16 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -206,9 +206,6 @@ void TabContainer::_notification(int p_what) {  					break;  			} -			// Draw the tab area. -			panel->draw(canvas, Rect2(0, header_height, size.width, size.height - header_height)); -  			// Draw all visible tabs.  			int x = 0;  			for (int i = 0; i < tab_widths.size(); i++) { @@ -227,7 +224,7 @@ void TabContainer::_notification(int p_what) {  				// Draw the tab background.  				int tab_width = tab_widths[i]; -				Rect2 tab_rect(tabs_ofs_cache + x, 2, tab_width, header_height); +				Rect2 tab_rect(tabs_ofs_cache + x, 0, tab_width, header_height);  				tab_style->draw(canvas, tab_rect);  				// Draw the tab contents. @@ -282,6 +279,8 @@ void TabContainer::_notification(int p_what) {  						Color(1, 1, 1, first_tab_cache > 0 ? 1.0 : 0.5));  			} +			// Draw the tab area. +			panel->draw(canvas, Rect2(0, header_height, size.width, size.height - header_height));  		} break;  		case NOTIFICATION_THEME_CHANGED: {  			if (get_tab_count() > 0) { @@ -660,7 +659,7 @@ TabContainer::TabContainer() {  	current = 0;  	previous = 0;  	mouse_x_cache = 0; -	align = ALIGN_LEFT; +	align = ALIGN_CENTER;  	tabs_visible = true;  	popup = NULL;  }
\ No newline at end of file diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp index fb27f3b017..797082f17c 100644 --- a/scene/gui/tabs.cpp +++ b/scene/gui/tabs.cpp @@ -85,7 +85,7 @@ void Tabs::_gui_input(const InputEvent &p_event) {  		Point2 pos(p_event.mouse_motion.x, p_event.mouse_motion.y); -		hilite_arrow = -1; +		highlight_arrow = -1;  		if (buttons_visible) {  			Ref<Texture> incr = get_icon("increment"); @@ -94,9 +94,9 @@ void Tabs::_gui_input(const InputEvent &p_event) {  			int limit = get_size().width - incr->get_width() - decr->get_width();  			if (pos.x > limit + decr->get_width()) { -				hilite_arrow = 1; +				highlight_arrow = 1;  			} else if (pos.x > limit) { -				hilite_arrow = 0; +				highlight_arrow = 0;  			}  		} @@ -268,8 +268,8 @@ void Tabs::_notification(int p_what) {  			Ref<Texture> incr = get_icon("increment");  			Ref<Texture> decr = get_icon("decrement"); -			Ref<Texture> incr_hl = get_icon("increment_hilite"); -			Ref<Texture> decr_hl = get_icon("decrement_hilite"); +			Ref<Texture> incr_hl = get_icon("increment_highlight"); +			Ref<Texture> decr_hl = get_icon("decrement_highlight");  			int limit = get_size().width - incr->get_size().width - decr->get_size().width; @@ -385,12 +385,12 @@ void Tabs::_notification(int p_what) {  				int vofs = (get_size().height - incr->get_size().height) / 2;  				if (offset > 0) -					draw_texture(hilite_arrow == 0 ? decr_hl : decr, Point2(limit, vofs)); +					draw_texture(highlight_arrow == 0 ? decr_hl : decr, Point2(limit, vofs));  				else  					draw_texture(decr, Point2(limit, vofs), Color(1, 1, 1, 0.5));  				if (missing_right) -					draw_texture(hilite_arrow == 1 ? incr_hl : incr, Point2(limit + decr->get_size().width, vofs)); +					draw_texture(highlight_arrow == 1 ? incr_hl : incr, Point2(limit + decr->get_size().width, vofs));  				else  					draw_texture(incr, Point2(limit + decr->get_size().width, vofs), Color(1, 1, 1, 0.5)); @@ -677,7 +677,7 @@ Tabs::Tabs() {  	tab_align = ALIGN_CENTER;  	rb_hover = -1;  	rb_pressing = false; -	hilite_arrow = -1; +	highlight_arrow = -1;  	cb_hover = -1;  	cb_pressing = false; diff --git a/scene/gui/tabs.h b/scene/gui/tabs.h index 2392327206..131526f298 100644 --- a/scene/gui/tabs.h +++ b/scene/gui/tabs.h @@ -69,7 +69,7 @@ private:  	int offset;  	int max_drawn_tab; -	int hilite_arrow; +	int highlight_arrow;  	bool buttons_visible;  	bool missing_right;  	Vector<Tab> tabs; diff --git a/scene/gui/tool_button.cpp b/scene/gui/tool_button.cpp index 7e8a426d15..5fc4b6ecf8 100644 --- a/scene/gui/tool_button.cpp +++ b/scene/gui/tool_button.cpp @@ -29,10 +29,6 @@  /*************************************************************************/  #include "tool_button.h" -void ToolButton::_notification(int p_what) { -	// set_self_modulate(get_color("pressed")); -} -  ToolButton::ToolButton() {  	set_flat(true);  } diff --git a/scene/gui/tool_button.h b/scene/gui/tool_button.h index 58948f798f..d243b5559f 100644 --- a/scene/gui/tool_button.h +++ b/scene/gui/tool_button.h @@ -37,9 +37,6 @@ class ToolButton : public Button {  public:  	ToolButton(); - -protected: -	void _notification(int p_what);  };  #endif // TOOL_BUTTON_H diff --git a/scene/resources/default_theme/arrow_down.png b/scene/resources/default_theme/arrow_down.png Binary files differindex 4ef7b41de6..fc837d120a 100644 --- a/scene/resources/default_theme/arrow_down.png +++ b/scene/resources/default_theme/arrow_down.png diff --git a/scene/resources/default_theme/arrow_right.png b/scene/resources/default_theme/arrow_right.png Binary files differindex 13a42f730d..ebe6e26ace 100644 --- a/scene/resources/default_theme/arrow_right.png +++ b/scene/resources/default_theme/arrow_right.png diff --git a/scene/resources/default_theme/button_disabled.png b/scene/resources/default_theme/button_disabled.png Binary files differindex 1ee7be0674..d75e76989d 100644 --- a/scene/resources/default_theme/button_disabled.png +++ b/scene/resources/default_theme/button_disabled.png diff --git a/scene/resources/default_theme/button_hover.png b/scene/resources/default_theme/button_hover.png Binary files differindex 5c6c434042..6e609f435f 100644 --- a/scene/resources/default_theme/button_hover.png +++ b/scene/resources/default_theme/button_hover.png diff --git a/scene/resources/default_theme/button_normal.png b/scene/resources/default_theme/button_normal.png Binary files differindex 3e6c509f5b..92482aaf28 100644 --- a/scene/resources/default_theme/button_normal.png +++ b/scene/resources/default_theme/button_normal.png diff --git a/scene/resources/default_theme/button_pressed.png b/scene/resources/default_theme/button_pressed.png Binary files differindex 9559126eba..19a7e237aa 100644 --- a/scene/resources/default_theme/button_pressed.png +++ b/scene/resources/default_theme/button_pressed.png diff --git a/scene/resources/default_theme/checked.png b/scene/resources/default_theme/checked.png Binary files differindex aa5e7f6bdb..93e291a29e 100644 --- a/scene/resources/default_theme/checked.png +++ b/scene/resources/default_theme/checked.png diff --git a/scene/resources/default_theme/close.png b/scene/resources/default_theme/close.png Binary files differindex b6973740e7..5ac6357dcd 100644 --- a/scene/resources/default_theme/close.png +++ b/scene/resources/default_theme/close.png diff --git a/scene/resources/default_theme/close_hl.png b/scene/resources/default_theme/close_hl.png Binary files differindex b6973740e7..5ac6357dcd 100644 --- a/scene/resources/default_theme/close_hl.png +++ b/scene/resources/default_theme/close_hl.png diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index ac3b46c69f..7e5065a03b 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -97,10 +97,6 @@ static Ref<StyleBoxTexture> sb_expand(Ref<StyleBoxTexture> p_sbox, float p_left,  	return p_sbox;  } -static Ref<StyleBoxTexture> sb_expand_default(Ref<StyleBoxTexture> p_sbox) { -	return sb_expand(p_sbox, 0, 0, 0, 0); -} -  template <class T>  static Ref<Texture> make_icon(T p_src) { @@ -217,16 +213,14 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// Font Colors -	Color control_font_color = Color(1, 1, 1, 0.8); -	Color control_font_color_lower = Color(1, 1, 1, 0.32); -	Color control_font_color_low = Color(1, 1, 1, 0.58); +	Color control_font_color = Color::html("e0e0e0"); +	Color control_font_color_lower = Color::html("a0a0a0"); +	Color control_font_color_low = Color::html("b0b0b0");  	Color control_font_color_hover = Color::html("f0f0f0"); -	Color control_font_color_disabled = Color::html("425468"); +	Color control_font_color_disabled = Color(0.9, 0.9, 0.9, 0.2);  	Color control_font_color_pressed = Color::html("ffffff");  	Color font_color_selection = Color::html("7d7d7d"); -	Color accent_color = Color::html("7eff8a"); -  	// Panel  	t->set_stylebox("panel", "Panel", make_stylebox(panel_bg_png, 0, 0, 0, 0)); @@ -240,15 +234,11 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// Button -	Color button_font_color = Color::html("9fb4ca"); -	Color button_font_color_hover = Color::html("70b1ff"); -	Color button_font_color_disabled = Color::html("425468"); - -	Ref<StyleBox> sb_button_normal = sb_expand_default(make_stylebox(button_normal_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	Ref<StyleBox> sb_button_pressed = sb_expand_default(make_stylebox(button_pressed_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	Ref<StyleBox> sb_button_hover = sb_expand_default(make_stylebox(button_hover_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	Ref<StyleBox> sb_button_disabled = sb_expand_default(make_stylebox(button_disabled_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	Ref<StyleBox> sb_button_focus = make_stylebox(focus_png, 6, 6, 6, 6, 6, 2, 6, 2); +	Ref<StyleBox> sb_button_normal = sb_expand(make_stylebox(button_normal_png, 4, 4, 4, 4, 6, 3, 6, 3), 2, 2, 2, 2); +	Ref<StyleBox> sb_button_pressed = sb_expand(make_stylebox(button_pressed_png, 4, 4, 4, 4, 6, 3, 6, 3), 2, 2, 2, 2); +	Ref<StyleBox> sb_button_hover = sb_expand(make_stylebox(button_hover_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2); +	Ref<StyleBox> sb_button_disabled = sb_expand(make_stylebox(button_disabled_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2); +	Ref<StyleBox> sb_button_focus = sb_expand(make_stylebox(button_focus_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2);  	t->set_stylebox("normal", "Button", sb_button_normal);  	t->set_stylebox("pressed", "Button", sb_button_pressed); @@ -258,14 +248,12 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_font("font", "Button", default_font); -	t->set_color("font_color", "Button", button_font_color); -	t->set_color("font_color_pressed", "Button", accent_color); -	t->set_color("font_color_hover", "Button", button_font_color_hover); -	t->set_color("font_color_disabled", "Button", button_font_color_disabled); +	t->set_color("font_color", "Button", control_font_color); +	t->set_color("font_color_pressed", "Button", control_font_color_pressed); +	t->set_color("font_color_hover", "Button", control_font_color_hover); +	t->set_color("font_color_disabled", "Button", control_font_color_disabled); -	t->set_constant("side_margin", "Button", 4 * scale); -	t->set_constant("bottom_margin", "Button", 4 * scale); -	t->set_constant("hseparation", "Button", 4 * scale); +	t->set_constant("hseparation", "Button", 2 * scale);  	// LinkButton @@ -296,73 +284,66 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// ToolButton -	Ref<StyleBox> tb_empty = memnew(StyleBoxEmpty); -	tb_empty->set_default_margin(MARGIN_LEFT, 6 * scale); -	tb_empty->set_default_margin(MARGIN_RIGHT, 6 * scale); -	tb_empty->set_default_margin(MARGIN_TOP, 4 * scale); -	tb_empty->set_default_margin(MARGIN_BOTTOM, 4 * scale); - -	t->set_stylebox("normal", "ToolButton", tb_empty); -	t->set_stylebox("pressed", "ToolButton", tb_empty); -	t->set_stylebox("hover", "ToolButton", tb_empty); -	t->set_stylebox("disabled", "ToolButton", tb_empty); -	t->set_stylebox("focus", "ToolButton", tb_empty); +	t->set_stylebox("normal", "ToolButton", make_empty_stylebox(6, 4, 6, 4)); +	t->set_stylebox("pressed", "ToolButton", make_stylebox(button_pressed_png, 4, 4, 4, 4, 6, 4, 6, 4)); +	t->set_stylebox("hover", "ToolButton", make_stylebox(button_normal_png, 4, 4, 4, 4, 6, 4, 6, 4)); +	t->set_stylebox("disabled", "ToolButton", make_empty_stylebox(6, 4, 6, 4)); +	t->set_stylebox("focus", "ToolButton", focus);  	t->set_font("font", "ToolButton", default_font);  	t->set_color("font_color", "ToolButton", control_font_color); -	t->set_color("font_color_pressed", "ToolButton", accent_color); +	t->set_color("font_color_pressed", "ToolButton", control_font_color_pressed);  	t->set_color("font_color_hover", "ToolButton", control_font_color_hover); -	t->set_color("font_color_disabled", "ToolButton", button_font_color_disabled); +	t->set_color("font_color_disabled", "ToolButton", Color(0.9, 0.95, 1, 0.3));  	t->set_constant("hseparation", "ToolButton", 3);  	// OptionButton -	Ref<StyleBox> sb_optbutton_normal = sb_expand_default(make_stylebox(button_normal_png, 6, 6, 6, 6, 6, 4, 16, 4)); -	Ref<StyleBox> sb_optbutton_pressed = sb_expand_default(make_stylebox(button_pressed_png, 6, 6, 6, 6, 6, 4, 16, 4)); -	Ref<StyleBox> sb_optbutton_hover = sb_expand_default(make_stylebox(button_hover_png, 6, 6, 6, 6, 6, 4, 16, 4)); -	Ref<StyleBox> sb_optbutton_disabled = sb_expand_default(make_stylebox(button_disabled_png, 6, 6, 6, 6, 6, 4, 16, 4)); -	Ref<StyleBox> sb_optbutton_focus = focus; +	Ref<StyleBox> sb_optbutton_normal = sb_expand(make_stylebox(option_button_normal_png, 4, 4, 21, 4, 6, 3, 21, 3), 2, 2, 2, 2); +	Ref<StyleBox> sb_optbutton_pressed = sb_expand(make_stylebox(option_button_pressed_png, 4, 4, 21, 4, 6, 3, 21, 3), 2, 2, 2, 2); +	Ref<StyleBox> sb_optbutton_hover = sb_expand(make_stylebox(option_button_hover_png, 4, 4, 21, 4, 6, 2, 21, 2), 2, 2, 2, 2); +	Ref<StyleBox> sb_optbutton_disabled = sb_expand(make_stylebox(option_button_disabled_png, 4, 4, 21, 4, 6, 2, 21, 2), 2, 2, 2, 2); +	Ref<StyleBox> sb_optbutton_focus = sb_expand(make_stylebox(button_focus_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2);  	t->set_stylebox("normal", "OptionButton", sb_optbutton_normal);  	t->set_stylebox("pressed", "OptionButton", sb_optbutton_pressed);  	t->set_stylebox("hover", "OptionButton", sb_optbutton_hover);  	t->set_stylebox("disabled", "OptionButton", sb_optbutton_disabled); -	t->set_stylebox("focus", "OptionButton", sb_optbutton_focus); +	t->set_stylebox("focus", "OptionButton", sb_button_focus);  	t->set_icon("arrow", "OptionButton", make_icon(option_arrow_png));  	t->set_font("font", "OptionButton", default_font); -	t->set_color("font_color", "OptionButton", button_font_color); -	t->set_color("font_color_pressed", "OptionButton", accent_color); -	t->set_color("font_color_hover", "OptionButton", button_font_color_hover); -	t->set_color("font_color_disabled", "OptionButton", button_font_color_disabled); +	t->set_color("font_color", "OptionButton", control_font_color); +	t->set_color("font_color_pressed", "OptionButton", control_font_color_pressed); +	t->set_color("font_color_hover", "OptionButton", control_font_color_hover); +	t->set_color("font_color_disabled", "OptionButton", control_font_color_disabled);  	t->set_constant("hseparation", "OptionButton", 2 * scale); -	t->set_constant("arrow_margin", "OptionButton", 8 * scale); +	t->set_constant("arrow_margin", "OptionButton", 2 * scale);  	// MenuButton -	t->set_stylebox("normal", "MenuButton", tb_empty); -	t->set_stylebox("pressed", "MenuButton", tb_empty); -	t->set_stylebox("hover", "MenuButton", tb_empty); +	t->set_stylebox("normal", "MenuButton", sb_button_normal); +	t->set_stylebox("pressed", "MenuButton", sb_button_pressed); +	t->set_stylebox("hover", "MenuButton", sb_button_pressed);  	t->set_stylebox("disabled", "MenuButton", make_empty_stylebox(0, 0, 0, 0)); -	t->set_stylebox("focus", "MenuButton", tb_empty); +	t->set_stylebox("focus", "MenuButton", sb_button_focus);  	t->set_font("font", "MenuButton", default_font);  	t->set_color("font_color", "MenuButton", control_font_color); -	t->set_color("font_color_pressed", "MenuButton", accent_color); +	t->set_color("font_color_pressed", "MenuButton", control_font_color_pressed);  	t->set_color("font_color_hover", "MenuButton", control_font_color_hover); -	t->set_color("font_color_disabled", "MenuButton", button_font_color_disabled); -	t->set_color("font_color_focus", "MenuButton", accent_color); +	t->set_color("font_color_disabled", "MenuButton", Color(1, 1, 1, 0.3));  	t->set_constant("hseparation", "MenuButton", 3 * scale);  	// ButtonGroup -	t->set_stylebox("panel", "ButtonGroup", make_stylebox(button_group_png, 16, 16, 16, 16, 8, 4, 8, 4)); +	t->set_stylebox("panel", "ButtonGroup", memnew(StyleBoxEmpty));  	// CheckBox @@ -429,7 +410,7 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_font("font", "Label", default_font); -	t->set_color("font_color", "Label", control_font_color_low); +	t->set_color("font_color", "Label", Color(1, 1, 1));  	t->set_color("font_color_shadow", "Label", Color(0, 0, 0, 0));  	t->set_constant("shadow_offset_x", "Label", 1 * scale); @@ -439,21 +420,15 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// LineEdit -	Ref<StyleBoxTexture> sb_line_edit = sb_expand_default(make_stylebox(line_edit_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	t->set_stylebox("normal", "LineEdit", sb_line_edit); -	Ref<StyleBoxTexture> sb_line_edit_active = sb_expand_default(make_stylebox(line_edit_active_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	t->set_stylebox("active", "LineEdit", sb_line_edit_active); +	t->set_stylebox("normal", "LineEdit", make_stylebox(line_edit_png, 5, 5, 5, 5));  	t->set_stylebox("focus", "LineEdit", focus); -	Ref<StyleBoxTexture> sb_line_edit_disabled = sb_expand_default(make_stylebox(line_edit_disabled_png, 6, 6, 6, 6, 6, 4, 6, 4)); -	t->set_stylebox("read_only", "LineEdit", sb_line_edit_disabled); +	t->set_stylebox("read_only", "LineEdit", make_stylebox(line_edit_disabled_png, 6, 6, 6, 6));  	t->set_font("font", "LineEdit", default_font); -	t->set_color("font_color", "LineEdit", button_font_color); -	t->set_color("font_color_selected", "LineEdit", button_font_color); -	t->set_color("font_color_active", "LineEdit", accent_color); -	t->set_color("font_color_read_only", "LineEdit", button_font_color_disabled); -	t->set_color("cursor_color", "LineEdit", button_font_color); +	t->set_color("font_color", "LineEdit", control_font_color); +	t->set_color("font_color_selected", "LineEdit", Color(0, 0, 0)); +	t->set_color("cursor_color", "LineEdit", control_font_color_hover);  	t->set_color("selection_color", "LineEdit", font_color_selection);  	t->set_constant("minimum_spaces", "LineEdit", 12 * scale); @@ -470,9 +445,9 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// TextEdit -	t->set_stylebox("normal", "TextEdit", make_stylebox(tree_bg_png, 6, 6, 6, 6)); +	t->set_stylebox("normal", "TextEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3));  	t->set_stylebox("focus", "TextEdit", focus); -	t->set_stylebox("completion", "TextEdit", make_stylebox(tree_bg_png, 6, 6, 6, 6)); +	t->set_stylebox("completion", "TextEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3));  	t->set_icon("tab", "TextEdit", make_icon(tab_png)); @@ -512,43 +487,43 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_stylebox("scroll", "HScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));  	t->set_stylebox("scroll_focus", "HScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));  	t->set_stylebox("grabber", "HScrollBar", make_stylebox(scroll_grabber_png, 5, 5, 5, 5, 2, 2, 2, 2)); -	t->set_stylebox("grabber_hilite", "HScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2)); +	t->set_stylebox("grabber_highlight", "HScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2));  	t->set_icon("increment", "HScrollBar", empty_icon); -	t->set_icon("increment_hilite", "HScrollBar", empty_icon); +	t->set_icon("increment_highlight", "HScrollBar", empty_icon);  	t->set_icon("decrement", "HScrollBar", empty_icon); -	t->set_icon("decrement_hilite", "HScrollBar", empty_icon); +	t->set_icon("decrement_highlight", "HScrollBar", empty_icon);  	// VScrollBar  	t->set_stylebox("scroll", "VScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));  	t->set_stylebox("scroll_focus", "VScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));  	t->set_stylebox("grabber", "VScrollBar", make_stylebox(scroll_grabber_png, 5, 5, 5, 5, 2, 2, 2, 2)); -	t->set_stylebox("grabber_hilite", "VScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2)); +	t->set_stylebox("grabber_highlight", "VScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2));  	t->set_icon("increment", "VScrollBar", empty_icon); -	t->set_icon("increment_hilite", "VScrollBar", empty_icon); +	t->set_icon("increment_highlight", "VScrollBar", empty_icon);  	t->set_icon("decrement", "VScrollBar", empty_icon); -	t->set_icon("decrement_hilite", "VScrollBar", empty_icon); +	t->set_icon("decrement_highlight", "VScrollBar", empty_icon);  	// HSlider  	t->set_stylebox("slider", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4)); -	t->set_stylebox("grabber_hilite", "HSlider", make_stylebox(hslider_grabber_hl_png, 6, 6, 6, 6)); +	t->set_stylebox("grabber_highlight", "HSlider", make_stylebox(hslider_grabber_hl_png, 6, 6, 6, 6));  	t->set_stylebox("focus", "HSlider", focus);  	t->set_icon("grabber", "HSlider", make_icon(hslider_grabber_png)); -	t->set_icon("grabber_hilite", "HSlider", make_icon(hslider_grabber_hl_png)); +	t->set_icon("grabber_highlight", "HSlider", make_icon(hslider_grabber_hl_png));  	t->set_icon("tick", "HSlider", make_icon(hslider_tick_png));  	// VSlider  	t->set_stylebox("slider", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4)); -	t->set_stylebox("grabber_hilite", "VSlider", make_stylebox(vslider_grabber_hl_png, 6, 6, 6, 6)); +	t->set_stylebox("grabber_highlight", "VSlider", make_stylebox(vslider_grabber_hl_png, 6, 6, 6, 6));  	t->set_stylebox("focus", "HSlider", focus);  	t->set_icon("grabber", "VSlider", make_icon(vslider_grabber_png)); -	t->set_icon("grabber_hilite", "VSlider", make_icon(vslider_grabber_hl_png)); +	t->set_icon("grabber_highlight", "VSlider", make_icon(vslider_grabber_hl_png));  	t->set_icon("tick", "VSlider", make_icon(vslider_tick_png));  	// SpinBox @@ -557,25 +532,17 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// WindowDialog -	Ref<StyleBoxTexture> style_pp_win = make_stylebox(popup_window_png, 8, 8, 8, 8, 8, 30, 8, 8); - -	t->set_stylebox("panel", "WindowDialog", style_pp_win); +	t->set_stylebox("panel", "WindowDialog", sb_expand(make_stylebox(popup_window_png, 10, 26, 10, 8), 8, 24, 8, 6));  	t->set_constant("scaleborder_size", "WindowDialog", 4 * scale); -	t->set_icon("close", "WindowDialog", make_icon(close_png)); -	t->set_icon("close_hilite", "WindowDialog", make_icon(close_hl_png)); -  	t->set_font("title_font", "WindowDialog", large_font); - -	t->set_color("title_color", "WindowDialog", Color::html("dae0e6")); - -	t->set_constant("close_h_ofs", "WindowDialog", 20 * scale); -	t->set_constant("close_v_ofs", "WindowDialog", 20 * scale); -	t->set_constant("titlebar_height", "WindowDialog", 20 * scale); +	t->set_color("title_color", "WindowDialog", Color(0, 0, 0));  	t->set_constant("title_height", "WindowDialog", 20 * scale);  	t->set_icon("close", "WindowDialog", make_icon(close_png)); -	t->set_icon("close_hilite", "WindowDialog", make_icon(close_hl_png)); +	t->set_icon("close_highlight", "WindowDialog", make_icon(close_hl_png)); +	t->set_constant("close_h_ofs", "WindowDialog", 18 * scale); +	t->set_constant("close_v_ofs", "WindowDialog", 18 * scale);  	// File Dialog @@ -583,9 +550,9 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// Popup -	Ref<StyleBoxTexture> style_pp = sb_expand(make_stylebox(popup_bg_png, 6, 6, 6, 6, 4, 4, 4, 4), 2, 2, 2, 2); +	Ref<StyleBoxTexture> style_pp = sb_expand(make_stylebox(popup_bg_png, 5, 5, 5, 5, 4, 4, 4, 4), 2, 2, 2, 2); -	Ref<StyleBoxTexture> selected = make_stylebox(selection_png, 6, 7, 6, 7); +	Ref<StyleBoxTexture> selected = make_stylebox(selection_png, 6, 6, 6, 6);  	for (int i = 0; i < 4; i++) {  		selected->set_expand_margin_size(Margin(i), 2 * scale);  	} @@ -646,16 +613,16 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// Tree -	Ref<StyleBoxTexture> tree_selected = make_stylebox(selection_png, 6, 7, 6, 7, 8, 0, 8, 0); -	Ref<StyleBoxTexture> tree_selected_oof = make_stylebox(selection_oof_png, 6, 6, 6, 6, 8, 0, 8, 0); +	Ref<StyleBoxTexture> tree_selected = make_stylebox(selection_png, 4, 4, 4, 4, 8, 0, 8, 0); +	Ref<StyleBoxTexture> tree_selected_oof = make_stylebox(selection_oof_png, 4, 4, 4, 4, 8, 0, 8, 0); -	t->set_stylebox("bg", "Tree", make_stylebox(tree_bg_png, 6, 6, 6, 6)); +	t->set_stylebox("bg", "Tree", make_stylebox(tree_bg_png, 4, 4, 4, 5));  	t->set_stylebox("bg_focus", "Tree", focus);  	t->set_stylebox("selected", "Tree", tree_selected_oof);  	t->set_stylebox("selected_focus", "Tree", tree_selected);  	t->set_stylebox("cursor", "Tree", focus);  	t->set_stylebox("cursor_unfocused", "Tree", focus); -	t->set_stylebox("button_pressed", "Tree", make_stylebox(button_pressed_png, 6, 6, 6, 6)); +	t->set_stylebox("button_pressed", "Tree", make_stylebox(button_pressed_png, 4, 4, 4, 4));  	t->set_stylebox("title_button_normal", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));  	t->set_stylebox("title_button_pressed", "Tree", make_stylebox(tree_title_pressed_png, 4, 4, 4, 4));  	t->set_stylebox("title_button_hover", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4)); @@ -673,12 +640,11 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_color("title_button_color", "Tree", control_font_color);  	t->set_color("font_color", "Tree", control_font_color_low);  	t->set_color("font_color_selected", "Tree", control_font_color_pressed); -	t->set_color("button_pressed", "Tree", accent_color); -	t->set_color("selection_color", "Tree", Color(0, 0, 0, 0.8)); +	t->set_color("selection_color", "Tree", Color(0.1, 0.1, 1, 0.8));  	t->set_color("cursor_color", "Tree", Color(0, 0, 0));  	t->set_color("guide_color", "Tree", Color(0, 0, 0, 0.1)); -	t->set_color("drop_position_color", "Tree", Color(0, 0, 0, 0.2)); -	t->set_color("relationship_line_color", "Tree", Color(0, 0, 0, 0.1)); +	t->set_color("drop_position_color", "Tree", Color(1, 0.3, 0.2)); +	t->set_color("relationship_line_color", "Tree", Color::html("464646"));  	t->set_constant("hseparation", "Tree", 4 * scale);  	t->set_constant("vseparation", "Tree", 4 * scale); @@ -690,10 +656,10 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_constant("scroll_speed", "Tree", 12);  	// ItemList -	Ref<StyleBoxTexture> item_selected = make_stylebox(selection_png, 6, 7, 6, 7, 8, 2, 4, 2); -	Ref<StyleBoxTexture> item_selected_oof = make_stylebox(selection_oof_png, 6, 6, 6, 6, 8, 2, 4, 2); +	Ref<StyleBoxTexture> item_selected = make_stylebox(selection_png, 4, 4, 4, 4, 8, 2, 8, 2); +	Ref<StyleBoxTexture> item_selected_oof = make_stylebox(selection_oof_png, 4, 4, 4, 4, 8, 2, 8, 2); -	t->set_stylebox("bg", "ItemList", make_stylebox(tree_bg_png, 6, 6, 6, 6)); +	t->set_stylebox("bg", "ItemList", make_stylebox(tree_bg_png, 4, 4, 4, 5));  	t->set_stylebox("bg_focus", "ItemList", focus);  	t->set_constant("hseparation", "ItemList", 4);  	t->set_constant("vseparation", "ItemList", 2); @@ -710,25 +676,25 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// TabContainer -	Ref<StyleBoxTexture> tc_sb = sb_expand(make_stylebox(tab_container_bg_png, 6, 6, 6, 6, 4, 4, 4, 4), 3, 3, 3, 3); +	Ref<StyleBoxTexture> tc_sb = sb_expand(make_stylebox(tab_container_bg_png, 4, 4, 4, 4, 4, 4, 4, 4), 3, 3, 3, 3);  	tc_sb->set_expand_margin_size(MARGIN_TOP, 2 * scale);  	tc_sb->set_default_margin(MARGIN_TOP, 8 * scale); -	t->set_stylebox("tab_fg", "TabContainer", sb_expand(make_stylebox(tab_current_png, 6, 6, 6, 0, 16, 8, 16, 8), 2, 2, 2, 2)); -	t->set_stylebox("tab_bg", "TabContainer", sb_expand(make_stylebox(tab_behind_png, 5, 5, 5, 1, 16, 8, 16, 8), 3, 0, 3, 3)); +	t->set_stylebox("tab_fg", "TabContainer", sb_expand(make_stylebox(tab_current_png, 4, 4, 4, 1, 16, 4, 16, 4), 2, 2, 2, 2)); +	t->set_stylebox("tab_bg", "TabContainer", sb_expand(make_stylebox(tab_behind_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));  	t->set_stylebox("panel", "TabContainer", tc_sb);  	t->set_icon("increment", "TabContainer", make_icon(scroll_button_right_png)); -	t->set_icon("increment_hilite", "TabContainer", make_icon(scroll_button_right_hl_png)); +	t->set_icon("increment_highlight", "TabContainer", make_icon(scroll_button_right_hl_png));  	t->set_icon("decrement", "TabContainer", make_icon(scroll_button_left_png)); -	t->set_icon("decrement_hilite", "TabContainer", make_icon(scroll_button_left_hl_png)); +	t->set_icon("decrement_highlight", "TabContainer", make_icon(scroll_button_left_hl_png));  	t->set_icon("menu", "TabContainer", make_icon(tab_menu_png)); -	t->set_icon("menu_hilite", "TabContainer", make_icon(tab_menu_hl_png)); +	t->set_icon("menu_highlight", "TabContainer", make_icon(tab_menu_hl_png));  	t->set_font("font", "TabContainer", default_font); -	t->set_color("font_color_fg", "TabContainer", control_font_color); +	t->set_color("font_color_fg", "TabContainer", control_font_color_hover);  	t->set_color("font_color_bg", "TabContainer", control_font_color_low);  	t->set_color("font_color_disabled", "TabContainer", control_font_color_disabled); @@ -740,30 +706,21 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	// Tabs -	t->set_stylebox("tab_fg", "Tabs", sb_expand(make_stylebox(tab_current_png, 6, 6, 6, 0, 16, 8, 16, 8), 2, 2, 2, 2)); -	// tc_sb->set_expand_margin_size(MARGIN_TOP,2 *scale); -	t->set_stylebox("tab_bg", "Tabs", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 8, 16, 8), 2, 2, 2, 2)); +	t->set_stylebox("tab_fg", "Tabs", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2)); +	t->set_stylebox("tab_bg", "Tabs", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));  	t->set_stylebox("panel", "Tabs", tc_sb); -	t->set_stylebox("button_pressed", "Tabs", make_stylebox(button_pressed_png, 6, 6, 6, 6)); -	t->set_stylebox("button", "Tabs", make_stylebox(button_normal_png, 6, 6, 6, 6)); +	t->set_stylebox("button_pressed", "Tabs", make_stylebox(button_pressed_png, 4, 4, 4, 4)); +	t->set_stylebox("button", "Tabs", make_stylebox(button_normal_png, 4, 4, 4, 4));  	t->set_icon("increment", "Tabs", make_icon(scroll_button_right_png)); -	t->set_icon("increment_hilite", "Tabs", make_icon(scroll_button_right_hl_png)); +	t->set_icon("increment_highlight", "Tabs", make_icon(scroll_button_right_hl_png));  	t->set_icon("decrement", "Tabs", make_icon(scroll_button_left_png)); -	t->set_icon("decrement_hilite", "Tabs", make_icon(scroll_button_left_hl_png)); +	t->set_icon("decrement_highlight", "Tabs", make_icon(scroll_button_left_hl_png));  	t->set_icon("close", "Tabs", make_icon(tab_close_png));  	t->set_font("font", "Tabs", default_font); -	t->set_icon("increment", "Tabs", make_icon(scroll_button_right_png)); -	t->set_icon("increment_hilite", "Tabs", make_icon(scroll_button_right_hl_png)); -	t->set_icon("decrement", "Tabs", make_icon(scroll_button_left_png)); -	t->set_icon("decrement_hilite", "Tabs", make_icon(scroll_button_left_hl_png)); -	t->set_icon("close", "Tabs", make_icon(tab_close_png)); - -	t->set_font("font", "Tabs", default_font); - -	t->set_color("font_color_fg", "Tabs", control_font_color); +	t->set_color("font_color_fg", "Tabs", control_font_color_hover);  	t->set_color("font_color_bg", "Tabs", control_font_color_low);  	t->set_color("font_color_disabled", "Tabs", control_font_color_disabled); @@ -781,8 +738,8 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_font("normal", "Fonts", default_font);  	t->set_font("large", "Fonts", large_font); -	t->set_constant("separation", "HSeparator", 16 * scale); -	t->set_constant("separation", "VSeparator", 16 * scale); +	t->set_constant("separation", "HSeparator", 4 * scale); +	t->set_constant("separation", "VSeparator", 4 * scale);  	// Dialogs @@ -851,12 +808,12 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_constant("separation", "HBoxContainer", 4 * scale);  	t->set_constant("separation", "VBoxContainer", 4 * scale); -	t->set_constant("margin_left", "MarginContainer", 0 * scale); +	t->set_constant("margin_left", "MarginContainer", 8 * scale);  	t->set_constant("margin_top", "MarginContainer", 0 * scale);  	t->set_constant("margin_right", "MarginContainer", 0 * scale);  	t->set_constant("margin_bottom", "MarginContainer", 0 * scale); -	t->set_constant("hseparation", "GridContainer", 14 * scale); -	t->set_constant("vseparation", "GridContainer", 8 * scale); +	t->set_constant("hseparation", "GridContainer", 4 * scale); +	t->set_constant("vseparation", "GridContainer", 4 * scale);  	t->set_constant("separation", "HSplitContainer", 12 * scale);  	t->set_constant("separation", "VSplitContainer", 12 * scale);  	t->set_constant("autohide", "HSplitContainer", 1 * scale); @@ -904,19 +861,8 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_stylebox("panelnc", "Panel", ttnc);  	t->set_stylebox("panelf", "Panel", tc_sb); -	Ref<StyleBoxTexture> sb_pc = make_stylebox(tab_container_bg_png, 6, 6, 6, 6, 7, 7, 7, 7); +	Ref<StyleBoxTexture> sb_pc = make_stylebox(tab_container_bg_png, 4, 4, 4, 4, 7, 7, 7, 7);  	t->set_stylebox("panel", "PanelContainer", sb_pc); -	t->set_stylebox("panel_full", "PanelContainer", make_stylebox(tab_container_bg_png, 4, 4, 4, 4, 2, 7, 2, 0)); - -	t->set_icon("minus", "GraphEdit", make_icon(icon_zoom_less_png)); -	t->set_icon("reset", "GraphEdit", make_icon(icon_zoom_reset_png)); -	t->set_icon("more", "GraphEdit", make_icon(icon_zoom_more_png)); -	t->set_icon("snap", "GraphEdit", make_icon(icon_snap_png)); -	t->set_stylebox("bg", "GraphEdit", make_stylebox(tree_bg_png, 6, 6, 6, 6)); -	t->set_color("grid_minor", "GraphEdit", Color(1, 1, 1, 0.05)); -	t->set_color("grid_major", "GraphEdit", Color(1, 1, 1, 0.2)); -	t->set_constant("bezier_len_pos", "GraphEdit", 80 * scale); -	t->set_constant("bezier_len_neg", "GraphEdit", 160 * scale);  	t->set_icon("minus", "GraphEdit", make_icon(icon_zoom_less_png));  	t->set_icon("reset", "GraphEdit", make_icon(icon_zoom_reset_png)); @@ -930,18 +876,6 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<  	t->set_icon("logo", "Icons", make_icon(logo_png)); -	// Editor -	t->set_color("prop_category", "Editor", Color::html("232b33")); -	t->set_color("prop_section", "Editor", Color(0, 0, 0, 0.1)); -	t->set_color("prop_subsection", "Editor", Color::html("272f39")); -	t->set_color("fg_selected", "Editor", Color::html("ffbd8e8e")); -	t->set_color("fg_error", "Editor", Color::html("ffbd8e8e")); - -	t->set_color("animation_editor_track_pos", "Editor", accent_color); -	t->set_color("animation_editor_time", "Editor", Color(1, 1, 1, 0.1)); -	t->set_color("animation_editor_selection_rect", "Editor", Color(1, 1, 1, 0.5)); -	t->set_color("animation_editor_line", "Editor", Color(1, 1, 1, 0.1)); -  	// Theme  	default_icon = make_icon(error_icon_png); diff --git a/scene/resources/default_theme/dropdown.png b/scene/resources/default_theme/dropdown.png Binary files differindex b9a324be7c..3a6a2ed778 100644 --- a/scene/resources/default_theme/dropdown.png +++ b/scene/resources/default_theme/dropdown.png diff --git a/scene/resources/default_theme/focus.png b/scene/resources/default_theme/focus.png Binary files differindex 1908fd8aee..5d37028f2d 100644 --- a/scene/resources/default_theme/focus.png +++ b/scene/resources/default_theme/focus.png diff --git a/scene/resources/default_theme/frame_focus.png b/scene/resources/default_theme/frame_focus.png Binary files differindex 1908fd8aee..9170db38ed 100644 --- a/scene/resources/default_theme/frame_focus.png +++ b/scene/resources/default_theme/frame_focus.png diff --git a/scene/resources/default_theme/full_panel_bg.png b/scene/resources/default_theme/full_panel_bg.png Binary files differindex c6e59b747c..7f02dc7259 100644 --- a/scene/resources/default_theme/full_panel_bg.png +++ b/scene/resources/default_theme/full_panel_bg.png diff --git a/scene/resources/default_theme/graph_node.png b/scene/resources/default_theme/graph_node.png Binary files differindex c7e374693c..d4b4dd3c1f 100644 --- a/scene/resources/default_theme/graph_node.png +++ b/scene/resources/default_theme/graph_node.png diff --git a/scene/resources/default_theme/graph_node_comment.png b/scene/resources/default_theme/graph_node_comment.png Binary files differindex 0452cb1b1d..f2d6daa259 100644 --- a/scene/resources/default_theme/graph_node_comment.png +++ b/scene/resources/default_theme/graph_node_comment.png diff --git a/scene/resources/default_theme/graph_node_comment_focus.png b/scene/resources/default_theme/graph_node_comment_focus.png Binary files differindex 49127da092..a4b7b5a618 100644 --- a/scene/resources/default_theme/graph_node_comment_focus.png +++ b/scene/resources/default_theme/graph_node_comment_focus.png diff --git a/scene/resources/default_theme/graph_node_position.png b/scene/resources/default_theme/graph_node_position.png Binary files differindex 76a213be72..7ec15e2ff4 100644 --- a/scene/resources/default_theme/graph_node_position.png +++ b/scene/resources/default_theme/graph_node_position.png diff --git a/scene/resources/default_theme/graph_node_selected.png b/scene/resources/default_theme/graph_node_selected.png Binary files differindex 0e22312e6a..f76c9703dd 100644 --- a/scene/resources/default_theme/graph_node_selected.png +++ b/scene/resources/default_theme/graph_node_selected.png diff --git a/scene/resources/default_theme/hseparator.png b/scene/resources/default_theme/hseparator.png Binary files differindex 88165ea6b2..99609ac118 100644 --- a/scene/resources/default_theme/hseparator.png +++ b/scene/resources/default_theme/hseparator.png diff --git a/scene/resources/default_theme/hslider_bg.png b/scene/resources/default_theme/hslider_bg.png Binary files differindex a66e136813..9c2a2df62a 100644 --- a/scene/resources/default_theme/hslider_bg.png +++ b/scene/resources/default_theme/hslider_bg.png diff --git a/scene/resources/default_theme/hslider_grabber.png b/scene/resources/default_theme/hslider_grabber.png Binary files differindex c8be897e07..2acd33879a 100644 --- a/scene/resources/default_theme/hslider_grabber.png +++ b/scene/resources/default_theme/hslider_grabber.png diff --git a/scene/resources/default_theme/hslider_grabber_hl.png b/scene/resources/default_theme/hslider_grabber_hl.png Binary files differindex 1639776a28..f8a011e64b 100644 --- a/scene/resources/default_theme/hslider_grabber_hl.png +++ b/scene/resources/default_theme/hslider_grabber_hl.png diff --git a/scene/resources/default_theme/hsplit_bg.png b/scene/resources/default_theme/hsplit_bg.png Binary files differindex cfb76f7dc7..7dd1d48b29 100644 --- a/scene/resources/default_theme/hsplit_bg.png +++ b/scene/resources/default_theme/hsplit_bg.png diff --git a/scene/resources/default_theme/hsplitter.png b/scene/resources/default_theme/hsplitter.png Binary files differindex 3ac1dddf90..71a3914d7e 100644 --- a/scene/resources/default_theme/hsplitter.png +++ b/scene/resources/default_theme/hsplitter.png diff --git a/scene/resources/default_theme/icon_close.png b/scene/resources/default_theme/icon_close.png Binary files differindex b6973740e7..5ac6357dcd 100644 --- a/scene/resources/default_theme/icon_close.png +++ b/scene/resources/default_theme/icon_close.png diff --git a/scene/resources/default_theme/line_edit.png b/scene/resources/default_theme/line_edit.png Binary files differindex 339a796390..bf2b91f1be 100644 --- a/scene/resources/default_theme/line_edit.png +++ b/scene/resources/default_theme/line_edit.png diff --git a/scene/resources/default_theme/line_edit_active.png b/scene/resources/default_theme/line_edit_active.png Binary files differdeleted file mode 100644 index b6bebde925..0000000000 --- a/scene/resources/default_theme/line_edit_active.png +++ /dev/null diff --git a/scene/resources/default_theme/line_edit_disabled.png b/scene/resources/default_theme/line_edit_disabled.png Binary files differindex 1fce186f3d..a0fa505e4c 100644 --- a/scene/resources/default_theme/line_edit_disabled.png +++ b/scene/resources/default_theme/line_edit_disabled.png diff --git a/scene/resources/default_theme/line_edit_focus.png b/scene/resources/default_theme/line_edit_focus.png Binary files differnew file mode 100644 index 0000000000..e66d7b60e3 --- /dev/null +++ b/scene/resources/default_theme/line_edit_focus.png diff --git a/scene/resources/default_theme/line_edit_selected.png b/scene/resources/default_theme/line_edit_selected.png Binary files differdeleted file mode 100644 index b6bebde925..0000000000 --- a/scene/resources/default_theme/line_edit_selected.png +++ /dev/null diff --git a/scene/resources/default_theme/option_arrow.png b/scene/resources/default_theme/option_arrow.png Binary files differindex b7bc38e03f..007de16bfa 100644 --- a/scene/resources/default_theme/option_arrow.png +++ b/scene/resources/default_theme/option_arrow.png diff --git a/scene/resources/default_theme/option_button_disabled.png b/scene/resources/default_theme/option_button_disabled.png Binary files differindex d8e7942eaa..ce727d56e1 100644 --- a/scene/resources/default_theme/option_button_disabled.png +++ b/scene/resources/default_theme/option_button_disabled.png diff --git a/scene/resources/default_theme/option_button_focus.png b/scene/resources/default_theme/option_button_focus.png Binary files differnew file mode 100644 index 0000000000..c76d91287e --- /dev/null +++ b/scene/resources/default_theme/option_button_focus.png diff --git a/scene/resources/default_theme/option_button_hover.png b/scene/resources/default_theme/option_button_hover.png Binary files differindex 2f67922f92..fd1e987ceb 100644 --- a/scene/resources/default_theme/option_button_hover.png +++ b/scene/resources/default_theme/option_button_hover.png diff --git a/scene/resources/default_theme/option_button_normal.png b/scene/resources/default_theme/option_button_normal.png Binary files differindex 6f14414b41..9d7fb98d1c 100644 --- a/scene/resources/default_theme/option_button_normal.png +++ b/scene/resources/default_theme/option_button_normal.png diff --git a/scene/resources/default_theme/option_button_pressed.png b/scene/resources/default_theme/option_button_pressed.png Binary files differindex 7ca71c44db..28b1d93468 100644 --- a/scene/resources/default_theme/option_button_pressed.png +++ b/scene/resources/default_theme/option_button_pressed.png diff --git a/scene/resources/default_theme/panel_bg.png b/scene/resources/default_theme/panel_bg.png Binary files differindex c6db700766..320819ad6d 100644 --- a/scene/resources/default_theme/panel_bg.png +++ b/scene/resources/default_theme/panel_bg.png diff --git a/scene/resources/default_theme/popup_bg.png b/scene/resources/default_theme/popup_bg.png Binary files differindex d8c633974a..63f5994441 100644 --- a/scene/resources/default_theme/popup_bg.png +++ b/scene/resources/default_theme/popup_bg.png diff --git a/scene/resources/default_theme/popup_hover.png b/scene/resources/default_theme/popup_hover.png Binary files differnew file mode 100644 index 0000000000..85d4e48475 --- /dev/null +++ b/scene/resources/default_theme/popup_hover.png diff --git a/scene/resources/default_theme/popup_unchecked.png b/scene/resources/default_theme/popup_unchecked.png Binary files differnew file mode 100644 index 0000000000..c1137e6fbf --- /dev/null +++ b/scene/resources/default_theme/popup_unchecked.png diff --git a/scene/resources/default_theme/popup_window.png b/scene/resources/default_theme/popup_window.png Binary files differindex e667c93d2f..59362a8ffd 100644 --- a/scene/resources/default_theme/popup_window.png +++ b/scene/resources/default_theme/popup_window.png diff --git a/scene/resources/default_theme/progress_bar.png b/scene/resources/default_theme/progress_bar.png Binary files differindex d3e1838248..bf81e3adea 100644 --- a/scene/resources/default_theme/progress_bar.png +++ b/scene/resources/default_theme/progress_bar.png diff --git a/scene/resources/default_theme/progress_fill.png b/scene/resources/default_theme/progress_fill.png Binary files differindex c211b0a74d..3a34dfdda6 100644 --- a/scene/resources/default_theme/progress_fill.png +++ b/scene/resources/default_theme/progress_fill.png diff --git a/scene/resources/default_theme/radio_checked.png b/scene/resources/default_theme/radio_checked.png Binary files differindex 963cf76e98..95d472022f 100644 --- a/scene/resources/default_theme/radio_checked.png +++ b/scene/resources/default_theme/radio_checked.png diff --git a/scene/resources/default_theme/radio_unchecked.png b/scene/resources/default_theme/radio_unchecked.png Binary files differindex 0b90989037..7f0535c3a4 100644 --- a/scene/resources/default_theme/radio_unchecked.png +++ b/scene/resources/default_theme/radio_unchecked.png diff --git a/scene/resources/default_theme/scroll_bg.png b/scene/resources/default_theme/scroll_bg.png Binary files differindex 1908fd8aee..cefadb2c08 100644 --- a/scene/resources/default_theme/scroll_bg.png +++ b/scene/resources/default_theme/scroll_bg.png diff --git a/scene/resources/default_theme/scroll_button_down.png b/scene/resources/default_theme/scroll_button_down.png Binary files differindex a901bc8c70..caeac9b286 100644 --- a/scene/resources/default_theme/scroll_button_down.png +++ b/scene/resources/default_theme/scroll_button_down.png diff --git a/scene/resources/default_theme/scroll_button_down_hl.png b/scene/resources/default_theme/scroll_button_down_hl.png Binary files differindex 4e36bb924a..48036e0297 100644 --- a/scene/resources/default_theme/scroll_button_down_hl.png +++ b/scene/resources/default_theme/scroll_button_down_hl.png diff --git a/scene/resources/default_theme/scroll_button_left.png b/scene/resources/default_theme/scroll_button_left.png Binary files differindex ab32b9deb1..3b50938d97 100644 --- a/scene/resources/default_theme/scroll_button_left.png +++ b/scene/resources/default_theme/scroll_button_left.png diff --git a/scene/resources/default_theme/scroll_button_left_hl.png b/scene/resources/default_theme/scroll_button_left_hl.png Binary files differindex 7a9ff6ac0a..b3d348c24f 100644 --- a/scene/resources/default_theme/scroll_button_left_hl.png +++ b/scene/resources/default_theme/scroll_button_left_hl.png diff --git a/scene/resources/default_theme/scroll_button_right.png b/scene/resources/default_theme/scroll_button_right.png Binary files differindex 3699c2cdf7..1c622a41ad 100644 --- a/scene/resources/default_theme/scroll_button_right.png +++ b/scene/resources/default_theme/scroll_button_right.png diff --git a/scene/resources/default_theme/scroll_button_right_hl.png b/scene/resources/default_theme/scroll_button_right_hl.png Binary files differindex 37195daadd..108796ca02 100644 --- a/scene/resources/default_theme/scroll_button_right_hl.png +++ b/scene/resources/default_theme/scroll_button_right_hl.png diff --git a/scene/resources/default_theme/scroll_button_up.png b/scene/resources/default_theme/scroll_button_up.png Binary files differindex a88d17e1c5..2c8238ae4c 100644 --- a/scene/resources/default_theme/scroll_button_up.png +++ b/scene/resources/default_theme/scroll_button_up.png diff --git a/scene/resources/default_theme/scroll_button_up_hl.png b/scene/resources/default_theme/scroll_button_up_hl.png Binary files differindex 04ce402964..4283bd114a 100644 --- a/scene/resources/default_theme/scroll_button_up_hl.png +++ b/scene/resources/default_theme/scroll_button_up_hl.png diff --git a/scene/resources/default_theme/scroll_grabber.png b/scene/resources/default_theme/scroll_grabber.png Binary files differindex 4be7f4e6cc..1d625a9b7b 100644 --- a/scene/resources/default_theme/scroll_grabber.png +++ b/scene/resources/default_theme/scroll_grabber.png diff --git a/scene/resources/default_theme/scroll_grabber_hl.png b/scene/resources/default_theme/scroll_grabber_hl.png Binary files differindex 8d0a15ac58..99eb24b7e7 100644 --- a/scene/resources/default_theme/scroll_grabber_hl.png +++ b/scene/resources/default_theme/scroll_grabber_hl.png diff --git a/scene/resources/default_theme/selection.png b/scene/resources/default_theme/selection.png Binary files differindex 1aa4ffa86f..501877a8b4 100644 --- a/scene/resources/default_theme/selection.png +++ b/scene/resources/default_theme/selection.png diff --git a/scene/resources/default_theme/selection_oof.png b/scene/resources/default_theme/selection_oof.png Binary files differindex 7b485eec3b..9594fe0913 100644 --- a/scene/resources/default_theme/selection_oof.png +++ b/scene/resources/default_theme/selection_oof.png diff --git a/scene/resources/default_theme/source/arrow_down.svg b/scene/resources/default_theme/source/arrow_down.svg index 1dd209720f..354040b548 100644 --- a/scene/resources/default_theme/source/arrow_down.svg +++ b/scene/resources/default_theme/source/arrow_down.svg @@ -14,7 +14,7 @@     viewBox="0 0 12 12"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="22.627417" -     inkscape:cx="1.7981958" -     inkscape:cy="7.5815407" +     inkscape:zoom="64" +     inkscape:cx="5.7299355" +     inkscape:cy="6.6875366"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -71,10 +71,10 @@       id="layer1"       transform="translate(0,-1040.3622)">      <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687" -       d="m 3,1045.3622 3,3 3,-3" -       id="path814" +       style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       d="m 2,1043.3622 0,3 4,3 4,-3 0,-3 z" +       id="rect4174"         inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccc" /> +       sodipodi:nodetypes="cccccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/arrow_right.svg b/scene/resources/default_theme/source/arrow_right.svg index 43134ba1b1..4c4bc05e28 100644 --- a/scene/resources/default_theme/source/arrow_right.svg +++ b/scene/resources/default_theme/source/arrow_right.svg @@ -14,7 +14,7 @@     viewBox="0 0 12 12"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -29,8 +29,8 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="45.254836" -     inkscape:cx="4.0845752" -     inkscape:cy="5.8802612" +     inkscape:cx="3.0018179" +     inkscape:cy="6.0349408"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -71,10 +71,10 @@       id="layer1"       transform="translate(0,-1040.3622)">      <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687" -       d="m 4,1049.3622 3.0000202,-3 -3.0000202,-3" -       id="path814" +       style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       d="m 3,1050.3622 3,0 3,-4 -3,-4 -3,0 z" +       id="rect4174"         inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccc" /> +       sodipodi:nodetypes="cccccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/button_disabled.svg b/scene/resources/default_theme/source/button_disabled.svg deleted file mode 100644 index eb4ce87e36..0000000000 --- a/scene/resources/default_theme/source/button_disabled.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="button_disabled.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_disabled.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="3.3006706" -     inkscape:cy="10.701568" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:none;fill-opacity:0.19607843;stroke:#425468;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/button_hover.svg b/scene/resources/default_theme/source/button_hover.svg deleted file mode 100644 index 46a58b1917..0000000000 --- a/scene/resources/default_theme/source/button_hover.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="button_hover.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_hover.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="3.6900507" -     inkscape:cy="7.7665583" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:none;fill-opacity:0.19607843;stroke:#70b1ff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/button_normal.svg b/scene/resources/default_theme/source/button_normal.svg deleted file mode 100644 index c0fc1f2c5a..0000000000 --- a/scene/resources/default_theme/source/button_normal.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="button_normal.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_hover.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="3.0075667" -     inkscape:cy="8.2242067" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:none;fill-opacity:0.19607843;stroke:#788da3;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/button_pressed.svg b/scene/resources/default_theme/source/button_pressed.svg deleted file mode 100644 index e761b07eb1..0000000000 --- a/scene/resources/default_theme/source/button_pressed.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="button_pressed.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_pressed.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="5.7152485" -     inkscape:cy="9.8535758" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:none;fill-opacity:0.19607843;stroke:#7eff8a;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/focus.svg b/scene/resources/default_theme/source/focus.svg deleted file mode 100644 index 4fd463b206..0000000000 --- a/scene/resources/default_theme/source/focus.svg +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="focus.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="64.000003" -     inkscape:cx="3.8318954" -     inkscape:cy="6.6190751" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)" /> -</svg> diff --git a/scene/resources/default_theme/source/frame_focus.svg b/scene/resources/default_theme/source/frame_focus.svg deleted file mode 100644 index fba950091a..0000000000 --- a/scene/resources/default_theme/source/frame_focus.svg +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="frame_focus.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="64.000003" -     inkscape:cx="3.8318954" -     inkscape:cy="6.6190751" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)" /> -</svg> diff --git a/scene/resources/default_theme/source/full_panel_bg.svg b/scene/resources/default_theme/source/full_panel_bg.svg deleted file mode 100644 index 4adceb5254..0000000000 --- a/scene/resources/default_theme/source/full_panel_bg.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="full_panel_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="11.313708" -     inkscape:cx="7.9626269" -     inkscape:cy="2.5437896" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:#232a32;fill-opacity:1;stroke:#2e3842;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484-6" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/graph_node.svg b/scene/resources/default_theme/source/graph_node.svg deleted file mode 100644 index f309f29d9a..0000000000 --- a/scene/resources/default_theme/source/graph_node.svg +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="70" -   viewBox="0 0 16 69.999996" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="graph_node.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="7.9999996" -     inkscape:cx="7.4490379" -     inkscape:cy="37.697586" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-982.3623)"> -    <path -       style="opacity:1;fill:#afabf1;fill-opacity:0.78431374;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 3 1 C 1.3380048 1 0 2.3380048 0 4 L 0 66 C 0 67.661995 1.3380048 69 3 69 L 13 69 C 14.661995 69 16 67.661995 16 66 L 16 4 C 16 2.3380048 14.661995 1 13 1 L 3 1 z M 2 23 L 14 23 L 14 66 C 14 66.554 13.554 67 13 67 L 3 67 C 2.446 67 2 66.554 2 66 L 2 23 z " -       id="rect4144" -       transform="translate(0,982.3623)" /> -    <path -       style="opacity:1;fill:#1d1836;fill-opacity:0.58823532;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,1005.3623 0,43 c 0,0.554 0.446,1 1,1 l 10,0 c 0.554,0 1,-0.446 1,-1 l 0,-43 z" -       id="rect4194" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="csssscc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/graph_node_comment.svg b/scene/resources/default_theme/source/graph_node_comment.svg deleted file mode 100644 index 4b41b9b3d0..0000000000 --- a/scene/resources/default_theme/source/graph_node_comment.svg +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="70" -   viewBox="0 0 16 69.999996" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="graph_node_comment.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="7.9999996" -     inkscape:cx="7.9593685" -     inkscape:cy="41.411006" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-982.3623)"> -    <path -       style="opacity:1;fill:#ffffff;fill-opacity:0.58823532;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 3 1 C 1.3380048 1 0 2.3380048 0 4 L 0 66 C 0 67.661995 1.3380048 69 3 69 L 13 69 C 14.661995 69 16 67.661995 16 66 L 16 4 C 16 2.3380048 14.661995 1 13 1 L 3 1 z M 2 23 L 14 23 L 14 66 C 14 66.554 13.554 67 13 67 L 3 67 C 2.446 67 2 66.554 2 66 L 2 23 z " -       transform="translate(0,982.3623)" -       id="rect4144" /> -    <path -       style="opacity:1;fill:#ffffff;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,1005.3623 0,43 c 0,0.554 0.446,1 1,1 l 10,0 c 0.554,0 1,-0.446 1,-1 l 0,-43 z" -       id="rect4194" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="csssscc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/graph_node_comment_focus.svg b/scene/resources/default_theme/source/graph_node_comment_focus.svg deleted file mode 100644 index af60130ea0..0000000000 --- a/scene/resources/default_theme/source/graph_node_comment_focus.svg +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="70" -   viewBox="0 0 16 69.999996" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="graph_node_comment_focus.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="7.9999997" -     inkscape:cx="13.69465" -     inkscape:cy="33.350792" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-982.3623)"> -    <path -       style="opacity:1;fill:#ffffff;fill-opacity:0.88235295;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 3 1 C 1.3380048 1 0 2.3380048 0 4 L 0 66 C 0 67.661995 1.3380048 69 3 69 L 13 69 C 14.661995 69 16 67.661995 16 66 L 16 4 C 16 2.3380048 14.661995 1 13 1 L 3 1 z M 2 23 L 14 23 L 14 66 C 14 66.554 13.554 67 13 67 L 3 67 C 2.446 67 2 66.554 2 66 L 2 23 z " -       transform="translate(0,982.3623)" -       id="rect4144" /> -    <path -       style="opacity:1;fill:#ffffff;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,1005.3623 0,43 c 0,0.554 0.446,1 1,1 l 10,0 c 0.554,0 1,-0.446 1,-1 l 0,-43 z" -       id="rect4194" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="csssscc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/graph_node_position.svg b/scene/resources/default_theme/source/graph_node_position.svg deleted file mode 100644 index 6d98d8b115..0000000000 --- a/scene/resources/default_theme/source/graph_node_position.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="70" -   viewBox="0 0 16 69.999996" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="graph_node_position.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="11.313708" -     inkscape:cx="17.794895" -     inkscape:cy="40.559851" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-982.3623)"> -    <path -       style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 3 1 C 1.3380048 1 0 2.3380048 0 4 L 0 66 C 0 67.661995 1.3380048 69 3 69 L 13 69 C 14.661995 69 16 67.661995 16 66 L 16 4 C 16 2.3380048 14.661995 1 13 1 L 3 1 z M 3 3 L 13 3 C 13.554 3 14 3.446 14 4 L 14 23 L 14 47 L 14 66 C 14 66.554 13.554 67 13 67 L 3 67 C 2.446 67 2 66.554 2 66 L 2 47 L 2 23 L 2 4 C 2 3.446 2.446 3 3 3 z " -       transform="translate(0,982.3623)" -       id="rect4144" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/graph_node_selected.svg b/scene/resources/default_theme/source/graph_node_selected.svg deleted file mode 100644 index a480cb8ab8..0000000000 --- a/scene/resources/default_theme/source/graph_node_selected.svg +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="70" -   viewBox="0 0 16 69.999996" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="graph_node_selected.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="7.9999996" -     inkscape:cx="29.199039" -     inkscape:cy="37.947586" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-982.3623)"> -    <path -       style="opacity:1;fill:#cac8f6;fill-opacity:0.88235295;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 3 1 C 1.3380048 1 0 2.3380048 0 4 L 0 66 C 0 67.661995 1.3380048 69 3 69 L 13 69 C 14.661995 69 16 67.661995 16 66 L 16 4 C 16 2.3380048 14.661995 1 13 1 L 3 1 z M 2 23 L 14 23 L 14 66 C 14 66.554 13.554 67 13 67 L 3 67 C 2.446 67 2 66.554 2 66 L 2 23 z " -       id="rect4144" -       transform="translate(0,982.3623)" /> -    <path -       style="opacity:1;fill:#1d1836;fill-opacity:0.58823532;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,1005.3623 0,43 c 0,0.554 0.446,1 1,1 l 10,0 c 0.554,0 1,-0.446 1,-1 l 0,-43 z" -       id="rect4194" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="csssscc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/icon_close.svg b/scene/resources/default_theme/source/icon_close.svg index f0eb83f54d..6e6ec16638 100644 --- a/scene/resources/default_theme/source/icon_close.svg +++ b/scene/resources/default_theme/source/icon_close.svg @@ -14,7 +14,7 @@     viewBox="0 0 16 16"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="7.6258883" -     inkscape:cy="7.576455" +     inkscape:zoom="22.627418" +     inkscape:cx="1.8501874" +     inkscape:cy="8.0543329"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1"> @@ -69,15 +69,26 @@       inkscape:groupmode="layer"       id="layer1"       transform="translate(0,-1036.3622)"> -    <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.39215687;stroke-miterlimit:4;stroke-dasharray:none" -       d="m 4,1040.3622 8,8" -       id="path814" -       inkscape:connector-curvature="0" /> -    <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.39215687;stroke-miterlimit:4;stroke-dasharray:none" -       d="m 4,1048.3622 8,-8" -       id="path816" -       inkscape:connector-curvature="0" /> +    <g +       id="layer1-4" +       inkscape:label="Layer 1" +       transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-736.13242,311.54347)" +       style="fill:#080808;fill-opacity:1"> +      <rect +         y="1043.3622" +         x="1" +         height="1.9999478" +         width="14" +         id="rect4137" +         style="fill:#080808;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         transform="matrix(0,1,-1,0,0,0)" +         style="fill:#080808;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4158" +         width="13.999966" +         height="2.0000017" +         x="1037.3622" +         y="-9" /> +    </g>    </g>  </svg> diff --git a/scene/resources/default_theme/source/line_edit.svg b/scene/resources/default_theme/source/line_edit.svg deleted file mode 100644 index bcddf8bf7f..0000000000 --- a/scene/resources/default_theme/source/line_edit.svg +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="line_edit.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/tab_container_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="3.5104007" -     inkscape:cy="4.8259288" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-nodes="false" -     inkscape:snap-bbox-midpoints="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:#303b46;fill-opacity:1;stroke:#2c3640;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484-6" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -    <path -       style="fill:none;fill-opacity:1;stroke:#788da3;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,11 c 0,1.661997 1.3380026,3 3,3 h 6 c 1.661997,0 3,-1.338003 3,-3" -       id="rect4503" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="cssc" -       transform="translate(0,1036.3623)" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/line_edit_active.svg b/scene/resources/default_theme/source/line_edit_active.svg deleted file mode 100644 index e823138141..0000000000 --- a/scene/resources/default_theme/source/line_edit_active.svg +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="line_edit_selected.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/tab_container_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="6.0294685" -     inkscape:cy="5.7319094" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-nodes="false" -     inkscape:snap-bbox-midpoints="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:#303b46;fill-opacity:1;stroke:#2c3640;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484-6" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -    <path -       style="fill:none;fill-opacity:1;stroke:#7eff8a;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,11 c 0,1.661997 1.3380026,3 3,3 h 6 c 1.661997,0 3,-1.338003 3,-3" -       id="rect4503" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="cssc" -       transform="translate(0,1036.3623)" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/line_edit_disabled.svg b/scene/resources/default_theme/source/line_edit_disabled.svg deleted file mode 100644 index 9e60d7ccbd..0000000000 --- a/scene/resources/default_theme/source/line_edit_disabled.svg +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="line_edit_disabled.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/tab_container_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="2.2717731" -     inkscape:cy="8.8637422" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:#303b46;fill-opacity:1;stroke:#2c3640;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484-6" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -    <path -       style="fill:none;fill-opacity:1;stroke:#425468;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 2,1047.3623 c 0,1.662 1.338003,3 3,3 h 6 c 1.661997,0 3,-1.338 3,-3" -       id="rect4503" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="cssc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/option_arrow.svg b/scene/resources/default_theme/source/option_arrow.svg index 5cd943e9e3..cd78404ff1 100644 --- a/scene/resources/default_theme/source/option_arrow.svg +++ b/scene/resources/default_theme/source/option_arrow.svg @@ -14,7 +14,7 @@     viewBox="0 0 12 12"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="3.1667338" -     inkscape:cy="5.9875884" +     inkscape:zoom="45.254836" +     inkscape:cx="6.0969578" +     inkscape:cy="7.5632913"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -61,7 +61,7 @@          <dc:format>image/svg+xml</dc:format>          <dc:type             rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> +        <dc:title></dc:title>        </cc:Work>      </rdf:RDF>    </metadata> @@ -71,10 +71,16 @@       id="layer1"       transform="translate(0,-1040.3622)">      <path +       style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +       d="m 3,1045.3622 6,0 -3,-4 z" +       id="path4158"         inkscape:connector-curvature="0" -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 9.9999996,1043.3583 c -0.2637796,0.01 -0.5144012,0.1165 -0.697265,0.3067 l -3.292969,3.2929 -3.2929688,-3.2929 C 2.5285367,1043.4714 2.2700113,1043.3622 2,1043.3622 c -0.8974208,2e-4 -1.34038281,1.0909 -0.6972656,1.7168 l 4,4 c 0.3905299,0.3904 1.0235325,0.3904 1.4140624,0 l 4.0000002,-4 c 0.657344,-0.6321 0.194906,-1.7422 -0.7167974,-1.7207 z" -       id="path4484" -       sodipodi:nodetypes="cccccccccc" /> +       sodipodi:nodetypes="cccc" /> +    <path +       inkscape:connector-curvature="0" +       id="path4160" +       d="m 3,1047.3622 6,0 -3,4 z" +       style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +       sodipodi:nodetypes="cccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/panel_bg.svg b/scene/resources/default_theme/source/panel_bg.svg deleted file mode 100644 index 5115d3d0ac..0000000000 --- a/scene/resources/default_theme/source/panel_bg.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="8" -   height="8" -   viewBox="0 0 8 7.9999995" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="panel_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="6.4834446" -     inkscape:cy="3.3875925" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1044.3623)"> -    <rect -       style="opacity:1;fill:#232a32;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" -       id="rect4213" -       width="8" -       height="7.999999" -       x="0" -       y="1044.3623" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/popup_bg.svg b/scene/resources/default_theme/source/popup_bg.svg deleted file mode 100644 index cbf356aec0..0000000000 --- a/scene/resources/default_theme/source/popup_bg.svg +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="popup_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/popup_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="6.6514997" -     inkscape:cy="9.5440638" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     showguides="false"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.19607843;fill-rule:nonzero;stroke:none;stroke-width:1.77777672;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="M 4.4453125,1036.3633 C 1.9984702,1036.3633 0,1038.3598 0,1040.8066 v 7.1114 c 0,2.4468 1.9984702,4.4453 4.4453125,4.4453 H 11.554688 C 14.00153,1052.3633 16,1050.3648 16,1047.918 v -7.1114 c 0,-2.4468 -1.99847,-4.4433 -4.445312,-4.4433 z" -       id="rect4497" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="sssssssss" /> -    <rect -       style="fill:#394653;fill-opacity:1;stroke:#455463;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/popup_window.svg b/scene/resources/default_theme/source/popup_window.svg deleted file mode 100644 index 43aabb3ca2..0000000000 --- a/scene/resources/default_theme/source/popup_window.svg +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="20" -   height="36" -   viewBox="0 0 20 35.999998" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="popup_window.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/full_panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="22.627416" -     inkscape:cx="10.268488" -     inkscape:cy="24.750533" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1016.3623)"> -    <rect -       style="fill:#000000;fill-opacity:0.19607843;stroke:none;stroke-width:1.8106823;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4499" -       width="18" -       height="33.999996" -       x="1" -       y="1017.3623" -       ry="5.9999952" /> -    <rect -       ry="4.9999952" -       y="1018.3623" -       x="2" -       height="31.999996" -       width="16" -       id="rect4497" -       style="fill:#000000;fill-opacity:0.19607843;stroke:none;stroke-width:1.65615714;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -    <rect -       style="fill:#394653;fill-opacity:1;stroke:#455463;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484" -       width="12" -       height="27.999996" -       x="4" -       y="1020.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/progress_bar.svg b/scene/resources/default_theme/source/progress_bar.svg deleted file mode 100644 index ddaac73547..0000000000 --- a/scene/resources/default_theme/source/progress_bar.svg +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="progress_bar.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/popup_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="6.2769476" -     inkscape:cy="8.8116358" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     showguides="false"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)" /> -</svg> diff --git a/scene/resources/default_theme/source/progress_fill.svg b/scene/resources/default_theme/source/progress_fill.svg deleted file mode 100644 index 99b6a45bf5..0000000000 --- a/scene/resources/default_theme/source/progress_fill.svg +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="progress_fill.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/popup_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="5.2752007" -     inkscape:cy="7.6135176" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     showguides="false" -     inkscape:snap-midpoints="true" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <circle -       style="fill:#7eff8a;fill-opacity:1;stroke:none;stroke-width:1.0285722;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="path816" -       cx="8" -       cy="1044.3623" -       r="6.0000048" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/radio_checked.svg b/scene/resources/default_theme/source/radio_checked.svg deleted file mode 100644 index cbfb407bf2..0000000000 --- a/scene/resources/default_theme/source/radio_checked.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="radio_checked.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="4.875052" -     inkscape:cy="10.187321" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <path -       style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431374;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 14 8 A 6 6 0 0 0 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z " -       transform="translate(0,1036.3623)" -       id="path4154" /> -    <circle -       style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431374;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="circle4158" -       cx="8" -       cy="1044.3623" -       r="3" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/radio_unchecked.svg b/scene/resources/default_theme/source/radio_unchecked.svg deleted file mode 100644 index 0e3aaae6d9..0000000000 --- a/scene/resources/default_theme/source/radio_unchecked.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="radio_unchecked.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="22.627417" -     inkscape:cx="-0.63112348" -     inkscape:cy="10.614735" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <path -       style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431374;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 14 8 A 6 6 0 0 0 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z " -       transform="translate(0,1036.3623)" -       id="path4154" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_down_hl.svg b/scene/resources/default_theme/source/scroll_button_down_hl.svg deleted file mode 100644 index f0b461f037..0000000000 --- a/scene/resources/default_theme/source/scroll_button_down_hl.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_down_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="5.8513188" -     inkscape:cy="5.8532653" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#7eff8a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 10.023438,1044.3535 a 1.0001,1.0001 0 0 0 -0.6230474,0.209 L 6,1047.1113 2.5996094,1044.5625 a 1.0001,1.0001 0 1 0 -1.1992188,1.5996 l 4,3 a 1.0001,1.0001 0 0 0 1.1992188,0 l 3.9999996,-3 a 1.0001,1.0001 0 0 0 -0.576171,-1.8086 z" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_left.svg b/scene/resources/default_theme/source/scroll_button_left.svg deleted file mode 100644 index 22d7f42001..0000000000 --- a/scene/resources/default_theme/source/scroll_button_left.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_left.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="4.5296015" -     inkscape:cy="7.0872243" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.27450982" -       d="m 6.999975,1042.3623 -3,4 3,4" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_left_hl.svg b/scene/resources/default_theme/source/scroll_button_left_hl.svg deleted file mode 100644 index 22c24aae22..0000000000 --- a/scene/resources/default_theme/source/scroll_button_left_hl.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_left_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="4.238333" -     inkscape:cy="6.998836" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="fill:none;stroke:#7eff8a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 6.999975,1042.3623 -3,4 3,4" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_right.svg b/scene/resources/default_theme/source/scroll_button_right.svg deleted file mode 100644 index 95afabf006..0000000000 --- a/scene/resources/default_theme/source/scroll_button_right.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_right.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="3.1153879" -     inkscape:cy="6.4685059" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.2745098;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 5.0332031,1041.3516 a 1.0001,1.0001 0 0 0 -0.8339843,1.6113 l 2.5507812,3.3984 -2.5507812,3.4004 a 1.000985,1.000985 0 1 0 1.6015624,1.2012 l 3,-4 a 1.0001,1.0001 0 0 0 0,-1.2012 l -3,-4 a 1.0001,1.0001 0 0 0 -0.7675781,-0.4101 z" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_right_hl.svg b/scene/resources/default_theme/source/scroll_button_right_hl.svg deleted file mode 100644 index c836c2975b..0000000000 --- a/scene/resources/default_theme/source/scroll_button_right_hl.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_right_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="3.1153879" -     inkscape:cy="6.4685059" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#7eff8a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 5.0332031,1041.3516 a 1.0001,1.0001 0 0 0 -0.8339843,1.6113 l 2.5507812,3.3984 -2.5507812,3.4004 a 1.000985,1.000985 0 1 0 1.6015624,1.2012 l 3,-4 a 1.0001,1.0001 0 0 0 0,-1.2012 l -3,-4 a 1.0001,1.0001 0 0 0 -0.7675781,-0.4101 z" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_up.svg b/scene/resources/default_theme/source/scroll_button_up.svg deleted file mode 100644 index 90107666c9..0000000000 --- a/scene/resources/default_theme/source/scroll_button_up.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_up.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="1.4098045" -     inkscape:cy="5.764877" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.27450982;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 10.023438,1048.3706 a 1.0001,1.0001 0 0 1 -0.6230474,-0.209 L 6,1045.6128 l -3.4003906,2.5488 a 1.0001,1.0001 0 1 1 -1.1992188,-1.5996 l 4,-3 a 1.0001,1.0001 0 0 1 1.1992188,0 l 3.9999996,3 a 1.0001,1.0001 0 0 1 -0.576171,1.8086 z" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/scroll_button_up_hl.svg b/scene/resources/default_theme/source/scroll_button_up_hl.svg deleted file mode 100644 index b5f92e0f8a..0000000000 --- a/scene/resources/default_theme/source/scroll_button_up_hl.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="12" -   height="12" -   viewBox="0 0 12 11.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="scroll_button_up_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="1.4098045" -     inkscape:cy="5.764877" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1040.3623)"> -    <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#7eff8a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="m 10.023438,1048.3706 a 1.0001,1.0001 0 0 1 -0.6230474,-0.209 L 6,1045.6128 l -3.4003906,2.5488 a 1.0001,1.0001 0 1 1 -1.1992188,-1.5996 l 4,-3 a 1.0001,1.0001 0 0 1 1.1992188,0 l 3.9999996,3 a 1.0001,1.0001 0 0 1 -0.576171,1.8086 z" -       id="path4511" -       inkscape:connector-curvature="0" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/selection.svg b/scene/resources/default_theme/source/selection.svg deleted file mode 100644 index 7346191195..0000000000 --- a/scene/resources/default_theme/source/selection.svg +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="selection.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_pressed.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="9.5458029" -     inkscape:cy="7.3443927" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:none;fill-opacity:0.19607843;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294119" -       id="rect823" -       width="14" -       height="9.9999952" -       x="1" -       y="1039.3623" -       ry="3.9999952" /> -    <rect -       ry="2.9999952" -       y="1040.3623" -       x="1.9999952" -       height="7.9999952" -       width="12.00001" -       id="rect825" -       style="fill:#ffffff;fill-opacity:0.19607843;stroke:none;stroke-width:1.71428704;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/selection_oof.svg b/scene/resources/default_theme/source/selection_oof.svg deleted file mode 100644 index f12b066a52..0000000000 --- a/scene/resources/default_theme/source/selection_oof.svg +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="selection_oof.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_pressed.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="16" -     inkscape:cx="-2.3310576" -     inkscape:cy="4.9359914" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:none;fill-opacity:0.19607843;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294119" -       id="rect823" -       width="14" -       height="14" -       x="1" -       y="1037.3623" -       ry="3.9999952" /> -    <rect -       ry="2.9999952" -       y="1038.3623" -       x="1.9999954" -       height="12.00001" -       width="12.00001" -       id="rect825" -       style="fill:#ffffff;fill-opacity:0.19607843;stroke:none;stroke-width:1.71428704;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/spinbox_updown.svg b/scene/resources/default_theme/source/spinbox_updown.svg index e29d7fe0d2..5b8e0a83eb 100644 --- a/scene/resources/default_theme/source/spinbox_updown.svg +++ b/scene/resources/default_theme/source/spinbox_updown.svg @@ -14,7 +14,7 @@     viewBox="0 0 16 16"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -28,11 +28,11 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="16" -     inkscape:cx="-1.901723" -     inkscape:cy="9.1326297" +     inkscape:zoom="45.254834" +     inkscape:cx="5.7914867" +     inkscape:cy="9.8174296"       inkscape:document-units="px" -     inkscape:current-layer="layer1-5" +     inkscape:current-layer="layer1"       showgrid="true"       units="px"       inkscape:snap-bbox="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -71,13 +71,16 @@       id="layer1"       transform="translate(0,-1036.3622)">      <path -       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" -       d="M 7.984375 1.0019531 A 1.0001 1.0001 0 0 0 7.2929688 1.2929688 L 3.2929688 5.2929688 A 1.0001 1.0001 0 1 0 4.7070312 6.7070312 L 8 3.4140625 L 11.292969 6.7070312 A 1.0001 1.0001 0 1 0 12.707031 5.2929688 L 8.7070312 1.2929688 A 1.0001 1.0001 0 0 0 7.984375 1.0019531 z M 11.990234 8.9863281 A 1.0001 1.0001 0 0 0 11.292969 9.2929688 L 8 12.585938 L 4.7070312 9.2929688 A 1.0001 1.0001 0 0 0 3.9902344 8.9902344 A 1.0001 1.0001 0 0 0 3.2929688 10.707031 L 7.2929688 14.707031 A 1.0001 1.0001 0 0 0 8.7070312 14.707031 L 12.707031 10.707031 A 1.0001 1.0001 0 0 0 11.990234 8.9863281 z " -       transform="translate(0,1036.3622)" -       id="path4484" /> -    <g -       id="layer1-5" -       inkscape:label="Layer 1" -       transform="translate(14.210182,-5.3664)" /> +       style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +       d="m 4,1042.3622 8,0 -4,-5 z" +       id="path4158" +       inkscape:connector-curvature="0" +       sodipodi:nodetypes="cccc" /> +    <path +       inkscape:connector-curvature="0" +       id="path4160" +       d="m 4,1046.3622 8,0 -4,5 z" +       style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +       sodipodi:nodetypes="cccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/submenu.svg b/scene/resources/default_theme/source/submenu.svg index 927338d9bb..ef7f696571 100644 --- a/scene/resources/default_theme/source/submenu.svg +++ b/scene/resources/default_theme/source/submenu.svg @@ -14,7 +14,7 @@     viewBox="0 0 8 8"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -29,8 +29,8 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="64.000003" -     inkscape:cx="5.7489132" -     inkscape:cy="3.1277668" +     inkscape:cx="1.4039962" +     inkscape:cy="5.6866955"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -71,9 +71,10 @@       id="layer1"       transform="translate(0,-1044.3622)">      <path -       style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.78431374;stroke-miterlimit:4;stroke-dasharray:none" -       d="m 3,1045.3622 3,3 -3,3" -       id="path814" -       inkscape:connector-curvature="0" /> +       style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       d="m 1,1052.3622 3,0 3,-4 -3,-4 -3,0 z" +       id="rect4174" +       inkscape:connector-curvature="0" +       sodipodi:nodetypes="cccccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/tab_behind.svg b/scene/resources/default_theme/source/tab_behind.svg deleted file mode 100644 index 5fa84ffda5..0000000000 --- a/scene/resources/default_theme/source/tab_behind.svg +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tab_behind.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/tab_behind.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="10.899138" -     inkscape:cy="7.5918468" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)" /> -</svg> diff --git a/scene/resources/default_theme/source/tab_close.svg b/scene/resources/default_theme/source/tab_close.svg index f85518665b..65b71ae860 100644 --- a/scene/resources/default_theme/source/tab_close.svg +++ b/scene/resources/default_theme/source/tab_close.svg @@ -14,11 +14,11 @@     viewBox="0 0 16 16"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" -   sodipodi:docname="tab_close.svg"> +   sodipodi:docname="icon_close.svg">    <defs       id="defs4" />    <sodipodi:namedview @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="45.254836" -     inkscape:cx="9.2858482" -     inkscape:cy="8.0181058" +     inkscape:zoom="22.627418" +     inkscape:cx="3.3969834" +     inkscape:cy="11.678255"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1"> @@ -60,7 +60,7 @@          <dc:format>image/svg+xml</dc:format>          <dc:type             rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> +        <dc:title></dc:title>        </cc:Work>      </rdf:RDF>    </metadata> @@ -69,15 +69,25 @@       inkscape:groupmode="layer"       id="layer1"       transform="translate(0,-1036.3622)"> -    <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.39215687;stroke-miterlimit:4;stroke-dasharray:none" -       d="m 4,1048.3622 8,-8" -       id="path819" -       inkscape:connector-curvature="0" /> -    <path -       style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.39215687;stroke-miterlimit:4;stroke-dasharray:none" -       d="m 4,1040.3622 8,8" -       id="path821" -       inkscape:connector-curvature="0" /> +    <g +       id="layer1-4" +       inkscape:label="Layer 1" +       transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-736.13242,311.54347)"> +      <rect +         y="1043.3622" +         x="1" +         height="1.9999478" +         width="14" +         id="rect4137" +         style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> +      <rect +         transform="matrix(0,1,-1,0,0,0)" +         style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +         id="rect4158" +         width="13.999966" +         height="2.0000017" +         x="1037.3622" +         y="-9" /> +    </g>    </g>  </svg> diff --git a/scene/resources/default_theme/source/tab_container_bg.svg b/scene/resources/default_theme/source/tab_container_bg.svg deleted file mode 100644 index d19cb7cfa1..0000000000 --- a/scene/resources/default_theme/source/tab_container_bg.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tab_container_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/tab_container_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="5.1997709" -     inkscape:cy="8.5220258" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:#36424e;fill-opacity:1;stroke:#323d48;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484-6" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/tab_current.svg b/scene/resources/default_theme/source/tab_current.svg deleted file mode 100644 index e43a83c3ec..0000000000 --- a/scene/resources/default_theme/source/tab_current.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tab_current.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/tab_current.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="45.254834" -     inkscape:cx="9.2059746" -     inkscape:cy="6.5875113" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <path -       style="fill:#36424e;fill-opacity:1;stroke:#323d48;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 14,16 V 5 C 14,3.3380026 12.661997,2 11,2 H 5 C 3.3380026,2 2,3.3380026 2,5 v 11" -       transform="translate(0,1036.3623)" -       id="rect4484-6" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="ccsscc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/tab_menu.svg b/scene/resources/default_theme/source/tab_menu.svg index 39e0d1f261..84f7c8095a 100644 --- a/scene/resources/default_theme/source/tab_menu.svg +++ b/scene/resources/default_theme/source/tab_menu.svg @@ -14,7 +14,7 @@     viewBox="0 0 16 16"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -28,9 +28,9 @@       borderopacity="1.0"       inkscape:pageopacity="0.0"       inkscape:pageshadow="2" -     inkscape:zoom="32.000001" -     inkscape:cx="4.0814179" -     inkscape:cy="8.4695645" +     inkscape:zoom="45.254836" +     inkscape:cx="6.2944765" +     inkscape:cy="7.7343939"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -70,23 +70,11 @@       inkscape:groupmode="layer"       id="layer1"       transform="translate(0,-1036.3622)"> -    <circle -       style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" -       id="path819" -       cx="8" -       cy="1038.3622" -       r="2" /> -    <circle -       r="2" -       cy="1044.3622" -       cx="8" -       id="circle821" -       style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" /> -    <circle -       style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" -       id="circle823" -       cx="8" -       cy="1050.3622" -       r="2" /> +    <path +       style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" +       d="m 4,1044.3622 0,3 4,3 4,-3 0,-3 z" +       id="rect4174" +       inkscape:connector-curvature="0" +       sodipodi:nodetypes="cccccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/toggle_off.svg b/scene/resources/default_theme/source/toggle_off.svg deleted file mode 100644 index e5bf0e9809..0000000000 --- a/scene/resources/default_theme/source/toggle_off.svg +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="64" -   height="32" -   viewBox="0 0 64 31.999998" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="toggle_off.svg" -   inkscape:export-filename="/home/djrm/Projects/gd_theme/assets/check_btn_off.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="11.313709" -     inkscape:cx="35.30642" -     inkscape:cy="10.306683" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1020.3623)"> -    <path -       style="fill:#000000;fill-opacity:0.19607843;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="M 24 6 A 10.000006 10.000006 0 0 0 14 16 A 10.000006 10.000006 0 0 0 24 26 L 40 26 A 9.9999943 9.9999943 0 0 0 50 16 A 9.9999943 9.9999943 0 0 0 40 6 L 24 6 z " -       transform="translate(0,1020.3623)" -       id="circle4160" /> -    <circle -       r="7.9999924" -       cy="1036.3623" -       cx="-24.000006" -       id="circle4138" -       style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       transform="scale(-1,1)" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/toggle_on.svg b/scene/resources/default_theme/source/toggle_on.svg deleted file mode 100644 index f8b55a853d..0000000000 --- a/scene/resources/default_theme/source/toggle_on.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="64" -   height="32" -   viewBox="0 0 64 31.999998" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="toggle_on.svg" -   inkscape:export-filename="/home/djrm/Projects/gd_theme/assets/check_btn_on.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="16.000001" -     inkscape:cx="31.866725" -     inkscape:cy="13.213395" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1020.3623)"> -    <path -       inkscape:connector-curvature="0" -       style="fill:#000000;fill-opacity:0.19607843;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       d="m 40.000015,1026.3623 a 10.000006,10.000006 0 0 1 10,10 10.000006,10.000006 0 0 1 -10,10 h -16 a 9.9999943,9.9999943 0 0 1 -10,-10 9.9999943,9.9999943 0 0 1 10,-10 z" -       id="circle4160" /> -    <circle -       r="7.9999924" -       cy="1036.3623" -       cx="40.000008" -       id="circle4138" -       style="fill:#7eff8a;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/tooltip_bg.svg b/scene/resources/default_theme/source/tooltip_bg.svg deleted file mode 100644 index 84da6fe984..0000000000 --- a/scene/resources/default_theme/source/tooltip_bg.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tooltip_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_pressed.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="1.4290295" -     inkscape:cy="8.0937882" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <path -       style="opacity:1;fill:#ffffff;fill-opacity:0.78431373;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" -       d="m 3,1036.3623 c -1.661997,0 -3,1.338 -3,3 v 10 c 0,1.662 1.338003,3 3,3 h 10 c 1.661997,0 3,-1.338 3,-3 v -10 c 0,-1.662 -1.338003,-3 -3,-3 z m 0,2 h 10 c 0.553997,0 1,0.446 1,1 v 10 c 0,0.554 -0.446003,1 -1,1 H 3 c -0.553997,0 -1,-0.446 -1,-1 v -10 c 0,-0.554 0.446003,-1 1,-1 z" -       id="rect4166" -       inkscape:connector-curvature="0" /> -    <rect -       style="opacity:1;fill:#ffffff;fill-opacity:0.68627451;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" -       id="rect4137" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="0.99999481" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/tree_bg.svg b/scene/resources/default_theme/source/tree_bg.svg deleted file mode 100644 index ba39010421..0000000000 --- a/scene/resources/default_theme/source/tree_bg.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tree_bg.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32.000002" -     inkscape:cx="1.8744117" -     inkscape:cy="8.3113002" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="true" -     inkscape:snap-intersection-paths="true" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title></dc:title> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="fill:#2b353f;fill-opacity:1;stroke:#252e37;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4484-6" -       width="12" -       height="12" -       x="2" -       y="1038.3623" -       ry="2.9999952" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/tree_title.svg b/scene/resources/default_theme/source/tree_title.svg deleted file mode 100644 index f7140f3aff..0000000000 --- a/scene/resources/default_theme/source/tree_title.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tree_title.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/popup_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="11.133501" -     inkscape:cy="7.000622" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     showguides="false"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="opacity:1;fill:#000000;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4158" -       width="16" -       height="16" -       x="0" -       y="1036.3623" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/tree_title_pressed.svg b/scene/resources/default_theme/source/tree_title_pressed.svg deleted file mode 100644 index a1a6cd5a89..0000000000 --- a/scene/resources/default_theme/source/tree_title_pressed.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="tree_title_pressed.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/popup_bg.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="3.414751" -     inkscape:cy="7.219372" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     showguides="false"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <rect -       style="opacity:1;fill:#000000;fill-opacity:0.27450982;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" -       id="rect4158" -       width="16" -       height="16" -       x="0" -       y="1036.3623" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/updown.svg b/scene/resources/default_theme/source/updown.svg index 24e4ed0f23..adc72b405d 100644 --- a/scene/resources/default_theme/source/updown.svg +++ b/scene/resources/default_theme/source/updown.svg @@ -14,7 +14,7 @@     viewBox="0 0 8 16"     id="svg2"     version="1.1" -   inkscape:version="0.92.1 r" +   inkscape:version="0.91 r13725"     inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"     inkscape:export-xdpi="45"     inkscape:export-ydpi="45" @@ -29,8 +29,8 @@       inkscape:pageopacity="0.0"       inkscape:pageshadow="2"       inkscape:zoom="32.000001" -     inkscape:cx="-0.193656" -     inkscape:cy="9.787299" +     inkscape:cx="-3.4436559" +     inkscape:cy="10.099799"       inkscape:document-units="px"       inkscape:current-layer="layer1"       showgrid="true" @@ -42,8 +42,8 @@       inkscape:snap-bbox-midpoints="false"       inkscape:snap-object-midpoints="true"       inkscape:snap-center="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" +     inkscape:window-width="1920" +     inkscape:window-height="1016"       inkscape:window-x="0"       inkscape:window-y="27"       inkscape:window-maximized="1" @@ -71,7 +71,7 @@       id="layer1"       transform="translate(0,-1036.3622)">      <path -       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431374" +       style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"         d="m 1,1042.3565 3,-2.9943 3,2.9943"         id="path4155"         inkscape:connector-curvature="0" @@ -80,7 +80,7 @@         inkscape:connector-curvature="0"         id="path4159"         d="m 1,1046.3622 3,3 3,-3" -       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431374" +       style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"         sodipodi:nodetypes="ccc" />    </g>  </svg> diff --git a/scene/resources/default_theme/source/vslider_grabber.svg b/scene/resources/default_theme/source/vslider_grabber.svg deleted file mode 100644 index 76703daa54..0000000000 --- a/scene/resources/default_theme/source/vslider_grabber.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="vslider_grabber.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="8.8922186" -     inkscape:cy="6.4674144" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <circle -       r="6.9999943" -       cy="1044.3623" -       cx="8.0000057" -       id="circle4262" -       style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/vslider_grabber_hl.svg b/scene/resources/default_theme/source/vslider_grabber_hl.svg deleted file mode 100644 index b688130f24..0000000000 --- a/scene/resources/default_theme/source/vslider_grabber_hl.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.92.1 r" -   sodipodi:docname="vslider_grabber_hl.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="7.0748113" -     inkscape:cy="6.0432589" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1600" -     inkscape:window-height="836" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <circle -       r="6.9999943" -       cy="1044.3623" -       cx="8.0000057" -       id="circle4262" -       style="fill:#7eff8a;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/source/window_resizer.svg b/scene/resources/default_theme/source/window_resizer.svg deleted file mode 100644 index ef92d64be0..0000000000 --- a/scene/resources/default_theme/source/window_resizer.svg +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg -   xmlns:dc="http://purl.org/dc/elements/1.1/" -   xmlns:cc="http://creativecommons.org/ns#" -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -   xmlns:svg="http://www.w3.org/2000/svg" -   xmlns="http://www.w3.org/2000/svg" -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" -   width="16" -   height="16" -   viewBox="0 0 16 15.999999" -   id="svg2" -   version="1.1" -   inkscape:version="0.91 r13725" -   sodipodi:docname="window_resizer.svg" -   inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/unchecked.png" -   inkscape:export-xdpi="90" -   inkscape:export-ydpi="90"> -  <defs -     id="defs4" /> -  <sodipodi:namedview -     id="base" -     pagecolor="#ffffff" -     bordercolor="#666666" -     borderopacity="1.0" -     inkscape:pageopacity="0.0" -     inkscape:pageshadow="2" -     inkscape:zoom="32" -     inkscape:cx="-3.1015509" -     inkscape:cy="9.5660349" -     inkscape:document-units="px" -     inkscape:current-layer="layer1" -     showgrid="true" -     units="px" -     inkscape:object-paths="false" -     inkscape:snap-intersection-paths="false" -     inkscape:snap-bbox="true" -     inkscape:bbox-paths="true" -     inkscape:bbox-nodes="true" -     inkscape:snap-bbox-edge-midpoints="true" -     inkscape:window-width="1920" -     inkscape:window-height="1016" -     inkscape:window-x="0" -     inkscape:window-y="27" -     inkscape:window-maximized="1" -     inkscape:snap-midpoints="true" -     inkscape:snap-smooth-nodes="true" -     inkscape:object-nodes="true"> -    <inkscape:grid -       type="xygrid" -       id="grid4136" -       empspacing="4" /> -  </sodipodi:namedview> -  <metadata -     id="metadata7"> -    <rdf:RDF> -      <cc:Work -         rdf:about=""> -        <dc:format>image/svg+xml</dc:format> -        <dc:type -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> -        <dc:title /> -      </cc:Work> -    </rdf:RDF> -  </metadata> -  <g -     inkscape:label="Layer 1" -     inkscape:groupmode="layer" -     id="layer1" -     transform="translate(0,-1036.3623)"> -    <path -       style="opacity:1;fill:#ffffff;fill-opacity:0.78431373;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" -       d="m 2.0000005,1047.3623 8.9999995,0 0,-9 z" -       id="circle4178" -       inkscape:connector-curvature="0" -       sodipodi:nodetypes="cccc" /> -  </g> -</svg> diff --git a/scene/resources/default_theme/spinbox_updown.png b/scene/resources/default_theme/spinbox_updown.png Binary files differindex ff65df801b..b40b1e9fd2 100644 --- a/scene/resources/default_theme/spinbox_updown.png +++ b/scene/resources/default_theme/spinbox_updown.png diff --git a/scene/resources/default_theme/submenu.png b/scene/resources/default_theme/submenu.png Binary files differindex 465afe7786..ec727eecf1 100644 --- a/scene/resources/default_theme/submenu.png +++ b/scene/resources/default_theme/submenu.png diff --git a/scene/resources/default_theme/tab.png b/scene/resources/default_theme/tab.png Binary files differindex 951a4a3e76..3e4d792a48 100644 --- a/scene/resources/default_theme/tab.png +++ b/scene/resources/default_theme/tab.png diff --git a/scene/resources/default_theme/tab_behind.png b/scene/resources/default_theme/tab_behind.png Binary files differindex d3e1838248..12f07c3a91 100644 --- a/scene/resources/default_theme/tab_behind.png +++ b/scene/resources/default_theme/tab_behind.png diff --git a/scene/resources/default_theme/tab_close.png b/scene/resources/default_theme/tab_close.png Binary files differindex b6973740e7..20d9b5c810 100644 --- a/scene/resources/default_theme/tab_close.png +++ b/scene/resources/default_theme/tab_close.png diff --git a/scene/resources/default_theme/tab_container_backup.png b/scene/resources/default_theme/tab_container_backup.png Binary files differdeleted file mode 100644 index f87905b1da..0000000000 --- a/scene/resources/default_theme/tab_container_backup.png +++ /dev/null diff --git a/scene/resources/default_theme/tab_container_bg.png b/scene/resources/default_theme/tab_container_bg.png Binary files differindex 1b62e2690c..92482aaf28 100644 --- a/scene/resources/default_theme/tab_container_bg.png +++ b/scene/resources/default_theme/tab_container_bg.png diff --git a/scene/resources/default_theme/tab_current.png b/scene/resources/default_theme/tab_current.png Binary files differindex c1f0ba24d4..7289e032da 100644 --- a/scene/resources/default_theme/tab_current.png +++ b/scene/resources/default_theme/tab_current.png diff --git a/scene/resources/default_theme/tab_menu.png b/scene/resources/default_theme/tab_menu.png Binary files differindex ffc63f2d41..148b64b8aa 100644 --- a/scene/resources/default_theme/tab_menu.png +++ b/scene/resources/default_theme/tab_menu.png diff --git a/scene/resources/default_theme/tab_menu_hl.png b/scene/resources/default_theme/tab_menu_hl.png Binary files differindex ffc63f2d41..148b64b8aa 100644 --- a/scene/resources/default_theme/tab_menu_hl.png +++ b/scene/resources/default_theme/tab_menu_hl.png diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h index eba925cfe0..b9c401525a 100644 --- a/scene/resources/default_theme/theme_data.h +++ b/scene/resources/default_theme/theme_data.h @@ -3,11 +3,11 @@  // png image block  static const unsigned char arrow_down_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x5f, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xd5, 0x8f, 0x31, 0xa, 0x80, 0x40, 0x10, 0x3, 0x27, 0x9e, 0x8d, 0xa5, 0xe0, 0x9f, 0x84, 0xc3, 0xe7, 0x8a, 0xe0, 0xab, 0x2c, 0x6d, 0x84, 0xb5, 0xd9, 0x95, 0xe3, 0xbc, 0x7, 0x68, 0xaa, 0x10, 0x32, 0x64, 0x17, 0xfe, 0x2f, 0x85, 0x31, 0xb3, 0x5, 0xe8, 0x81, 0x5d, 0xd2, 0xe9, 0xd9, 0x0, 0xcc, 0xc0, 0x25, 0x69, 0x5, 0xe8, 0xa, 0x38, 0x1, 0x13, 0x90, 0xcd, 0x6c, 0xf0, 0x72, 0xf6, 0x2c, 0xb5, 0x16, 0xa2, 0x30, 0x2, 0x87, 0xc7, 0xe1, 0xb7, 0x58, 0x7d, 0x80, 0x6, 0x44, 0x5d, 0x7e, 0x1, 0xd5, 0xdd, 0x94, 0xff, 0x7c, 0x58, 0x37, 0xd0, 0xd, 0x22, 0xd5, 0xdc, 0x5c, 0xa1, 0xab, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x6d, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x63, 0x60, 0x18, 0x74, 0x80, 0x11, 0xc6, 0x78, 0xf0, 0xe0, 0xc1, 0x7f, 0x7c, 0xa, 0x15, 0x14, 0x14, 0x18, 0x19, 0x18, 0x18, 0x18, 0x98, 0x48, 0xb5, 0x81, 0x7c, 0xd, 0x8c, 0x8c, 0x8c, 0xf1, 0xc, 0xc, 0xc, 0x5f, 0xb1, 0xa8, 0xf9, 0xce, 0xc8, 0xc8, 0x98, 0xe, 0x57, 0x87, 0x2c, 0x73, 0xff, 0xfe, 0x7d, 0xd, 0x6, 0x6, 0x86, 0x55, 0x8c, 0x8c, 0x8c, 0xba, 0x50, 0xa1, 0x1b, 0xcc, 0xcc, 0xcc, 0x61, 0xb2, 0xb2, 0xb2, 0x97, 0xb1, 0x6a, 0x60, 0x60, 0x60, 0x60, 0x78, 0xf1, 0xe2, 0x5, 0xf7, 0xcf, 0x9f, 0x3f, 0xa7, 0x30, 0x30, 0x30, 0x30, 0xb0, 0xb3, 0xb3, 0xe7, 0x48, 0x48, 0x48, 0x60, 0xb3, 0x75, 0x30, 0x1, 0x0, 0x28, 0x20, 0x14, 0xc2, 0x1b, 0xd0, 0x7c, 0xca, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char arrow_right_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x72, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xb5, 0xd0, 0xb1, 0xe, 0x1, 0x61, 0x14, 0x44, 0xe1, 0xef, 0xb2, 0x5, 0x2a, 0xc4, 0x2b, 0x89, 0x58, 0x9e, 0x97, 0xac, 0x67, 0x12, 0x74, 0x34, 0x72, 0x35, 0x5b, 0xf0, 0x67, 0xb3, 0xab, 0xd9, 0xe9, 0x4e, 0x71, 0x32, 0x93, 0x61, 0xec, 0xc4, 0x37, 0x64, 0xe6, 0x11, 0x15, 0x9a, 0x88, 0x78, 0x76, 0x9, 0x93, 0x82, 0xa7, 0xd8, 0xa0, 0xce, 0xcc, 0xf9, 0x3f, 0x42, 0x83, 0x1b, 0x56, 0x38, 0x64, 0xe6, 0xa2, 0x57, 0x88, 0x88, 0x17, 0xce, 0xb8, 0x63, 0x89, 0xed, 0x50, 0xc3, 0x60, 0x7e, 0x84, 0xcc, 0x9c, 0x61, 0xdf, 0x4e, 0x7a, 0xe0, 0x52, 0xa, 0x55, 0xc1, 0x3b, 0xac, 0xdb, 0x49, 0xa7, 0xae, 0xa7, 0x4a, 0xe1, 0x8d, 0xab, 0x9e, 0x5b, 0xc7, 0xcf, 0x7, 0xea, 0x5d, 0x1c, 0x18, 0xd, 0xc6, 0x18, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x6c, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x63, 0x60, 0xa0, 0x35, 0x60, 0x44, 0xe6, 0x3c, 0x78, 0xf0, 0xe0, 0x3f, 0x8c, 0xfd, 0xff, 0xff, 0xff, 0x44, 0x45, 0x45, 0xc5, 0x5, 0xe8, 0x1a, 0x98, 0x70, 0x9a, 0xc4, 0xc8, 0x38, 0xe5, 0xe1, 0xc3, 0x87, 0xda, 0x44, 0x6b, 0x60, 0x60, 0x60, 0xe0, 0xfe, 0xff, 0xff, 0xff, 0xaa, 0x17, 0x2f, 0x5e, 0x70, 0x13, 0xab, 0x81, 0x81, 0x81, 0x81, 0x41, 0xeb, 0xe7, 0xcf, 0x9f, 0x53, 0x48, 0xd1, 0x80, 0x1, 0x8, 0x69, 0xb8, 0xc6, 0xce, 0xce, 0x9e, 0x43, 0xac, 0x86, 0xaf, 0x8c, 0x8c, 0x8c, 0x61, 0x12, 0x12, 0x12, 0x5f, 0x89, 0xd2, 0xf0, 0xff, 0xff, 0xff, 0x1c, 0x79, 0x79, 0xf9, 0xab, 0x84, 0x1d, 0x49, 0x6d, 0x0, 0x0, 0x8f, 0x30, 0x1e, 0x10, 0x6e, 0x79, 0xda, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char background_png[] = { @@ -19,31 +19,27 @@ static const unsigned char base_green_png[] = {  };  static const unsigned char button_disabled_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x2, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0x31, 0x4e, 0x2, 0x61, 0x10, 0x85, 0xbf, 0xf9, 0xc3, 0x15, 0x54, 0x94, 0xc2, 0x6a, 0x2b, 0xee, 0x40, 0x1, 0xd9, 0x8e, 0x82, 0x8, 0xb6, 0x62, 0xc9, 0x66, 0xb, 0xaf, 0xf0, 0x1f, 0x2, 0x1, 0x3b, 0xa4, 0x5, 0xb, 0x63, 0xb9, 0x71, 0x4d, 0xf6, 0xc, 0x50, 0x6d, 0x65, 0x1, 0x1, 0xbd, 0xc3, 0x8e, 0xc5, 0x2e, 0x68, 0x8, 0xb0, 0x24, 0xb4, 0xbe, 0x6a, 0x32, 0x99, 0xef, 0x65, 0x26, 0x79, 0x3, 0x27, 0x4a, 0xfe, 0xd6, 0xd5, 0x96, 0x77, 0xf, 0xea, 0xaa, 0x70, 0xb6, 0x73, 0x58, 0xf9, 0x6, 0x9, 0xc2, 0x49, 0x7f, 0x8, 0xe8, 0xc6, 0xc0, 0x5a, 0x6b, 0xa2, 0xe9, 0xf2, 0x15, 0xa8, 0x3, 0xb1, 0xa, 0x9f, 0x7b, 0xc, 0xae, 0x1, 0x7, 0x91, 0xb7, 0x4a, 0xf9, 0xa2, 0x61, 0xad, 0x4d, 0xa, 0x0, 0xd1, 0x74, 0xd5, 0x6, 0xea, 0x8a, 0xfa, 0x1f, 0x93, 0xa7, 0xde, 0xa1, 0x95, 0x6b, 0x4d, 0xcf, 0x57, 0xb4, 0x1b, 0xcd, 0x96, 0x77, 0xc0, 0xd0, 0xa4, 0x6d, 0x75, 0x81, 0x38, 0xf, 0x6, 0x78, 0x7f, 0xe9, 0x3f, 0x2, 0x31, 0x9, 0x2e, 0x40, 0x81, 0xf4, 0x98, 0x4b, 0x60, 0x9e, 0x7, 0xaf, 0xa5, 0x30, 0x47, 0xb8, 0x2, 0x30, 0xc7, 0x42, 0xfb, 0xf4, 0x6f, 0x90, 0x19, 0x88, 0xb2, 0x10, 0x28, 0x1d, 0xb, 0x9, 0x94, 0x44, 0x59, 0xfc, 0x6e, 0x60, 0x8, 0x0, 0xa7, 0xd6, 0xf4, 0xfc, 0x3c, 0x38, 0x9b, 0x71, 0x32, 0x26, 0xcd, 0x41, 0xa5, 0x5c, 0x1c, 0x45, 0xb3, 0xd5, 0x8d, 0xa2, 0xdd, 0x6a, 0xab, 0xf3, 0x70, 0x28, 0xca, 0x8a, 0xae, 0xa3, 0x3c, 0xa, 0xc7, 0xdb, 0xcf, 0x74, 0xdb, 0x69, 0x93, 0xe0, 0xaa, 0xe1, 0x7c, 0xa7, 0x41, 0xc2, 0x17, 0x86, 0x20, 0x1c, 0xf, 0x9e, 0xc9, 0x9e, 0xe9, 0x64, 0xfd, 0x0, 0xe8, 0xa0, 0x57, 0x22, 0x74, 0x4f, 0xd4, 0x31, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x4, 0x0, 0x0, 0x0, 0xb5, 0xfa, 0x37, 0xea, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x87, 0x8f, 0xcc, 0xbf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xd9, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x7d, 0x91, 0x41, 0x4e, 0xc3, 0x30, 0x14, 0x44, 0x9f, 0xed, 0x8f, 0x6d, 0x35, 0x8b, 0x9a, 0x6d, 0xb9, 0x6, 0xfb, 0xde, 0x81, 0xd3, 0xe4, 0x8, 0xf4, 0x32, 0xbd, 0x1, 0xb, 0x6e, 0xc0, 0x25, 0x60, 0x83, 0xa8, 0x2, 0x6a, 0xa4, 0xc6, 0x49, 0xfc, 0xbb, 0x88, 0x54, 0x11, 0x94, 0x30, 0xb3, 0xf9, 0xd2, 0x9f, 0x19, 0x8d, 0x34, 0x6, 0xc1, 0x13, 0x88, 0x78, 0x1c, 0x96, 0x9, 0x85, 0x91, 0xcc, 0x85, 0x8e, 0x2c, 0x78, 0x2a, 0x12, 0x5b, 0x2a, 0x2, 0x6, 0x3, 0x28, 0x4a, 0x47, 0xcb, 0x37, 0xd, 0x8, 0x81, 0xb4, 0x7f, 0x7a, 0xa8, 0x87, 0xc4, 0xc, 0xd2, 0xbc, 0x3f, 0xbf, 0x1e, 0x19, 0x84, 0xc8, 0x76, 0x57, 0x9f, 0xd2, 0x80, 0xfe, 0x7a, 0x1b, 0x24, 0xed, 0x6a, 0x5e, 0x38, 0xb, 0x9e, 0xaa, 0x4f, 0xfd, 0xdc, 0x8e, 0xd2, 0xd3, 0x27, 0x2a, 0xbc, 0xe0, 0x8, 0x65, 0xe6, 0xe6, 0xd6, 0x94, 0x80, 0x13, 0x2c, 0x46, 0x29, 0xb, 0x2, 0x5, 0x83, 0x15, 0xc0, 0xac, 0x26, 0x18, 0x90, 0xe9, 0x5c, 0x11, 0x30, 0x9, 0x54, 0x17, 0x5, 0xa, 0xa, 0x42, 0x41, 0xcb, 0x62, 0x87, 0x2, 0x4a, 0x11, 0x46, 0xba, 0xd5, 0x84, 0x8e, 0xd1, 0x92, 0x69, 0x6d, 0xe3, 0xd0, 0x3f, 0x74, 0xd8, 0x86, 0x96, 0xec, 0xb8, 0xc3, 0xa5, 0xaf, 0xfb, 0x47, 0x1f, 0x3d, 0xe1, 0xc6, 0x48, 0x3c, 0x7d, 0x1e, 0x3e, 0xde, 0xf8, 0x31, 0x6c, 0xfe, 0x1d, 0xab, 0x15, 0x32, 0x30, 0x70, 0x5e, 0x9b, 0xfb, 0xa, 0xbb, 0x7c, 0x61, 0xa2, 0x50, 0x44, 0x45, 0xca, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char button_focus_png[] = {  	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0xff, 0xff, 0xff, 0xb9, 0xa2, 0x9b, 0xc9, 0x0, 0x0, 0x0, 0xf, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xe, 0x39, 0x68, 0x7a, 0x7b, 0x3a, 0x74, 0x10, 0x8, 0x69, 0xf, 0x6, 0x75, 0x11, 0xb8, 0x16, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xf, 0x18, 0xba, 0x0, 0xd9, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x3f, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc0, 0x4, 0x42, 0x26, 0xa1, 0xa1, 0xce, 0x8a, 0x40, 0x46, 0x7a, 0xe7, 0xcc, 0x99, 0x33, 0xca, 0x80, 0x8c, 0xd5, 0x20, 0xe1, 0x5d, 0x40, 0x1c, 0x3, 0x62, 0x1c, 0x5, 0xe2, 0x48, 0x10, 0x63, 0x2a, 0x7e, 0x6, 0x5c, 0x31, 0x58, 0xbb, 0x14, 0x10, 0xe7, 0xee, 0x9c, 0x39, 0x73, 0x1e, 0xc8, 0x40, 0x31, 0x98, 0x15, 0xe8, 0x0, 0x0, 0xec, 0xe0, 0x11, 0x6d, 0x2c, 0x6f, 0x45, 0x2b, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  }; -static const unsigned char button_group_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x8, 0x6, 0x0, 0x0, 0x0, 0x73, 0x7a, 0x7a, 0xf4, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x60, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0x97, 0xcd, 0x6e, 0x82, 0x40, 0x14, 0x46, 0x8f, 0xad, 0xa0, 0x51, 0x1a, 0xd1, 0xa5, 0xab, 0x76, 0xd1, 0xf7, 0x7f, 0xa1, 0xb6, 0xa6, 0x9b, 0x6e, 0x8b, 0x9, 0x5a, 0xa3, 0x18, 0xbb, 0xb8, 0x40, 0xc6, 0xf1, 0x32, 0x19, 0x90, 0x61, 0xd3, 0x9e, 0x25, 0x19, 0xf3, 0x1d, 0xe6, 0xc7, 0xf9, 0x80, 0xbf, 0xce, 0xa8, 0xe5, 0xf8, 0x19, 0xb0, 0x0, 0x12, 0x20, 0x2, 0xe2, 0xf2, 0xf9, 0x11, 0x38, 0x1, 0x39, 0xb0, 0x5, 0xf6, 0x7d, 0xb, 0x2c, 0x81, 0x35, 0x30, 0xf1, 0x1c, 0x7f, 0x0, 0xbe, 0x80, 0xec, 0x5e, 0x81, 0x9, 0xf0, 0xc, 0xcc, 0x3d, 0x83, 0x6d, 0x76, 0xc0, 0x6, 0x99, 0x21, 0x95, 0x47, 0xc7, 0x8f, 0x13, 0xe0, 0x15, 0x98, 0x76, 0xc, 0x7, 0x59, 0xa2, 0x15, 0xb2, 0x24, 0xaa, 0x44, 0x93, 0xc0, 0x53, 0x19, 0xee, 0x12, 0xf4, 0xe5, 0xa1, 0x94, 0xc8, 0x35, 0x9, 0x2d, 0x20, 0xee, 0x31, 0xbc, 0x62, 0x84, 0x6c, 0xde, 0xc, 0x38, 0xdb, 0x76, 0x36, 0x2f, 0xc0, 0xb8, 0xc7, 0xf0, 0x8a, 0x31, 0xb2, 0x9f, 0xae, 0xb0, 0x5, 0x96, 0x74, 0xdf, 0x70, 0x3e, 0xcc, 0x81, 0xd4, 0x25, 0xb0, 0xe, 0x18, 0xae, 0x66, 0x98, 0x2, 0x33, 0xfc, 0xcf, 0xf9, 0x3d, 0x4c, 0xcb, 0xac, 0x1b, 0x81, 0xf4, 0x76, 0x6c, 0x30, 0x16, 0x9a, 0x40, 0xc8, 0xb5, 0xb7, 0x49, 0x34, 0x81, 0x58, 0x19, 0x18, 0x8a, 0x48, 0x13, 0x88, 0x94, 0x81, 0xa1, 0xa8, 0x5f, 0xd6, 0x14, 0xb8, 0xc, 0x28, 0x50, 0x67, 0x99, 0x2, 0xc5, 0x80, 0x2, 0x27, 0x4d, 0xa0, 0xf1, 0xc6, 0x1a, 0x4a, 0x20, 0x1f, 0x50, 0xa0, 0xce, 0x32, 0x5, 0xb6, 0x3, 0xa, 0xd4, 0x45, 0xc5, 0x14, 0xd8, 0x23, 0x4d, 0x26, 0x34, 0x7, 0xe0, 0x47, 0x13, 0x0, 0xa9, 0x51, 0xa1, 0xb9, 0xca, 0xb0, 0x5, 0x32, 0xa4, 0x46, 0x85, 0x22, 0xc7, 0xea, 0x89, 0x5a, 0x1f, 0xd8, 0x10, 0xe6, 0x48, 0x16, 0xc0, 0xa7, 0xfd, 0x50, 0x6b, 0x3d, 0x67, 0x64, 0x16, 0x56, 0xb4, 0xaf, 0xed, 0x4d, 0x5c, 0x80, 0x77, 0x8c, 0xb5, 0x77, 0x9, 0x80, 0xfc, 0x27, 0xe4, 0xc8, 0xad, 0xa5, 0xcd, 0x52, 0x1b, 0xa, 0xe0, 0x83, 0x86, 0x63, 0xee, 0xea, 0x7d, 0x47, 0xe0, 0x1b, 0xb9, 0x25, 0xbb, 0x5e, 0x54, 0x39, 0xf0, 0x86, 0xf2, 0xe6, 0x15, 0xbe, 0x53, 0x9c, 0x22, 0x4d, 0xc6, 0xb7, 0xa2, 0xf7, 0xf6, 0x61, 0x62, 0xe3, 0xf3, 0x69, 0x96, 0xe1, 0x78, 0xe3, 0x7f, 0x6c, 0x7e, 0x1, 0x6e, 0x8e, 0x40, 0x43, 0xe2, 0x3d, 0x6f, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 -}; -  static const unsigned char button_hover_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xea, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd3, 0x2d, 0x52, 0x82, 0x61, 0x14, 0xc5, 0xf1, 0xdf, 0x65, 0x58, 0x80, 0x45, 0x67, 0x94, 0x60, 0xa2, 0xab, 0x7b, 0xa0, 0xf9, 0xc1, 0xb8, 0x0, 0xb5, 0x13, 0xc4, 0x1d, 0xb0, 0x3, 0x8, 0x68, 0x56, 0x56, 0x20, 0x43, 0x64, 0xf, 0x6c, 0x80, 0x64, 0x80, 0xa0, 0x5, 0x36, 0xe0, 0x35, 0xf8, 0xf2, 0x26, 0xf9, 0x98, 0xa1, 0x7a, 0xd2, 0xd, 0xf7, 0x7f, 0xee, 0x99, 0x67, 0xce, 0xc3, 0x9e, 0x8a, 0x72, 0xca, 0x8c, 0xa7, 0xa1, 0x87, 0xc, 0xd, 0x1c, 0xae, 0xd9, 0xff, 0x8a, 0x34, 0xee, 0xde, 0x78, 0x15, 0x91, 0xa5, 0x41, 0xa7, 0x93, 0x95, 0xe5, 0xb9, 0x61, 0x72, 0x89, 0x29, 0x3e, 0xd6, 0x18, 0x9c, 0xa2, 0x2e, 0x8c, 0xe, 0x26, 0x9a, 0x9d, 0x4e, 0x7c, 0x57, 0x61, 0x79, 0xe6, 0x3e, 0xb9, 0x8c, 0xd0, 0xea, 0x5e, 0xc7, 0xcb, 0xa6, 0xc8, 0xed, 0xf7, 0x6c, 0xa1, 0xbf, 0xb8, 0x70, 0x87, 0xd7, 0xa, 0x14, 0xb1, 0xa7, 0xdb, 0x60, 0xe8, 0x35, 0xe3, 0x19, 0xd3, 0xa4, 0x1, 0xd5, 0xe2, 0x25, 0x8e, 0x31, 0xdb, 0x6, 0x97, 0xa, 0xb3, 0xe0, 0x4, 0x2a, 0x3b, 0x43, 0x6b, 0xf4, 0x6f, 0x50, 0x18, 0x24, 0x73, 0xa9, 0xb6, 0x33, 0x95, 0x6a, 0xc9, 0xbc, 0x34, 0x8, 0xc6, 0xa8, 0x17, 0x25, 0xd9, 0xa8, 0x62, 0xa7, 0x5e, 0x30, 0xbf, 0x3d, 0x38, 0x98, 0x18, 0x2c, 0x2e, 0xdc, 0xa2, 0xdf, 0x1e, 0xe6, 0xa3, 0xdd, 0xaa, 0x3c, 0x28, 0x8e, 0xaf, 0x62, 0x65, 0xb4, 0x47, 0xee, 0x93, 0x46, 0xa4, 0xa3, 0x3f, 0x93, 0x87, 0xcf, 0x60, 0xdc, 0xbb, 0xf2, 0xb6, 0xfa, 0x4c, 0x7b, 0xeb, 0x7, 0xd1, 0xc3, 0x49, 0x77, 0x7a, 0x49, 0x64, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x8d, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0x40, 0x4b, 0x5f, 0x5a, 0x6c, 0x5f, 0x5a, 0x6b, 0x56, 0x53, 0x64, 0x57, 0x53, 0x64, 0x3e, 0x3b, 0x46, 0x57, 0x53, 0x63, 0x57, 0x53, 0x63, 0x5b, 0x57, 0x68, 0x5a, 0x56, 0x67, 0x4d, 0x4a, 0x57, 0x49, 0x46, 0x52, 0x48, 0x45, 0x51, 0x5b, 0x57, 0x66, 0x59, 0x55, 0x64, 0x47, 0x44, 0x50, 0x58, 0x54, 0x64, 0x46, 0x43, 0x50, 0x56, 0x53, 0x63, 0x45, 0x42, 0x4f, 0x56, 0x53, 0x62, 0x45, 0x42, 0x4e, 0x55, 0x51, 0x62, 0x44, 0x41, 0x4e, 0x55, 0x51, 0x60, 0x44, 0x41, 0x4d, 0x43, 0x40, 0x4c, 0x47, 0x43, 0x51, 0x43, 0x3f, 0x4d, 0x42, 0x3f, 0x4c, 0x53, 0x50, 0x5f, 0x53, 0x4f, 0x5e, 0xff, 0xff, 0xff, 0x99, 0x8b, 0x2e, 0x55, 0x0, 0x0, 0x0, 0x16, 0x74, 0x52, 0x4e, 0x53, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x77, 0xef, 0xef, 0xef, 0xef, 0x77, 0xef, 0xed, 0x6b, 0x28, 0x52, 0x7a, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x2e, 0x54, 0xd3, 0x10, 0x87, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x97, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x65, 0xcf, 0x49, 0x12, 0x82, 0x30, 0x10, 0x5, 0xd0, 0xce, 0x48, 0x46, 0x40, 0x51, 0x4, 0x41, 0x45, 0xc4, 0x20, 0x88, 0xf7, 0xbf, 0x9e, 0x21, 0x45, 0x65, 0xa1, 0x6f, 0xd7, 0xbf, 0xaa, 0x27, 0x0, 0x84, 0x9, 0x65, 0xdc, 0x63, 0x94, 0x60, 0x4, 0x80, 0x12, 0x21, 0x95, 0x36, 0xd6, 0x1a, 0xad, 0xa4, 0x48, 0x10, 0x60, 0x91, 0x66, 0xe5, 0x29, 0x28, 0xb3, 0x54, 0x60, 0x20, 0x32, 0xaf, 0xea, 0x73, 0x50, 0x57, 0xb9, 0x24, 0x40, 0x55, 0xb3, 0xd5, 0x3e, 0x69, 0x14, 0x5, 0xa6, 0xdb, 0x4b, 0xd4, 0x6a, 0x6, 0xdc, 0x5c, 0x6f, 0xd1, 0xd5, 0x70, 0xe0, 0xb6, 0xbb, 0x47, 0x9d, 0x5d, 0x83, 0xfe, 0x11, 0xf5, 0x6b, 0x60, 0x86, 0x67, 0x34, 0xf8, 0x16, 0xa6, 0xdd, 0x18, 0x39, 0x3f, 0x94, 0x2a, 0x37, 0xbe, 0x36, 0xa3, 0xf3, 0x6b, 0x89, 0xdc, 0x4d, 0xf3, 0x3b, 0x98, 0xa7, 0xbd, 0x3f, 0xc, 0x8b, 0xe2, 0xb0, 0x7c, 0x82, 0xe5, 0x58, 0xf8, 0xd3, 0xff, 0x9e, 0xfb, 0x7d, 0xff, 0xb, 0x74, 0xeb, 0x15, 0x11, 0xe1, 0xa7, 0x60, 0xfc, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char button_normal_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x2, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0xa1, 0x4e, 0xc3, 0x0, 0x10, 0x86, 0xbf, 0xbf, 0x99, 0x98, 0x60, 0x38, 0x48, 0x60, 0x82, 0x64, 0x4b, 0x1f, 0xa5, 0x6e, 0x82, 0xa0, 0xc7, 0x86, 0xaf, 0x20, 0xc, 0xd1, 0xe1, 0xea, 0x18, 0xa2, 0xc3, 0xc, 0xf4, 0xe8, 0x78, 0x1, 0x82, 0xec, 0xa3, 0x2c, 0x2c, 0x41, 0xc, 0x1, 0x12, 0x44, 0x67, 0x76, 0x88, 0x95, 0x41, 0x48, 0x43, 0x21, 0xb5, 0xfc, 0xea, 0xc4, 0x7d, 0x5f, 0x2e, 0x97, 0x3b, 0x28, 0x19, 0xad, 0x2b, 0x33, 0x9d, 0x5d, 0xde, 0x1e, 0x99, 0xe1, 0x61, 0xda, 0xca, 0xef, 0xb6, 0x17, 0x89, 0xe4, 0xfc, 0xa4, 0x3d, 0x46, 0xb2, 0xb5, 0x20, 0xc, 0x43, 0x27, 0xad, 0x35, 0xee, 0x40, 0x2d, 0xc4, 0x94, 0xa5, 0x1e, 0x73, 0x5, 0x8e, 0xed, 0x61, 0xb8, 0x18, 0xf7, 0xd5, 0xb7, 0x87, 0xfd, 0x30, 0xc, 0x97, 0x15, 0x80, 0xc5, 0x66, 0xb3, 0x8b, 0xd1, 0x42, 0xf2, 0x7, 0xbd, 0xf6, 0xf5, 0x4f, 0x23, 0x7, 0x51, 0xec, 0x4b, 0x1a, 0xa5, 0xb5, 0x46, 0x7, 0x18, 0x3b, 0xab, 0xe9, 0xf1, 0x10, 0xd3, 0x22, 0x18, 0xe0, 0xe2, 0xb4, 0x73, 0x85, 0x98, 0xa, 0x3c, 0x0, 0x27, 0xdb, 0xc4, 0xe, 0x30, 0x2f, 0x82, 0xbf, 0x64, 0x6e, 0xd2, 0xee, 0xa7, 0xa0, 0x44, 0xfe, 0x5, 0x99, 0x40, 0x66, 0x4f, 0x40, 0xfd, 0xf, 0x5c, 0x3d, 0x63, 0x56, 0x2, 0x83, 0x4, 0xc3, 0xd, 0xa2, 0xd8, 0x2f, 0x22, 0x83, 0x28, 0xf6, 0x31, 0x5c, 0x83, 0x4, 0xa0, 0x2, 0x50, 0x7d, 0x9d, 0xc5, 0xe9, 0x46, 0xf3, 0x40, 0xd2, 0xa8, 0x3f, 0x9c, 0x1c, 0xff, 0xee, 0x94, 0x67, 0x31, 0x7c, 0x7b, 0xa6, 0xfe, 0x70, 0xd2, 0x15, 0x78, 0x66, 0xce, 0x76, 0x1e, 0x2f, 0x2d, 0x9f, 0xd, 0x92, 0x41, 0xef, 0xf0, 0xe6, 0xe3, 0x99, 0x4a, 0xe7, 0x1d, 0xad, 0xe8, 0x5d, 0x6, 0x36, 0xf7, 0x1f, 0x56, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x8a, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x3a, 0x44, 0x56, 0x53, 0x61, 0x56, 0x52, 0x60, 0x47, 0x44, 0x52, 0x33, 0x31, 0x39, 0x47, 0x44, 0x50, 0x47, 0x44, 0x51, 0x52, 0x50, 0x5d, 0x51, 0x4f, 0x5d, 0x46, 0x42, 0x4e, 0x42, 0x3e, 0x4a, 0x41, 0x3e, 0x49, 0x51, 0x4e, 0x5b, 0x40, 0x3e, 0x48, 0x4f, 0x4c, 0x59, 0x3f, 0x3d, 0x47, 0x4e, 0x4a, 0x58, 0x3e, 0x3b, 0x46, 0x4b, 0x49, 0x55, 0x3c, 0x3a, 0x44, 0x4a, 0x47, 0x54, 0x3b, 0x39, 0x43, 0x49, 0x46, 0x53, 0x3a, 0x38, 0x42, 0x47, 0x45, 0x50, 0x39, 0x37, 0x40, 0x47, 0x43, 0x50, 0x38, 0x35, 0x3f, 0x36, 0x34, 0x3e, 0x44, 0x42, 0x4d, 0x44, 0x41, 0x4c, 0xff, 0xff, 0xff, 0xe5, 0x37, 0x10, 0x78, 0x0, 0x0, 0x0, 0x15, 0x74, 0x52, 0x4e, 0x53, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x77, 0xef, 0xef, 0xef, 0x77, 0xef, 0xed, 0xe8, 0xff, 0x76, 0xed, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x2d, 0xcd, 0xda, 0x41, 0x3d, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x93, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x65, 0xcf, 0x47, 0x12, 0x82, 0x40, 0x10, 0x5, 0xd0, 0x9e, 0xc8, 0x44, 0x92, 0x22, 0x41, 0x54, 0x44, 0x40, 0x14, 0xef, 0x7f, 0x3e, 0x7, 0x8a, 0xea, 0x85, 0xbe, 0xe5, 0xaf, 0xea, 0xf0, 0x1, 0x8, 0x65, 0x5c, 0xc8, 0x40, 0x70, 0x46, 0x9, 0x0, 0x89, 0x94, 0x36, 0xd6, 0x79, 0xef, 0xac, 0xd1, 0x2a, 0x22, 0x40, 0x55, 0x9c, 0x14, 0xa7, 0x4d, 0x91, 0xc4, 0x8a, 0x2, 0xd3, 0x69, 0x59, 0xd5, 0x9b, 0xaa, 0x4c, 0x35, 0x3, 0x6e, 0x9a, 0xfa, 0xbc, 0xab, 0x1b, 0xc3, 0x41, 0xd8, 0xf6, 0x82, 0x5a, 0x2b, 0x40, 0xba, 0xeb, 0xd, 0x5d, 0x9d, 0x4, 0xe9, 0xbb, 0x3b, 0xea, 0xfc, 0x1a, 0xf4, 0xf, 0xd4, 0xaf, 0x81, 0x1b, 0x46, 0x34, 0x84, 0x11, 0x61, 0xa7, 0x27, 0x9a, 0xc2, 0x52, 0x6e, 0xe6, 0x17, 0x9a, 0xc3, 0x59, 0xa6, 0xb3, 0xf1, 0xbd, 0x1b, 0xb3, 0xf0, 0x18, 0x55, 0xf9, 0x61, 0xf9, 0x6c, 0x96, 0x63, 0x1e, 0x5e, 0xff, 0x2b, 0xf7, 0x5b, 0xff, 0xb, 0x69, 0x5a, 0x14, 0xfa, 0x84, 0xf6, 0xc2, 0x8, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char button_pressed_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xe8, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd3, 0x21, 0x4f, 0x42, 0x51, 0x18, 0xc6, 0xf1, 0xdf, 0xb9, 0x50, 0xa4, 0xeb, 0xa6, 0x4, 0x13, 0x1f, 0xe5, 0x36, 0x82, 0xf3, 0x3, 0x88, 0x9d, 0x60, 0x12, 0x93, 0x8c, 0x41, 0xc3, 0x8a, 0x66, 0xe4, 0x1b, 0x38, 0x23, 0x1f, 0x85, 0x64, 0x80, 0xa0, 0x9d, 0xc6, 0x7d, 0xd, 0x5e, 0x68, 0x17, 0xd8, 0xa8, 0xfe, 0xd3, 0xd9, 0xd9, 0xfb, 0xfc, 0x77, 0xde, 0xed, 0x39, 0x9c, 0x48, 0xda, 0x9d, 0x22, 0x52, 0xdf, 0xf8, 0x9e, 0x94, 0x7, 0xe7, 0x15, 0xc3, 0x3f, 0xc4, 0x7c, 0xa8, 0x37, 0x95, 0x52, 0xec, 0x4, 0x83, 0x18, 0x64, 0x1b, 0x8d, 0x8f, 0x44, 0x1b, 0x8b, 0xe0, 0xab, 0x42, 0x70, 0x8d, 0x16, 0x3e, 0x33, 0xeb, 0x9b, 0x41, 0x1a, 0x14, 0x75, 0x28, 0x9c, 0x75, 0x12, 0xed, 0x10, 0xdd, 0x51, 0x7a, 0x7a, 0xdb, 0xf7, 0xe4, 0x7e, 0x8c, 0xbb, 0x98, 0x6c, 0x34, 0xee, 0x30, 0xcd, 0x4a, 0x77, 0x8e, 0xc5, 0xa1, 0x30, 0xc, 0x53, 0xef, 0x15, 0x8b, 0x8c, 0x1c, 0xea, 0x10, 0x5c, 0x62, 0x79, 0x28, 0xbc, 0x25, 0x58, 0x6, 0x57, 0x90, 0x1d, 0x1b, 0xaa, 0xe2, 0x5f, 0x50, 0xa, 0x32, 0x56, 0x89, 0xe6, 0xb1, 0xa1, 0x44, 0x33, 0x63, 0xb5, 0x13, 0x14, 0xcc, 0xd1, 0x2a, 0x4b, 0xb2, 0x97, 0x72, 0xa6, 0x55, 0x66, 0xfe, 0x7a, 0x50, 0xb3, 0x9e, 0x15, 0x1a, 0xb7, 0x98, 0xf4, 0x63, 0xfc, 0x70, 0x4c, 0x95, 0x6b, 0xd6, 0xb3, 0xf2, 0xae, 0x24, 0x22, 0x3d, 0x7b, 0xe9, 0x64, 0xe4, 0x5, 0x17, 0x15, 0xfb, 0x7e, 0x17, 0xcc, 0x47, 0x1e, 0xdf, 0xb7, 0x9f, 0xe9, 0x64, 0x7e, 0x1, 0x43, 0xf2, 0x49, 0x4e, 0xb4, 0x2a, 0xa5, 0x9, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x7, 0x1c, 0xc, 0x14, 0x2b, 0xf9, 0x77, 0x52, 0x64, 0x0, 0x0, 0x1, 0x92, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x8d, 0x93, 0x4d, 0x4e, 0x1b, 0x41, 0x10, 0x85, 0xbf, 0xea, 0xaa, 0x1e, 0x20, 0x83, 0xf9, 0x9, 0x36, 0xb2, 0x85, 0x72, 0x84, 0x8, 0x65, 0x11, 0xe5, 0xc, 0x9c, 0x80, 0x73, 0x10, 0xee, 0xc1, 0x41, 0x38, 0x1, 0xab, 0xec, 0xa3, 0x2c, 0x2, 0x8a, 0xe0, 0x2, 0x51, 0xc2, 0x48, 0x46, 0x42, 0x64, 0xc6, 0x91, 0x21, 0xf4, 0x74, 0x16, 0x2e, 0xb0, 0x71, 0x2, 0xf2, 0x93, 0x9e, 0xba, 0x16, 0xdd, 0xaf, 0x5e, 0xa9, 0x5f, 0x9, 0x60, 0x40, 0x1, 0x2c, 0x1, 0xcb, 0x5e, 0x2b, 0x10, 0x78, 0x8a, 0x16, 0x48, 0xc0, 0x1d, 0x30, 0x6, 0x6e, 0x81, 0x3b, 0xf3, 0x87, 0x25, 0xb0, 0x9, 0xac, 0x7b, 0xbd, 0xc, 0x88, 0x13, 0x20, 0x3b, 0xc7, 0xc0, 0x8, 0xb8, 0x1, 0xae, 0x81, 0x91, 0xf9, 0xe5, 0xad, 0x77, 0xbb, 0x1f, 0xf6, 0x7b, 0xdd, 0xfe, 0x41, 0x4a, 0x69, 0x2d, 0x93, 0xf9, 0x1f, 0x4, 0x41, 0x55, 0x7f, 0xd, 0xaf, 0xaa, 0xa3, 0xaf, 0x67, 0x9f, 0x8f, 0x81, 0x64, 0xde, 0xb1, 0xbb, 0xdd, 0x1b, 0x7c, 0xac, 0x9b, 0x9b, 0xce, 0xd9, 0xb7, 0x2f, 0xfc, 0xf3, 0x5e, 0xa6, 0xe5, 0xee, 0xdb, 0xf7, 0x6b, 0xdb, 0xbd, 0xc1, 0x21, 0xf0, 0x9, 0x18, 0x5, 0x60, 0x5, 0xd8, 0x48, 0x6d, 0xdb, 0x39, 0xbf, 0x38, 0xc5, 0x34, 0x62, 0x36, 0x47, 0x9d, 0xf2, 0xfc, 0xe2, 0x94, 0xd4, 0xb6, 0x1d, 0x60, 0x3, 0x58, 0x31, 0x20, 0x2, 0x65, 0x40, 0x88, 0x31, 0x92, 0xbd, 0xbb, 0x8, 0xe4, 0x3c, 0x39, 0x67, 0x91, 0x33, 0x84, 0x89, 0xa5, 0x12, 0x88, 0xf, 0x3f, 0x10, 0x45, 0x5, 0xb3, 0xc8, 0x73, 0x10, 0x11, 0xb2, 0xab, 0x8b, 0xa, 0xde, 0xb8, 0x30, 0x9f, 0xb0, 0x8, 0xa2, 0xc4, 0x58, 0xb0, 0x8, 0x82, 0x28, 0xde, 0x58, 0xcc, 0xff, 0x5c, 0x45, 0x64, 0x61, 0x1, 0x99, 0xcc, 0xa5, 0x80, 0x4e, 0x5, 0xc2, 0xcb, 0x2, 0xe2, 0x41, 0x10, 0x40, 0xc2, 0x53, 0x81, 0xc, 0xa8, 0x8a, 0x52, 0x2c, 0xe8, 0x40, 0x27, 0x23, 0x28, 0x90, 0xcd, 0xe3, 0x79, 0x1b, 0x34, 0x50, 0x14, 0x4b, 0xf0, 0x4c, 0x88, 0x66, 0xbd, 0x4, 0xd, 0x78, 0x94, 0x93, 0x79, 0x3c, 0x9b, 0x18, 0x63, 0x7a, 0xbd, 0xb9, 0xa5, 0xcd, 0xa8, 0x7e, 0xb4, 0x3a, 0x2f, 0x15, 0x10, 0xca, 0x72, 0x95, 0x18, 0x8b, 0x4, 0x34, 0xc0, 0xd8, 0x80, 0x1a, 0x18, 0x56, 0xd5, 0xcf, 0x93, 0x41, 0x7f, 0x67, 0xaf, 0xb3, 0xba, 0x1e, 0x5e, 0x8a, 0xb2, 0x99, 0xb5, 0x97, 0xd5, 0x8f, 0x13, 0x60, 0x8, 0xd4, 0x2, 0x74, 0x9d, 0x6f, 0x80, 0xbe, 0x2f, 0x55, 0xe9, 0x26, 0xc2, 0xcc, 0x26, 0x66, 0x5f, 0xa4, 0x6b, 0xa0, 0x2, 0xbe, 0x3, 0x57, 0xe6, 0x56, 0x1e, 0x66, 0x1a, 0x2, 0xaf, 0x3c, 0x24, 0x36, 0x67, 0xe0, 0x1e, 0xf8, 0x3, 0xfc, 0xf6, 0x6d, 0xac, 0x81, 0xe6, 0x2f, 0x7c, 0x22, 0x6d, 0x74, 0x25, 0xb, 0xb3, 0xa2, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char checked_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0xa, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xc5, 0x92, 0x3d, 0x6a, 0xc3, 0x40, 0x10, 0x46, 0xbf, 0x4f, 0x3f, 0xbd, 0x4d, 0x88, 0xd3, 0xed, 0xa, 0xcc, 0x9e, 0x22, 0x4d, 0x20, 0xc7, 0x91, 0xfb, 0xf8, 0x6, 0x82, 0xa4, 0xb, 0x4e, 0xf0, 0x25, 0xe4, 0x6b, 0xe4, 0x10, 0x8b, 0xa, 0x6d, 0xb1, 0x10, 0x37, 0x72, 0xbd, 0xa, 0x4c, 0x1a, 0x9, 0x14, 0xdb, 0x92, 0x52, 0x25, 0x53, 0xcd, 0x30, 0xfb, 0xde, 0xce, 0xc0, 0x0, 0xff, 0x1d, 0xec, 0x93, 0xba, 0xae, 0xef, 0x45, 0x64, 0xb, 0xe0, 0x76, 0x12, 0x20, 0x8f, 0x22, 0x52, 0x64, 0x59, 0xf6, 0x1, 0x0, 0xd1, 0xa0, 0xf7, 0x34, 0x7, 0x3, 0x80, 0x88, 0xac, 0x48, 0x6e, 0xfb, 0x3a, 0x1a, 0x36, 0x66, 0xd8, 0x86, 0xe4, 0xa1, 0x7b, 0x7b, 0x77, 0x21, 0x98, 0x83, 0xdb, 0xb6, 0xdd, 0x68, 0xad, 0x9f, 0x1, 0x94, 0xc3, 0xc6, 0xac, 0x80, 0xe4, 0x29, 0x8a, 0xa2, 0x8d, 0x31, 0xa6, 0xf2, 0xde, 0x6b, 0x0, 0xf, 0xbf, 0x16, 0x90, 0x3c, 0x91, 0xcc, 0x95, 0x52, 0x95, 0xf7, 0x5e, 0x87, 0x10, 0xde, 0x1, 0xdc, 0x4c, 0xa, 0xba, 0x3d, 0x1b, 0x0, 0x4d, 0x8, 0x21, 0x57, 0x4a, 0x55, 0xd6, 0xda, 0x75, 0x8, 0x61, 0x7f, 0xe, 0x3, 0x40, 0x72, 0x56, 0x97, 0x5a, 0xeb, 0x17, 0x6b, 0x6d, 0x9, 0x0, 0xc6, 0x98, 0xca, 0x5a, 0xbb, 0x4e, 0xd3, 0x74, 0x7, 0x60, 0x79, 0x6d, 0xca, 0x1f, 0x2, 0x92, 0x8f, 0xce, 0xb9, 0x83, 0x52, 0xaa, 0x2, 0x80, 0x6e, 0xec, 0xd7, 0x31, 0xf8, 0x42, 0x20, 0x22, 0xb, 0x0, 0x6f, 0xce, 0xb9, 0x3c, 0x49, 0x92, 0xaf, 0x6b, 0x3b, 0x8f, 0xa, 0xba, 0xb, 0x5b, 0x89, 0xc8, 0x42, 0x44, 0x76, 0x21, 0x4, 0x8c, 0xfd, 0x4c, 0xf2, 0xb3, 0xcf, 0x87, 0x87, 0x54, 0x90, 0x3c, 0x76, 0xe5, 0x72, 0xa, 0x8e, 0xe3, 0xb8, 0x98, 0x9a, 0xea, 0x6f, 0xe3, 0x1b, 0x38, 0xbf, 0x6e, 0xb3, 0x2e, 0xdd, 0xd5, 0x21, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x8d, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x58, 0x56, 0x63, 0xb0, 0xaf, 0xb5, 0x38, 0x37, 0x40, 0x20, 0x20, 0x24, 0xb6, 0xb6, 0xb9, 0x57, 0x57, 0x5a, 0x20, 0x20, 0x24, 0x38, 0x36, 0x40, 0x20, 0x20, 0x25, 0x1e, 0x1e, 0x22, 0x1f, 0x1f, 0x23, 0x8b, 0x8b, 0x8d, 0xff, 0xff, 0xff, 0x20, 0x20, 0x24, 0x22, 0x22, 0x27, 0x23, 0x23, 0x28, 0x42, 0x42, 0x47, 0xf8, 0xf8, 0xf8, 0xfe, 0xfe, 0xfe, 0x25, 0x25, 0x2a, 0x4e, 0x4e, 0x52, 0x26, 0x26, 0x2b, 0xc5, 0xc5, 0xc7, 0xaa, 0xaa, 0xab, 0xb8, 0xb8, 0xba, 0x5f, 0x5f, 0x63, 0x74, 0x74, 0x77, 0xed, 0xed, 0xed, 0x33, 0x33, 0x38, 0x8d, 0x8d, 0x8f, 0xb8, 0xb8, 0xb9, 0x35, 0x35, 0x39, 0x3a, 0x3a, 0x3e, 0xfb, 0xfb, 0xfb, 0xfa, 0xfa, 0xfa, 0xb2, 0xb2, 0xb4, 0x45, 0x45, 0x49, 0x61, 0x61, 0x65, 0x8f, 0x8f, 0x92, 0x63, 0x63, 0x66, 0x2a, 0x2a, 0x2f, 0x40, 0x82, 0xb, 0xf6, 0x0, 0x0, 0x0, 0xf, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x7, 0x27, 0x50, 0x66, 0x68, 0x6a, 0x81, 0xb4, 0xfa, 0xdd, 0xfb, 0xfb, 0xb4, 0xfa, 0xb8, 0xf0, 0x7f, 0x59, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x12, 0x7b, 0xbc, 0x6c, 0x0, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x8e, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x65, 0xcf, 0x5b, 0x12, 0x82, 0x30, 0xc, 0x40, 0x51, 0x48, 0x5b, 0x15, 0x5, 0x5b, 0x42, 0x2b, 0x4, 0x50, 0x40, 0xc5, 0xb7, 0xee, 0x7f, 0x79, 0x96, 0x8a, 0x88, 0x7a, 0x3f, 0xcf, 0x4c, 0x26, 0x89, 0xe7, 0xfd, 0xe5, 0x3, 0xe3, 0xc2, 0x35, 0x99, 0x82, 0x6f, 0x1, 0x66, 0x81, 0x54, 0xae, 0x18, 0xe7, 0x60, 0x81, 0x5, 0x89, 0x36, 0x5d, 0xab, 0x34, 0x5b, 0x30, 0xb, 0x5c, 0x6a, 0xa2, 0xbc, 0x20, 0x2a, 0x71, 0x2d, 0xb9, 0x5, 0xa1, 0xc, 0x6d, 0xb0, 0xa2, 0x1a, 0x9b, 0xad, 0x12, 0x3d, 0xec, 0x70, 0xdf, 0x36, 0x58, 0x9b, 0x1, 0xe, 0xc7, 0xd3, 0x19, 0x4b, 0xfa, 0x80, 0x9d, 0xc9, 0xd2, 0xcb, 0x18, 0xae, 0x88, 0x37, 0x1a, 0x43, 0x91, 0xdf, 0x1f, 0x6f, 0x70, 0x6b, 0x5f, 0x69, 0xb7, 0x76, 0x38, 0xcc, 0xe8, 0x24, 0xec, 0xe, 0x83, 0x28, 0xec, 0x4f, 0x97, 0xcb, 0x8, 0xbe, 0x9e, 0xe3, 0xcc, 0x3d, 0xf7, 0xd3, 0x13, 0x10, 0x58, 0xd, 0x44, 0xd4, 0xa5, 0x38, 0x3e, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char checker_bg_png[] = { @@ -51,11 +47,11 @@ static const unsigned char checker_bg_png[] = {  };  static const unsigned char close_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xbe, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x90, 0x3b, 0xe, 0xc2, 0x40, 0xc, 0x44, 0x9f, 0x9, 0x45, 0xf8, 0x14, 0x80, 0xb8, 0xf, 0x15, 0x8a, 0x8, 0x48, 0xdc, 0x94, 0x8a, 0x4, 0x85, 0x9a, 0xe3, 0x20, 0x48, 0xc3, 0xa7, 0x20, 0x32, 0x8d, 0x41, 0x8b, 0xc9, 0x4a, 0xb4, 0xb8, 0xda, 0x1d, 0x7b, 0x9e, 0x35, 0x86, 0xbf, 0x2f, 0x9, 0x3f, 0xaa, 0xba, 0x2, 0xba, 0x40, 0x25, 0x22, 0x37, 0xd7, 0xeb, 0x1, 0x19, 0xf0, 0x10, 0x91, 0xed, 0x4b, 0xef, 0x38, 0x60, 0x2, 0x4c, 0x81, 0xdc, 0xc, 0xa1, 0x39, 0xb7, 0x5e, 0x12, 0x1a, 0x3c, 0xa0, 0x2, 0x4e, 0xc0, 0x18, 0x58, 0xaa, 0x6a, 0x5f, 0x55, 0x53, 0x60, 0x61, 0x5a, 0xd, 0xec, 0xa3, 0x11, 0x6c, 0x5b, 0x6a, 0xdb, 0x26, 0xc0, 0xc5, 0xe4, 0x81, 0x99, 0xb, 0x1f, 0xed, 0xb, 0x10, 0x40, 0xd6, 0xc0, 0xcc, 0x66, 0xe, 0xc0, 0xc6, 0x9b, 0xdb, 0x22, 0xc4, 0x4a, 0x63, 0xcb, 0x7e, 0x89, 0xa0, 0xc0, 0xd0, 0x22, 0x94, 0x22, 0x72, 0x8d, 0x2, 0x9c, 0xb9, 0x6, 0xa, 0x3, 0x84, 0xda, 0x7, 0xc4, 0x47, 0xc8, 0x6c, 0xf0, 0x8c, 0x1d, 0x4c, 0x44, 0xee, 0xc0, 0xce, 0xb4, 0x11, 0x30, 0xf, 0xd, 0x1e, 0xd0, 0x0, 0x47, 0xdb, 0xf2, 0x3e, 0x98, 0xbd, 0x4b, 0xeb, 0x35, 0x6d, 0xb7, 0xf8, 0xe3, 0x7a, 0x2, 0x49, 0x7e, 0x47, 0x10, 0xc3, 0xf7, 0xae, 0x75, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x9b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0x92, 0x31, 0xe, 0xc2, 0x30, 0x10, 0x4, 0x17, 0xaa, 0x3d, 0x67, 0xdb, 0x58, 0xd0, 0xd3, 0xf0, 0xa3, 0x7c, 0x36, 0x3c, 0x82, 0x48, 0x44, 0x22, 0x6f, 0xb1, 0x4d, 0x85, 0x14, 0x81, 0xf, 0x2c, 0x28, 0xe0, 0xda, 0xd5, 0x8c, 0x4e, 0x77, 0xb, 0xfc, 0xd5, 0x98, 0xd9, 0x20, 0x29, 0x7a, 0xb9, 0xa4, 0x68, 0x66, 0x83, 0xb, 0x93, 0xcc, 0x24, 0xa7, 0x9a, 0x44, 0x52, 0x24, 0x39, 0x91, 0xcc, 0x55, 0x89, 0xa4, 0xde, 0xcc, 0xce, 0x24, 0xb, 0xc9, 0x39, 0x84, 0xb0, 0xf7, 0xb2, 0xae, 0xeb, 0x76, 0xde, 0x8a, 0x4f, 0x92, 0x66, 0xd8, 0x91, 0x5c, 0x49, 0x5e, 0x9a, 0xe1, 0xb5, 0x64, 0x5, 0x16, 0x92, 0x8b, 0x7, 0x6f, 0x9b, 0x8c, 0x0, 0x4a, 0x29, 0x9b, 0x26, 0x81, 0xa4, 0x3e, 0xa5, 0x34, 0x2, 0x38, 0x2, 0x58, 0x0, 0xcc, 0x0, 0xe, 0x39, 0xe7, 0xd3, 0xfa, 0xb0, 0xee, 0xea, 0x8f, 0x7, 0x7b, 0xf5, 0x9d, 0xb7, 0xb0, 0x97, 0x55, 0x25, 0x5f, 0x17, 0xe9, 0x2e, 0xf9, 0xb8, 0xca, 0x3f, 0x9b, 0x1b, 0x1a, 0xe3, 0x40, 0x47, 0xa0, 0xda, 0xda, 0x61, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char close_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xbe, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x90, 0x3b, 0xe, 0xc2, 0x40, 0xc, 0x44, 0x9f, 0x9, 0x45, 0xf8, 0x14, 0x80, 0xb8, 0xf, 0x15, 0x8a, 0x8, 0x48, 0xdc, 0x94, 0x8a, 0x4, 0x85, 0x9a, 0xe3, 0x20, 0x48, 0xc3, 0xa7, 0x20, 0x32, 0x8d, 0x41, 0x8b, 0xc9, 0x4a, 0xb4, 0xb8, 0xda, 0x1d, 0x7b, 0x9e, 0x35, 0x86, 0xbf, 0x2f, 0x9, 0x3f, 0xaa, 0xba, 0x2, 0xba, 0x40, 0x25, 0x22, 0x37, 0xd7, 0xeb, 0x1, 0x19, 0xf0, 0x10, 0x91, 0xed, 0x4b, 0xef, 0x38, 0x60, 0x2, 0x4c, 0x81, 0xdc, 0xc, 0xa1, 0x39, 0xb7, 0x5e, 0x12, 0x1a, 0x3c, 0xa0, 0x2, 0x4e, 0xc0, 0x18, 0x58, 0xaa, 0x6a, 0x5f, 0x55, 0x53, 0x60, 0x61, 0x5a, 0xd, 0xec, 0xa3, 0x11, 0x6c, 0x5b, 0x6a, 0xdb, 0x26, 0xc0, 0xc5, 0xe4, 0x81, 0x99, 0xb, 0x1f, 0xed, 0xb, 0x10, 0x40, 0xd6, 0xc0, 0xcc, 0x66, 0xe, 0xc0, 0xc6, 0x9b, 0xdb, 0x22, 0xc4, 0x4a, 0x63, 0xcb, 0x7e, 0x89, 0xa0, 0xc0, 0xd0, 0x22, 0x94, 0x22, 0x72, 0x8d, 0x2, 0x9c, 0xb9, 0x6, 0xa, 0x3, 0x84, 0xda, 0x7, 0xc4, 0x47, 0xc8, 0x6c, 0xf0, 0x8c, 0x1d, 0x4c, 0x44, 0xee, 0xc0, 0xce, 0xb4, 0x11, 0x30, 0xf, 0xd, 0x1e, 0xd0, 0x0, 0x47, 0xdb, 0xf2, 0x3e, 0x98, 0xbd, 0x4b, 0xeb, 0x35, 0x6d, 0xb7, 0xf8, 0xe3, 0x7a, 0x2, 0x49, 0x7e, 0x47, 0x10, 0xc3, 0xf7, 0xae, 0x75, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x9b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0x92, 0x31, 0xe, 0xc2, 0x30, 0x10, 0x4, 0x17, 0xaa, 0x3d, 0x67, 0xdb, 0x58, 0xd0, 0xd3, 0xf0, 0xa3, 0x7c, 0x36, 0x3c, 0x82, 0x48, 0x44, 0x22, 0x6f, 0xb1, 0x4d, 0x85, 0x14, 0x81, 0xf, 0x2c, 0x28, 0xe0, 0xda, 0xd5, 0x8c, 0x4e, 0x77, 0xb, 0xfc, 0xd5, 0x98, 0xd9, 0x20, 0x29, 0x7a, 0xb9, 0xa4, 0x68, 0x66, 0x83, 0xb, 0x93, 0xcc, 0x24, 0xa7, 0x9a, 0x44, 0x52, 0x24, 0x39, 0x91, 0xcc, 0x55, 0x89, 0xa4, 0xde, 0xcc, 0xce, 0x24, 0xb, 0xc9, 0x39, 0x84, 0xb0, 0xf7, 0xb2, 0xae, 0xeb, 0x76, 0xde, 0x8a, 0x4f, 0x92, 0x66, 0xd8, 0x91, 0x5c, 0x49, 0x5e, 0x9a, 0xe1, 0xb5, 0x64, 0x5, 0x16, 0x92, 0x8b, 0x7, 0x6f, 0x9b, 0x8c, 0x0, 0x4a, 0x29, 0x9b, 0x26, 0x81, 0xa4, 0x3e, 0xa5, 0x34, 0x2, 0x38, 0x2, 0x58, 0x0, 0xcc, 0x0, 0xe, 0x39, 0xe7, 0xd3, 0xfa, 0xb0, 0xee, 0xea, 0x8f, 0x7, 0x7b, 0xf5, 0x9d, 0xb7, 0xb0, 0x97, 0x55, 0x25, 0x5f, 0x17, 0xe9, 0x2e, 0xf9, 0xb8, 0xca, 0x3f, 0x9b, 0x1b, 0x1a, 0xe3, 0x40, 0x47, 0xa0, 0xda, 0xda, 0x61, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char color_picker_hue_png[] = { @@ -71,7 +67,7 @@ static const unsigned char dosfont_png[] = {  };  static const unsigned char dropdown_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x68, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0xa5, 0x8e, 0x21, 0xe, 0xc3, 0x60, 0x14, 0x82, 0x3f, 0xfe, 0xa4, 0x99, 0xee, 0x9, 0x9e, 0xa8, 0xe9, 0xe1, 0x66, 0x76, 0x92, 0x99, 0x9a, 0x1d, 0x6e, 0x82, 0x13, 0x54, 0xcf, 0xfc, 0x4c, 0xbd, 0xa4, 0x6e, 0x62, 0x28, 0x2, 0x4, 0x80, 0x7f, 0x21, 0xdb, 0x2f, 0xe0, 0x6, 0x3c, 0xaa, 0xea, 0x4, 0xb0, 0xbd, 0x2, 0x4f, 0xe0, 0x33, 0x92, 0x2c, 0x49, 0x76, 0x49, 0x87, 0xed, 0xd5, 0xf6, 0x2a, 0xe9, 0x48, 0xb2, 0x27, 0x59, 0xd4, 0xc2, 0x9c, 0x73, 0x1b, 0x63, 0xbc, 0x1, 0x9a, 0x27, 0xb9, 0xab, 0x2b, 0x3b, 0x4, 0xd0, 0x66, 0x55, 0x9d, 0xea, 0x33, 0x97, 0x5d, 0xae, 0x7f, 0x7e, 0xe2, 0xb, 0xf3, 0x6d, 0x3b, 0xdb, 0xfc, 0x5b, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x4, 0x0, 0x0, 0x0, 0x6e, 0x6, 0x76, 0x0, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x87, 0x8f, 0xcc, 0xbf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x64, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x60, 0xf8, 0xc0, 0xcc, 0x0, 0x5, 0x1f, 0x98, 0x19, 0x18, 0x18, 0x3f, 0x30, 0xff, 0xd3, 0x83, 0x70, 0xff, 0x33, 0x33, 0x30, 0x8, 0x9f, 0x61, 0xf9, 0x6b, 0xff, 0x65, 0x2f, 0x3, 0x1c, 0xbc, 0xea, 0x66, 0x62, 0xbc, 0xcf, 0xc0, 0xc0, 0xf0, 0x7, 0x26, 0xc0, 0x74, 0x89, 0x89, 0xe9, 0x29, 0x9f, 0x14, 0x3, 0xb, 0xc3, 0x5f, 0x6, 0x6, 0x6, 0x6, 0xee, 0x38, 0x91, 0x25, 0xc, 0xc, 0xc, 0x1f, 0xd8, 0xde, 0x4b, 0x3e, 0xfc, 0xff, 0xf0, 0xff, 0x9b, 0x58, 0xb8, 0xce, 0xf, 0x6c, 0xef, 0xe4, 0xde, 0xa4, 0x32, 0x20, 0x83, 0xf, 0x4c, 0x30, 0x16, 0x0, 0x75, 0xad, 0x1b, 0x7f, 0x65, 0xec, 0x78, 0x4c, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char error_icon_png[] = { @@ -79,19 +75,19 @@ static const unsigned char error_icon_png[] = {  };  static const unsigned char focus_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x80, 0x3a, 0x0, 0x0, 0x2, 0x4c, 0x0, 0x1, 0x4e, 0x94, 0x8c, 0x4d, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x4, 0x3, 0x0, 0x0, 0x0, 0xa4, 0x5b, 0x41, 0xd4, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0xff, 0xff, 0xff, 0xb9, 0xa2, 0x9b, 0xc9, 0x0, 0x0, 0x0, 0xf, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xe, 0x39, 0x68, 0x7a, 0x7b, 0x3a, 0x74, 0x10, 0x8, 0x69, 0xf, 0x6, 0x75, 0x11, 0xb8, 0x16, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xf, 0x18, 0xba, 0x0, 0xd9, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x38, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x10, 0x32, 0x9, 0xd, 0x75, 0x56, 0x64, 0x48, 0xef, 0x9c, 0x39, 0x73, 0x46, 0x19, 0xc3, 0x6a, 0x6, 0x20, 0xd8, 0xc5, 0x10, 0x3, 0xa2, 0x8e, 0x32, 0x44, 0x82, 0xa8, 0xa9, 0xd8, 0x29, 0xa8, 0x12, 0xb0, 0x6, 0x29, 0x86, 0xdc, 0x9d, 0x33, 0x67, 0xce, 0x2b, 0x63, 0x10, 0x3, 0x1b, 0x6, 0x0, 0xdf, 0xc6, 0x11, 0x6d, 0xb8, 0xf4, 0x9c, 0xac, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char frame_focus_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x80, 0x3a, 0x0, 0x0, 0x2, 0x4c, 0x0, 0x1, 0x4e, 0x94, 0x8c, 0x4d, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x4, 0x3, 0x0, 0x0, 0x0, 0xa4, 0x5b, 0x41, 0xd4, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0x47, 0x8c, 0xbf, 0xff, 0xff, 0xff, 0xcc, 0x40, 0x27, 0xb9, 0x0, 0x0, 0x0, 0xf, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xe, 0x39, 0x68, 0x7a, 0x7b, 0x3a, 0x74, 0x10, 0x8, 0x69, 0xf, 0x6, 0x75, 0x11, 0xb8, 0x16, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x0, 0x88, 0x5, 0x1d, 0x48, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x38, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x10, 0x32, 0x9, 0xd, 0x75, 0x56, 0x64, 0x48, 0xef, 0x9c, 0x39, 0x73, 0x46, 0x19, 0xc3, 0x6a, 0x6, 0x20, 0xd8, 0xc5, 0x10, 0x3, 0xa2, 0x8e, 0x32, 0x44, 0x82, 0xa8, 0xa9, 0xd8, 0x29, 0xa8, 0x12, 0xb0, 0x6, 0x29, 0x86, 0xdc, 0x9d, 0x33, 0x67, 0xce, 0x2b, 0x63, 0x10, 0x3, 0x1b, 0x6, 0x0, 0xdf, 0xc6, 0x11, 0x6d, 0xb8, 0xf4, 0x9c, 0xac, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char full_panel_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x1, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0x31, 0x4a, 0x3, 0x61, 0x10, 0x85, 0xdf, 0x9b, 0xfd, 0x97, 0x9c, 0xc0, 0x80, 0x62, 0x6d, 0xb7, 0x75, 0xec, 0x84, 0x40, 0x1a, 0x5, 0xaf, 0x60, 0xe, 0xe1, 0x1, 0x72, 0x14, 0xbd, 0x82, 0x62, 0xb5, 0x10, 0xb0, 0x33, 0x9d, 0x90, 0x3, 0xa8, 0x20, 0x29, 0x62, 0x1f, 0xdd, 0xcd, 0xbf, 0xf3, 0x2c, 0x76, 0x9, 0x11, 0x56, 0x12, 0xd9, 0xd6, 0x7, 0x3f, 0xfc, 0xc5, 0xcc, 0x37, 0x6f, 0xe0, 0xd, 0xd0, 0x51, 0xdc, 0xfe, 0x67, 0x83, 0xe1, 0x98, 0xc0, 0x8, 0xd4, 0x41, 0x6b, 0xb5, 0xf8, 0x21, 0x20, 0x9f, 0xcf, 0xa6, 0x37, 0x0, 0xb4, 0x5, 0x98, 0x58, 0x36, 0x78, 0xbc, 0x27, 0x79, 0x2e, 0x79, 0xf4, 0xaa, 0xa, 0xad, 0xd3, 0x92, 0x24, 0x1a, 0x2d, 0x48, 0x7a, 0x98, 0xcf, 0xce, 0x2e, 0x81, 0x89, 0x27, 0x0, 0x90, 0xd, 0x6c, 0x4c, 0xf2, 0xba, 0xf8, 0x5a, 0xa1, 0xf8, 0x5c, 0x59, 0x5c, 0xaf, 0xd1, 0xfa, 0xca, 0xc2, 0xe4, 0x42, 0x48, 0xd3, 0x93, 0xfe, 0xf1, 0xdb, 0xeb, 0xf2, 0xfd, 0xe5, 0xd9, 0x1a, 0x1b, 0x23, 0xc9, 0x63, 0x2c, 0xcb, 0x9d, 0x3b, 0xc7, 0x75, 0x1, 0xc9, 0x2b, 0x2, 0x23, 0x0, 0xb0, 0x7a, 0x35, 0x1d, 0xba, 0x7b, 0xab, 0xed, 0x36, 0xb9, 0x7b, 0x22, 0xe8, 0x68, 0x3, 0xe8, 0xa2, 0x7f, 0x40, 0x3, 0x20, 0xb8, 0xa0, 0x59, 0xdc, 0xb7, 0x89, 0x66, 0x91, 0xe0, 0x62, 0x3, 0x10, 0x90, 0x1b, 0x2d, 0x84, 0xb4, 0xb7, 0xb3, 0x39, 0xa4, 0x3d, 0x18, 0x2d, 0x8, 0xc8, 0xeb, 0xe1, 0x0, 0x9a, 0x28, 0xdf, 0x91, 0xbc, 0x70, 0x79, 0xd4, 0x1f, 0xa2, 0xfc, 0xf3, 0x98, 0x4e, 0x87, 0x57, 0x75, 0xc2, 0xd4, 0xff, 0xc5, 0xfc, 0x52, 0x40, 0x3e, 0x7f, 0x9a, 0xde, 0xa2, 0x39, 0xa6, 0xce, 0xfa, 0x6, 0xb9, 0xde, 0x7b, 0x63, 0x8a, 0x21, 0x2a, 0x35, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x8, 0x3, 0x0, 0x0, 0x0, 0x44, 0xa4, 0x8a, 0xc6, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x33, 0x50, 0x4c, 0x54, 0x45, 0x27, 0x27, 0x29, 0x26, 0x26, 0x28, 0x25, 0x25, 0x27, 0x24, 0x24, 0x26, 0x23, 0x23, 0x25, 0x22, 0x22, 0x24, 0x21, 0x21, 0x23, 0x1e, 0x1e, 0x20, 0x1d, 0x1d, 0x1f, 0x1c, 0x1c, 0x1e, 0x31, 0x30, 0x32, 0x50, 0x4e, 0x54, 0x4e, 0x4c, 0x50, 0x4c, 0x4a, 0x4e, 0x3d, 0x3b, 0x3f, 0x38, 0x36, 0x3a, 0xff, 0xff, 0xff, 0x4, 0xb3, 0x69, 0x9b, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x10, 0x95, 0xb2, 0xd, 0x2c, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x63, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xed, 0x93, 0x29, 0x12, 0xc0, 0x30, 0xc, 0xc4, 0x7c, 0x3b, 0x67, 0xf3, 0xff, 0xdf, 0xb6, 0xe1, 0xce, 0x98, 0x15, 0x45, 0x58, 0xb3, 0x68, 0x5, 0x0, 0x80, 0x48, 0x21, 0x88, 0xb0, 0x41, 0x62, 0x51, 0xb, 0x50, 0x61, 0xda, 0xa, 0xb1, 0x79, 0xa9, 0x1, 0xc5, 0x8d, 0xe9, 0x1b, 0x60, 0x6b, 0x7d, 0xcc, 0x80, 0xd1, 0x9b, 0x31, 0x2, 0x8a, 0xf7, 0x67, 0x85, 0x3c, 0xdd, 0x5, 0x81, 0xb4, 0x8c, 0x75, 0x60, 0x14, 0x25, 0x20, 0xab, 0xf3, 0x24, 0xcc, 0x6a, 0x57, 0xb8, 0xc2, 0xff, 0x42, 0x76, 0xda, 0xf4, 0xf6, 0x69, 0x38, 0x69, 0x7a, 0x79, 0xbc, 0x49, 0xfe, 0x2f, 0x65, 0xd3, 0x2d, 0x45, 0xb, 0x5e, 0xbc, 0x3b, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char graph_node_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x46, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc5, 0x24, 0x14, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xca, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0xce, 0xa1, 0xe, 0x41, 0x71, 0x14, 0xc7, 0xf1, 0xef, 0xf9, 0xef, 0x6a, 0x82, 0xd, 0xe9, 0xa, 0x66, 0xf3, 0x2, 0x9e, 0x41, 0xc0, 0x33, 0x90, 0x5, 0xe3, 0x61, 0x68, 0x34, 0xaa, 0xa0, 0x29, 0x1e, 0xe1, 0x4e, 0x37, 0xc5, 0x26, 0xd9, 0x2e, 0x81, 0x8d, 0x76, 0x8f, 0x80, 0xa0, 0x5d, 0x7f, 0xb4, 0xf3, 0x4b, 0xa7, 0xfc, 0x3e, 0xbf, 0x3, 0x5f, 0x46, 0xa2, 0x48, 0x33, 0xfb, 0xdd, 0xb9, 0x2b, 0x4a, 0x43, 0xa1, 0x90, 0xaa, 0x4, 0x31, 0xe2, 0x96, 0x87, 0xe3, 0x66, 0x1c, 0xec, 0x77, 0xe7, 0x2e, 0x4a, 0x5b, 0x3f, 0x58, 0x55, 0x28, 0xa0, 0x49, 0xa7, 0x98, 0xab, 0xe2, 0x48, 0x68, 0x7a, 0x7e, 0x8f, 0x8, 0x2d, 0x87, 0x90, 0xf7, 0x5, 0x10, 0xf2, 0xce, 0xbb, 0xfc, 0x8c, 0x1, 0x6, 0x18, 0x60, 0xc0, 0xcf, 0x80, 0xe0, 0x75, 0xc, 0xfa, 0xf5, 0xf5, 0x27, 0xc5, 0xe1, 0x68, 0x55, 0xfb, 0xc9, 0x7, 0x6, 0x18, 0x60, 0x80, 0x1, 0x6, 0x18, 0x60, 0x80, 0x1, 0x6, 0x18, 0xf0, 0x1f, 0x40, 0x20, 0x6, 0x8, 0xc3, 0xca, 0x35, 0x6d, 0x29, 0x2c, 0x55, 0x6e, 0x0, 0xaa, 0xc4, 0xb2, 0x98, 0x5f, 0x7a, 0xaa, 0x49, 0xc7, 0x67, 0x5d, 0x60, 0xea, 0x4a, 0xe5, 0xec, 0x58, 0xc4, 0xcd, 0x54, 0x1f, 0x9f, 0xa4, 0x89, 0x2a, 0xb1, 0x26, 0xcc, 0xe, 0xa7, 0xed, 0xc4, 0x67, 0xf8, 0x2d, 0x77, 0x97, 0xcc, 0x36, 0xeb, 0x4d, 0x52, 0xcd, 0xa3, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x40, 0x8, 0x6, 0x0, 0x0, 0x0, 0x13, 0x7d, 0xf7, 0x96, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x8, 0x17, 0xd, 0x5, 0x12, 0xa1, 0x38, 0x83, 0x9b, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x2, 0x74, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xed, 0x97, 0x3d, 0x6f, 0xd3, 0x60, 0x10, 0xc7, 0x7f, 0x17, 0x9b, 0x26, 0x25, 0x22, 0xad, 0xa, 0x8, 0xf1, 0x52, 0x75, 0x0, 0x16, 0x24, 0x90, 0x2a, 0x96, 0x7c, 0x1, 0x6, 0xc4, 0xce, 0xc4, 0x17, 0x0, 0x31, 0xb0, 0x30, 0x0, 0x23, 0x82, 0x85, 0x5, 0x9, 0x4, 0x5f, 0x80, 0x89, 0x1d, 0x31, 0xf0, 0x5, 0x58, 0x50, 0x25, 0x50, 0x59, 0x80, 0xa1, 0xe2, 0xad, 0x28, 0x34, 0x4a, 0x3, 0x25, 0x76, 0xea, 0xe7, 0x39, 0x6, 0x3f, 0x76, 0x6d, 0xc7, 0x49, 0x5f, 0xd8, 0x90, 0x6f, 0xb1, 0xf5, 0xe4, 0xb9, 0xdf, 0xdd, 0xfd, 0xef, 0x22, 0xf9, 0x84, 0x2d, 0x13, 0xa0, 0x6, 0x78, 0xee, 0x29, 0xe4, 0x4d, 0x1, 0xb, 0x18, 0xf7, 0x54, 0x32, 0x97, 0x6a, 0xc0, 0x7e, 0x60, 0xe, 0x38, 0xc, 0xb4, 0x80, 0x7d, 0x5, 0xc0, 0x26, 0xd0, 0x7, 0x3a, 0x40, 0x17, 0xf8, 0x3, 0xd8, 0x24, 0x6a, 0x13, 0x38, 0x35, 0x73, 0x60, 0xf6, 0x6a, 0xa3, 0xde, 0xb8, 0x38, 0x35, 0x55, 0x3f, 0x41, 0x89, 0xd, 0x87, 0xe1, 0x97, 0x20, 0xc, 0x5e, 0xae, 0xff, 0xea, 0x3d, 0x5, 0x3e, 0x2, 0x1b, 0xe2, 0x22, 0x2d, 0xcc, 0xcd, 0x1e, 0x7c, 0x78, 0x72, 0xe1, 0xf4, 0xa5, 0x7b, 0xb7, 0x1f, 0x7c, 0x9e, 0x6e, 0x35, 0xca, 0xfc, 0x19, 0xf4, 0x3, 0xee, 0xdc, 0xbf, 0x39, 0xff, 0x69, 0xe5, 0xc3, 0x8b, 0x6e, 0x6f, 0xed, 0x6, 0xb0, 0x22, 0x40, 0x3, 0x58, 0x3c, 0x7a, 0xe4, 0xf8, 0xab, 0x67, 0x4f, 0x9e, 0x77, 0xa3, 0xc8, 0x12, 0xd, 0xa3, 0x52, 0x80, 0x3f, 0xe5, 0xe3, 0xfb, 0x35, 0xae, 0x5c, 0xbb, 0x3c, 0xf7, 0xfd, 0xc7, 0xd7, 0xb, 0xc0, 0x92, 0xef, 0x74, 0x68, 0xfa, 0x9e, 0xdf, 0x1c, 0xfc, 0xe, 0xbb, 0x88, 0xc6, 0x47, 0xa, 0x2a, 0x59, 0x85, 0x95, 0x61, 0xb8, 0xc9, 0x30, 0x4, 0xdf, 0xf3, 0x9b, 0xae, 0x6c, 0x49, 0x0, 0x1e, 0x80, 0x51, 0x1b, 0xfb, 0xc7, 0x2, 0xc7, 0x5a, 0x3b, 0x88, 0x66, 0xcf, 0x63, 0xf3, 0x12, 0x80, 0x26, 0xbf, 0xa8, 0xb5, 0xa8, 0xa, 0x88, 0x22, 0x8, 0x8a, 0x22, 0x2a, 0x19, 0x37, 0x1d, 0xe9, 0xad, 0x9f, 0x6b, 0xb4, 0x55, 0x14, 0x5, 0x55, 0x44, 0xe2, 0x32, 0x6c, 0xe2, 0x24, 0x71, 0x18, 0x9d, 0x4, 0xb0, 0x6a, 0xd3, 0x1b, 0x2a, 0xe9, 0x4b, 0xfc, 0xae, 0xe4, 0x45, 0x19, 0x9f, 0x81, 0x2b, 0xdb, 0x15, 0xa6, 0xa2, 0x19, 0x2d, 0xec, 0x8, 0x24, 0x7, 0x30, 0xd6, 0x16, 0xf8, 0x82, 0xa8, 0xc6, 0x45, 0x68, 0x52, 0xbf, 0x4e, 0xce, 0x60, 0xeb, 0x42, 0x5c, 0xb4, 0x66, 0x9c, 0x6c, 0xc9, 0x1f, 0xa4, 0x0, 0xb0, 0x39, 0xc5, 0xc9, 0xa1, 0x28, 0x89, 0x5f, 0x14, 0xd1, 0x5a, 0x37, 0x32, 0x89, 0xf2, 0x82, 0xc6, 0x3, 0xe0, 0xda, 0xa, 0x22, 0x3a, 0xa9, 0xb, 0x9a, 0x26, 0xaa, 0xf1, 0x41, 0x9a, 0x42, 0x2, 0xb2, 0xb2, 0x6d, 0x6, 0x5b, 0xa3, 0xab, 0x23, 0xd5, 0x48, 0x32, 0x92, 0xe3, 0x33, 0x10, 0x37, 0xb7, 0x2a, 0xea, 0xee, 0x4a, 0x2a, 0x42, 0xe, 0x5a, 0x2a, 0xa2, 0x51, 0x37, 0x40, 0x85, 0x48, 0x96, 0xb4, 0x23, 0xdb, 0x88, 0x68, 0x5c, 0xc4, 0xcc, 0x3c, 0x14, 0xa7, 0x6f, 0xa2, 0x6, 0xaa, 0xb1, 0x7c, 0xd9, 0x30, 0xaa, 0x79, 0xc7, 0x49, 0x93, 0x78, 0xf7, 0xd1, 0xad, 0x79, 0x76, 0x69, 0x29, 0x20, 0xda, 0x34, 0x2c, 0x9e, 0x3d, 0xff, 0x7a, 0x27, 0x4e, 0x4b, 0xef, 0xde, 0xb4, 0x4b, 0x33, 0x58, 0xef, 0xf7, 0x76, 0x9b, 0x0, 0x35, 0xfe, 0xd1, 0x2a, 0x40, 0x5, 0xa8, 0x0, 0x15, 0xa0, 0x2, 0x54, 0x80, 0xa, 0xf0, 0x5f, 0x2, 0xa4, 0xe4, 0x13, 0x78, 0xd7, 0x19, 0xd8, 0x3d, 0xf8, 0xda, 0x4, 0x60, 0x81, 0xc0, 0x18, 0x13, 0xda, 0x68, 0x7, 0x5e, 0x11, 0x18, 0x63, 0x42, 0x20, 0x0, 0x6c, 0xcd, 0xad, 0xb2, 0x6b, 0x41, 0x38, 0x58, 0xee, 0x74, 0x57, 0xdb, 0x93, 0x20, 0x36, 0x82, 0x4e, 0x77, 0xb5, 0x1d, 0x84, 0x83, 0x65, 0x60, 0xd, 0x30, 0xc9, 0xe6, 0x3a, 0x3, 0x9c, 0x6b, 0x35, 0x67, 0x1f, 0x37, 0xea, 0xd3, 0x67, 0x3c, 0xcf, 0x2b, 0x15, 0xd7, 0x18, 0x63, 0x83, 0x70, 0xf0, 0xbe, 0xbf, 0xd1, 0xbb, 0xe, 0xbc, 0x5, 0xd6, 0x25, 0xb3, 0xc2, 0xb5, 0x80, 0x63, 0xc0, 0x21, 0xa0, 0x3e, 0x66, 0xf9, 0xe, 0x81, 0x9f, 0xc0, 0x37, 0xb7, 0x47, 0x1b, 0x29, 0x8, 0xea, 0x27, 0xfb, 0xe0, 0x98, 0x2a, 0xd4, 0x95, 0x1c, 0xed, 0x51, 0xf8, 0x51, 0xfb, 0xb, 0x1, 0xbe, 0x20, 0x9f, 0x90, 0x81, 0x17, 0xaa, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char graph_node_breakpoint_png[] = { @@ -103,11 +99,11 @@ static const unsigned char graph_node_close_png[] = {  };  static const unsigned char graph_node_comment_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x46, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc5, 0x24, 0x14, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x8b, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0xd8, 0xb1, 0xd, 0xc2, 0x40, 0xc, 0x5, 0xd0, 0x97, 0x28, 0x75, 0x90, 0x18, 0x6, 0x58, 0x80, 0x92, 0x82, 0x1d, 0x18, 0x8b, 0x2d, 0x22, 0xa, 0xd8, 0x0, 0xb6, 0xc9, 0x4, 0x47, 0x13, 0x4, 0x25, 0xc9, 0x41, 0xf7, 0x5d, 0xf9, 0x24, 0xff, 0x77, 0xae, 0x4d, 0x65, 0x35, 0xa5, 0x94, 0xe, 0x7, 0x6c, 0xb0, 0xfa, 0x32, 0x37, 0xe2, 0x81, 0xa1, 0x29, 0xa5, 0x1c, 0xb1, 0x5f, 0xb8, 0xc0, 0xad, 0xc5, 0x76, 0x61, 0x18, 0x76, 0x2d, 0xfa, 0xa, 0xa0, 0x6f, 0x2b, 0xc2, 0x20, 0x40, 0x80, 0x0, 0x1, 0x7e, 0x6, 0x74, 0x1f, 0xfd, 0x79, 0x66, 0xf6, 0xf4, 0x93, 0xd, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x0, 0x1, 0x2, 0x4, 0xf8, 0x1b, 0x30, 0x4e, 0xfd, 0x7a, 0x46, 0xee, 0x35, 0x3b, 0xd6, 0x1e, 0x20, 0xae, 0x1d, 0x86, 0xe9, 0x31, 0xf7, 0x4, 0x72, 0xc7, 0x65, 0xe1, 0xc7, 0xef, 0x7a, 0x2, 0x67, 0x50, 0x16, 0x1c, 0x57, 0x97, 0xfe, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x40, 0x8, 0x6, 0x0, 0x0, 0x0, 0x13, 0x7d, 0xf7, 0x96, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x8, 0x19, 0x11, 0x2a, 0x1d, 0xd6, 0x78, 0x8b, 0x40, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x1, 0x74, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xed, 0x97, 0xbf, 0x4e, 0xc2, 0x50, 0x14, 0xc6, 0x7f, 0x6d, 0x91, 0x56, 0x1b, 0x90, 0x80, 0x2c, 0x44, 0xc2, 0xa0, 0x2e, 0xe, 0x3e, 0x3, 0x89, 0x93, 0xf1, 0x1d, 0x4c, 0x18, 0x4d, 0x1c, 0x7c, 0xb, 0x57, 0x7, 0x13, 0x47, 0x13, 0x77, 0x46, 0xe3, 0xc4, 0x4b, 0x98, 0x60, 0x4c, 0xd4, 0x81, 0x60, 0x58, 0x94, 0xff, 0x22, 0x2d, 0xd0, 0xd6, 0xe5, 0xde, 0x88, 0x8, 0x2, 0x35, 0x6e, 0xf7, 0x5b, 0x6e, 0x9a, 0x9c, 0xef, 0x77, 0xee, 0x39, 0x37, 0x1d, 0x3e, 0x8d, 0x2f, 0x69, 0x80, 0xe, 0x18, 0xe2, 0xd4, 0xf8, 0xae, 0x0, 0xf0, 0x1, 0x4f, 0x9c, 0x1, 0x63, 0x45, 0x3a, 0xb0, 0x6, 0x24, 0x81, 0x34, 0x10, 0x7, 0x56, 0x26, 0x0, 0x43, 0xa0, 0x3, 0xbc, 0x2, 0xd, 0xe0, 0x3, 0xf0, 0x65, 0x57, 0x1b, 0xd8, 0x5e, 0x8f, 0x25, 0x8e, 0x2d, 0xd3, 0x3a, 0x88, 0x46, 0xcd, 0x4d, 0xa6, 0x68, 0x30, 0x70, 0x5f, 0x1c, 0xd7, 0xb9, 0x6d, 0x77, 0x5b, 0x97, 0xc0, 0x13, 0xd0, 0xd3, 0x44, 0xa7, 0x5c, 0x32, 0x91, 0x3a, 0xdf, 0xca, 0xed, 0x1c, 0x16, 0x52, 0xdd, 0x2a, 0xbf, 0xe8, 0xaa, 0x1e, 0xcb, 0x3e, 0x57, 0x1e, 0x6f, 0x1a, 0xad, 0xfa, 0x29, 0x50, 0x91, 0x33, 0xa7, 0x4d, 0xd3, 0xca, 0xcf, 0x33, 0x3, 0x14, 0x52, 0xdd, 0xaa, 0x69, 0x5a, 0x79, 0x31, 0xaa, 0x21, 0x97, 0x65, 0x47, 0x8c, 0x88, 0xcd, 0x82, 0x12, 0xb5, 0x36, 0xa0, 0x49, 0x80, 0xc1, 0xf2, 0x32, 0x24, 0x20, 0x90, 0x4f, 0x12, 0x46, 0x3a, 0x7f, 0x94, 0x2, 0x28, 0x80, 0x2, 0x88, 0x5f, 0x7b, 0xfc, 0xe3, 0xec, 0xe1, 0x3d, 0x1b, 0x1a, 0x30, 0x1a, 0x7a, 0x1c, 0x65, 0xd8, 0x5f, 0xc4, 0x74, 0x5d, 0xa3, 0xa4, 0x5e, 0x41, 0x1, 0x14, 0x40, 0x1, 0x14, 0x40, 0x1, 0x14, 0x40, 0x1, 0xfe, 0x15, 0xa0, 0x4d, 0xc9, 0x88, 0x4b, 0xdf, 0xc0, 0xf, 0xe1, 0xf5, 0x25, 0xc0, 0x7, 0x1c, 0xcf, 0xf3, 0xdc, 0x45, 0x9d, 0xa2, 0xd6, 0x1, 0x7c, 0x5d, 0x44, 0xd9, 0xba, 0xe3, 0xf6, 0xcb, 0xc5, 0xa6, 0x5d, 0x9a, 0x67, 0x2e, 0x36, 0xed, 0x92, 0xe3, 0xf6, 0xcb, 0x40, 0x1d, 0xf0, 0x64, 0x72, 0x5d, 0x7, 0xf6, 0xe2, 0x76, 0xe2, 0xc2, 0x32, 0x57, 0x77, 0xd, 0xc3, 0xd0, 0x67, 0x74, 0xf6, 0x1d, 0xb7, 0x7f, 0xdf, 0xe9, 0xb5, 0x4e, 0x80, 0x3b, 0xa0, 0xad, 0x8d, 0x45, 0xb8, 0x38, 0x90, 0x1, 0x36, 0x0, 0x73, 0x46, 0xf8, 0x76, 0x81, 0x37, 0xa0, 0x26, 0x72, 0xb4, 0xa7, 0x4d, 0x2c, 0x34, 0x22, 0xf3, 0xe0, 0x8c, 0x9, 0x2, 0x31, 0xf2, 0x28, 0xe4, 0xe2, 0x7f, 0xea, 0x13, 0x64, 0x47, 0x6c, 0x83, 0x36, 0x6d, 0xd2, 0x40, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char graph_node_comment_focus_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x46, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc5, 0x24, 0x14, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x97, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0xd8, 0xb1, 0x11, 0xc2, 0x30, 0x10, 0x44, 0xd1, 0x7f, 0x8c, 0x87, 0xe, 0x80, 0xd4, 0x94, 0xa4, 0x2a, 0xa0, 0x0, 0x12, 0x5c, 0x3, 0x10, 0x9a, 0x2e, 0xa0, 0x11, 0x9a, 0x20, 0xb4, 0x29, 0x62, 0x9, 0xd0, 0xc, 0x84, 0xb6, 0x6c, 0xb2, 0xbd, 0x44, 0xa7, 0x60, 0x9f, 0x36, 0x16, 0x4c, 0x9c, 0x90, 0xb4, 0x4, 0xe, 0x40, 0x2, 0xd6, 0x3, 0x73, 0x3d, 0x70, 0x3, 0x4e, 0x21, 0xa9, 0x1, 0x76, 0x85, 0x5, 0xae, 0x21, 0xe9, 0x1, 0xac, 0xa, 0x81, 0x57, 0x48, 0x7a, 0x16, 0x86, 0x1, 0x58, 0x4c, 0x9, 0x1b, 0x30, 0x60, 0xc0, 0xc0, 0xac, 0x40, 0xf5, 0xb3, 0xa7, 0x91, 0xd9, 0xfb, 0x2c, 0xd, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x1, 0x3, 0x6, 0xc, 0x18, 0xf8, 0x1b, 0xd0, 0xe7, 0xbd, 0x1e, 0x91, 0xdb, 0xe6, 0xb3, 0xb, 0x49, 0x47, 0x60, 0x5f, 0x58, 0xa0, 0xad, 0x80, 0x73, 0xbe, 0x24, 0x60, 0x33, 0x30, 0xd8, 0xf1, 0xf9, 0x2, 0xb9, 0x14, 0x3e, 0xfc, 0x9d, 0x37, 0xf9, 0xbd, 0x1e, 0x48, 0x36, 0x1d, 0x7d, 0x70, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x40, 0x8, 0x6, 0x0, 0x0, 0x0, 0x13, 0x7d, 0xf7, 0x96, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9, 0x43, 0xbb, 0x7f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x9, 0x2, 0xe, 0x16, 0x22, 0xbe, 0xef, 0xc2, 0xe1, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x1, 0x4a, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xed, 0xd7, 0xbf, 0x4b, 0xdb, 0x41, 0x1c, 0xc6, 0xf1, 0xd7, 0x37, 0x51, 0x4, 0x3, 0xa, 0xa2, 0x20, 0xd2, 0xe2, 0xe2, 0x64, 0x41, 0xdc, 0xdc, 0xac, 0xe0, 0x54, 0xdc, 0xb2, 0xe6, 0x2f, 0x10, 0x1a, 0xf0, 0x4f, 0x11, 0x22, 0xf8, 0x17, 0x64, 0xcd, 0x26, 0x9d, 0x1c, 0x74, 0x73, 0x13, 0x21, 0x4e, 0x2e, 0xa5, 0xa5, 0x14, 0xac, 0x82, 0x82, 0x62, 0xd0, 0x7c, 0xd3, 0xa1, 0x77, 0x18, 0x35, 0xfe, 0x48, 0xa4, 0xdb, 0x3d, 0x70, 0xdc, 0xf2, 0x79, 0xde, 0x77, 0xf7, 0x39, 0x38, 0xee, 0xc9, 0xdc, 0x2b, 0x43, 0x1, 0xc5, 0x30, 0x67, 0x1e, 0xaa, 0x83, 0x1c, 0xed, 0x30, 0x77, 0x74, 0x15, 0x15, 0x30, 0x8a, 0x9, 0x4c, 0x61, 0xc, 0xc3, 0x8f, 0x0, 0xb7, 0xb8, 0xc4, 0x29, 0xce, 0x71, 0x8d, 0x3c, 0xae, 0x5a, 0xc2, 0x5c, 0xa3, 0x5a, 0x59, 0xc7, 0x17, 0x7c, 0xd0, 0x5b, 0x3f, 0xf1, 0xad, 0x5c, 0xab, 0x6f, 0xe3, 0x4, 0x57, 0x59, 0x58, 0x69, 0xb6, 0x51, 0xad, 0x6c, 0x62, 0xed, 0x77, 0xf3, 0xf0, 0x87, 0x17, 0x34, 0xfd, 0x69, 0xf1, 0x23, 0x76, 0xca, 0xb5, 0xfa, 0x6, 0xbe, 0xc7, 0x33, 0x4f, 0x61, 0xe5, 0x35, 0x33, 0x84, 0x9a, 0x95, 0xe0, 0x29, 0xc6, 0x66, 0x95, 0xc2, 0x78, 0xab, 0x62, 0x7d, 0x16, 0x1, 0x45, 0xfd, 0xab, 0x18, 0x1, 0x9d, 0x78, 0x25, 0x83, 0xa8, 0xe0, 0x9d, 0x4a, 0x80, 0x4, 0x48, 0x80, 0x7f, 0x1a, 0xea, 0xf1, 0xda, 0xc, 0xe, 0x38, 0xd8, 0xdf, 0x5b, 0x7d, 0x8b, 0x69, 0x69, 0xf9, 0xf3, 0x6e, 0xba, 0x85, 0x4, 0x48, 0x80, 0x4, 0x48, 0x80, 0x4, 0x48, 0x80, 0x4, 0xf8, 0xaf, 0x80, 0xac, 0x47, 0x46, 0xec, 0x7b, 0x7, 0xf9, 0x0, 0xde, 0x3c, 0x2, 0x72, 0xdc, 0xa0, 0xd5, 0x87, 0xb9, 0x15, 0x3c, 0x79, 0x21, 0x44, 0xd9, 0x33, 0x34, 0xbb, 0x3f, 0x4f, 0xaf, 0x7c, 0xb0, 0x9a, 0xc1, 0xd3, 0x8e, 0xc9, 0x75, 0x1c, 0xb, 0x8d, 0x6a, 0x65, 0xb, 0xf3, 0x2f, 0x34, 0x37, 0xc7, 0x71, 0xb9, 0x56, 0xff, 0x8a, 0x23, 0x5c, 0x64, 0x5d, 0x11, 0x6e, 0xc, 0x33, 0x98, 0xc4, 0xc8, 0x33, 0xe1, 0xbb, 0x85, 0x3f, 0xf8, 0x15, 0x72, 0x74, 0x3b, 0x7b, 0xd4, 0xd0, 0xa1, 0x98, 0x7, 0x9f, 0xd9, 0x41, 0x27, 0x1c, 0xf9, 0x6e, 0xc0, 0xc6, 0x3f, 0xd5, 0x5f, 0x9d, 0x54, 0x4e, 0x15, 0xfd, 0xeb, 0xb4, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char graph_node_default_png[] = { @@ -119,11 +115,11 @@ static const unsigned char graph_node_default_focus_png[] = {  };  static const unsigned char graph_node_position_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x46, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc5, 0x24, 0x14, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xb1, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0xd7, 0xb1, 0x11, 0x82, 0x50, 0x10, 0x84, 0xe1, 0xff, 0x80, 0x19, 0x33, 0x72, 0x68, 0x5, 0x4b, 0xc1, 0x32, 0x24, 0x60, 0x50, 0x3, 0xdf, 0x30, 0x9a, 0xd2, 0x2, 0xad, 0xa8, 0xa5, 0x40, 0xc, 0x31, 0xf0, 0xc, 0xc4, 0x31, 0x30, 0xf0, 0x81, 0xe9, 0x6d, 0xbe, 0xdf, 0x5e, 0x7a, 0xf0, 0x67, 0xc4, 0x56, 0xd5, 0x86, 0xae, 0x3b, 0x23, 0x92, 0x2, 0x91, 0x63, 0xaf, 0x5, 0x6a, 0x86, 0xe1, 0x10, 0xcc, 0xe5, 0xfd, 0xc2, 0xe1, 0x8, 0xc8, 0xf0, 0x7d, 0x1b, 0xcc, 0xcb, 0x0, 0x89, 0x14, 0xc5, 0xc3, 0xa5, 0x6d, 0xcb, 0x32, 0x61, 0x9a, 0x6e, 0x78, 0xde, 0xce, 0x7b, 0x9f, 0xed, 0x5a, 0x6, 0x90, 0x3c, 0xbf, 0xbf, 0x24, 0x1b, 0x7b, 0xcb, 0x2e, 0xff, 0x8e, 0x2, 0xa, 0x28, 0xa0, 0x80, 0x2, 0xa, 0x28, 0xa0, 0x80, 0x2, 0xa, 0x28, 0xa0, 0x80, 0x2, 0xa, 0x28, 0xf0, 0x1b, 0x68, 0x61, 0x7e, 0xe9, 0x1d, 0x63, 0x8d, 0xd9, 0x2, 0x20, 0xd2, 0x88, 0x35, 0xe6, 0xa, 0x64, 0x2b, 0xf, 0xb8, 0x4, 0x84, 0xe1, 0x91, 0xbe, 0x7, 0x91, 0x14, 0x6b, 0x63, 0xa7, 0x9a, 0x48, 0xc3, 0x34, 0xd5, 0x8c, 0xe3, 0x69, 0xe5, 0xf0, 0x27, 0x4f, 0xdd, 0xc, 0x30, 0x45, 0xe4, 0x56, 0x1f, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x40, 0x8, 0x6, 0x0, 0x0, 0x0, 0x13, 0x7d, 0xf7, 0x96, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x8, 0x6, 0xf, 0x3b, 0x3b, 0x49, 0x6e, 0xe4, 0x1e, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x90, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xed, 0xd7, 0xbd, 0x9, 0xc0, 0x20, 0x10, 0x5, 0xe0, 0x53, 0x2c, 0xdd, 0x40, 0x47, 0x70, 0x7, 0x67, 0x77, 0x7, 0x47, 0x88, 0x1b, 0xd8, 0x9b, 0xe6, 0x84, 0x53, 0x48, 0x10, 0x14, 0x52, 0xe4, 0x5d, 0x25, 0xfe, 0x7c, 0x9e, 0x58, 0x3d, 0xa2, 0xcd, 0x52, 0x7d, 0x50, 0x63, 0xb8, 0x88, 0xc8, 0x2d, 0x9e, 0x2b, 0x36, 0x65, 0x4f, 0xf2, 0x30, 0x3, 0x4b, 0x25, 0xf7, 0x1b, 0x9e, 0x73, 0x36, 0x65, 0xb5, 0xd0, 0x49, 0xb1, 0x29, 0x7b, 0x9b, 0xb2, 0xaf, 0x31, 0x34, 0x9, 0xc8, 0x67, 0x50, 0xc7, 0x9e, 0x6e, 0x96, 0xed, 0xeb, 0x69, 0x8f, 0x1b, 0xde, 0x36, 0x15, 0xaf, 0xd, 0xdd, 0xe9, 0xdd, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x1f, 0x1, 0xe5, 0x2d, 0x3f, 0xf2, 0x5a, 0x91, 0x73, 0x66, 0x4e, 0x65, 0x1c, 0xed, 0xda, 0x52, 0x62, 0x3d, 0x91, 0x5c, 0xcf, 0x64, 0xe7, 0x4f, 0xeb, 0x6, 0x80, 0xff, 0x44, 0x93, 0xd4, 0xd9, 0xea, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char graph_node_selected_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x46, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc5, 0x24, 0x14, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xc4, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0xce, 0xb1, 0xd, 0x82, 0x40, 0x14, 0xc6, 0xf1, 0xef, 0x9d, 0x17, 0x43, 0x62, 0x2c, 0xc1, 0x1, 0xc0, 0x38, 0x86, 0x3, 0x58, 0x18, 0xd4, 0x1d, 0x64, 0x0, 0x1b, 0x77, 0x50, 0x4b, 0xb7, 0x80, 0xc4, 0xc2, 0x1, 0xec, 0x8c, 0x3d, 0x43, 0x40, 0x2b, 0x2a, 0x31, 0xc6, 0x67, 0xe3, 0x99, 0xd8, 0xc1, 0x89, 0xdd, 0xfb, 0xaa, 0x2b, 0xf8, 0xff, 0x1e, 0xc0, 0x8f, 0xa3, 0x34, 0xe5, 0x76, 0x51, 0x5c, 0x17, 0x4, 0xa, 0x1, 0x78, 0x15, 0xbb, 0x1c, 0x4c, 0x89, 0xd2, 0xce, 0x4a, 0xbf, 0xe3, 0x79, 0xcd, 0xc3, 0x1e, 0x88, 0xa3, 0xe7, 0xa3, 0x64, 0x5, 0xa6, 0x49, 0xcd, 0xf8, 0x33, 0x6, 0xcf, 0x14, 0x11, 0x5c, 0x5b, 0x80, 0x8, 0xae, 0xb2, 0x8d, 0xcd, 0x4, 0x10, 0x40, 0x0, 0x1, 0x1a, 0x3, 0xb4, 0x79, 0x4c, 0xc7, 0xc3, 0x7d, 0x9d, 0x30, 0xde, 0x1d, 0x46, 0x8d, 0xfc, 0x81, 0x0, 0x2, 0x8, 0x20, 0x80, 0x0, 0x2, 0x8, 0x20, 0x80, 0x0, 0x2, 0xfc, 0xd, 0xc8, 0x1, 0xc0, 0xf, 0xfa, 0xf7, 0xaa, 0x91, 0x1f, 0xc, 0xcc, 0xb7, 0x19, 0x9d, 0x8e, 0xb7, 0x25, 0x88, 0x23, 0x9b, 0xeb, 0xc, 0x6c, 0x75, 0xa7, 0xeb, 0xac, 0x2f, 0xe7, 0x12, 0x20, 0xe, 0x1, 0xf4, 0x2a, 0xb6, 0x19, 0x98, 0x92, 0x96, 0x76, 0x36, 0x36, 0x87, 0xbf, 0xf6, 0x2, 0x6c, 0x6e, 0x2d, 0xee, 0x58, 0x4d, 0xc1, 0x68, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x40, 0x8, 0x6, 0x0, 0x0, 0x0, 0x13, 0x7d, 0xf7, 0x96, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x8, 0x17, 0xd, 0x4, 0x3b, 0xfa, 0x91, 0x2a, 0xb6, 0x0, 0x0, 0x3, 0x44, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xed, 0x97, 0x3f, 0x68, 0xdc, 0x76, 0x14, 0xc7, 0xbf, 0xef, 0xa7, 0x9f, 0x7e, 0x3a, 0xdd, 0x39, 0xf6, 0xdd, 0x95, 0xb3, 0x3, 0xc1, 0x75, 0x1b, 0x70, 0xa, 0xe9, 0x98, 0x25, 0x93, 0x87, 0x52, 0x3a, 0x4, 0x2, 0xce, 0xe0, 0xd2, 0x34, 0x35, 0x94, 0x8e, 0x1d, 0xbc, 0xd5, 0x4b, 0xc7, 0x2e, 0x25, 0x63, 0x2, 0x5d, 0xa, 0xa5, 0xb1, 0x1b, 0x2, 0xf5, 0xd0, 0x40, 0xa0, 0x90, 0x10, 0x3a, 0x64, 0xca, 0x92, 0x31, 0x81, 0x24, 0xd0, 0xd2, 0x9a, 0x40, 0x2f, 0x17, 0xdf, 0x1f, 0xfb, 0x74, 0xf2, 0xe9, 0x27, 0xfd, 0x5e, 0x7, 0x49, 0xb6, 0x4e, 0xe7, 0xea, 0x86, 0x6e, 0xe5, 0x1e, 0xdc, 0x49, 0x42, 0xef, 0x7d, 0xde, 0xf7, 0x7d, 0xf5, 0x13, 0xe8, 0x47, 0xcc, 0x4c, 0x0, 0xc4, 0xbd, 0x7b, 0x4f, 0x9c, 0xb0, 0xdd, 0x71, 0xdb, 0xfb, 0x2d, 0xc7, 0xb0, 0x11, 0x5a, 0x7, 0x84, 0x4c, 0xd8, 0xb6, 0x62, 0x41, 0xc2, 0xd4, 0x67, 0x1b, 0x43, 0x59, 0xaf, 0xf9, 0x97, 0x2f, 0x5f, 0x18, 0x2, 0x30, 0xc4, 0xcc, 0xd6, 0xdd, 0x1f, 0xef, 0x9e, 0xea, 0x79, 0x83, 0x33, 0xed, 0x6e, 0xf7, 0x6c, 0xaf, 0xd7, 0x59, 0xe8, 0x7b, 0xfd, 0x72, 0x10, 0x4, 0x32, 0xb, 0x50, 0x4a, 0x85, 0x33, 0x95, 0x99, 0xc1, 0xdc, 0x5c, 0xad, 0x59, 0xaf, 0x56, 0x7f, 0x9f, 0xab, 0x94, 0x5f, 0xad, 0x7e, 0xbe, 0x7a, 0x40, 0x5b, 0x5b, 0xf7, 0x2b, 0x41, 0xbb, 0xf9, 0x6e, 0xa7, 0xd7, 0x5e, 0xb9, 0x72, 0x75, 0xe5, 0x86, 0x72, 0xa4, 0x85, 0x82, 0x8, 0x86, 0x61, 0xf4, 0xcb, 0x9d, 0x47, 0x1b, 0xb5, 0xb9, 0xfa, 0x23, 0x55, 0x5f, 0xf8, 0x43, 0xea, 0x4e, 0xb7, 0xdc, 0x7c, 0xf3, 0xfa, 0xdc, 0xc7, 0xeb, 0x1f, 0xdc, 0x64, 0x66, 0x71, 0xb8, 0x37, 0xbb, 0x2b, 0x1d, 0xb, 0x44, 0x23, 0x13, 0x80, 0x99, 0x11, 0xe, 0x23, 0x50, 0x65, 0x6f, 0x71, 0xf5, 0x93, 0x95, 0x9b, 0x3f, 0x6f, 0xff, 0xb6, 0x76, 0x9a, 0x9c, 0xa6, 0x8, 0x42, 0x5f, 0x79, 0xfd, 0x83, 0x79, 0xa7, 0x24, 0x5, 0xfc, 0xfa, 0x2e, 0x9, 0x42, 0xa8, 0xd, 0xc2, 0x20, 0x1a, 0xfd, 0x69, 0x3, 0x12, 0x4, 0xf8, 0xf5, 0x5d, 0xa7, 0x24, 0x85, 0xd7, 0x3f, 0x98, 0xf, 0x42, 0x5f, 0x9, 0xc3, 0x46, 0xc, 0xfc, 0x81, 0xb, 0x0, 0x91, 0x66, 0x30, 0x1b, 0x10, 0x0, 0x98, 0x6c, 0x7b, 0x80, 0xc0, 0x60, 0x66, 0x44, 0x21, 0x3, 0x0, 0x6, 0xfe, 0xc0, 0x35, 0x6c, 0x84, 0xd0, 0x5a, 0x53, 0x84, 0x88, 0x0, 0x80, 0x13, 0xd9, 0xcc, 0xc, 0x88, 0xb8, 0x10, 0x0, 0x40, 0x0, 0x1b, 0x0, 0xcc, 0x0, 0xc7, 0x39, 0x11, 0x22, 0xd2, 0x5a, 0x93, 0xb4, 0x6d, 0x9b, 0x11, 0x25, 0x89, 0x86, 0xc1, 0x20, 0x80, 0x18, 0xa0, 0xe3, 0xee, 0x47, 0xd0, 0xcc, 0x31, 0xad, 0x91, 0x79, 0xa3, 0x40, 0x4, 0x80, 0x91, 0xe6, 0xe5, 0x83, 0x73, 0x37, 0x64, 0xee, 0x2e, 0xd8, 0x24, 0x9, 0xc4, 0xc7, 0xa, 0xb2, 0x6a, 0x8a, 0x0, 0x1c, 0xf7, 0xce, 0x5e, 0xc4, 0xc5, 0xe6, 0x18, 0x92, 0x57, 0x36, 0x2, 0x30, 0x26, 0x33, 0x7b, 0xe2, 0x1e, 0x71, 0xe2, 0xb, 0x33, 0x68, 0xf2, 0x8, 0xd9, 0x16, 0x94, 0xd1, 0x13, 0xff, 0x9b, 0x49, 0xa, 0xc0, 0x6, 0x6c, 0x72, 0xf6, 0x8f, 0xbb, 0x58, 0xe0, 0x41, 0x32, 0x77, 0x22, 0x1a, 0xc9, 0xf2, 0x49, 0x87, 0x89, 0xcf, 0x8a, 0x14, 0xc4, 0x0, 0x93, 0x14, 0x66, 0xba, 0xd1, 0xf1, 0xec, 0xa6, 0x18, 0x60, 0xe2, 0xfa, 0x91, 0xde, 0xd9, 0xae, 0x34, 0xf9, 0x31, 0x52, 0xba, 0x1e, 0x28, 0x5d, 0x4c, 0x94, 0xfa, 0x99, 0xbc, 0xf, 0x45, 0xa, 0x4c, 0x5c, 0x38, 0xd6, 0xc9, 0xe0, 0xe8, 0x89, 0xe4, 0xad, 0x1d, 0x5f, 0xca, 0x9c, 0x7f, 0x15, 0x8b, 0x63, 0xdc, 0xc4, 0x7c, 0x8f, 0x8c, 0x91, 0xb9, 0x93, 0x71, 0xc0, 0xd7, 0xdf, 0x7c, 0xf5, 0xea, 0xd9, 0x8b, 0xa7, 0x85, 0x1d, 0xcf, 0x9f, 0x7b, 0x1f, 0xdf, 0xdf, 0xfa, 0x76, 0xf1, 0x44, 0xc0, 0xd9, 0xa5, 0x65, 0x58, 0xc2, 0x2e, 0x4, 0x2c, 0x2d, 0xbe, 0xf3, 0xef, 0xa, 0x3c, 0xaf, 0x8f, 0xde, 0x7e, 0xb7, 0x10, 0xe0, 0x79, 0xfd, 0x91, 0x6b, 0x81, 0xff, 0x18, 0x53, 0xc0, 0x14, 0x30, 0x5, 0x4c, 0x1, 0x53, 0xc0, 0x14, 0x30, 0x5, 0xfc, 0xff, 0x0, 0x5a, 0x6b, 0x82, 0x75, 0xe2, 0xe7, 0xcf, 0xc9, 0x91, 0xe6, 0x58, 0x19, 0x5, 0x16, 0x2c, 0x6, 0x0, 0x5b, 0xca, 0x89, 0xf5, 0x69, 0x4e, 0x5a, 0x23, 0x1c, 0xe5, 0x44, 0x8e, 0x52, 0x1, 0x0, 0x94, 0xdd, 0x99, 0x89, 0x80, 0x34, 0xc7, 0x51, 0x2a, 0x70, 0x94, 0x13, 0x49, 0x25, 0xdd, 0xa0, 0xe4, 0x96, 0x5b, 0xc3, 0x43, 0xcd, 0x1b, 0x9b, 0x9f, 0x5e, 0xbc, 0x71, 0x9d, 0x1e, 0xf, 0xfc, 0x3, 0xe8, 0x30, 0x1c, 0xd9, 0x74, 0xd9, 0x52, 0xa2, 0xec, 0x9e, 0xc2, 0xc6, 0xe6, 0xd5, 0x8b, 0xc3, 0x43, 0xcd, 0x25, 0xb7, 0xdc, 0x52, 0xd2, 0xd, 0x68, 0x6b, 0xeb, 0x7e, 0x65, 0xef, 0xaf, 0x97, 0xcb, 0xdd, 0xfd, 0xce, 0x87, 0x9f, 0x7d, 0x71, 0xe9, 0xba, 0xe3, 0xda, 0x85, 0x4e, 0xc, 0x7d, 0xcd, 0x3f, 0xfd, 0xf0, 0xeb, 0x66, 0x75, 0xb6, 0xf6, 0xf0, 0xad, 0xb7, 0x97, 0x5f, 0x12, 0x33, 0x5b, 0xb7, 0xbf, 0xbb, 0x3d, 0xdb, 0xea, 0x74, 0x97, 0x3a, 0xdd, 0xee, 0x7b, 0x3, 0xdf, 0x9b, 0xd7, 0x5a, 0xdb, 0xc6, 0x8c, 0x7e, 0xad, 0xa, 0x21, 0x60, 0xdb, 0xb6, 0x2e, 0xbb, 0x95, 0xd7, 0xb5, 0x6a, 0xf5, 0x79, 0xa3, 0x56, 0xfd, 0xf3, 0xda, 0x97, 0xd7, 0xf6, 0x29, 0xdd, 0xbd, 0x6f, 0x6f, 0x3f, 0x28, 0xf5, 0xff, 0x6e, 0x56, 0xb4, 0x19, 0x2a, 0x66, 0x73, 0xe2, 0xe3, 0x25, 0x12, 0xc6, 0x16, 0x4e, 0x30, 0x73, 0x7a, 0xc1, 0x5b, 0x5f, 0xff, 0xe8, 0x10, 0xc0, 0xd1, 0xf6, 0x4, 0xcc, 0x4c, 0x3b, 0x3b, 0x3b, 0xa2, 0xd1, 0x68, 0x14, 0x8e, 0xd0, 0x6a, 0xb5, 0x78, 0x6d, 0x6d, 0xcd, 0x10, 0xc5, 0xdb, 0xba, 0x7f, 0x0, 0xb2, 0x1f, 0xaf, 0x82, 0x62, 0x7a, 0x69, 0xbb, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char graph_port_png[] = { @@ -131,19 +127,19 @@ static const unsigned char graph_port_png[] = {  };  static const unsigned char hseparator_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x63, 0x60, 0x18, 0x5, 0xc, 0xc, 0xc, 0xc, 0x0, 0x1, 0x8, 0x0, 0x1, 0x7d, 0x41, 0xa5, 0xce, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x2, 0x3, 0x0, 0x0, 0x0, 0xb9, 0x61, 0x56, 0x18, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0xc, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x73, 0x9b, 0xaa, 0xce, 0xdc, 0xe1, 0xff, 0xff, 0xff, 0x64, 0x6c, 0x1, 0xd2, 0x0, 0x0, 0x0, 0x3, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xb3, 0xb3, 0x67, 0xf6, 0xdb, 0x93, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x3, 0x11, 0xc, 0x4c, 0xf2, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x10, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x64, 0x60, 0x60, 0xc2, 0x40, 0x8c, 0xc, 0x0, 0x0, 0xc7, 0x0, 0xf, 0xf5, 0x92, 0x2f, 0xa7, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char hslider_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x66, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd0, 0xab, 0xe, 0x83, 0x50, 0x10, 0x84, 0xe1, 0xf, 0x4e, 0x48, 0x4d, 0xd5, 0x31, 0x4d, 0xe0, 0xfd, 0x5f, 0xd, 0xc, 0xc5, 0x50, 0x87, 0x0, 0x73, 0xb8, 0x8, 0x1a, 0x8, 0x58, 0x7e, 0xb3, 0xc9, 0x24, 0x33, 0xbb, 0xb3, 0x3c, 0xdc, 0x26, 0xdb, 0xcc, 0x12, 0x11, 0xc5, 0x81, 0x67, 0x40, 0x87, 0x1a, 0x63, 0x48, 0x62, 0x85, 0xf, 0xc2, 0x3f, 0xd7, 0x86, 0x80, 0x37, 0x72, 0xf4, 0x79, 0x12, 0xe3, 0xf9, 0xa3, 0x17, 0xa2, 0x94, 0x72, 0x8b, 0x39, 0xa0, 0xbb, 0xe0, 0xfd, 0xb2, 0x76, 0xfe, 0xa5, 0xb0, 0x97, 0xe3, 0x3f, 0xc, 0x68, 0xd1, 0x5c, 0x58, 0xfa, 0xb0, 0xc7, 0x4, 0xc6, 0x95, 0xb, 0x14, 0x1e, 0x95, 0x6c, 0x6f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x4e, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x40, 0x3e, 0x4a, 0x2a, 0x29, 0x2f, 0x20, 0x20, 0x24, 0x3f, 0x3e, 0x49, 0x1f, 0x1f, 0x24, 0x20, 0x20, 0x24, 0x4d, 0x4b, 0x59, 0x3f, 0x3e, 0x49, 0x3f, 0x3e, 0x49, 0x1e, 0x1e, 0x23, 0x1f, 0x1f, 0x23, 0x20, 0x20, 0x25, 0x22, 0x22, 0x27, 0x23, 0x23, 0x27, 0x23, 0x23, 0x28, 0x25, 0x25, 0x2a, 0xff, 0xff, 0xff, 0x5f, 0xd6, 0x94, 0x4d, 0x0, 0x0, 0x0, 0x12, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x4, 0x19, 0x40, 0x5d, 0x66, 0x68, 0x28, 0x93, 0xf0, 0xfc, 0x94, 0xfc, 0xfd, 0x1a, 0x96, 0x95, 0x6b, 0xe2, 0xd5, 0x49, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x19, 0xec, 0x6e, 0xb5, 0x88, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x65, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x85, 0xce, 0xdd, 0xe, 0x80, 0x20, 0x8, 0x5, 0x60, 0x54, 0xb4, 0x22, 0xb5, 0x34, 0x7f, 0x7a, 0xff, 0x27, 0x8d, 0xad, 0xd6, 0x6a, 0x5c, 0xf8, 0xdd, 0xc1, 0x6, 0xe7, 0x0, 0x8c, 0xa9, 0x1f, 0x9e, 0xb5, 0x41, 0xeb, 0x26, 0xe6, 0x2c, 0x1a, 0xad, 0x40, 0xcf, 0xb, 0xad, 0xf9, 0x60, 0x79, 0xa5, 0x65, 0xd6, 0x60, 0x7c, 0x28, 0xb5, 0x75, 0xd6, 0x6a, 0x9, 0xde, 0x0, 0x52, 0xe9, 0xe7, 0xa3, 0x17, 0x42, 0xb0, 0xb1, 0x9e, 0xaf, 0x1a, 0xad, 0x5c, 0x88, 0x93, 0x6d, 0xff, 0x3e, 0xdd, 0x37, 0x8e, 0x4d, 0x14, 0xef, 0xd8, 0x48, 0x89, 0x63, 0x45, 0x31, 0x51, 0x7d, 0xe8, 0x2, 0xf5, 0xf, 0x9, 0x67, 0xd9, 0x88, 0x8f, 0x5b, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char hslider_grabber_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xfd, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xad, 0x92, 0x31, 0x4e, 0xc3, 0x30, 0x18, 0x46, 0x9f, 0x7f, 0xc9, 0xde, 0x60, 0x83, 0xb, 0x50, 0xc8, 0x10, 0x45, 0x96, 0x72, 0x8d, 0x76, 0x84, 0x1e, 0x20, 0x7b, 0xb9, 0x4c, 0x66, 0xe, 0x80, 0x54, 0xb1, 0xb4, 0x5c, 0x23, 0x52, 0x32, 0x56, 0xf4, 0x2, 0x85, 0x85, 0x76, 0x8c, 0x94, 0x9f, 0x25, 0x89, 0xa2, 0x94, 0x56, 0xb5, 0xe0, 0x1b, 0x3f, 0xe9, 0xbd, 0xcf, 0xb6, 0xc, 0x7f, 0x8c, 0x19, 0x17, 0x65, 0x59, 0xde, 0x8a, 0xc8, 0x33, 0x30, 0x5, 0xee, 0x1, 0x54, 0x75, 0x3, 0xbc, 0xab, 0x6a, 0xee, 0xbd, 0xdf, 0x9d, 0x14, 0x54, 0x55, 0xf5, 0x64, 0x8c, 0x79, 0x1, 0xae, 0x4e, 0xc, 0x1e, 0x44, 0x24, 0x8b, 0xe3, 0x78, 0x79, 0x24, 0x68, 0xe1, 0xd7, 0xdf, 0x4e, 0x35, 0x8a, 0x8a, 0xc8, 0xbc, 0x93, 0x98, 0xc1, 0xb1, 0x3f, 0xce, 0x2c, 0x8f, 0xb3, 0xaf, 0xeb, 0x7a, 0x92, 0xa6, 0xe9, 0xa7, 0x0, 0xb4, 0x77, 0xbe, 0x14, 0x6, 0xb8, 0x76, 0xce, 0x2d, 0x0, 0xa4, 0x2d, 0x66, 0x1, 0x30, 0x0, 0x4d, 0xd3, 0xcc, 0x86, 0x82, 0xbb, 0x50, 0x81, 0x31, 0x66, 0x32, 0x14, 0x68, 0xa8, 0xa0, 0x63, 0x3a, 0xc1, 0x36, 0x98, 0x56, 0xdd, 0xf6, 0x2, 0x55, 0x5d, 0x87, 0xa, 0x44, 0x64, 0x35, 0x14, 0xe4, 0xc0, 0x21, 0x80, 0xff, 0xb6, 0xd6, 0xe6, 0xbd, 0xc0, 0x7b, 0xbf, 0x13, 0x91, 0x8c, 0xcb, 0xde, 0x42, 0x81, 0x2c, 0x8a, 0xa2, 0xaf, 0x5e, 0x0, 0x10, 0xc7, 0xf1, 0x52, 0x44, 0xe6, 0xc0, 0xfe, 0xdc, 0x32, 0xf0, 0x98, 0x24, 0xc9, 0x5b, 0x57, 0x1c, 0x7d, 0xdb, 0xa2, 0x28, 0x6e, 0x9c, 0x73, 0xb, 0x55, 0x9d, 0x2, 0xf, 0x6d, 0xbd, 0x31, 0xc6, 0xac, 0xad, 0xb5, 0x79, 0xb7, 0xfc, 0x6f, 0xf9, 0x1, 0x3c, 0x90, 0x4c, 0xcc, 0x74, 0x25, 0x3a, 0xc1, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x4, 0x0, 0x0, 0x0, 0xb5, 0xfa, 0x37, 0xea, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x87, 0x8f, 0xcc, 0xbf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x1, 0x1d, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x85, 0xd1, 0x3f, 0x4b, 0xc3, 0x40, 0x18, 0xc7, 0xf1, 0xef, 0x25, 0xad, 0x89, 0xa9, 0x70, 0x83, 0x43, 0x5d, 0xc4, 0x21, 0x6e, 0x4a, 0x7, 0x47, 0xdf, 0x83, 0x53, 0x16, 0x17, 0xd7, 0x4e, 0xbe, 0x2, 0x5f, 0x85, 0x83, 0xa0, 0xb8, 0x38, 0xb8, 0x88, 0xd0, 0x51, 0x5d, 0x1c, 0x1c, 0x1c, 0x1c, 0x2a, 0xa2, 0xe8, 0x22, 0x2d, 0x82, 0x2d, 0x88, 0x54, 0xed, 0x3f, 0x1b, 0x9a, 0x78, 0x49, 0x1c, 0x9a, 0x54, 0x4f, 0x5, 0x6f, 0x3a, 0xee, 0xf9, 0xf0, 0x3c, 0x3f, 0x9e, 0x83, 0x7f, 0x8e, 0x18, 0xdf, 0x4c, 0x1c, 0x24, 0x5, 0x60, 0x40, 0x17, 0x9f, 0x48, 0x7, 0x26, 0xd3, 0xe5, 0x55, 0xd7, 0x93, 0x25, 0xe8, 0xde, 0xd4, 0x2b, 0xbb, 0x7, 0xbc, 0x8e, 0x88, 0x99, 0x82, 0xa9, 0xf2, 0xda, 0xe2, 0x86, 0x58, 0x78, 0xb7, 0x87, 0xf6, 0xc4, 0xdc, 0xcc, 0xd2, 0x6c, 0xfb, 0xf2, 0x8e, 0x10, 0xc0, 0x48, 0x81, 0x74, 0x3d, 0x55, 0xf4, 0x51, 0x28, 0x7c, 0x54, 0xd1, 0xf5, 0x90, 0xa3, 0x42, 0x6, 0xa, 0xb2, 0x14, 0x90, 0x0, 0x90, 0x10, 0x20, 0x4b, 0x14, 0x74, 0x20, 0x62, 0xf1, 0x3d, 0x7b, 0x24, 0xb2, 0x74, 0x19, 0x8, 0x83, 0x96, 0x39, 0x2e, 0xb, 0x82, 0x37, 0x94, 0xe, 0x6, 0xbd, 0xdb, 0xfc, 0x18, 0xe4, 0x49, 0x9e, 0xf0, 0x75, 0xd0, 0xbf, 0x3e, 0xb6, 0x22, 0x23, 0x7d, 0x9a, 0x4c, 0xce, 0xf6, 0xe8, 0xe9, 0x20, 0xb8, 0xaa, 0x6, 0xcd, 0x1c, 0x0, 0x39, 0x3e, 0x1e, 0x4f, 0xce, 0x7f, 0x76, 0x88, 0x1f, 0x1a, 0xcf, 0xa7, 0xe, 0x6, 0x6, 0xe, 0x8d, 0x23, 0xd5, 0x22, 0xd6, 0x41, 0x42, 0x77, 0x6b, 0x33, 0xaa, 0x59, 0x58, 0xc4, 0xf5, 0x9d, 0xed, 0x6c, 0xc0, 0xd7, 0x26, 0x21, 0xe, 0x7, 0x9d, 0xda, 0xf2, 0x8a, 0x1d, 0x1f, 0xae, 0xdf, 0x57, 0x19, 0xfe, 0x6, 0xa0, 0x9a, 0x2f, 0xf3, 0xed, 0xfe, 0xc5, 0x7e, 0x85, 0xce, 0x5f, 0xbf, 0x39, 0xca, 0x67, 0x21, 0x18, 0x66, 0x3b, 0x0, 0xf8, 0x4, 0x7e, 0x5c, 0x62, 0x33, 0x51, 0xf0, 0xbb, 0xff, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char hslider_grabber_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf1, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xad, 0x92, 0x31, 0x4e, 0x2, 0x61, 0x10, 0x85, 0xbf, 0x37, 0xc6, 0x52, 0x3b, 0xbd, 0x0, 0xe8, 0x65, 0xa0, 0x54, 0xe, 0x40, 0xaf, 0x15, 0x64, 0xa3, 0x85, 0xf9, 0x2b, 0x4d, 0xa4, 0xdc, 0xda, 0x3, 0x98, 0x10, 0x1b, 0xf1, 0x32, 0x44, 0x2e, 0x0, 0x34, 0x42, 0xa9, 0x61, 0x2c, 0xfe, 0xdd, 0x65, 0xb3, 0xa, 0xba, 0xe8, 0xeb, 0x66, 0x92, 0xf7, 0xbd, 0x37, 0xc9, 0xc0, 0x1f, 0xa5, 0xea, 0x22, 0xf8, 0xe0, 0x78, 0xc5, 0xea, 0x12, 0xd4, 0x2, 0x4e, 0xe2, 0xd6, 0xc7, 0x42, 0x2f, 0x42, 0x69, 0x50, 0x7f, 0xba, 0x11, 0x70, 0xe3, 0xf7, 0xe7, 0xc0, 0x3, 0x70, 0xb0, 0x21, 0x70, 0x69, 0x78, 0x37, 0x28, 0x19, 0x7e, 0x1, 0x64, 0xe6, 0xc7, 0xef, 0x5a, 0x55, 0xe4, 0x86, 0x77, 0x72, 0x88, 0xd6, 0xb5, 0xfd, 0x75, 0x4b, 0x72, 0x55, 0x8b, 0x77, 0x3e, 0x9a, 0x77, 0xba, 0x9e, 0x19, 0x40, 0xbc, 0xf9, 0xd7, 0x66, 0x80, 0xc3, 0x7d, 0xf6, 0x2e, 0x0, 0x2c, 0xce, 0xd6, 0xae, 0x61, 0xce, 0xd5, 0x2e, 0x1, 0x68, 0xd4, 0xf7, 0xab, 0x59, 0x2, 0xb8, 0xef, 0xd0, 0xc0, 0xcb, 0xd, 0x26, 0x3b, 0xf8, 0x27, 0x5, 0x40, 0x30, 0xaa, 0x6b, 0x17, 0x7a, 0x2e, 0x1, 0x94, 0x2, 0xcb, 0x1a, 0xfe, 0x37, 0x61, 0x69, 0x1, 0x8, 0xea, 0x4f, 0xd, 0xef, 0x92, 0xdd, 0xf5, 0x83, 0x3c, 0x7e, 0x63, 0x6f, 0x5e, 0x0, 0x22, 0x24, 0x19, 0x1a, 0xde, 0x1, 0x16, 0xdb, 0x92, 0xd, 0x3f, 0xb, 0x4a, 0x9e, 0xd6, 0xa7, 0x54, 0x74, 0xe5, 0xb7, 0x47, 0xf1, 0x49, 0xd4, 0x2, 0x9d, 0x66, 0xa1, 0x63, 0xc1, 0x48, 0x58, 0x9a, 0x27, 0xff, 0x9b, 0x3e, 0x1, 0x5e, 0x62, 0x48, 0x81, 0x2e, 0xbf, 0x88, 0xea, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0xc6, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x83, 0x83, 0x60, 0xaf, 0xb1, 0x65, 0xbb, 0xca, 0x61, 0xb3, 0xc2, 0x0, 0x0, 0x0, 0x63, 0xb7, 0xc8, 0x63, 0xb7, 0xc7, 0x0, 0x0, 0x0, 0x61, 0xb3, 0xbc, 0x60, 0xb1, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5b, 0xa6, 0xa5, 0x63, 0xb4, 0xb6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a, 0x69, 0x69, 0x5e, 0xb1, 0xcd, 0x5e, 0xb0, 0xcd, 0x36, 0x63, 0x63, 0x0, 0x0, 0x0, 0x17, 0x2a, 0x29, 0x60, 0xb2, 0xbd, 0x62, 0xb3, 0xbf, 0x3, 0x5, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x55, 0x9b, 0x9a, 0x52, 0x96, 0x95, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xf, 0xf, 0x62, 0xb4, 0xbd, 0x63, 0xb7, 0xbf, 0x0, 0x0, 0x0, 0x27, 0x48, 0x47, 0x68, 0xc0, 0xcf, 0x68, 0xc1, 0xcf, 0x2d, 0x52, 0x52, 0x51, 0x93, 0x92, 0x56, 0x9d, 0x9c, 0x0, 0x0, 0x0, 0x54, 0xa2, 0xc8, 0x4c, 0x94, 0xc2, 0x48, 0x8e, 0xc0, 0x47, 0x8c, 0xbf, 0x4b, 0x93, 0xc2, 0x4b, 0x92, 0xc2, 0x4f, 0x98, 0xc4, 0x4d, 0x96, 0xc3, 0x55, 0xa3, 0xc8, 0x53, 0x9f, 0xc7, 0x49, 0x8f, 0xc0, 0x4e, 0x97, 0xc4, 0x5a, 0xab, 0xcb, 0x5a, 0xac, 0xcc, 0x52, 0x9e, 0xc6, 0x51, 0x9d, 0xc6, 0xff, 0xff, 0xff, 0x6b, 0x1e, 0xb5, 0x61, 0x0, 0x0, 0x0, 0x31, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x3, 0xd, 0x1c, 0x27, 0x16, 0x6e, 0xc1, 0xef, 0xe8, 0x28, 0xf0, 0xf0, 0x22, 0xdb, 0xde, 0x24, 0x17, 0xaf, 0xc5, 0x1a, 0xa, 0x65, 0xfc, 0xfe, 0x64, 0xc, 0x31, 0xe0, 0xe0, 0x28, 0x2, 0x1, 0x14, 0x9c, 0x95, 0x13, 0x5, 0x2c, 0xdb, 0xdc, 0xb, 0x4f, 0xf4, 0xf7, 0x55, 0x73, 0x7d, 0x4, 0x28, 0xf1, 0xfd, 0xa1, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x41, 0x89, 0xde, 0x6c, 0x4e, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x9e, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x6d, 0xcf, 0xd7, 0x12, 0x82, 0x30, 0x10, 0x5, 0x50, 0x48, 0x42, 0x12, 0xb0, 0x77, 0x8d, 0xd, 0xb, 0x28, 0x56, 0x12, 0x62, 0xd, 0x96, 0xff, 0xff, 0x2a, 0x61, 0xc, 0xe0, 0x83, 0xfb, 0xb4, 0xf7, 0xcc, 0xec, 0xcc, 0x5d, 0xc3, 0xf8, 0x37, 0x26, 0x80, 0x8, 0x41, 0x60, 0xe6, 0xd9, 0xc2, 0x84, 0x52, 0x82, 0xad, 0x4c, 0x0, 0xb6, 0xb9, 0x10, 0xdc, 0xc6, 0x40, 0x3, 0x24, 0x3c, 0x92, 0x32, 0xe2, 0x4, 0x6a, 0x40, 0x54, 0xc8, 0x64, 0x4, 0x45, 0x1a, 0x9c, 0xd2, 0x29, 0x85, 0x73, 0xd9, 0xd1, 0x50, 0xa9, 0x5e, 0x52, 0xb8, 0xd6, 0xea, 0x1a, 0x1a, 0xcd, 0x5b, 0xa, 0xf7, 0x56, 0x5b, 0x43, 0xa7, 0xdb, 0x53, 0x52, 0xaa, 0xfe, 0x80, 0x65, 0x3d, 0x86, 0xa3, 0x58, 0xca, 0x78, 0x3c, 0x99, 0x6a, 0x70, 0x67, 0xf3, 0x87, 0x52, 0xcf, 0xc5, 0x32, 0xaf, 0xee, 0xf9, 0xab, 0xd7, 0x7b, 0xed, 0x7b, 0xc5, 0x33, 0xc1, 0x66, 0xbb, 0xdb, 0xb3, 0x22, 0x27, 0x47, 0x87, 0xa3, 0xe5, 0xfe, 0xfe, 0x1b, 0x6, 0x2c, 0xfc, 0x6e, 0x1f, 0x93, 0x2a, 0x10, 0x62, 0x3, 0x21, 0x32, 0x75, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char hslider_tick_png[] = { @@ -151,11 +147,11 @@ static const unsigned char hslider_tick_png[] = {  };  static const unsigned char hsplit_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x15, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x63, 0x64, 0x60, 0x60, 0x30, 0x62, 0xc0, 0x3, 0x98, 0xf0, 0x49, 0xe, 0x1f, 0x5, 0x0, 0x3c, 0x10, 0x0, 0x42, 0xb5, 0xb3, 0xc, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x1, 0x3, 0x0, 0x0, 0x0, 0xfe, 0xc1, 0x2c, 0xc8, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x50, 0x4c, 0x54, 0x45, 0x27, 0x27, 0x29, 0xff, 0xff, 0xff, 0x11, 0xab, 0xb9, 0xf3, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1, 0xff, 0x2, 0x2d, 0xde, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xb, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x40, 0x5, 0x0, 0x0, 0x10, 0x0, 0x1, 0xa1, 0xc5, 0x21, 0xc1, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char hsplitter_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x40, 0x8, 0x6, 0x0, 0x0, 0x0, 0x27, 0x4, 0x36, 0x8a, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x39, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0x63, 0x60, 0x20, 0x5, 0xfc, 0xff, 0xff, 0xdf, 0xe7, 0xff, 0xff, 0xff, 0x3e, 0xc8, 0x62, 0x2c, 0x68, 0x6a, 0x24, 0xd0, 0x35, 0x31, 0x11, 0x32, 0x75, 0x54, 0xc1, 0xa8, 0x82, 0x51, 0x5, 0xa3, 0xa, 0x46, 0x15, 0x8c, 0x2a, 0x18, 0x55, 0x40, 0x4f, 0x5, 0xe8, 0x75, 0xf7, 0xb, 0x42, 0x1a, 0x30, 0x0, 0x0, 0xf0, 0x37, 0x8, 0x11, 0x77, 0x42, 0x12, 0x8a, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x40, 0x8, 0x0, 0x0, 0x0, 0x0, 0x2, 0x6f, 0x69, 0x56, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x76, 0x93, 0xcd, 0x38, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x87, 0x8f, 0xcc, 0xbf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x27, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x63, 0x60, 0x80, 0x2, 0x66, 0x86, 0x5, 0xa2, 0xe7, 0x18, 0x16, 0x88, 0x9e, 0x63, 0x66, 0x10, 0xbd, 0xf6, 0x98, 0x41, 0xf4, 0xda, 0x63, 0x6, 0xc, 0x30, 0xaa, 0x66, 0x54, 0xd, 0x9a, 0x1a, 0x0, 0x5c, 0x29, 0x6a, 0x81, 0x90, 0x8f, 0x52, 0x12, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char icon_add_png[] = { @@ -163,7 +159,7 @@ static const unsigned char icon_add_png[] = {  };  static const unsigned char icon_close_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xbe, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x90, 0x3b, 0xe, 0xc2, 0x40, 0xc, 0x44, 0x9f, 0x9, 0x45, 0xf8, 0x14, 0x80, 0xb8, 0xf, 0x15, 0x8a, 0x8, 0x48, 0xdc, 0x94, 0x8a, 0x4, 0x85, 0x9a, 0xe3, 0x20, 0x48, 0xc3, 0xa7, 0x20, 0x32, 0x8d, 0x41, 0x8b, 0xc9, 0x4a, 0xb4, 0xb8, 0xda, 0x1d, 0x7b, 0x9e, 0x35, 0x86, 0xbf, 0x2f, 0x9, 0x3f, 0xaa, 0xba, 0x2, 0xba, 0x40, 0x25, 0x22, 0x37, 0xd7, 0xeb, 0x1, 0x19, 0xf0, 0x10, 0x91, 0xed, 0x4b, 0xef, 0x38, 0x60, 0x2, 0x4c, 0x81, 0xdc, 0xc, 0xa1, 0x39, 0xb7, 0x5e, 0x12, 0x1a, 0x3c, 0xa0, 0x2, 0x4e, 0xc0, 0x18, 0x58, 0xaa, 0x6a, 0x5f, 0x55, 0x53, 0x60, 0x61, 0x5a, 0xd, 0xec, 0xa3, 0x11, 0x6c, 0x5b, 0x6a, 0xdb, 0x26, 0xc0, 0xc5, 0xe4, 0x81, 0x99, 0xb, 0x1f, 0xed, 0xb, 0x10, 0x40, 0xd6, 0xc0, 0xcc, 0x66, 0xe, 0xc0, 0xc6, 0x9b, 0xdb, 0x22, 0xc4, 0x4a, 0x63, 0xcb, 0x7e, 0x89, 0xa0, 0xc0, 0xd0, 0x22, 0x94, 0x22, 0x72, 0x8d, 0x2, 0x9c, 0xb9, 0x6, 0xa, 0x3, 0x84, 0xda, 0x7, 0xc4, 0x47, 0xc8, 0x6c, 0xf0, 0x8c, 0x1d, 0x4c, 0x44, 0xee, 0xc0, 0xce, 0xb4, 0x11, 0x30, 0xf, 0xd, 0x1e, 0xd0, 0x0, 0x47, 0xdb, 0xf2, 0x3e, 0x98, 0xbd, 0x4b, 0xeb, 0x35, 0x6d, 0xb7, 0xf8, 0xe3, 0x7a, 0x2, 0x49, 0x7e, 0x47, 0x10, 0xc3, 0xf7, 0xae, 0x75, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x9b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0x92, 0x31, 0xe, 0xc2, 0x30, 0x10, 0x4, 0x17, 0xaa, 0x3d, 0x67, 0xdb, 0x58, 0xd0, 0xd3, 0xf0, 0xa3, 0x7c, 0x36, 0x3c, 0x82, 0x48, 0x44, 0x22, 0x6f, 0xb1, 0x4d, 0x85, 0x14, 0x81, 0xf, 0x2c, 0x28, 0xe0, 0xda, 0xd5, 0x8c, 0x4e, 0x77, 0xb, 0xfc, 0xd5, 0x98, 0xd9, 0x20, 0x29, 0x7a, 0xb9, 0xa4, 0x68, 0x66, 0x83, 0xb, 0x93, 0xcc, 0x24, 0xa7, 0x9a, 0x44, 0x52, 0x24, 0x39, 0x91, 0xcc, 0x55, 0x89, 0xa4, 0xde, 0xcc, 0xce, 0x24, 0xb, 0xc9, 0x39, 0x84, 0xb0, 0xf7, 0xb2, 0xae, 0xeb, 0x76, 0xde, 0x8a, 0x4f, 0x92, 0x66, 0xd8, 0x91, 0x5c, 0x49, 0x5e, 0x9a, 0xe1, 0xb5, 0x64, 0x5, 0x16, 0x92, 0x8b, 0x7, 0x6f, 0x9b, 0x8c, 0x0, 0x4a, 0x29, 0x9b, 0x26, 0x81, 0xa4, 0x3e, 0xa5, 0x34, 0x2, 0x38, 0x2, 0x58, 0x0, 0xcc, 0x0, 0xe, 0x39, 0xe7, 0xd3, 0xfa, 0xb0, 0xee, 0xea, 0x8f, 0x7, 0x7b, 0xf5, 0x9d, 0xb7, 0xb0, 0x97, 0x55, 0x25, 0x5f, 0x17, 0xe9, 0x2e, 0xf9, 0xb8, 0xca, 0x3f, 0x9b, 0x1b, 0x1a, 0xe3, 0x40, 0x47, 0xa0, 0xda, 0xda, 0x61, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char icon_color_pick_png[] = { @@ -203,19 +199,15 @@ static const unsigned char icon_zoom_reset_png[] = {  };  static const unsigned char line_edit_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x4d, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xdd, 0x8f, 0xcd, 0x4a, 0x2, 0x61, 0x14, 0x86, 0xdf, 0x73, 0xbe, 0x51, 0x90, 0x71, 0x12, 0x4, 0x2b, 0x15, 0x61, 0xc, 0x9b, 0xd0, 0x74, 0xe1, 0x26, 0x97, 0xd6, 0xc2, 0x4d, 0x44, 0xd7, 0xe0, 0x2e, 0xda, 0x77, 0x1f, 0x5d, 0x42, 0xde, 0x40, 0xab, 0x68, 0x55, 0x11, 0xd2, 0xaa, 0x56, 0x81, 0xb6, 0x69, 0x35, 0xd0, 0x1f, 0x2a, 0xb8, 0x49, 0x1d, 0xc1, 0x71, 0x4e, 0xb, 0x43, 0x24, 0xa6, 0x14, 0xdc, 0xf5, 0xc2, 0x81, 0x6f, 0x71, 0xde, 0xe7, 0x7b, 0xe, 0xb0, 0x64, 0x68, 0xf6, 0x5d, 0x28, 0x95, 0xab, 0x10, 0xae, 0x8, 0x49, 0xcc, 0x77, 0x59, 0xa8, 0x3, 0xf2, 0xae, 0x1a, 0xf7, 0xf5, 0x1a, 0x0, 0x99, 0x5, 0x70, 0x7e, 0x67, 0xef, 0x2, 0x90, 0x7d, 0x22, 0x72, 0x41, 0xa4, 0xf9, 0x7e, 0x27, 0xe2, 0x8a, 0x88, 0x6, 0xd0, 0x65, 0xf3, 0xe1, 0xf6, 0x10, 0x80, 0xa7, 0x0, 0xa0, 0x50, 0x2a, 0x57, 0x1, 0x9c, 0x30, 0x6b, 0x50, 0x9a, 0xc6, 0xcc, 0xc, 0xff, 0x51, 0xc, 0x22, 0x88, 0x78, 0xd6, 0x5a, 0xc2, 0xb4, 0xdb, 0xef, 0xf6, 0x23, 0x4f, 0xc8, 0x5c, 0x21, 0x22, 0x97, 0x15, 0xcf, 0xbd, 0x99, 0x99, 0x41, 0x44, 0x63, 0x8f, 0xa4, 0x2, 0x0, 0x3c, 0x31, 0x93, 0x38, 0xf0, 0x8b, 0xb6, 0x6f, 0x48, 0x91, 0x50, 0x62, 0xa, 0x58, 0x26, 0xff, 0x5, 0x60, 0xe5, 0x8b, 0x49, 0x33, 0x93, 0x5b, 0xb8, 0x64, 0x66, 0x72, 0xb0, 0xf2, 0xc5, 0x24, 0x0, 0x68, 0x0, 0x10, 0x8d, 0xad, 0x7, 0x43, 0xba, 0x21, 0x2f, 0xf6, 0x33, 0xfd, 0x5d, 0xfd, 0x6, 0x6c, 0x65, 0x65, 0xd8, 0xfb, 0xc, 0x4c, 0xd, 0x9c, 0xfe, 0xe0, 0x46, 0xf, 0x1b, 0x94, 0x4a, 0x5b, 0x73, 0xcb, 0xa9, 0xf4, 0x26, 0x74, 0x7d, 0x85, 0x1c, 0xa7, 0x7f, 0x3d, 0x35, 0x78, 0x7b, 0xaa, 0x1f, 0xe9, 0x86, 0x71, 0xb0, 0x5d, 0x2c, 0xad, 0x9a, 0x56, 0x56, 0x9c, 0x5e, 0xdf, 0xd7, 0x24, 0x14, 0xe, 0x8b, 0xae, 0x1b, 0xd4, 0xed, 0xb4, 0x5b, 0xaf, 0x8d, 0xbb, 0x63, 0x0, 0x50, 0x0, 0x60, 0xdb, 0xb6, 0xb7, 0x11, 0x8f, 0x9c, 0x3a, 0x23, 0x4e, 0x42, 0x24, 0xaa, 0x5, 0x82, 0x1e, 0x2b, 0xe5, 0xfc, 0x9c, 0xd1, 0x70, 0xd0, 0xee, 0xb6, 0x3e, 0xce, 0xcf, 0x22, 0xee, 0xae, 0x5d, 0xab, 0x8d, 0x17, 0x39, 0x77, 0x6e, 0xbe, 0x0, 0xac, 0x8, 0x6b, 0x3c, 0x2d, 0x57, 0x1a, 0xdf, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 -}; - -static const unsigned char line_edit_active_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x50, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xdd, 0x93, 0x4d, 0x4b, 0x2, 0x51, 0x14, 0x86, 0xdf, 0x73, 0x66, 0xc, 0x1d, 0x87, 0xa0, 0xa8, 0x4c, 0x27, 0x19, 0x49, 0xc, 0x84, 0x24, 0xda, 0xe4, 0x52, 0x22, 0xdc, 0x44, 0x44, 0x2d, 0x86, 0x5a, 0xba, 0xb1, 0x68, 0xef, 0xf, 0xf0, 0x6f, 0xb4, 0xab, 0x6d, 0x9b, 0x16, 0xe1, 0xaa, 0x24, 0x5a, 0x16, 0xf4, 0x69, 0x3f, 0xc0, 0x82, 0xd2, 0x8a, 0x8, 0x2, 0x47, 0xa1, 0x69, 0x4e, 0xb, 0x41, 0x5c, 0x4c, 0x29, 0xb8, 0xeb, 0x81, 0xb, 0x77, 0x71, 0xde, 0xe7, 0xbe, 0x67, 0x71, 0x81, 0x1, 0xa1, 0xee, 0x7b, 0x2a, 0x9d, 0xc9, 0x41, 0x38, 0x2b, 0x24, 0xe3, 0x9e, 0xc3, 0x42, 0x6f, 0x20, 0xf7, 0xb8, 0x72, 0x7e, 0xb6, 0x7, 0x40, 0xba, 0x5, 0x3c, 0xbb, 0xb0, 0x78, 0x4, 0xc8, 0x32, 0x11, 0x39, 0x20, 0x52, 0x3d, 0x9f, 0x13, 0x71, 0x44, 0x44, 0x5, 0xa8, 0x74, 0x7f, 0x71, 0xba, 0xa, 0xc0, 0x55, 0x0, 0x20, 0x95, 0xce, 0xe4, 0x0, 0x14, 0x98, 0x55, 0x28, 0xaa, 0xca, 0xcc, 0xc, 0xef, 0xa3, 0x30, 0x88, 0x20, 0xe2, 0xce, 0x84, 0x22, 0xb1, 0xea, 0xeb, 0x73, 0xf5, 0x86, 0xdb, 0x66, 0xce, 0x12, 0x91, 0xc3, 0xa, 0xf7, 0xdc, 0x99, 0x99, 0x41, 0x44, 0xdf, 0x2e, 0x49, 0x16, 0x0, 0xb8, 0xdd, 0x4c, 0xc2, 0xc0, 0x2f, 0xb5, 0x3d, 0x21, 0x85, 0x84, 0x22, 0x1d, 0xc1, 0x20, 0xfc, 0x17, 0x41, 0x32, 0x9f, 0x30, 0xe2, 0x96, 0xd9, 0x77, 0x28, 0x6e, 0x99, 0x48, 0xe6, 0x13, 0x6, 0x0, 0xa8, 0x0, 0x30, 0x36, 0x3f, 0x32, 0x14, 0x8, 0x69, 0x52, 0x3d, 0x7c, 0xa2, 0xbf, 0xa3, 0x6d, 0xa6, 0x37, 0x4c, 0x69, 0xd6, 0x6c, 0x5f, 0xa7, 0x41, 0xa3, 0xde, 0x2a, 0xeb, 0x51, 0x8d, 0xcc, 0x35, 0xa3, 0x67, 0x38, 0xb6, 0x6e, 0x40, 0x9f, 0xd2, 0xc8, 0xae, 0x37, 0x4f, 0x3a, 0xd, 0x1e, 0x2f, 0xef, 0xb6, 0xf5, 0x68, 0x70, 0x65, 0xae, 0x90, 0x9c, 0x88, 0x6f, 0x9a, 0x62, 0xd7, 0x9a, 0x9e, 0x4d, 0xb4, 0x88, 0x26, 0xba, 0x11, 0xa0, 0xf7, 0xdb, 0x8f, 0x97, 0x87, 0xab, 0xca, 0xe, 0xd0, 0xf5, 0x99, 0xac, 0x3, 0x4b, 0x9, 0xfa, 0xc3, 0xbb, 0x81, 0x49, 0xff, 0x92, 0x1a, 0xf4, 0xd, 0x7b, 0x9, 0x9c, 0xc6, 0xd7, 0xa7, 0x5d, 0x6b, 0x95, 0xf7, 0xaf, 0x47, 0xb7, 0x50, 0x2c, 0xba, 0xfd, 0xac, 0xdb, 0x93, 0x1f, 0xc, 0x91, 0x5f, 0xe7, 0xb9, 0x80, 0x59, 0xbb, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xa, 0x0, 0x0, 0x0, 0xa, 0x4, 0x3, 0x0, 0x0, 0x0, 0x7f, 0x1c, 0xd2, 0x8e, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2a, 0x50, 0x4c, 0x54, 0x45, 0x17, 0x16, 0x1a, 0x1d, 0x1c, 0x21, 0x20, 0x1e, 0x24, 0x21, 0x1f, 0x25, 0x1d, 0x1c, 0x21, 0x20, 0x1e, 0x24, 0x1d, 0x1c, 0x21, 0x1d, 0x1c, 0x21, 0x24, 0x22, 0x29, 0x28, 0x26, 0x2d, 0x28, 0x26, 0x2e, 0x2b, 0x2a, 0x31, 0x2c, 0x2a, 0x32, 0xff, 0xff, 0xff, 0xb9, 0x11, 0x56, 0x3e, 0x0, 0x0, 0x0, 0x8, 0x74, 0x52, 0x4e, 0x53, 0x6f, 0xef, 0xf7, 0xf7, 0xf0, 0xf9, 0xf1, 0xee, 0xcf, 0x21, 0xd2, 0xdf, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xd, 0xf6, 0xb4, 0x61, 0xf5, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x2d, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x54, 0x36, 0x36, 0x12, 0x60, 0xf0, 0x98, 0xb5, 0x6a, 0x65, 0xb, 0x43, 0xe4, 0x9e, 0x33, 0xa7, 0xa7, 0x32, 0x58, 0x9d, 0x39, 0x73, 0x66, 0x31, 0x16, 0x12, 0x22, 0xb, 0x52, 0xd9, 0xc6, 0xc0, 0x2, 0xd4, 0x55, 0x0, 0x0, 0xc, 0x14, 0x1a, 0x90, 0x55, 0x1a, 0xec, 0xdb, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char line_edit_disabled_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x3a, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xdd, 0x93, 0x31, 0x4b, 0x3, 0x41, 0x10, 0x85, 0xdf, 0xcc, 0xec, 0x6d, 0x8c, 0x26, 0x7a, 0x20, 0x51, 0x4c, 0x1a, 0x2b, 0x2b, 0xd3, 0x9a, 0x32, 0x88, 0xa4, 0x11, 0xb1, 0xbb, 0x3e, 0x95, 0x62, 0xef, 0x9f, 0xb1, 0xb3, 0xb4, 0x17, 0x41, 0xd0, 0x20, 0x16, 0x16, 0x5a, 0x9, 0xfa, 0x3, 0x52, 0x25, 0xa8, 0x9d, 0xa6, 0xb8, 0xdc, 0xed, 0xed, 0x58, 0x44, 0x42, 0x8a, 0xd3, 0x4, 0xd2, 0xf9, 0xc1, 0xc0, 0x14, 0xfb, 0xde, 0xbc, 0x57, 0x2c, 0x30, 0x27, 0x34, 0xb9, 0xd7, 0x1b, 0xcd, 0x36, 0x94, 0x5b, 0x4a, 0x5a, 0xc9, 0x7d, 0xac, 0xf4, 0x1, 0xf2, 0x37, 0x2f, 0x8f, 0xf7, 0xe7, 0x0, 0x74, 0xd2, 0x80, 0xb7, 0x77, 0x76, 0x2f, 0x1, 0xdd, 0x27, 0x22, 0x7, 0x22, 0x93, 0x7b, 0x4e, 0xd5, 0xa9, 0xaa, 0x1, 0xe8, 0xea, 0xf5, 0xe9, 0xee, 0x10, 0x80, 0x17, 0x0, 0xa8, 0x37, 0x9a, 0x6d, 0x0, 0xa7, 0xcc, 0x6, 0x62, 0xc, 0x33, 0x33, 0xf2, 0x47, 0x18, 0x44, 0x50, 0xf5, 0x5b, 0xeb, 0xd5, 0xcd, 0xee, 0x7b, 0xaf, 0xfb, 0xcc, 0x23, 0x67, 0x6e, 0x11, 0x91, 0x63, 0xe1, 0xa9, 0x9d, 0x99, 0x19, 0x44, 0x94, 0x79, 0xd2, 0x16, 0x0, 0xf0, 0x28, 0x99, 0x6e, 0x0, 0xbf, 0xc4, 0xce, 0x85, 0x84, 0x94, 0xaa, 0x63, 0x83, 0x79, 0xf8, 0x7, 0x6, 0x6, 0x0, 0x96, 0xc2, 0xd5, 0x9a, 0x7a, 0x45, 0x12, 0xf, 0x66, 0x12, 0x15, 0x4b, 0x21, 0x88, 0xa9, 0x36, 0x36, 0x8, 0xa, 0x8b, 0x56, 0x24, 0xd0, 0x24, 0x1e, 0xd0, 0xdf, 0xd2, 0x11, 0xb, 0xe5, 0x50, 0x35, 0x4d, 0x3, 0xe0, 0xa7, 0x42, 0x96, 0xba, 0x8e, 0x4, 0x96, 0x6c, 0xb1, 0x3c, 0x55, 0x5c, 0x28, 0x96, 0x61, 0x8c, 0x25, 0x9f, 0xb9, 0xdb, 0x71, 0x82, 0xc2, 0xb0, 0x7f, 0x9c, 0x58, 0x7b, 0x50, 0xa, 0x2b, 0x6b, 0xae, 0xb4, 0xa2, 0x3e, 0x73, 0xb9, 0x49, 0x44, 0x8c, 0x8a, 0xb1, 0x94, 0xc, 0xe3, 0xb7, 0x20, 0xee, 0x9f, 0x0, 0x13, 0x9f, 0x29, 0x8a, 0x22, 0xe9, 0x7d, 0x5, 0x67, 0x2c, 0xb2, 0x7, 0x23, 0xcb, 0xb9, 0xe7, 0x5d, 0xf6, 0xe9, 0xb3, 0xb4, 0xf3, 0x70, 0x7d, 0x71, 0x4, 0xc0, 0xcf, 0x52, 0x77, 0x2a, 0xdf, 0x87, 0x72, 0x62, 0x0, 0x51, 0xb5, 0x8, 0xdb, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xa, 0x0, 0x0, 0x0, 0xa, 0x8, 0x4, 0x0, 0x0, 0x0, 0x27, 0x3b, 0x7, 0x36, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x87, 0x8f, 0xcc, 0xbf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x64, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x95, 0xce, 0x31, 0x12, 0x2, 0x21, 0x10, 0x44, 0xd1, 0x3f, 0x40, 0xa1, 0x44, 0xa6, 0x46, 0xde, 0x63, 0x4f, 0xe5, 0x15, 0x38, 0xb2, 0xd6, 0x6, 0xb0, 0xc8, 0x30, 0x6, 0x96, 0xac, 0x56, 0x99, 0xf8, 0xb3, 0x7e, 0x51, 0xcb, 0xf9, 0x1a, 0xb3, 0x3f, 0xa, 0xaf, 0xc, 0xad, 0x2d, 0xcb, 0xe5, 0x76, 0x38, 0x5, 0x76, 0xec, 0x6c, 0xf7, 0xe0, 0x53, 0xe0, 0x13, 0xa1, 0x27, 0x27, 0x43, 0x26, 0x81, 0x20, 0xc8, 0x70, 0xfc, 0xe8, 0xf, 0x34, 0x67, 0xd8, 0x9c, 0x86, 0x61, 0x2e, 0x68, 0xe9, 0x91, 0xaf, 0x4b, 0x5a, 0x7d, 0x2a, 0x2c, 0x3, 0xed, 0xef, 0x1e, 0x6b, 0xcb, 0x4f, 0xa6, 0x66, 0x2b, 0x25, 0x6, 0x1, 0x37, 0x40, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  }; -static const unsigned char line_edit_selected_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x50, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xdd, 0x93, 0x4d, 0x4b, 0x2, 0x51, 0x14, 0x86, 0xdf, 0x73, 0x66, 0xc, 0x1d, 0x87, 0xa0, 0xa8, 0x4c, 0x27, 0x19, 0x49, 0xc, 0x84, 0x24, 0xda, 0xe4, 0x52, 0x22, 0xdc, 0x44, 0x44, 0x2d, 0x86, 0x5a, 0xba, 0xb1, 0x68, 0xef, 0xf, 0xf0, 0x6f, 0xb4, 0xab, 0x6d, 0x9b, 0x16, 0xe1, 0xaa, 0x24, 0x5a, 0x16, 0xf4, 0x69, 0x3f, 0xc0, 0x82, 0xd2, 0x8a, 0x8, 0x2, 0x47, 0xa1, 0x69, 0x4e, 0xb, 0x41, 0x5c, 0x4c, 0x29, 0xb8, 0xeb, 0x81, 0xb, 0x77, 0x71, 0xde, 0xe7, 0xbe, 0x67, 0x71, 0x81, 0x1, 0xa1, 0xee, 0x7b, 0x2a, 0x9d, 0xc9, 0x41, 0x38, 0x2b, 0x24, 0xe3, 0x9e, 0xc3, 0x42, 0x6f, 0x20, 0xf7, 0xb8, 0x72, 0x7e, 0xb6, 0x7, 0x40, 0xba, 0x5, 0x3c, 0xbb, 0xb0, 0x78, 0x4, 0xc8, 0x32, 0x11, 0x39, 0x20, 0x52, 0x3d, 0x9f, 0x13, 0x71, 0x44, 0x44, 0x5, 0xa8, 0x74, 0x7f, 0x71, 0xba, 0xa, 0xc0, 0x55, 0x0, 0x20, 0x95, 0xce, 0xe4, 0x0, 0x14, 0x98, 0x55, 0x28, 0xaa, 0xca, 0xcc, 0xc, 0xef, 0xa3, 0x30, 0x88, 0x20, 0xe2, 0xce, 0x84, 0x22, 0xb1, 0xea, 0xeb, 0x73, 0xf5, 0x86, 0xdb, 0x66, 0xce, 0x12, 0x91, 0xc3, 0xa, 0xf7, 0xdc, 0x99, 0x99, 0x41, 0x44, 0xdf, 0x2e, 0x49, 0x16, 0x0, 0xb8, 0xdd, 0x4c, 0xc2, 0xc0, 0x2f, 0xb5, 0x3d, 0x21, 0x85, 0x84, 0x22, 0x1d, 0xc1, 0x20, 0xfc, 0x17, 0x41, 0x32, 0x9f, 0x30, 0xe2, 0x96, 0xd9, 0x77, 0x28, 0x6e, 0x99, 0x48, 0xe6, 0x13, 0x6, 0x0, 0xa8, 0x0, 0x30, 0x36, 0x3f, 0x32, 0x14, 0x8, 0x69, 0x52, 0x3d, 0x7c, 0xa2, 0xbf, 0xa3, 0x6d, 0xa6, 0x37, 0x4c, 0x69, 0xd6, 0x6c, 0x5f, 0xa7, 0x41, 0xa3, 0xde, 0x2a, 0xeb, 0x51, 0x8d, 0xcc, 0x35, 0xa3, 0x67, 0x38, 0xb6, 0x6e, 0x40, 0x9f, 0xd2, 0xc8, 0xae, 0x37, 0x4f, 0x3a, 0xd, 0x1e, 0x2f, 0xef, 0xb6, 0xf5, 0x68, 0x70, 0x65, 0xae, 0x90, 0x9c, 0x88, 0x6f, 0x9a, 0x62, 0xd7, 0x9a, 0x9e, 0x4d, 0xb4, 0x88, 0x26, 0xba, 0x11, 0xa0, 0xf7, 0xdb, 0x8f, 0x97, 0x87, 0xab, 0xca, 0xe, 0xd0, 0xf5, 0x99, 0xac, 0x3, 0x4b, 0x9, 0xfa, 0xc3, 0xbb, 0x81, 0x49, 0xff, 0x92, 0x1a, 0xf4, 0xd, 0x7b, 0x9, 0x9c, 0xc6, 0xd7, 0xa7, 0x5d, 0x6b, 0x95, 0xf7, 0xaf, 0x47, 0xb7, 0x50, 0x2c, 0xba, 0xfd, 0xac, 0xdb, 0x93, 0x1f, 0xc, 0x91, 0x5f, 0xe7, 0xb9, 0x80, 0x59, 0xbb, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +static const unsigned char line_edit_focus_png[] = { +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0xab, 0x50, 0x4c, 0x54, 0x45, 0x1b, 0x17, 0x18, 0x1b, 0x17, 0x18, 0x1b, 0x17, 0x18, 0xc8, 0x68, 0x12, 0xef, 0xed, 0xe7, 0xef, 0xed, 0xe8, 0xf0, 0xed, 0xe8, 0xf0, 0xee, 0xe8, 0xf0, 0xed, 0xe7, 0xed, 0xeb, 0xe5, 0xee, 0xeb, 0xe5, 0xee, 0xeb, 0xe6, 0xec, 0xe9, 0xe3, 0xeb, 0xe9, 0xe3, 0xeb, 0xe9, 0xe2, 0xec, 0xe9, 0xe2, 0xe9, 0xe6, 0xe0, 0xea, 0xe7, 0xe0, 0xea, 0xe7, 0xe1, 0xe8, 0xe4, 0xdd, 0xe8, 0xe5, 0xde, 0xe8, 0xe5, 0xdd, 0xe8, 0xe4, 0xde, 0xe6, 0xe2, 0xdb, 0xe6, 0xe3, 0xdb, 0xe6, 0xe3, 0xdc, 0xe7, 0xe2, 0xdb, 0xe7, 0xe3, 0xdb, 0xe4, 0xe0, 0xd8, 0xe5, 0xe0, 0xd8, 0xe5, 0xe1, 0xd9, 0xe5, 0xe0, 0xd9, 0xe4, 0xe1, 0xd9, 0xe5, 0xe1, 0xd8, 0xe4, 0xe0, 0xd9, 0xe2, 0xdf, 0xd6, 0xe3, 0xdf, 0xd6, 0xe3, 0xde, 0xd6, 0xe2, 0xde, 0xd6, 0xe1, 0xdc, 0xd4, 0xe1, 0xdc, 0xd3, 0xe0, 0xdc, 0xd3, 0xe1, 0xdd, 0xd3, 0xe1, 0xdd, 0xd4, 0xdf, 0xda, 0xd0, 0xdf, 0xda, 0xd1, 0xdf, 0xdb, 0xd1, 0xe0, 0xda, 0xd1, 0xdd, 0xd8, 0xcf, 0xdd, 0xd8, 0xce, 0xde, 0xd9, 0xce, 0xde, 0xd8, 0xce, 0xdd, 0xd9, 0xce, 0xdc, 0xd6, 0xcc, 0xdb, 0xd6, 0xcc, 0xdc, 0xd6, 0xcb, 0xff, 0xff, 0xff, 0x73, 0x72, 0x65, 0x6f, 0x0, 0x0, 0x0, 0x2, 0x74, 0x52, 0x4e, 0x53, 0x36, 0x61, 0xc5, 0x3a, 0xd, 0x83, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x38, 0xa0, 0x7, 0xa5, 0xd6, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x9e, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x5d, 0xcf, 0xdb, 0x16, 0x82, 0x20, 0x10, 0x85, 0x61, 0xb4, 0xb4, 0x13, 0x1d, 0x28, 0x14, 0xcb, 0x4a, 0x33, 0xf, 0x59, 0x52, 0x98, 0x62, 0xef, 0xff, 0x66, 0xd1, 0xf6, 0xca, 0xfe, 0x19, 0xd6, 0x62, 0x7d, 0x77, 0x43, 0x88, 0x3d, 0x88, 0x10, 0x7b, 0x34, 0xc8, 0x36, 0x30, 0x76, 0x1c, 0x77, 0xe2, 0x3a, 0xee, 0xd4, 0x7c, 0x0, 0xb3, 0x79, 0x3f, 0xa6, 0x5, 0x80, 0xa2, 0x25, 0xa5, 0xab, 0x35, 0x5, 0x6c, 0x18, 0x63, 0x5b, 0xd6, 0x7, 0xd8, 0x71, 0xcf, 0xe3, 0x9c, 0xfb, 0x9c, 0x7b, 0x3e, 0x40, 0x4, 0xfb, 0xe0, 0x10, 0x84, 0xa1, 0x8, 0x85, 0x0, 0x1c, 0x4f, 0xe7, 0x28, 0xbe, 0x44, 0x71, 0x9c, 0x24, 0x67, 0xc0, 0x35, 0x4d, 0xb3, 0x2c, 0xcb, 0xcd, 0x4b, 0x73, 0x40, 0x71, 0x33, 0x15, 0xe5, 0xfd, 0x51, 0x16, 0x25, 0xa0, 0x92, 0xf2, 0xf9, 0x92, 0xbf, 0x2a, 0x9, 0x50, 0xaa, 0x56, 0xef, 0x46, 0xb5, 0x4d, 0x5b, 0x37, 0x0, 0xdd, 0x7d, 0xb4, 0x36, 0xdb, 0x69, 0xad, 0x1, 0x7f, 0xc7, 0x59, 0xc3, 0xf3, 0xad, 0x2f, 0x30, 0x4f, 0x11, 0x50, 0x3e, 0x12, 0x48, 0xdb, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char logo_png[] = { @@ -223,31 +215,35 @@ static const unsigned char logo_png[] = {  };  static const unsigned char option_arrow_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x82, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xcd, 0x90, 0x31, 0xa, 0xc2, 0x50, 0x10, 0x44, 0xdf, 0x4f, 0x95, 0x46, 0xc8, 0xc7, 0xdc, 0x40, 0x1b, 0xbd, 0x9a, 0xc7, 0x89, 0xb1, 0xb0, 0x48, 0x44, 0xb0, 0xf0, 0x26, 0x5e, 0x42, 0xd0, 0x5e, 0xcf, 0xf0, 0x6c, 0xb6, 0xf8, 0x1, 0xd1, 0x36, 0x53, 0xce, 0xbe, 0x59, 0x86, 0x81, 0x79, 0x4a, 0x3d, 0xa8, 0xa3, 0xda, 0x7c, 0xb9, 0x35, 0xea, 0xa0, 0x1e, 0x1, 0xaa, 0xf0, 0x6b, 0x60, 0x3, 0xf4, 0x6a, 0x2e, 0x61, 0xa0, 0x3, 0xb6, 0xc1, 0x4c, 0xbe, 0x5c, 0xd4, 0x9b, 0x7a, 0x55, 0x5b, 0x75, 0xa1, 0x9e, 0x4a, 0xf, 0x20, 0x15, 0xa1, 0xc, 0xec, 0x81, 0x15, 0x70, 0x7, 0x4, 0xd6, 0xc0, 0x3, 0xd8, 0xa5, 0x94, 0xde, 0x93, 0x40, 0x51, 0xa1, 0x8f, 0x10, 0xc0, 0x33, 0xe0, 0xd7, 0xaf, 0x1, 0x72, 0x54, 0x39, 0xab, 0xcb, 0x7f, 0x83, 0xcd, 0x40, 0x1f, 0xb6, 0x77, 0x59, 0xce, 0xb2, 0xbd, 0x7f, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x98, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xbd, 0x91, 0xb1, 0xd, 0xc2, 0x30, 0x10, 0x45, 0xdf, 0xd1, 0xb8, 0xf0, 0x2, 0xee, 0xdc, 0x87, 0x1, 0xd8, 0x24, 0xb5, 0xe9, 0x19, 0x87, 0x1e, 0xea, 0x6c, 0xc2, 0x0, 0xa4, 0xb5, 0xdc, 0x79, 0x1, 0x17, 0xae, 0x8e, 0x26, 0x48, 0x76, 0x14, 0x40, 0x48, 0x88, 0xdf, 0xfd, 0xf7, 0xef, 0x4b, 0x77, 0x3a, 0xf8, 0x85, 0x62, 0x8c, 0x21, 0xc6, 0x18, 0xb6, 0x32, 0x59, 0x83, 0x94, 0xd2, 0x5e, 0x55, 0x6f, 0x0, 0x22, 0x72, 0xf0, 0xde, 0xdf, 0xdb, 0x7c, 0xd7, 0x9a, 0x9c, 0xb3, 0x55, 0xd5, 0x9, 0xb0, 0x80, 0x55, 0xd5, 0x29, 0xe7, 0x6c, 0x5f, 0x16, 0x6a, 0xad, 0x67, 0x60, 0x68, 0xd0, 0xb0, 0xb0, 0x3f, 0xaa, 0x3b, 0x3a, 0xa5, 0x74, 0x51, 0xd5, 0xd0, 0xd, 0x88, 0x5c, 0xbd, 0xf7, 0xc7, 0xa7, 0xef, 0x6e, 0x30, 0xc6, 0x9c, 0x80, 0xb9, 0x41, 0xf3, 0xc2, 0xd8, 0x2c, 0x38, 0xe7, 0x8a, 0x88, 0x8c, 0x40, 0x1, 0x8a, 0x88, 0x8c, 0xce, 0xb9, 0xf2, 0x71, 0xcf, 0x77, 0x8f, 0xfb, 0x5a, 0xf, 0x28, 0x4a, 0x37, 0xff, 0x58, 0x46, 0x7b, 0x50, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char option_button_disabled_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x77, 0x0, 0x7d, 0x59, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0xf, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xd5, 0x31, 0x4a, 0x3, 0x41, 0x18, 0x86, 0xe1, 0xf7, 0x9f, 0xd9, 0x94, 0xda, 0x27, 0x17, 0x30, 0x27, 0xb0, 0x15, 0xa2, 0x57, 0xd0, 0x4d, 0x20, 0xeb, 0x5, 0x9c, 0x68, 0x50, 0xc4, 0x80, 0x8, 0x8b, 0x6b, 0xa2, 0x85, 0x85, 0xa2, 0x37, 0x70, 0x5, 0x41, 0x4, 0x4b, 0x2d, 0x52, 0xe4, 0x18, 0xf6, 0x41, 0x6b, 0x4d, 0x17, 0x76, 0x66, 0x2c, 0x24, 0x51, 0x82, 0x8d, 0xc5, 0xae, 0x4d, 0xbe, 0xea, 0x9f, 0xea, 0x7d, 0xba, 0x81, 0x7f, 0x9e, 0x4c, 0x8e, 0x86, 0xe9, 0x55, 0x9d, 0x64, 0x67, 0x38, 0xa9, 0x21, 0x2c, 0xe4, 0x52, 0xf3, 0x8c, 0x10, 0xfa, 0x4e, 0xd3, 0xb9, 0xbf, 0x3c, 0x7a, 0x99, 0x2, 0x1a, 0xa6, 0x57, 0xb5, 0xd8, 0x81, 0x8, 0xe7, 0x25, 0xad, 0xd2, 0xf4, 0xe2, 0xf0, 0x2d, 0x8f, 0x7e, 0xb3, 0xdd, 0x2d, 0x8f, 0x33, 0x1f, 0x9, 0x7e, 0xd7, 0x69, 0x56, 0x26, 0x8, 0xc2, 0xd6, 0xf1, 0x63, 0xd8, 0x4a, 0xf6, 0xf3, 0x88, 0xfe, 0xb6, 0xfa, 0x56, 0x72, 0x10, 0x9a, 0xe4, 0x1, 0x40, 0x1, 0xe0, 0xa4, 0x56, 0xd2, 0x2a, 0x2d, 0xa, 0x80, 0xd8, 0x1b, 0x60, 0x6d, 0xfa, 0xe, 0x4d, 0xe2, 0xb, 0x8b, 0xcf, 0x34, 0x55, 0xd1, 0xe1, 0xd9, 0xcd, 0x1, 0x73, 0xc0, 0x17, 0xc0, 0x33, 0x6a, 0xb6, 0xbb, 0xe5, 0xa2, 0xa2, 0x75, 0x13, 0x57, 0x80, 0xf7, 0x6f, 0x80, 0xd0, 0x1f, 0x67, 0x3e, 0x2a, 0xa, 0xe0, 0x9, 0x36, 0x45, 0x78, 0x6, 0x8, 0x0, 0x9c, 0xa6, 0xa3, 0xac, 0x1f, 0x6c, 0x98, 0x13, 0x14, 0x59, 0x7a, 0x77, 0x1d, 0xbf, 0xe6, 0x11, 0xae, 0x9b, 0xb8, 0x82, 0xd7, 0x91, 0xc3, 0x6f, 0x7, 0xd8, 0x65, 0xf8, 0xf1, 0x19, 0xad, 0xef, 0x24, 0x4b, 0x62, 0xfd, 0xa9, 0x20, 0xab, 0xc0, 0x62, 0x1e, 0x0, 0xe0, 0x43, 0x84, 0x27, 0x8d, 0xdd, 0xbb, 0xbd, 0x8a, 0x87, 0x39, 0x35, 0xfe, 0xb6, 0x4f, 0xcf, 0xae, 0x53, 0xd0, 0x62, 0x78, 0xc7, 0x3a, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x40, 0xde, 0x8d, 0x6b, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x32, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x3f, 0x3f, 0x5a, 0x5a, 0x5a, 0x2b, 0x2b, 0x31, 0x2e, 0x2e, 0x34, 0x59, 0x59, 0x59, 0x2a, 0x2a, 0x30, 0x4b, 0x4b, 0x4b, 0x22, 0x22, 0x27, 0x35, 0x35, 0x35, 0x4a, 0x4a, 0x4a, 0x24, 0x24, 0x28, 0x24, 0x24, 0x29, 0x56, 0x56, 0x56, 0x62, 0x62, 0x62, 0x2a, 0x2a, 0x31, 0x2a, 0x2a, 0x30, 0x2d, 0x2d, 0x34, 0x2f, 0x2f, 0x36, 0x2e, 0x2e, 0x35, 0x2c, 0x2c, 0x32, 0x48, 0x48, 0x48, 0x44, 0x44, 0x44, 0x43, 0x43, 0x43, 0x54, 0x54, 0x54, 0x26, 0x26, 0x2b, 0x24, 0x24, 0x28, 0x27, 0x27, 0x2d, 0x29, 0x29, 0x2f, 0x28, 0x28, 0x2e, 0x25, 0x25, 0x2b, 0x23, 0x23, 0x28, 0x26, 0x26, 0x2c, 0x25, 0x25, 0x2a, 0x2a, 0x2a, 0x2f, 0x2b, 0x2b, 0x31, 0x22, 0x22, 0x26, 0x52, 0x52, 0x52, 0x42, 0x42, 0x42, 0x2d, 0x2d, 0x33, 0x22, 0x22, 0x27, 0x51, 0x51, 0x51, 0x40, 0x40, 0x40, 0x27, 0x27, 0x2b, 0x2e, 0x2e, 0x34, 0x2c, 0x2c, 0x31, 0x29, 0x29, 0x2e, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x4d, 0x4d, 0x4d, 0x3e, 0x3e, 0x3e, 0x24, 0x24, 0x2a, 0x24, 0x24, 0x29, 0x20, 0x20, 0x25, 0x4c, 0x4c, 0x4c, 0x3d, 0x3d, 0x3d, 0x28, 0x28, 0x2d, 0x2b, 0x2b, 0x30, 0x29, 0x29, 0x2d, 0x20, 0x20, 0x23, 0x4a, 0x4a, 0x4a, 0x3b, 0x3b, 0x3b, 0x22, 0x22, 0x28, 0x27, 0x27, 0x2c, 0x1e, 0x1e, 0x22, 0x49, 0x49, 0x49, 0x3a, 0x3a, 0x3a, 0x21, 0x21, 0x26, 0x21, 0x21, 0x25, 0x23, 0x23, 0x27, 0x20, 0x20, 0x24, 0x1d, 0x1d, 0x21, 0x39, 0x39, 0x39, 0x47, 0x47, 0x47, 0x1f, 0x1f, 0x24, 0x1f, 0x1f, 0x23, 0x1e, 0x1e, 0x21, 0x46, 0x46, 0x46, 0xff, 0xff, 0xff, 0xbd, 0x3f, 0x83, 0xbb, 0x0, 0x0, 0x0, 0x24, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x1d, 0x16, 0xd, 0x7, 0x2, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x43, 0x3a, 0x2d, 0x1b, 0x77, 0xef, 0xe6, 0x49, 0xef, 0xe6, 0xef, 0xe7, 0x77, 0xef, 0xe4, 0x4a, 0xba, 0xea, 0xc1, 0xeb, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x65, 0xb5, 0xdd, 0x88, 0x9f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x1, 0xb, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x8d, 0xd1, 0xd9, 0x56, 0xc2, 0x30, 0x10, 0x80, 0x61, 0xd6, 0xa2, 0xa8, 0x6c, 0x75, 0xdf, 0x10, 0x54, 0xa8, 0x82, 0x74, 0xd2, 0x4a, 0x49, 0x5b, 0xa4, 0xb5, 0x5a, 0x44, 0x10, 0x5c, 0xd0, 0xaa, 0x80, 0x8a, 0xcb, 0xfb, 0x3f, 0x83, 0x21, 0x24, 0x1c, 0x8e, 0x5e, 0xe8, 0x77, 0xfd, 0x9f, 0x93, 0x99, 0x89, 0xcf, 0x1f, 0x8, 0x86, 0xc2, 0x42, 0x84, 0x10, 0x66, 0x66, 0xa3, 0x73, 0xf3, 0xbe, 0x9f, 0x2, 0xb, 0xb1, 0x78, 0x22, 0x99, 0x12, 0x45, 0x71, 0x71, 0x69, 0x79, 0x25, 0xea, 0xff, 0x15, 0x4, 0x63, 0xab, 0x6b, 0x7b, 0xcc, 0x7e, 0x2e, 0x2f, 0x1d, 0x30, 0x87, 0x52, 0x21, 0xbf, 0xbe, 0x41, 0x82, 0x50, 0x7c, 0xb3, 0x78, 0x54, 0x1a, 0x93, 0x1, 0x29, 0x2a, 0x73, 0xac, 0x94, 0x35, 0x6d, 0x8b, 0x4, 0xe1, 0x84, 0x5c, 0xe2, 0xe4, 0xa, 0xd6, 0xb, 0x8c, 0xa1, 0x2b, 0xd8, 0x54, 0x48, 0x20, 0x24, 0xab, 0x27, 0x5c, 0xb5, 0x2, 0x39, 0x89, 0xa9, 0x19, 0x2a, 0x58, 0xa3, 0x20, 0x92, 0xb2, 0x4f, 0x39, 0xdb, 0x1, 0xe3, 0x8c, 0xa9, 0x9d, 0xbb, 0x60, 0x3a, 0xa3, 0x40, 0xac, 0x5f, 0x70, 0xf5, 0xe9, 0xc0, 0x20, 0x1, 0xd0, 0xa0, 0x71, 0xc9, 0x35, 0xca, 0x4d, 0x75, 0x6a, 0x86, 0xd6, 0x15, 0xa6, 0x4f, 0xb4, 0x3b, 0x5c, 0x1b, 0xa1, 0xeb, 0x1b, 0x46, 0xbf, 0x5, 0xed, 0xe, 0xd1, 0x21, 0xbb, 0xf7, 0x5c, 0xf7, 0xc1, 0xf2, 0x26, 0x6b, 0x7a, 0x4d, 0xeb, 0xd1, 0xa2, 0x6b, 0x3e, 0x3d, 0x73, 0xc5, 0x5e, 0x1f, 0x7b, 0xc, 0xe0, 0xc1, 0xcb, 0xab, 0x49, 0xf, 0xb5, 0xdd, 0x79, 0x63, 0x86, 0xbd, 0x77, 0xd, 0x33, 0xad, 0x41, 0xff, 0xe3, 0x33, 0x4d, 0x4f, 0xbd, 0x93, 0x19, 0x7e, 0x8d, 0xd9, 0x0, 0xee, 0x64, 0x6, 0xd7, 0x41, 0xd9, 0xdd, 0xff, 0x7c, 0xd6, 0x5f, 0xdf, 0xfd, 0xd, 0xbf, 0xaa, 0x55, 0xdf, 0x7c, 0xb2, 0x44, 0x90, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; + +static const unsigned char option_button_focus_png[] = { +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0xb4, 0x50, 0x4c, 0x54, 0x45, 0x95, 0xa9, 0xb0, 0x92, 0xa7, 0xae, 0x8e, 0xa2, 0xa9, 0x8a, 0x9d, 0xa4, 0x85, 0x98, 0x9f, 0x80, 0x93, 0x9b, 0x7b, 0x8f, 0x96, 0x77, 0x8a, 0x92, 0x72, 0x86, 0x8c, 0x6e, 0x80, 0x88, 0x69, 0x7c, 0x84, 0x64, 0x77, 0x7f, 0x60, 0x72, 0x7a, 0x5b, 0x6e, 0x75, 0x56, 0x69, 0x71, 0xc8, 0xe3, 0xe7, 0xc8, 0xe2, 0xe7, 0xca, 0xe3, 0xe7, 0xce, 0xe6, 0xe9, 0xce, 0xe6, 0xea, 0xd0, 0xe6, 0xe9, 0xce, 0xe5, 0xea, 0xd0, 0xe6, 0xea, 0xce, 0xe5, 0xe9, 0xd0, 0xe5, 0xe9, 0xd3, 0xe7, 0xeb, 0xd4, 0xe7, 0xeb, 0xd9, 0xea, 0xed, 0xd7, 0xe9, 0xed, 0xd7, 0xea, 0xed, 0xdc, 0xec, 0xef, 0xdc, 0xeb, 0xef, 0xe0, 0xed, 0xf1, 0xdf, 0xee, 0xf1, 0xdf, 0xed, 0xf1, 0xe0, 0xee, 0xf1, 0xe3, 0xf0, 0xf2, 0xe2, 0xef, 0xf2, 0xe3, 0xef, 0xf2, 0xe6, 0xf1, 0xf3, 0xe8, 0xf2, 0xf5, 0xe8, 0xf3, 0xf4, 0xe8, 0xf2, 0xf4, 0xe8, 0xf3, 0xf5, 0xd6, 0x5a, 0x5b, 0xd4, 0x57, 0x58, 0xe5, 0x89, 0x89, 0xd5, 0x57, 0x59, 0xd5, 0x58, 0x59, 0xd5, 0x59, 0x5a, 0xd6, 0x59, 0x5a, 0xd6, 0x5a, 0x5c, 0xd7, 0x5b, 0x5c, 0xd7, 0x5b, 0x5d, 0xd8, 0x5c, 0x5d, 0xd8, 0x5c, 0x5e, 0xd8, 0x5d, 0x5f, 0xd9, 0x5d, 0x5f, 0xe8, 0x6c, 0x6e, 0xff, 0xff, 0xff, 0xa1, 0xe, 0x37, 0x8c, 0x0, 0x0, 0x0, 0x2c, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0xac, 0x80, 0x68, 0x47, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x3b, 0x39, 0xe, 0xf4, 0x6c, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xa3, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x5d, 0xce, 0xdb, 0x16, 0x42, 0x60, 0x18, 0x84, 0xe1, 0x4f, 0x8, 0x65, 0x57, 0x2a, 0x45, 0xd9, 0x15, 0xf9, 0xa3, 0x89, 0x28, 0xea, 0xfe, 0x2f, 0x2c, 0x4e, 0x2c, 0x79, 0xd6, 0xbc, 0xe7, 0x43, 0x34, 0xc5, 0xe5, 0x7f, 0x38, 0x9a, 0xdd, 0x31, 0x72, 0x9f, 0x11, 0xff, 0x80, 0x61, 0x18, 0xa6, 0x69, 0xac, 0xba, 0x50, 0xf0, 0x24, 0x14, 0x58, 0x5b, 0x9b, 0xed, 0xce, 0xb6, 0x6d, 0x6b, 0x8f, 0x42, 0x20, 0xb1, 0xc4, 0xc1, 0x71, 0xe, 0x7d, 0x8e, 0x83, 0x52, 0xa4, 0xf9, 0x13, 0xae, 0x7b, 0x74, 0x7b, 0xa7, 0x13, 0x9e, 0x73, 0x92, 0x72, 0x78, 0xbe, 0xef, 0x75, 0x7c, 0xcf, 0x47, 0x2e, 0x91, 0x5c, 0x21, 0x8, 0xc2, 0x20, 0x8c, 0x82, 0x73, 0x18, 0xa1, 0x92, 0x49, 0xa9, 0x71, 0x89, 0xe3, 0x38, 0x49, 0xba, 0x25, 0xa8, 0x15, 0x5a, 0xbc, 0x70, 0x1d, 0xe0, 0xb5, 0xa0, 0xe5, 0x1b, 0x69, 0xca, 0xd8, 0x8d, 0x31, 0x96, 0x65, 0x68, 0x96, 0xa4, 0x36, 0x60, 0x3, 0x34, 0x2a, 0x69, 0xed, 0xf8, 0x7a, 0xab, 0x91, 0xfe, 0xf9, 0x8e, 0x7c, 0x74, 0xd2, 0x27, 0x7e, 0x7e, 0x46, 0x20, 0x17, 0xe, 0x2d, 0x4e, 0x9, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char option_button_hover_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x77, 0x0, 0x7d, 0x59, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf5, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xd5, 0x31, 0x4e, 0xc3, 0x40, 0x10, 0x46, 0xe1, 0x37, 0xbb, 0xdb, 0x42, 0x9f, 0xf4, 0x8, 0x8b, 0x3, 0x50, 0x82, 0x30, 0x88, 0x5b, 0x98, 0x23, 0x50, 0x80, 0x10, 0xb9, 0x1, 0x14, 0xb9, 0x5, 0x6e, 0x91, 0x28, 0x21, 0x8a, 0x13, 0x25, 0x87, 0x88, 0xec, 0x84, 0x12, 0x41, 0xd, 0xe9, 0xa2, 0xac, 0x87, 0xca, 0xc8, 0x8a, 0x68, 0x28, 0x76, 0x69, 0xf2, 0x57, 0xd3, 0xbd, 0xaf, 0x1b, 0xf8, 0xe7, 0x49, 0x73, 0x8c, 0x2b, 0x4d, 0xbc, 0xe1, 0x5e, 0x20, 0x5, 0x76, 0x2, 0xf5, 0x96, 0x40, 0x21, 0x9e, 0x5e, 0x9a, 0x48, 0xf5, 0x3, 0x18, 0x57, 0x9a, 0xd4, 0x86, 0x89, 0x28, 0x7d, 0xb7, 0x26, 0x3f, 0x3a, 0x90, 0x8f, 0x10, 0xf5, 0xe9, 0x4c, 0x3b, 0x2b, 0x47, 0x26, 0xc2, 0x95, 0x78, 0x8e, 0x1b, 0x4, 0xc3, 0x85, 0x3e, 0x8d, 0xe6, 0x7a, 0x13, 0x22, 0xfa, 0xdb, 0x8a, 0x85, 0xde, 0x16, 0xaf, 0xfa, 0x8, 0x60, 0x0, 0x4, 0x52, 0xb7, 0x26, 0x8f, 0x5, 0xf0, 0x9e, 0x7, 0x94, 0xb3, 0xb6, 0x48, 0x63, 0xc5, 0x37, 0x9b, 0x26, 0x76, 0x78, 0x73, 0x5b, 0xc0, 0x16, 0xd0, 0x0, 0x96, 0xd3, 0x99, 0x76, 0x62, 0x45, 0x7, 0xa5, 0x76, 0x81, 0xcf, 0x36, 0xa0, 0x58, 0x39, 0xb2, 0x58, 0x0, 0x6b, 0xb9, 0x0, 0x5e, 0x0, 0x1c, 0x80, 0x78, 0x7a, 0x58, 0x26, 0xc3, 0xb9, 0x52, 0xd7, 0xe4, 0xe7, 0x89, 0xbc, 0x87, 0x8, 0xf, 0x4a, 0xed, 0x5a, 0x4b, 0xa6, 0xc2, 0xa5, 0x55, 0xe, 0xa1, 0xf5, 0x8c, 0x46, 0xa5, 0xee, 0xab, 0xe1, 0xe, 0xe1, 0x14, 0xd8, 0xd, 0x1, 0x0, 0xbe, 0x80, 0x67, 0x3, 0xd7, 0x27, 0x7b, 0xf2, 0x16, 0xa8, 0xf1, 0xb7, 0x7d, 0x3, 0x6a, 0x72, 0x53, 0x9c, 0x5f, 0x1a, 0xab, 0xcf, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x40, 0xde, 0x8d, 0x6b, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x44, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0x40, 0x4b, 0x5f, 0x5a, 0x6c, 0x2b, 0x2b, 0x31, 0x2e, 0x2e, 0x34, 0x5f, 0x5a, 0x6b, 0x2a, 0x2a, 0x30, 0x56, 0x53, 0x64, 0x22, 0x22, 0x27, 0x3e, 0x3b, 0x46, 0x57, 0x53, 0x63, 0x24, 0x24, 0x28, 0x24, 0x24, 0x29, 0x5b, 0x57, 0x68, 0x5a, 0x56, 0x67, 0x67, 0x63, 0x76, 0x2a, 0x2a, 0x31, 0x2a, 0x2a, 0x30, 0x2d, 0x2d, 0x34, 0x2f, 0x2f, 0x36, 0x2e, 0x2e, 0x35, 0x2c, 0x2c, 0x32, 0x4d, 0x4a, 0x57, 0x49, 0x46, 0x52, 0x48, 0x45, 0x51, 0x5a, 0x56, 0x65, 0x26, 0x26, 0x2b, 0x24, 0x24, 0x28, 0x27, 0x27, 0x2d, 0x29, 0x29, 0x2f, 0x28, 0x28, 0x2e, 0x25, 0x25, 0x2b, 0x23, 0x23, 0x28, 0x5b, 0x57, 0x66, 0x26, 0x26, 0x2c, 0x25, 0x25, 0x2a, 0x2a, 0x2a, 0x2f, 0x2b, 0x2b, 0x31, 0x22, 0x22, 0x26, 0x59, 0x55, 0x64, 0x47, 0x44, 0x50, 0x2d, 0x2d, 0x33, 0x22, 0x22, 0x27, 0x58, 0x54, 0x64, 0x46, 0x43, 0x50, 0x27, 0x27, 0x2b, 0x2e, 0x2e, 0x34, 0x2c, 0x2c, 0x31, 0x29, 0x29, 0x2e, 0x56, 0x53, 0x63, 0x45, 0x42, 0x4f, 0x56, 0x53, 0x62, 0x45, 0x42, 0x4e, 0x24, 0x24, 0x2a, 0x24, 0x24, 0x29, 0x20, 0x20, 0x25, 0x55, 0x51, 0x62, 0x44, 0x41, 0x4e, 0x28, 0x28, 0x2d, 0x2b, 0x2b, 0x30, 0x29, 0x29, 0x2d, 0x20, 0x20, 0x23, 0x55, 0x51, 0x60, 0x44, 0x41, 0x4d, 0x22, 0x22, 0x28, 0x27, 0x27, 0x2c, 0x1e, 0x1e, 0x22, 0x43, 0x40, 0x4c, 0x54, 0x50, 0x5f, 0x21, 0x21, 0x26, 0x21, 0x21, 0x25, 0x23, 0x23, 0x27, 0x20, 0x20, 0x24, 0x1d, 0x1d, 0x21, 0x47, 0x43, 0x51, 0x43, 0x3f, 0x4d, 0x42, 0x3f, 0x4c, 0x53, 0x4f, 0x5f, 0x1f, 0x1f, 0x24, 0x1f, 0x1f, 0x23, 0x1e, 0x1e, 0x21, 0x53, 0x50, 0x5f, 0x53, 0x4f, 0x5e, 0x5f, 0x5a, 0x6c, 0xff, 0xff, 0xff, 0xd1, 0x85, 0xc5, 0x5, 0x0, 0x0, 0x0, 0x24, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x1d, 0x16, 0xd, 0x7, 0x2, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x43, 0x3a, 0x2d, 0x1b, 0x77, 0xef, 0xe6, 0x49, 0xef, 0xe6, 0xef, 0xe7, 0x77, 0xef, 0xe4, 0x4a, 0xba, 0xea, 0xc1, 0xeb, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x6b, 0x52, 0x65, 0xa5, 0x98, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x1, 0x10, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x8d, 0xd1, 0xd9, 0x52, 0xc2, 0x30, 0x14, 0x80, 0x61, 0xd6, 0xa2, 0xa8, 0x6c, 0x75, 0xdf, 0x77, 0xa8, 0xa2, 0x70, 0xd2, 0x4a, 0x25, 0x6d, 0x81, 0x62, 0xa1, 0x88, 0x20, 0x6e, 0xc5, 0xaa, 0x80, 0xfb, 0xfa, 0xfe, 0xf, 0x60, 0x49, 0x13, 0x86, 0xd1, 0xb, 0xfd, 0x6e, 0xf3, 0xcf, 0xe4, 0x24, 0xc7, 0xe3, 0xf5, 0xf9, 0x3, 0x41, 0x2e, 0xe4, 0xe0, 0x46, 0x46, 0xc3, 0x63, 0xe3, 0x9e, 0x9f, 0x7c, 0x13, 0x91, 0x68, 0x2c, 0x9e, 0xe0, 0x79, 0x7e, 0x72, 0x6a, 0x7a, 0x26, 0xec, 0xfd, 0x15, 0xf8, 0x23, 0xb3, 0x73, 0x9b, 0x5b, 0xae, 0xed, 0x64, 0x4a, 0xd8, 0xa1, 0x76, 0x85, 0x74, 0x6a, 0x7e, 0xc1, 0x9, 0x2, 0xd1, 0xc5, 0xbd, 0xfd, 0x8c, 0x2b, 0xb, 0x48, 0x94, 0xa8, 0x3, 0x31, 0x27, 0xcb, 0x4b, 0x4e, 0x10, 0x8c, 0x1d, 0xb2, 0xf3, 0x4c, 0x36, 0x8f, 0x95, 0x34, 0xa5, 0x2a, 0x22, 0xd6, 0x44, 0x27, 0xe0, 0xe2, 0x85, 0x22, 0x53, 0xc8, 0x43, 0x52, 0xa0, 0x4a, 0xaa, 0x4, 0x7a, 0x3f, 0x8, 0x25, 0xca, 0x47, 0x4c, 0xd9, 0x0, 0xb5, 0x42, 0x95, 0xaa, 0x26, 0x68, 0x46, 0x3f, 0xe0, 0x6b, 0xc7, 0x4c, 0x6d, 0x38, 0x50, 0x9d, 0x0, 0x48, 0x50, 0x3f, 0x61, 0xea, 0xb9, 0x86, 0x34, 0x34, 0x43, 0xf3, 0x14, 0x93, 0x2b, 0x5a, 0x67, 0x4c, 0xb, 0xa1, 0xf3, 0xb, 0x4a, 0xb9, 0x4, 0xf9, 0xa, 0x91, 0x21, 0xad, 0x36, 0x63, 0x5d, 0xeb, 0xf6, 0xe0, 0x99, 0x76, 0x43, 0xbf, 0xd1, 0xc9, 0x33, 0xad, 0xf6, 0x2d, 0x75, 0xd7, 0xe9, 0x62, 0x9b, 0x2, 0xdc, 0xbb, 0x7f, 0xd0, 0xc8, 0x47, 0x2d, 0x3f, 0x3e, 0x3d, 0xbb, 0x5e, 0x3a, 0xaf, 0x32, 0xa6, 0x9a, 0xbd, 0xee, 0xdb, 0xfb, 0xa, 0xf9, 0xea, 0xd5, 0xb5, 0x8f, 0x4f, 0xd7, 0x17, 0x80, 0x39, 0x98, 0xc1, 0x34, 0xd0, 0xfa, 0xc6, 0x7f, 0x96, 0xf5, 0xd7, 0xba, 0xbf, 0x1, 0xfe, 0x22, 0x58, 0x7c, 0xf4, 0xd2, 0xd1, 0x68, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char option_button_normal_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1c, 0x8, 0x6, 0x0, 0x0, 0x0, 0x0, 0xc2, 0xbd, 0x22, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x19, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xc1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x82, 0x20, 0xff, 0xaf, 0x6e, 0x48, 0x40, 0x1, 0x0, 0x0, 0xf0, 0x6e, 0xe, 0x1c, 0x0, 0x1, 0xe8, 0x20, 0x47, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x40, 0xde, 0x8d, 0x6b, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x44, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x3a, 0x44, 0x56, 0x53, 0x61, 0x2b, 0x2b, 0x31, 0x2e, 0x2e, 0x34, 0x56, 0x52, 0x60, 0x2a, 0x2a, 0x30, 0x47, 0x44, 0x52, 0x22, 0x22, 0x27, 0x33, 0x31, 0x39, 0x47, 0x44, 0x50, 0x24, 0x24, 0x28, 0x24, 0x24, 0x29, 0x52, 0x50, 0x5d, 0x51, 0x4f, 0x5d, 0x5d, 0x5a, 0x6a, 0x2a, 0x2a, 0x31, 0x2a, 0x2a, 0x30, 0x2d, 0x2d, 0x34, 0x2f, 0x2f, 0x36, 0x2e, 0x2e, 0x35, 0x2c, 0x2c, 0x32, 0x46, 0x42, 0x4e, 0x42, 0x3e, 0x4a, 0x41, 0x3e, 0x49, 0x51, 0x4e, 0x5b, 0x26, 0x26, 0x2b, 0x24, 0x24, 0x28, 0x27, 0x27, 0x2d, 0x29, 0x29, 0x2f, 0x28, 0x28, 0x2e, 0x25, 0x25, 0x2b, 0x23, 0x23, 0x28, 0x40, 0x3e, 0x48, 0x50, 0x4e, 0x5a, 0x26, 0x26, 0x2c, 0x25, 0x25, 0x2a, 0x2a, 0x2a, 0x2f, 0x2b, 0x2b, 0x31, 0x22, 0x22, 0x26, 0x4f, 0x4c, 0x59, 0x3f, 0x3d, 0x47, 0x2d, 0x2d, 0x33, 0x22, 0x22, 0x27, 0x4e, 0x4a, 0x58, 0x3e, 0x3b, 0x46, 0x27, 0x27, 0x2b, 0x2e, 0x2e, 0x34, 0x2c, 0x2c, 0x31, 0x29, 0x29, 0x2e, 0x4b, 0x49, 0x55, 0x3c, 0x3a, 0x44, 0x4a, 0x47, 0x54, 0x3b, 0x39, 0x43, 0x24, 0x24, 0x2a, 0x24, 0x24, 0x29, 0x20, 0x20, 0x25, 0x49, 0x46, 0x53, 0x3a, 0x38, 0x42, 0x28, 0x28, 0x2d, 0x2b, 0x2b, 0x30, 0x29, 0x29, 0x2d, 0x20, 0x20, 0x23, 0x47, 0x45, 0x50, 0x39, 0x37, 0x40, 0x22, 0x22, 0x28, 0x27, 0x27, 0x2c, 0x1e, 0x1e, 0x22, 0x47, 0x43, 0x50, 0x38, 0x35, 0x3f, 0x46, 0x42, 0x4f, 0x21, 0x21, 0x26, 0x21, 0x21, 0x25, 0x23, 0x23, 0x27, 0x20, 0x20, 0x24, 0x1d, 0x1d, 0x21, 0x36, 0x34, 0x3e, 0x44, 0x41, 0x4e, 0x1f, 0x1f, 0x24, 0x1f, 0x1f, 0x23, 0x1e, 0x1e, 0x21, 0x44, 0x42, 0x4d, 0x44, 0x41, 0x4c, 0x4e, 0x4b, 0x58, 0xff, 0xff, 0xff, 0xd7, 0xc8, 0xfe, 0x88, 0x0, 0x0, 0x0, 0x24, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x1d, 0x16, 0xd, 0x7, 0x2, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x43, 0x3a, 0x2d, 0x1b, 0x77, 0xef, 0xe6, 0x49, 0xef, 0xe6, 0xef, 0xe7, 0x77, 0xef, 0xe4, 0x4a, 0xba, 0xea, 0xc1, 0xeb, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x6b, 0x52, 0x65, 0xa5, 0x98, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x1, 0xe, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x8d, 0xd1, 0xd7, 0x56, 0xc2, 0x40, 0x10, 0x80, 0x61, 0x6a, 0x50, 0x54, 0x5a, 0xec, 0xbd, 0x43, 0x14, 0x85, 0xdd, 0x44, 0xa2, 0x6c, 0x12, 0x20, 0x18, 0xd, 0x22, 0x8, 0x16, 0x34, 0x16, 0xc0, 0x5e, 0xde, 0xff, 0x1, 0x5c, 0x36, 0xb3, 0x1c, 0x8e, 0x5e, 0xe8, 0x77, 0xfd, 0x9f, 0xb3, 0x33, 0xb3, 0x1e, 0xaf, 0xcf, 0x1f, 0x8, 0xa, 0x21, 0x4a, 0x18, 0x1a, 0xe, 0x8f, 0x8c, 0x7a, 0x7e, 0xf2, 0x8d, 0x45, 0xa2, 0xb1, 0x78, 0x42, 0x14, 0xc5, 0xf1, 0x89, 0xc9, 0xa9, 0xb0, 0xf7, 0x57, 0xe0, 0x8f, 0x4c, 0xcf, 0xac, 0x6f, 0xb8, 0x36, 0x93, 0x29, 0x69, 0xb, 0x6c, 0x4b, 0xe9, 0xd4, 0xec, 0x1c, 0xd, 0x2, 0xd1, 0xf9, 0x9d, 0xdd, 0x8c, 0x2b, 0x8b, 0xb0, 0xac, 0x80, 0x3d, 0x39, 0xa7, 0xaa, 0xb, 0x34, 0x8, 0xc6, 0xb2, 0x99, 0x7d, 0x70, 0x90, 0x27, 0x5a, 0x1a, 0xe8, 0x9a, 0x4c, 0xc, 0x99, 0x6, 0x42, 0xbc, 0x50, 0xe4, 0xa, 0x79, 0x94, 0x94, 0x40, 0x49, 0x57, 0x90, 0xd9, 0xb, 0x42, 0x89, 0xf2, 0x21, 0x57, 0xb6, 0x90, 0x7e, 0x4, 0x4a, 0xc7, 0x36, 0x32, 0xac, 0x5e, 0x20, 0x56, 0x4e, 0xb8, 0xca, 0x60, 0xa0, 0xd3, 0x0, 0xb1, 0xa0, 0x7a, 0xca, 0x55, 0x73, 0x35, 0x65, 0x60, 0x86, 0xfa, 0x19, 0x61, 0x4f, 0x34, 0x9a, 0x5c, 0x3, 0xe3, 0xf3, 0xb, 0xa0, 0x5d, 0x22, 0xf5, 0xa, 0xb3, 0x21, 0x5b, 0xd7, 0x5c, 0xeb, 0xc6, 0x74, 0xfa, 0x6b, 0x3a, 0x35, 0xf3, 0xd6, 0x64, 0x6b, 0xde, 0xdd, 0x73, 0xf, 0xed, 0xe, 0x71, 0x0, 0x22, 0xdd, 0xc7, 0x27, 0x83, 0x1d, 0x6a, 0xb1, 0xf9, 0xc, 0x5e, 0xda, 0xaf, 0x2a, 0x1, 0xf5, 0x6e, 0xe7, 0xed, 0x7d, 0x89, 0x9d, 0x7a, 0x79, 0xe5, 0xe3, 0xd3, 0xf5, 0x85, 0x90, 0xdd, 0x9f, 0xc1, 0xb6, 0xf0, 0xea, 0xda, 0x7f, 0x3e, 0xeb, 0xaf, 0xef, 0xfe, 0x6, 0x1a, 0x96, 0x59, 0x89, 0x91, 0xf7, 0xf1, 0x7b, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char option_button_pressed_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x77, 0x0, 0x7d, 0x59, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf3, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xd5, 0x31, 0x4a, 0x3, 0x41, 0x18, 0x86, 0xe1, 0xf7, 0x9f, 0x95, 0x74, 0xda, 0x27, 0x17, 0xd0, 0x13, 0xd8, 0xa, 0xd1, 0x6b, 0xac, 0x47, 0x10, 0x54, 0x64, 0x43, 0x30, 0xcb, 0x14, 0xa2, 0xce, 0x1a, 0xc8, 0x21, 0xdc, 0x56, 0xb0, 0xd4, 0x22, 0x45, 0x8e, 0x61, 0x2f, 0x5a, 0x6b, 0xca, 0xc4, 0xfd, 0x2c, 0xcc, 0x86, 0x20, 0x82, 0x58, 0xcc, 0xda, 0xe4, 0xab, 0x86, 0x61, 0xe0, 0x7d, 0xba, 0x81, 0x7f, 0x9e, 0xd5, 0x7, 0xaf, 0xe1, 0x4e, 0x45, 0x75, 0xd, 0x74, 0x81, 0xcd, 0x48, 0xbd, 0xa9, 0x60, 0x2c, 0xd4, 0xbb, 0xb0, 0xec, 0x69, 0x9, 0x58, 0xc4, 0x27, 0xa0, 0xe1, 0x9c, 0x56, 0x79, 0x69, 0xc7, 0xaf, 0x31, 0xea, 0x7d, 0x8d, 0xda, 0x9, 0xb3, 0xd4, 0xe0, 0xa4, 0x42, 0x7b, 0x35, 0x82, 0x5c, 0xc5, 0x7d, 0xae, 0x70, 0x16, 0x23, 0xfa, 0xd3, 0x72, 0x85, 0x6c, 0xa0, 0x9b, 0x3b, 0x0, 0xb7, 0xb8, 0xeb, 0xce, 0x69, 0x95, 0x4d, 0x1, 0x1c, 0xdc, 0x1a, 0x3a, 0x58, 0x11, 0x15, 0x6a, 0x2a, 0xfe, 0xbd, 0xe9, 0x7e, 0x7b, 0x18, 0x7b, 0x6b, 0xc0, 0x1a, 0x50, 0x3, 0xa6, 0x7d, 0x8d, 0xda, 0x4d, 0x45, 0xbd, 0x42, 0x7, 0x78, 0x5b, 0x2, 0x4, 0xe3, 0x84, 0x59, 0xda, 0x14, 0xe0, 0x3, 0x3b, 0x34, 0xf4, 0x8, 0xb0, 0xf1, 0x5, 0x50, 0xcf, 0x61, 0x93, 0x81, 0xa, 0x12, 0x54, 0x7a, 0xcb, 0x5e, 0x62, 0x84, 0xbd, 0x42, 0xa7, 0x82, 0x14, 0x74, 0x64, 0xb0, 0xb, 0x2b, 0x9f, 0xd1, 0xb9, 0xc2, 0xb6, 0xc3, 0xae, 0x80, 0x7d, 0x60, 0x2b, 0x6, 0x0, 0x78, 0x37, 0xf4, 0x60, 0x70, 0xea, 0x2d, 0x7b, 0x8e, 0xd4, 0xf8, 0xdb, 0x3e, 0x1, 0x97, 0xcd, 0x54, 0x90, 0xa4, 0x27, 0x1c, 0xb4, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x40, 0xde, 0x8d, 0x6b, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x4d, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x2f, 0x37, 0x46, 0x43, 0x4f, 0x2b, 0x2b, 0x31, 0x2e, 0x2e, 0x34, 0x47, 0x44, 0x50, 0x2a, 0x2a, 0x30, 0x55, 0x52, 0x5f, 0x22, 0x22, 0x27, 0x3d, 0x3a, 0x45, 0x56, 0x52, 0x60, 0x24, 0x24, 0x28, 0x24, 0x24, 0x29, 0x43, 0x40, 0x4c, 0x42, 0x40, 0x4b, 0x4c, 0x49, 0x56, 0x2a, 0x2a, 0x31, 0x2a, 0x2a, 0x30, 0x2d, 0x2d, 0x34, 0x2f, 0x2f, 0x36, 0x2e, 0x2e, 0x35, 0x2c, 0x2c, 0x32, 0x3a, 0x38, 0x41, 0x36, 0x34, 0x3d, 0x44, 0x41, 0x4c, 0x26, 0x26, 0x2b, 0x24, 0x24, 0x28, 0x27, 0x27, 0x2d, 0x29, 0x29, 0x2f, 0x28, 0x28, 0x2e, 0x25, 0x25, 0x2b, 0x23, 0x23, 0x28, 0x44, 0x42, 0x4e, 0x36, 0x34, 0x3e, 0x44, 0x41, 0x4e, 0x26, 0x26, 0x2c, 0x25, 0x25, 0x2a, 0x2a, 0x2a, 0x2f, 0x2b, 0x2b, 0x31, 0x22, 0x22, 0x26, 0x46, 0x42, 0x4f, 0x38, 0x35, 0x3f, 0x2d, 0x2d, 0x33, 0x22, 0x22, 0x27, 0x47, 0x45, 0x50, 0x39, 0x37, 0x40, 0x27, 0x27, 0x2b, 0x2e, 0x2e, 0x34, 0x2c, 0x2c, 0x31, 0x29, 0x29, 0x2e, 0x49, 0x46, 0x53, 0x3a, 0x38, 0x42, 0x4a, 0x47, 0x54, 0x3b, 0x39, 0x43, 0x24, 0x24, 0x2a, 0x24, 0x24, 0x29, 0x20, 0x20, 0x25, 0x4b, 0x49, 0x55, 0x3c, 0x3a, 0x44, 0x28, 0x28, 0x2d, 0x2b, 0x2b, 0x30, 0x29, 0x29, 0x2d, 0x20, 0x20, 0x23, 0x4e, 0x4a, 0x58, 0x3e, 0x3b, 0x46, 0x22, 0x22, 0x28, 0x27, 0x27, 0x2c, 0x1e, 0x1e, 0x22, 0x50, 0x4d, 0x5a, 0x3f, 0x3d, 0x48, 0x3f, 0x3d, 0x47, 0x4f, 0x4c, 0x59, 0x21, 0x21, 0x26, 0x21, 0x21, 0x25, 0x23, 0x23, 0x27, 0x20, 0x20, 0x24, 0x1d, 0x1d, 0x21, 0x45, 0x42, 0x4d, 0x41, 0x3e, 0x49, 0x40, 0x3e, 0x48, 0x50, 0x4e, 0x5a, 0x1f, 0x1f, 0x24, 0x1f, 0x1f, 0x23, 0x1e, 0x1e, 0x21, 0x52, 0x4e, 0x5c, 0x51, 0x4e, 0x5b, 0x5d, 0x59, 0x69, 0xff, 0xff, 0xff, 0x2, 0x4e, 0xff, 0xf1, 0x0, 0x0, 0x0, 0x24, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x1d, 0x16, 0xd, 0x7, 0x2, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x43, 0x3a, 0x2d, 0x1b, 0x77, 0xef, 0xe6, 0x49, 0xef, 0xe6, 0xef, 0xe7, 0x77, 0xef, 0xe4, 0x4a, 0xba, 0xea, 0xc1, 0xeb, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x6e, 0x22, 0xf, 0x51, 0x17, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x1, 0xe, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x8d, 0xd1, 0x57, 0x53, 0xc2, 0x40, 0x10, 0xc0, 0x71, 0x6a, 0x50, 0x54, 0x5a, 0xec, 0xbd, 0x43, 0x14, 0xf5, 0x2e, 0x91, 0xa8, 0x5c, 0x12, 0x20, 0x18, 0xd, 0x22, 0x88, 0xd, 0x8d, 0xd, 0xb0, 0xd7, 0xef, 0xff, 0xea, 0x71, 0xd9, 0x63, 0x18, 0x7d, 0xd0, 0xdf, 0xf3, 0x7f, 0xe6, 0x76, 0xf7, 0x3c, 0x5e, 0x9f, 0x3f, 0x10, 0x14, 0x42, 0x94, 0xd0, 0xd3, 0x1b, 0xee, 0xeb, 0xf7, 0xfc, 0xe4, 0x1b, 0x88, 0x44, 0x63, 0xf1, 0x84, 0x28, 0x8a, 0x83, 0x43, 0xc3, 0x23, 0x61, 0xef, 0xaf, 0xc0, 0x1f, 0x19, 0x1d, 0x5b, 0x5c, 0x72, 0x2d, 0x27, 0x53, 0xd2, 0xa, 0x58, 0x95, 0xd2, 0xa9, 0xf1, 0x9, 0x1a, 0x4, 0xa2, 0x93, 0x6b, 0xeb, 0x60, 0x3, 0x61, 0x59, 0x1, 0x9b, 0x72, 0x46, 0x55, 0xa7, 0x68, 0x10, 0x8c, 0x6d, 0x6d, 0x73, 0x3b, 0x59, 0xa2, 0xa5, 0x81, 0xae, 0xc9, 0xc4, 0x90, 0x69, 0x20, 0xc4, 0x73, 0x79, 0x2e, 0x97, 0x45, 0x49, 0x9, 0x14, 0x74, 0x5, 0x99, 0xed, 0x20, 0x94, 0x28, 0xee, 0x72, 0x45, 0xb, 0xe9, 0x7b, 0xa0, 0xb0, 0x6f, 0x23, 0xc3, 0x6a, 0x7, 0x62, 0xe9, 0x80, 0x2b, 0x75, 0x7, 0x3a, 0xd, 0x10, 0xb, 0xca, 0x87, 0x5c, 0x39, 0x53, 0x51, 0xba, 0x66, 0xa8, 0x1e, 0x11, 0xf6, 0x44, 0xed, 0x98, 0xab, 0x61, 0x7c, 0x72, 0xa, 0xb4, 0x33, 0xa4, 0x9e, 0x63, 0x36, 0x64, 0xfd, 0x82, 0xab, 0x5f, 0x9a, 0x4e, 0x67, 0x4d, 0xa7, 0x62, 0x5e, 0x99, 0x6c, 0xcd, 0xeb, 0x9b, 0x5b, 0x70, 0xd7, 0x68, 0x12, 0x7, 0x20, 0xd2, 0xba, 0x7f, 0x30, 0xd8, 0xa1, 0xa6, 0x1f, 0x9f, 0x9e, 0x5d, 0x2f, 0x8d, 0x57, 0x95, 0x80, 0x6a, 0xab, 0xf9, 0xf6, 0x3e, 0xc3, 0x4e, 0x3d, 0x3b, 0xf7, 0xf1, 0xe9, 0xfa, 0x42, 0xc8, 0xee, 0xcc, 0x60, 0x5b, 0x78, 0x7e, 0xe1, 0x3f, 0x9f, 0xf5, 0xd7, 0x77, 0x7f, 0x3, 0x1c, 0x7f, 0x59, 0xc2, 0x5e, 0xdd, 0xbf, 0x43, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char panel_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x2, 0x0, 0x0, 0x0, 0x4b, 0x6d, 0x29, 0xdc, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x14, 0x49, 0x44, 0x41, 0x54, 0x8, 0x99, 0x63, 0x54, 0xd6, 0x32, 0x62, 0xc0, 0x6, 0x98, 0xb0, 0x8a, 0xe, 0x5a, 0x9, 0x0, 0x69, 0x33, 0x0, 0x8f, 0xd7, 0xa0, 0x34, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x1, 0x3, 0x0, 0x0, 0x0, 0xfe, 0xc1, 0x2c, 0xc8, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x50, 0x4c, 0x54, 0x45, 0x25, 0x25, 0x2a, 0x35, 0x32, 0x3b, 0x4a, 0x73, 0x58, 0x4a, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1, 0xff, 0x2, 0x2d, 0xde, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xb, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x40, 0x5, 0x0, 0x0, 0x10, 0x0, 0x1, 0xa1, 0xc5, 0x21, 0xc1, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char popup_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x5e, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0x31, 0x4b, 0x1c, 0x51, 0x14, 0x85, 0xbf, 0x77, 0x67, 0xde, 0x9b, 0x85, 0x71, 0x58, 0xc, 0x51, 0xc2, 0x16, 0x6, 0x2c, 0x42, 0x48, 0x29, 0x81, 0x5d, 0x42, 0x8, 0xb6, 0x8a, 0x42, 0xba, 0x74, 0xfe, 0x87, 0xfc, 0x92, 0x14, 0xf9, 0x15, 0x69, 0x55, 0x4c, 0x17, 0xb6, 0x58, 0xc2, 0x6, 0xf6, 0x17, 0xb8, 0xcd, 0x36, 0x2e, 0xc2, 0x80, 0xb2, 0x98, 0x31, 0x99, 0x37, 0x33, 0xf7, 0xa5, 0x30, 0x85, 0xc8, 0xae, 0x2e, 0xd6, 0x1e, 0x38, 0xe5, 0x77, 0xb8, 0xf7, 0xc0, 0x31, 0xdc, 0x48, 0x80, 0x17, 0xc0, 0x33, 0xc0, 0x71, 0xbf, 0x3c, 0x70, 0x1, 0x9c, 0x3, 0x6a, 0xfe, 0xc3, 0xaf, 0x80, 0xf4, 0xed, 0xf6, 0xde, 0x7e, 0x9a, 0x65, 0x5d, 0x91, 0x78, 0x75, 0x1e, 0xa9, 0x5a, 0x5f, 0x16, 0x57, 0x57, 0xbf, 0x46, 0xfd, 0xe3, 0x23, 0xa0, 0x0, 0x4e, 0xd, 0xd0, 0xb1, 0xd6, 0x76, 0xde, 0xed, 0x7c, 0xfa, 0xe2, 0x5c, 0xf2, 0x5e, 0x55, 0x9b, 0x10, 0x34, 0x9a, 0x17, 0x60, 0x8c, 0x34, 0x22, 0x12, 0x79, 0x5f, 0xe, 0x7e, 0x7e, 0xff, 0xf6, 0xb9, 0xaa, 0xaa, 0x69, 0x4, 0xbc, 0xdc, 0xfa, 0xb0, 0xfb, 0x71, 0x25, 0x6b, 0x1f, 0x94, 0x7f, 0xaf, 0x29, 0xff, 0x5c, 0x4b, 0x5d, 0x79, 0xe6, 0xb9, 0xf2, 0xa5, 0x84, 0x10, 0x48, 0x92, 0xd6, 0x46, 0xfb, 0xf9, 0xfa, 0x74, 0x3a, 0x19, 0x4f, 0x4, 0xb0, 0x69, 0x96, 0x75, 0x55, 0xb5, 0xa9, 0xbc, 0x7f, 0xe0, 0x7d, 0xa8, 0x7c, 0x49, 0x50, 0x6d, 0xd2, 0xb4, 0xdd, 0x3, 0xac, 0x0, 0x46, 0x24, 0x5e, 0x5b, 0x74, 0xf6, 0xdc, 0x2e, 0x82, 0x46, 0x12, 0xc7, 0x6b, 0x80, 0x91, 0x65, 0xa1, 0x45, 0x7a, 0xa, 0xb8, 0x9, 0x8, 0x5a, 0xd7, 0xb9, 0x31, 0xd2, 0x2c, 0xb, 0x19, 0x23, 0x8d, 0xd6, 0x75, 0xe, 0x4, 0x1, 0xaa, 0xa2, 0x98, 0xd, 0x45, 0x24, 0xb2, 0x2e, 0x79, 0x10, 0xb6, 0x2e, 0x41, 0x44, 0xa2, 0xa2, 0x98, 0xd, 0x1, 0x1f, 0x1, 0x71, 0x7e, 0x36, 0x39, 0xef, 0x6c, 0xbe, 0x7e, 0x93, 0x24, 0xad, 0x8d, 0xd8, 0xba, 0x26, 0xb6, 0x56, 0xac, 0x73, 0xdc, 0xb5, 0x4b, 0x5a, 0x8d, 0xb5, 0x4e, 0xbc, 0x2f, 0x7, 0xa3, 0x1f, 0x87, 0x5f, 0x55, 0x35, 0xbf, 0x33, 0xa6, 0xdd, 0xbd, 0x34, 0x6d, 0xf7, 0x24, 0x5e, 0x30, 0xa6, 0xba, 0xbe, 0x2c, 0x8a, 0xd9, 0x70, 0xd4, 0x3f, 0x39, 0x6, 0x7e, 0x3, 0x63, 0x73, 0xab, 0x8b, 0x47, 0xcd, 0xf9, 0x1f, 0x55, 0x2d, 0x97, 0x76, 0x54, 0xe2, 0xdb, 0x90, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0xa5, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b, 0x3b, 0x43, 0x42, 0x42, 0x4b, 0x3e, 0x3e, 0x47, 0x3e, 0x3e, 0x46, 0x41, 0x41, 0x4a, 0x0, 0x0, 0x0, 0x3d, 0x3d, 0x45, 0x3b, 0x3b, 0x43, 0x3a, 0x3a, 0x42, 0x38, 0x38, 0x41, 0x37, 0x37, 0x3e, 0x36, 0x36, 0x3d, 0x35, 0x35, 0x3c, 0x0, 0x0, 0x0, 0x38, 0x38, 0x40, 0x38, 0x38, 0x40, 0x31, 0x31, 0x38, 0x34, 0x34, 0x3b, 0x34, 0x34, 0x3b, 0x39, 0x39, 0x3f, 0x31, 0x31, 0x38, 0x2f, 0x2f, 0x36, 0x2d, 0x2d, 0x33, 0x2c, 0x2c, 0x32, 0x2b, 0x2b, 0x31, 0x2a, 0x2a, 0x31, 0x2a, 0x2a, 0x30, 0x29, 0x29, 0x30, 0x29, 0x29, 0x2f, 0x28, 0x28, 0x2e, 0x28, 0x28, 0x2d, 0x27, 0x27, 0x2d, 0x27, 0x27, 0x2c, 0x29, 0x29, 0x2e, 0x26, 0x26, 0x2c, 0x35, 0x32, 0x3b, 0xf, 0xeb, 0x7f, 0x60, 0x0, 0x0, 0x0, 0x28, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x1, 0x3, 0x5, 0x8, 0xa, 0xb, 0x4, 0x13, 0x19, 0x1f, 0x22, 0x23, 0x16, 0x27, 0x35, 0x3f, 0x45, 0x46, 0x94, 0xf5, 0xfa, 0xfb, 0xf5, 0x40, 0xfc, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0x1a, 0xf5, 0xf6, 0x95, 0xfa, 0xfb, 0xf4, 0x94, 0x71, 0xda, 0xac, 0x92, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x36, 0x47, 0xbf, 0x88, 0xd1, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xaf, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x65, 0xcf, 0xc9, 0x12, 0x82, 0x30, 0x10, 0x4, 0xd0, 0x1, 0x12, 0xb6, 0x0, 0x21, 0x2c, 0xb2, 0xaa, 0xa0, 0xa8, 0x80, 0x88, 0x8, 0xf8, 0xff, 0xbf, 0x66, 0x98, 0x93, 0xa5, 0xef, 0xd8, 0x55, 0xd3, 0xd5, 0x3, 0xa0, 0xa8, 0x1a, 0xa1, 0xba, 0x44, 0x89, 0xa6, 0x2a, 0x0, 0x8a, 0x41, 0x4d, 0xcb, 0x66, 0x8e, 0xc3, 0x6c, 0xcb, 0xa4, 0x86, 0x2, 0x2a, 0x75, 0x3d, 0xee, 0x8b, 0x20, 0x10, 0x3e, 0xf7, 0x5c, 0xaa, 0x82, 0x66, 0x7a, 0x61, 0x14, 0xef, 0xa4, 0x38, 0xa, 0x3d, 0x53, 0x3, 0x62, 0xf1, 0xa4, 0xed, 0x50, 0x9b, 0x70, 0x8b, 0x0, 0xb5, 0xd3, 0xac, 0xeb, 0x51, 0x97, 0xa5, 0x36, 0x5, 0x9d, 0x89, 0xbc, 0xbf, 0xa3, 0x3e, 0x17, 0x4c, 0x7, 0xdd, 0x9, 0x8a, 0xe1, 0x81, 0x86, 0x22, 0x70, 0x30, 0x28, 0xc7, 0x27, 0x1a, 0x4b, 0xc, 0x98, 0xd8, 0x4f, 0x2f, 0x34, 0xed, 0xb7, 0x13, 0x59, 0x7a, 0x98, 0x17, 0x34, 0x1f, 0xb7, 0x52, 0x52, 0xf1, 0x7a, 0x5d, 0xde, 0xd2, 0xb2, 0x9e, 0x78, 0x45, 0xb6, 0x61, 0xe7, 0xba, 0xb9, 0x48, 0xcd, 0xf5, 0xb6, 0xd, 0xc3, 0xe9, 0xe9, 0xd7, 0xf4, 0xbf, 0xe7, 0x7e, 0xdf, 0xff, 0x0, 0xda, 0x19, 0x15, 0x34, 0xd5, 0xa4, 0x90, 0x50, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char popup_bg_disabled_png[] = { @@ -258,24 +254,32 @@ static const unsigned char popup_checked_png[] = {  	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xa3, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x85, 0xcd, 0xa1, 0xa, 0xc2, 0x50, 0x0, 0x85, 0xe1, 0xff, 0xdc, 0x5d, 0xd8, 0x14, 0x4, 0xab, 0x69, 0x37, 0xac, 0x98, 0xd5, 0x27, 0xb0, 0x89, 0x16, 0x8b, 0xd5, 0xf7, 0xd0, 0xec, 0x73, 0xf8, 0x4, 0x16, 0x61, 0x4d, 0x10, 0xc, 0x16, 0xa3, 0x61, 0x71, 0xab, 0x16, 0xeb, 0x84, 0x3b, 0xae, 0x45, 0x8b, 0xa, 0x9e, 0x78, 0xce, 0x7, 0x7, 0xfe, 0x44, 0xbf, 0xca, 0xa2, 0x28, 0x3a, 0x71, 0x1c, 0x1f, 0x24, 0x3d, 0xcc, 0xe7, 0x18, 0x42, 0x50, 0x92, 0x24, 0x5b, 0x49, 0x23, 0xa0, 0xfd, 0x5, 0xaa, 0xaa, 0x5a, 0x1, 0x73, 0xe0, 0x1e, 0x45, 0xd1, 0x42, 0x65, 0x59, 0x9e, 0x80, 0x96, 0xf7, 0x7e, 0x62, 0xad, 0x1d, 0x2, 0xfb, 0x97, 0x9d, 0x39, 0xe7, 0x72, 0x1b, 0x42, 0x88, 0x25, 0xd, 0xac, 0xb5, 0x47, 0xa0, 0x7, 0x18, 0x60, 0xed, 0x9c, 0xcb, 0x1, 0x4c, 0xd3, 0x34, 0x53, 0xe0, 0xa, 0xf4, 0x81, 0x2e, 0xb0, 0x4b, 0xd3, 0x74, 0xf3, 0xbe, 0x34, 0x59, 0x96, 0xdd, 0xbc, 0xf7, 0x63, 0xe0, 0x2, 0x9c, 0xeb, 0xba, 0x5e, 0x4a, 0xa, 0x6f, 0xf0, 0x4, 0x57, 0x3d, 0x2c, 0x27, 0x2b, 0xe9, 0x62, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  }; +static const unsigned char popup_hover_png[] = { +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0x0, 0xff, 0x20, 0x2e, 0x31, 0x83, 0xae, 0xb7, 0xb3, 0xd8, 0xe1, 0xaf, 0xd5, 0xde, 0xac, 0xd2, 0xdb, 0xa9, 0xcf, 0xd8, 0xa5, 0xcc, 0xd5, 0xa2, 0xc9, 0xd2, 0x9e, 0xc6, 0xcf, 0x9b, 0xc3, 0xcc, 0x97, 0xc0, 0xc9, 0x94, 0xbd, 0xc6, 0x91, 0xba, 0xc3, 0x8d, 0xb7, 0xc0, 0xff, 0xff, 0xff, 0x73, 0xd4, 0x4e, 0xcb, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xf, 0x18, 0xba, 0x0, 0xd9, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x14, 0x4, 0x3, 0x1, 0x6, 0x21, 0x25, 0x30, 0x50, 0x64, 0x10, 0x32, 0x6, 0x3, 0x20, 0xc3, 0x5, 0xc, 0x80, 0x8c, 0x50, 0x30, 0x0, 0x32, 0xd2, 0xc0, 0x0, 0xc8, 0x28, 0x7, 0x3, 0x20, 0xa3, 0x3, 0xc, 0x80, 0x8c, 0x99, 0x60, 0x0, 0x64, 0xac, 0x2, 0x3, 0x20, 0x63, 0x37, 0x18, 0x0, 0x19, 0x67, 0xc0, 0x0, 0xc8, 0xb8, 0xb, 0x6, 0x40, 0xc6, 0x3b, 0x30, 0x50, 0x44, 0x58, 0xa, 0x73, 0x6, 0x0, 0xe9, 0xb4, 0x2d, 0xf5, 0x51, 0xd4, 0xb8, 0xa1, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; + +static const unsigned char popup_unchecked_png[] = { +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x1, 0x3, 0x0, 0x0, 0x0, 0xfe, 0xc1, 0x2c, 0xc8, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x50, 0x4c, 0x54, 0x45, 0xff, 0x0, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x18, 0x32, 0xe0, 0x0, 0x0, 0x0, 0x1, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x40, 0xe6, 0xd8, 0x66, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1, 0xff, 0x2, 0x2d, 0xde, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0xb, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x40, 0x5, 0x0, 0x0, 0x10, 0x0, 0x1, 0xa1, 0xc5, 0x21, 0xc1, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; +  static const unsigned char popup_window_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x24, 0x8, 0x6, 0x0, 0x0, 0x0, 0x89, 0xf3, 0x1a, 0xa0, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0xb7, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0x96, 0x31, 0x6f, 0xd3, 0x40, 0x18, 0x86, 0x9f, 0xfb, 0x62, 0x27, 0x71, 0x2, 0x49, 0x93, 0x3a, 0x48, 0x91, 0x80, 0x2e, 0x1d, 0x2a, 0x48, 0xa5, 0x22, 0x41, 0xc5, 0x42, 0x18, 0x18, 0x18, 0x18, 0xf9, 0x2b, 0xfc, 0xd, 0xfe, 0x9, 0x7f, 0x80, 0x91, 0x46, 0x95, 0x10, 0xa8, 0x62, 0x48, 0x51, 0x18, 0x58, 0x0, 0x75, 0xa9, 0x4b, 0x1a, 0x2c, 0x48, 0x1a, 0x9f, 0x73, 0xc7, 0x10, 0x87, 0x18, 0xe4, 0x88, 0x56, 0xca, 0xe8, 0x57, 0xba, 0xe1, 0x24, 0xbf, 0xcf, 0xdd, 0x77, 0x5e, 0x1e, 0x58, 0x73, 0x54, 0xc6, 0xbe, 0x5, 0x34, 0x0, 0xf, 0x90, 0x15, 0x3d, 0x3, 0x4c, 0x80, 0x21, 0x70, 0x6, 0xd8, 0x2c, 0xa0, 0xb, 0x6c, 0x27, 0xc0, 0x4d, 0xa0, 0x9c, 0x71, 0xe0, 0x22, 0x36, 0x5, 0xc, 0x80, 0xcf, 0x80, 0x6, 0x70, 0x52, 0xe0, 0x6d, 0x60, 0xb, 0xd8, 0xbc, 0xfb, 0xe0, 0x71, 0xb7, 0xde, 0xf4, 0x3b, 0x8e, 0xe3, 0xd6, 0xb2, 0x68, 0x71, 0xac, 0xc3, 0x1f, 0xc3, 0xb3, 0xe3, 0x8f, 0xef, 0xdf, 0x1c, 0x24, 0x93, 0x0, 0x7c, 0x2, 0xec, 0xe2, 0x6, 0x37, 0x80, 0x9d, 0x42, 0xa1, 0x70, 0xeb, 0xe1, 0xd3, 0xe7, 0x2f, 0x2a, 0x95, 0xeb, 0x7b, 0xc6, 0x18, 0x63, 0xad, 0xc9, 0x1c, 0x59, 0x29, 0x31, 0x22, 0x22, 0xe3, 0xf1, 0xcf, 0xf, 0x6f, 0x5f, 0xbf, 0x7a, 0x39, 0x9b, 0xcd, 0xbe, 0x1, 0x3, 0x20, 0x28, 0x24, 0xdf, 0xdc, 0x4, 0xb6, 0xee, 0xdc, 0xef, 0x3e, 0x69, 0xb6, 0xda, 0xcf, 0xa6, 0x17, 0x63, 0xa6, 0x93, 0xb1, 0x8a, 0x75, 0x44, 0xd6, 0xd2, 0xd1, 0x54, 0x59, 0x6b, 0xf1, 0xbc, 0x6a, 0xbb, 0x5c, 0xad, 0x6, 0xa7, 0x27, 0x5f, 0x4e, 0x80, 0x5f, 0xc0, 0xf7, 0xc5, 0xd, 0x3c, 0xa0, 0x5c, 0x6f, 0xfa, 0x1d, 0x63, 0x8c, 0xd1, 0x51, 0xb4, 0xe2, 0xe9, 0x96, 0xd1, 0xd1, 0x14, 0x6b, 0x8c, 0xa9, 0x6d, 0xb4, 0x76, 0x99, 0xbf, 0xb7, 0x7, 0xcb, 0xbf, 0x28, 0x80, 0x72, 0x1c, 0xb7, 0xb1, 0x6a, 0xcc, 0xac, 0x18, 0x6b, 0xc4, 0x71, 0xdd, 0x46, 0xd2, 0x97, 0x34, 0x70, 0x6d, 0xc9, 0x81, 0x39, 0x30, 0x7, 0xe6, 0xc0, 0x1c, 0x98, 0x3, 0xd7, 0xd, 0x34, 0x80, 0x8d, 0xb5, 0x3e, 0x57, 0x4a, 0xcc, 0x65, 0xcb, 0x4a, 0x89, 0x89, 0xb5, 0x3e, 0x4f, 0xfa, 0xb3, 0x34, 0x70, 0x2, 0x4c, 0xc2, 0x51, 0xd0, 0x17, 0x11, 0x71, 0x8b, 0xa5, 0xff, 0xc2, 0xdc, 0x62, 0x9, 0x11, 0x91, 0x70, 0x14, 0xf4, 0x81, 0x8b, 0x64, 0xfd, 0x71, 0x9b, 0x21, 0x30, 0x1c, 0x1c, 0x1d, 0xf6, 0xea, 0x7e, 0x7b, 0xbf, 0x52, 0xb9, 0x76, 0xcf, 0x2d, 0x96, 0x2e, 0xa5, 0x22, 0x83, 0xa3, 0xc3, 0xde, 0xa2, 0xf, 0x4b, 0xbb, 0x52, 0xc0, 0xe, 0x70, 0x1b, 0xf0, 0x3b, 0xfb, 0xdd, 0x47, 0xb5, 0x8d, 0xd6, 0xae, 0xe3, 0xae, 0x90, 0x25, 0xad, 0xc3, 0x70, 0x14, 0xf4, 0x8f, 0xdf, 0x1d, 0xf4, 0x98, 0xeb, 0xdc, 0x57, 0xfe, 0x91, 0x25, 0xf8, 0x5b, 0xe7, 0x9a, 0xcc, 0xd5, 0xe2, 0xca, 0x3a, 0x97, 0x25, 0x9c, 0x7e, 0xa, 0x78, 0x65, 0xe1, 0x5c, 0x7b, 0x7e, 0x3, 0x2f, 0x8a, 0xb1, 0xd0, 0xbc, 0xa4, 0x7e, 0x33, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x46, 0x8, 0x3, 0x0, 0x0, 0x0, 0x8d, 0x2b, 0xf6, 0x48, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x6e, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0xe8, 0xe5, 0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x1d, 0x22, 0x0, 0x0, 0x0, 0x1a, 0x19, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x1e, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x1d, 0x21, 0x17, 0x16, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x1b, 0x1a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x1e, 0x1c, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x20, 0x25, 0x20, 0x1e, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x20, 0x25, 0x0, 0x0, 0x0, 0x20, 0x20, 0x25, 0x20, 0x1d, 0x25, 0x20, 0x1d, 0x22, 0x1d, 0x1d, 0x22, 0x1d, 0x1d, 0x20, 0x1d, 0x1a, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x30, 0x38, 0xe8, 0xe5, 0xf1, 0xe5, 0xe2, 0xeb, 0xe3, 0xe1, 0xe8, 0xe1, 0xdf, 0xe7, 0xe0, 0xde, 0xe6, 0xdf, 0xdd, 0xe5, 0xde, 0xdc, 0xe4, 0xdd, 0xdb, 0xe3, 0xdc, 0xda, 0xe2, 0xda, 0xd8, 0xe0, 0xd9, 0xd7, 0xdf, 0xd7, 0xd6, 0xdf, 0xd6, 0xd4, 0xdd, 0xd5, 0xd3, 0xdc, 0xd4, 0xd1, 0xdb, 0xd3, 0xd0, 0xda, 0xd1, 0xce, 0xd8, 0xd0, 0xcd, 0xd7, 0xcf, 0xcd, 0xd7, 0xe2, 0xdf, 0xeb, 0x48, 0x46, 0x51, 0x42, 0x40, 0x4b, 0x40, 0x3e, 0x48, 0x40, 0x3d, 0x48, 0x48, 0x45, 0x50, 0x42, 0x3f, 0x4a, 0x3f, 0x3d, 0x48, 0x47, 0x44, 0x50, 0x41, 0x3f, 0x4a, 0x3f, 0x3d, 0x47, 0x41, 0x3e, 0x49, 0x3f, 0x3c, 0x47, 0x46, 0x43, 0x4f, 0x3e, 0x3c, 0x46, 0x40, 0x3e, 0x49, 0x3d, 0x3b, 0x46, 0x45, 0x43, 0x4e, 0x3d, 0x3b, 0x45, 0x44, 0x42, 0x4d, 0x3d, 0x3a, 0x45, 0x3e, 0x3c, 0x47, 0x3c, 0x3a, 0x44, 0x43, 0x42, 0x4c, 0x43, 0x40, 0x4c, 0x3e, 0x3b, 0x46, 0x3b, 0x39, 0x43, 0x43, 0x3f, 0x4c, 0x43, 0x3f, 0x4b, 0x3a, 0x38, 0x42, 0x42, 0x3e, 0x4b, 0x42, 0x3e, 0x49, 0x3a, 0x37, 0x41, 0x39, 0x37, 0x41, 0x3f, 0x3e, 0x48, 0x39, 0x37, 0x40, 0x38, 0x36, 0x40, 0x3e, 0x3d, 0x48, 0x38, 0x36, 0x3f, 0x3e, 0x3d, 0x47, 0x3a, 0x38, 0x41, 0x38, 0x35, 0x3f, 0x37, 0x35, 0x3e, 0x39, 0x36, 0x40, 0x37, 0x34, 0x3e, 0x3d, 0x3a, 0x46, 0x36, 0x34, 0x3d, 0x3d, 0x3a, 0x44, 0x37, 0x35, 0x3f, 0x35, 0x33, 0x3c, 0x46, 0x44, 0x4f, 0xff, 0xff, 0xff, 0x7e, 0xde, 0x1d, 0x81, 0x0, 0x0, 0x0, 0x33, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xa2, 0x3, 0x9, 0x17, 0xc, 0x20, 0xf, 0x2a, 0x5e, 0x12, 0x30, 0x68, 0x46, 0x20, 0x4e, 0xa2, 0x7d, 0x3a, 0x4f, 0xa4, 0x7d, 0x3f, 0x25, 0x60, 0xc0, 0xb8, 0x57, 0x1d, 0xba, 0x59, 0xbd, 0x5b, 0x22, 0xbf, 0x5e, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xa1, 0x9f, 0x9e, 0x52, 0x92, 0x15, 0x44, 0x7e, 0xd8, 0x5, 0xc7, 0xf4, 0xac, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x79, 0xa1, 0xdc, 0xd4, 0xd0, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x1, 0xe8, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0xd6, 0xd9, 0x53, 0xd3, 0x60, 0x14, 0xc6, 0xe1, 0x92, 0x5a, 0xa3, 0x44, 0xa3, 0xd6, 0x85, 0xa0, 0xb1, 0x5a, 0xcb, 0xda, 0xbd, 0x7c, 0xb8, 0xef, 0x2b, 0x69, 0x21, 0xd0, 0xda, 0x22, 0x25, 0xd, 0x69, 0x20, 0x60, 0x69, 0x11, 0x2a, 0x22, 0xcb, 0x9f, 0xef, 0x78, 0x97, 0x7e, 0xe7, 0x3d, 0x33, 0x1d, 0xbd, 0x70, 0xfc, 0x5d, 0x3f, 0x77, 0xe7, 0xe2, 0x3d, 0x91, 0xc8, 0x7f, 0xd8, 0x88, 0x60, 0x1a, 0x21, 0x54, 0xcc, 0x3f, 0x84, 0xcd, 0xb, 0x4a, 0x1f, 0x31, 0xfd, 0x1d, 0x7d, 0xcc, 0x4, 0xe8, 0x13, 0x26, 0x40, 0x9f, 0x32, 0x1, 0xfa, 0x8c, 0x9, 0xd0, 0xe7, 0x4c, 0x80, 0xbe, 0x60, 0x2, 0xf4, 0x25, 0x13, 0xa0, 0xaf, 0x98, 0x0, 0x7d, 0xcd, 0x44, 0xa8, 0x22, 0xde, 0x30, 0x49, 0x54, 0x89, 0x9e, 0x13, 0x6f, 0x99, 0x64, 0x1a, 0x3b, 0x2f, 0xde, 0x31, 0x49, 0x54, 0xbd, 0x70, 0x51, 0xbc, 0x67, 0x92, 0xe8, 0xa8, 0x76, 0x49, 0x7c, 0x60, 0x12, 0x97, 0xf5, 0x68, 0x88, 0xea, 0x57, 0xae, 0x8a, 0x8f, 0x4c, 0xe2, 0x5a, 0x7c, 0x34, 0x4c, 0xaf, 0xdf, 0x10, 0x9f, 0x98, 0xc4, 0xcd, 0x5b, 0x21, 0xaa, 0x8c, 0x19, 0xe3, 0xb, 0x56, 0x19, 0x66, 0x2d, 0xdc, 0xbe, 0x63, 0x2a, 0x43, 0xd2, 0xbb, 0x9, 0x7d, 0x58, 0x7a, 0xef, 0x7e, 0x72, 0x58, 0xfa, 0x20, 0x35, 0x36, 0x2c, 0x1d, 0x37, 0x8, 0xad, 0xc0, 0x0, 0x5d, 0x5c, 0xb2, 0x61, 0x4b, 0x8b, 0x32, 0x9d, 0x58, 0x5e, 0xa9, 0xc2, 0x56, 0x96, 0x27, 0x8, 0xad, 0x7d, 0x86, 0xd5, 0x28, 0xad, 0xd7, 0x1a, 0xb0, 0x5a, 0x9d, 0xd2, 0x55, 0x4c, 0x57, 0x1, 0xad, 0x7c, 0x81, 0x55, 0x8, 0x9d, 0x5c, 0xb3, 0x9b, 0x30, 0x7b, 0x6d, 0x52, 0xa2, 0x53, 0xeb, 0x55, 0x7, 0x56, 0x5d, 0x9f, 0x22, 0xb4, 0xe5, 0xc2, 0x5a, 0x94, 0x6e, 0x34, 0x30, 0x6d, 0x6c, 0x10, 0xea, 0xb5, 0x7d, 0x58, 0xdb, 0x93, 0xe9, 0xf4, 0x66, 0x13, 0xd3, 0xe6, 0xe6, 0xb4, 0x4c, 0xb7, 0x9c, 0x0, 0xe6, 0x6c, 0x11, 0xba, 0xed, 0x62, 0xea, 0x6e, 0x13, 0xba, 0xe3, 0x7e, 0x85, 0xb9, 0x3b, 0x84, 0x96, 0xfd, 0xe, 0xcc, 0x2f, 0x13, 0xba, 0xeb, 0x77, 0x61, 0xfe, 0x2e, 0xa1, 0x76, 0xd0, 0x83, 0x5, 0x36, 0xa1, 0x7b, 0xc1, 0x37, 0x58, 0xb0, 0x27, 0xd3, 0x99, 0xfd, 0x83, 0x3e, 0xec, 0x60, 0x7f, 0x46, 0xa2, 0xb3, 0xad, 0xce, 0x77, 0x58, 0xa7, 0x35, 0x2b, 0xd3, 0xf6, 0x21, 0xa6, 0x87, 0x6d, 0x40, 0x7f, 0xc0, 0x0, 0x3d, 0xea, 0xfd, 0x84, 0xf5, 0x8e, 0x8, 0x75, 0xfa, 0x98, 0xf6, 0x1d, 0x42, 0x8f, 0x39, 0x7a, 0x4c, 0xe9, 0xc9, 0x29, 0xec, 0x64, 0x90, 0x46, 0x92, 0xa9, 0xb4, 0x75, 0xca, 0x64, 0xa5, 0x53, 0xc9, 0xc8, 0x1f, 0xd2, 0xc, 0x4f, 0x33, 0x3, 0x54, 0x4f, 0x64, 0x79, 0x9a, 0x4d, 0xe8, 0x21, 0x6a, 0xe6, 0xf2, 0x1e, 0x47, 0xbd, 0x7c, 0xce, 0xc, 0xd1, 0x42, 0xb1, 0x54, 0xef, 0x62, 0xd9, 0x3d, 0x2b, 0x15, 0xb, 0x21, 0xaa, 0x6a, 0xc6, 0xdc, 0x99, 0x67, 0x81, 0xbc, 0xfa, 0x9c, 0xa1, 0xa9, 0x21, 0x1a, 0x35, 0xe3, 0x46, 0x29, 0x9f, 0xcd, 0xa4, 0xa5, 0x32, 0xd9, 0x7c, 0xc9, 0x88, 0x9b, 0xe1, 0xe1, 0x54, 0x62, 0xa6, 0x56, 0xcc, 0x25, 0x52, 0xa4, 0x44, 0xae, 0xa8, 0x99, 0xb1, 0xd0, 0x5, 0x7e, 0x3f, 0x4, 0x6a, 0xc1, 0xd4, 0x93, 0x24, 0xdd, 0x2c, 0xa8, 0xd1, 0x1, 0xf9, 0xf, 0xfb, 0x5, 0x66, 0x6f, 0x2a, 0x9a, 0xa8, 0x51, 0x81, 0xce, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char progress_bar_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x12, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x60, 0x14, 0x8c, 0x2, 0x8, 0x0, 0x0, 0x4, 0x10, 0x0, 0x1, 0x7f, 0x4d, 0x78, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x33, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2d, 0x2c, 0x2f, 0x48, 0x46, 0x4a, 0x4c, 0x4a, 0x4e, 0x48, 0x46, 0x4a, 0x40, 0x3e, 0x42, 0x38, 0x36, 0x3a, 0x27, 0x27, 0x27, 0xe1, 0x1d, 0x66, 0x4d, 0x0, 0x0, 0x0, 0xc, 0x74, 0x52, 0x4e, 0x53, 0xa, 0x1a, 0x26, 0x29, 0x2a, 0x48, 0x65, 0x6d, 0x6e, 0x66, 0xf5, 0xfe, 0xb7, 0x4a, 0xbe, 0x33, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x10, 0x95, 0xb2, 0xd, 0x2c, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x44, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0xc5, 0xcf, 0x31, 0x16, 0x0, 0x10, 0xc, 0x44, 0xc1, 0x4d, 0x84, 0x4, 0xc1, 0xfd, 0x6f, 0xab, 0xc9, 0x53, 0x70, 0x0, 0x53, 0x6e, 0xb5, 0x1f, 0x20, 0x4e, 0x12, 0x12, 0x13, 0x40, 0xb9, 0xa8, 0x5, 0x2d, 0x99, 0xc0, 0xb5, 0x75, 0xf, 0xbd, 0x55, 0x86, 0xe8, 0x98, 0x2b, 0xcc, 0xa1, 0x2, 0x31, 0x5f, 0x87, 0xdb, 0xbf, 0xe1, 0x3e, 0xf6, 0x5c, 0x7f, 0xe2, 0xee, 0xfc, 0xd, 0x60, 0x3b, 0xa, 0x1d, 0x9e, 0x6a, 0x29, 0x33, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char progress_fill_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xea, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0x92, 0x31, 0x6e, 0xc2, 0x40, 0x10, 0x45, 0xdf, 0xd8, 0x96, 0x70, 0xe9, 0xd4, 0xb9, 0x41, 0x14, 0x29, 0x74, 0xe4, 0x10, 0x3e, 0x1, 0xd4, 0x88, 0xca, 0x14, 0x6e, 0xd3, 0xd0, 0xd0, 0x52, 0xe0, 0xce, 0x35, 0x1c, 0x21, 0x67, 0x0, 0x3a, 0x17, 0x28, 0x37, 0xa0, 0x76, 0x83, 0x40, 0x1b, 0xc9, 0x99, 0x14, 0xb1, 0x2d, 0x2b, 0xc6, 0xc9, 0x52, 0xc1, 0x97, 0xb6, 0xd8, 0xaf, 0xff, 0xdf, 0x8c, 0x56, 0xb, 0xb7, 0x96, 0xfc, 0x36, 0x22, 0x5d, 0xf6, 0x2, 0xcc, 0x44, 0xd0, 0x21, 0xf0, 0x5c, 0xda, 0x7b, 0x60, 0x9d, 0xe3, 0xa7, 0x89, 0x4c, 0x4d, 0x27, 0xe0, 0x4d, 0x17, 0x8f, 0x2e, 0xc5, 0x3b, 0xe8, 0x4b, 0xc7, 0xc0, 0xac, 0xc0, 0xb, 0xe7, 0x12, 0x1f, 0x5a, 0x80, 0x48, 0x97, 0xbd, 0x7, 0xcc, 0xee, 0x8f, 0x72, 0xd, 0xc9, 0xf1, 0x5f, 0xab, 0x4d, 0x9c, 0xca, 0xd, 0x30, 0x13, 0x8b, 0x32, 0x40, 0x3f, 0xe0, 0x3c, 0xae, 0x2e, 0x35, 0x40, 0xd0, 0x91, 0x45, 0xb9, 0xcc, 0x4a, 0x9d, 0x75, 0x1a, 0xf6, 0x93, 0x2d, 0x0, 0xa4, 0x7a, 0xdc, 0x26, 0xe0, 0x1a, 0xe9, 0xd7, 0x5, 0x80, 0x7e, 0x5c, 0x41, 0xa8, 0xb3, 0xcd, 0xd, 0x56, 0xd6, 0xf3, 0xd1, 0x75, 0xb, 0x90, 0xe3, 0xa7, 0x40, 0x66, 0xd1, 0xcf, 0x5c, 0xce, 0x69, 0xb, 0x90, 0xc8, 0xd4, 0x14, 0x78, 0xe1, 0x3f, 0x90, 0xac, 0xc0, 0xb, 0x67, 0x32, 0xfb, 0x6c, 0x1, 0x0, 0xe6, 0x12, 0x1f, 0x1c, 0x4e, 0x3, 0x45, 0x23, 0x60, 0xb, 0x72, 0xfc, 0x39, 0x6c, 0x14, 0x8d, 0x1c, 0x4e, 0x83, 0xe6, 0x2f, 0xbc, 0xf, 0x7d, 0x3, 0xd2, 0x20, 0x45, 0xab, 0xcc, 0x7a, 0x21, 0xba, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x4, 0x0, 0x0, 0x0, 0xb5, 0xfa, 0x37, 0xea, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0x26, 0x78, 0x80, 0xa6, 0xcf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x60, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x63, 0x60, 0x18, 0x78, 0xc0, 0x8, 0x63, 0x38, 0x58, 0x7c, 0xde, 0xf8, 0x45, 0xc, 0xc2, 0xe6, 0x79, 0xc5, 0xeb, 0x7f, 0xe0, 0x4, 0x9a, 0x2, 0xe3, 0x97, 0x1f, 0xb9, 0xff, 0x70, 0x43, 0xd8, 0x2c, 0x5f, 0xf9, 0xbf, 0x9e, 0x15, 0x87, 0xb2, 0x61, 0xa, 0xbe, 0x88, 0xfd, 0x81, 0x1b, 0xfb, 0x87, 0xfb, 0xb, 0x37, 0x8c, 0xcd, 0x44, 0xc8, 0xd, 0x54, 0x54, 0xc0, 0xf3, 0x8a, 0xe5, 0x2b, 0x8c, 0xcd, 0xf2, 0x95, 0xe7, 0x15, 0x86, 0x2, 0x5e, 0x7f, 0xfe, 0xaf, 0xec, 0xc, 0x10, 0xc8, 0xff, 0x95, 0xd7, 0x9f, 0xe6, 0x1, 0x4c, 0x2, 0x0, 0x0, 0x68, 0x3f, 0x16, 0xd7, 0xea, 0x7c, 0xdd, 0x1a, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char radio_checked_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x6e, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xc5, 0x52, 0xb1, 0x4e, 0x1b, 0x41, 0x14, 0x9c, 0x59, 0xe1, 0xf5, 0x5a, 0x72, 0x89, 0x23, 0xb9, 0x31, 0x82, 0x8, 0x17, 0x88, 0xd2, 0x88, 0x9e, 0x6, 0x92, 0x8a, 0x54, 0x40, 0x41, 0x93, 0xce, 0xb4, 0x14, 0x28, 0x1f, 0x41, 0x84, 0xf8, 0x0, 0xe8, 0x5d, 0xb9, 0x33, 0xe4, 0xb, 0x12, 0xc9, 0x1f, 0x80, 0xac, 0x88, 0x28, 0xd7, 0x58, 0xd6, 0xc9, 0xad, 0xa5, 0xdb, 0xd3, 0xdd, 0xd0, 0xec, 0x21, 0xc3, 0x1d, 0xb5, 0x5f, 0xb3, 0xa3, 0xd1, 0x7b, 0xf3, 0x66, 0xdf, 0x7b, 0xc0, 0xaa, 0x83, 0xef, 0x9, 0x49, 0xb5, 0x28, 0x8a, 0xbe, 0x49, 0x3a, 0x4, 0xb0, 0x15, 0xe8, 0x67, 0x92, 0xf, 0x9d, 0x4e, 0x67, 0x48, 0x32, 0xfd, 0x50, 0x60, 0x3a, 0x9d, 0xb6, 0xbc, 0xf7, 0x3f, 0x25, 0x6d, 0x57, 0x76, 0x23, 0x27, 0xd6, 0xda, 0xcb, 0x76, 0xbb, 0x1d, 0x17, 0x9c, 0x59, 0xee, 0x5c, 0x14, 0x93, 0x9c, 0x1, 0xf8, 0x61, 0xad, 0x3d, 0xb0, 0xd6, 0x1e, 0x48, 0xba, 0x22, 0xf9, 0x5f, 0x52, 0xd7, 0x7b, 0x7f, 0x2d, 0xa9, 0x56, 0x12, 0x8, 0xb6, 0xb7, 0x49, 0xce, 0x16, 0x8b, 0xc5, 0x77, 0x63, 0xcc, 0x4e, 0x9a, 0xa6, 0x3, 0xef, 0xfd, 0x80, 0xe4, 0xae, 0x31, 0xa6, 0x4f, 0x72, 0x26, 0xa9, 0x1b, 0x45, 0xd1, 0x71, 0x95, 0x83, 0xa3, 0xf0, 0xde, 0x34, 0x1a, 0x8d, 0xd3, 0x3c, 0xcf, 0xcf, 0x25, 0xad, 0x3, 0x58, 0x7, 0x70, 0x9e, 0x65, 0xd9, 0x19, 0x80, 0xdb, 0x90, 0x73, 0x58, 0x12, 0x0, 0xb0, 0x9, 0x0, 0xd6, 0xda, 0x3f, 0x24, 0xbf, 0x54, 0x8c, 0xe0, 0x6b, 0xbd, 0x5e, 0xff, 0x1d, 0x70, 0x31, 0xdc, 0x37, 0x2, 0xaf, 0x21, 0xa9, 0x8a, 0xce, 0xe7, 0xf3, 0x79, 0x69, 0x6b, 0xcb, 0x2, 0xff, 0x0, 0x20, 0x49, 0x92, 0x3d, 0x0, 0xa3, 0xa, 0x81, 0x51, 0xb3, 0xd9, 0xdc, 0xf, 0xf8, 0xb9, 0x20, 0xd7, 0xa, 0x40, 0x72, 0x24, 0x69, 0xc7, 0x18, 0x73, 0x61, 0x8c, 0xe9, 0x67, 0x59, 0x6, 0x0, 0xc5, 0x57, 0x46, 0x49, 0x92, 0xc, 0x9c, 0x73, 0x77, 0x21, 0xf7, 0xb1, 0xe4, 0x20, 0x1c, 0xc9, 0x44, 0xd2, 0x46, 0x9e, 0xe7, 0xf7, 0x24, 0x9f, 0x9c, 0x73, 0x27, 0xce, 0xb9, 0x93, 0x80, 0xef, 0x24, 0x7d, 0x22, 0x39, 0x89, 0xe3, 0x78, 0xf8, 0xda, 0x78, 0xd9, 0x63, 0x38, 0xa4, 0x6b, 0x49, 0xdd, 0xaa, 0x21, 0x54, 0x1d, 0x52, 0x69, 0x28, 0xe3, 0xf1, 0xb8, 0xd6, 0x6a, 0xb5, 0x8e, 0xc3, 0xaa, 0x3e, 0x87, 0xc2, 0xbf, 0x0, 0x7e, 0xc5, 0x71, 0x3c, 0xec, 0xf5, 0x7a, 0xe9, 0xfb, 0x9a, 0xd5, 0xc6, 0xb, 0x17, 0xe, 0xab, 0x4e, 0xf1, 0x77, 0xc8, 0x31, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x45, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4, 0x3, 0x4, 0x9, 0x9, 0x9, 0x6, 0x6, 0x6, 0xa, 0xa, 0xb, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x7f, 0x7f, 0x82, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0x47, 0x47, 0x48, 0xd3, 0xd3, 0xd3, 0xa2, 0xa2, 0xa2, 0x79, 0x79, 0x79, 0x73, 0x73, 0x73, 0x1c, 0x1c, 0x1c, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xa, 0x69, 0x4, 0xd4, 0x0, 0x0, 0x0, 0xb, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x88, 0xd1, 0xf7, 0x64, 0xf6, 0x2, 0xb3, 0xed, 0xd7, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x16, 0x7c, 0xd1, 0xa8, 0x19, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x69, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x6d, 0x8f, 0xdb, 0xe, 0xc0, 0x20, 0x8, 0x43, 0xdd, 0xc5, 0x3b, 0x9d, 0xa8, 0xec, 0xff, 0x7f, 0x75, 0x6a, 0x96, 0x2c, 0x8b, 0xf6, 0xad, 0x27, 0x14, 0x8a, 0x52, 0x2b, 0x69, 0x63, 0x9d, 0xb3, 0x46, 0xbf, 0x76, 0xf3, 0x21, 0x12, 0x40, 0x31, 0xf8, 0x7d, 0x0, 0x7f, 0x35, 0xdb, 0x45, 0x97, 0x1f, 0xf3, 0x81, 0x90, 0x38, 0x67, 0x4e, 0xa0, 0xd0, 0x53, 0x26, 0x22, 0x95, 0x2a, 0x52, 0x4b, 0x42, 0x34, 0xd, 0x58, 0x2, 0xd7, 0xbb, 0xa9, 0x32, 0xc8, 0x36, 0xe0, 0x80, 0x2c, 0x1d, 0x48, 0x6, 0xdc, 0xa, 0x4c, 0x91, 0x69, 0xe9, 0x74, 0x76, 0x2a, 0xa6, 0x8e, 0xaf, 0xfa, 0xb9, 0x7e, 0xee, 0xaf, 0x7, 0xb9, 0xfb, 0x8, 0xe7, 0x90, 0x1c, 0x65, 0x49, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char radio_unchecked_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x4b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0x52, 0x3d, 0x4b, 0x3, 0x41, 0x10, 0x7d, 0x73, 0x98, 0x4d, 0x73, 0x62, 0xb5, 0x42, 0x9a, 0x80, 0xca, 0xdd, 0x2f, 0x88, 0x68, 0x9d, 0x26, 0x96, 0xf1, 0x7, 0x58, 0xd9, 0xd9, 0xa4, 0xb0, 0x10, 0x7f, 0x44, 0x44, 0xd2, 0xdb, 0xd9, 0xd9, 0xa4, 0xf3, 0xa3, 0xb3, 0x53, 0x8, 0xfe, 0x80, 0x60, 0x22, 0x5e, 0x13, 0xc2, 0x92, 0x46, 0x21, 0x70, 0x9b, 0xe2, 0xd9, 0xec, 0x86, 0xcb, 0xdd, 0x5, 0x4b, 0x9d, 0x66, 0x87, 0x61, 0xdf, 0x7b, 0xf3, 0x66, 0x6, 0xf8, 0xeb, 0x90, 0x7c, 0x81, 0x64, 0x25, 0x49, 0x92, 0x63, 0x92, 0x2d, 0x0, 0xbb, 0xae, 0x3c, 0x16, 0x91, 0x87, 0x7a, 0xbd, 0xde, 0x17, 0x91, 0xc5, 0x5a, 0x82, 0xc9, 0x64, 0xa2, 0xad, 0xb5, 0x57, 0x24, 0xa3, 0x52, 0x35, 0x91, 0xa1, 0x52, 0xea, 0xbc, 0x56, 0xab, 0x19, 0x5f, 0xb, 0xb2, 0xca, 0x1e, 0x2c, 0x22, 0x53, 0x0, 0x97, 0x4a, 0xa9, 0xa6, 0x52, 0xaa, 0x49, 0xf2, 0x42, 0x44, 0x3e, 0x49, 0xc6, 0xd6, 0xda, 0x2e, 0xc9, 0x8a, 0xc7, 0x6d, 0xf8, 0xc4, 0xb5, 0x1d, 0x89, 0xc8, 0xd4, 0x5a, 0x7b, 0x12, 0x45, 0xd1, 0x57, 0x46, 0xfc, 0xd9, 0x18, 0xf3, 0x36, 0x9f, 0xcf, 0x6f, 0x49, 0xc6, 0x49, 0x92, 0xb4, 0x1, 0xdc, 0xe5, 0x3b, 0x38, 0x72, 0xef, 0x75, 0xe, 0xc, 0x0, 0xd0, 0x5a, 0x7f, 0x3, 0xe8, 0xb9, 0x3f, 0xad, 0x82, 0x5, 0x0, 0x3b, 0x0, 0xa0, 0x94, 0x7a, 0x2d, 0xf3, 0xf, 0x0, 0xd5, 0x6a, 0xf5, 0xc5, 0xa5, 0x7e, 0xb8, 0x2b, 0x4, 0xbf, 0xc6, 0x6c, 0x36, 0x2b, 0x6c, 0x2d, 0x4b, 0xf0, 0x1, 0x0, 0x69, 0x9a, 0xee, 0xaf, 0x23, 0x8, 0xc3, 0xf0, 0xc0, 0xa5, 0xe3, 0x2, 0x81, 0x88, 0xdc, 0x3, 0x40, 0x10, 0x4, 0x67, 0xc6, 0x98, 0xcd, 0x3c, 0x78, 0x34, 0x1a, 0x6d, 0x1, 0xe8, 0xb8, 0xbf, 0x8f, 0x4b, 0x9c, 0x4f, 0xdc, 0x1, 0xdd, 0x90, 0x8c, 0xdd, 0x1a, 0x7b, 0xde, 0x73, 0x9a, 0xa6, 0x87, 0x0, 0x3a, 0x24, 0xb7, 0x45, 0x64, 0x68, 0x8c, 0x39, 0x6d, 0x34, 0x1a, 0x8b, 0x15, 0x2, 0x60, 0x79, 0x48, 0x5d, 0x92, 0x71, 0x99, 0x85, 0xb2, 0x43, 0x2a, 0xc, 0x65, 0x30, 0x18, 0x54, 0xb4, 0xd6, 0x6d, 0xb7, 0xaa, 0x3d, 0x7, 0x7c, 0x7, 0xf0, 0x64, 0x8c, 0xe9, 0x7b, 0xe5, 0xff, 0x13, 0x3f, 0xc5, 0x34, 0x9d, 0x5, 0x4, 0x6a, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2d, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4, 0x3, 0x4, 0x9, 0x9, 0x9, 0x6, 0x6, 0x6, 0xa, 0xa, 0xb, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x7f, 0x7f, 0x82, 0xd9, 0xd9, 0xd9, 0x47, 0x47, 0x48, 0xff, 0xff, 0xff, 0xbd, 0x7d, 0x89, 0x66, 0x0, 0x0, 0x0, 0xb, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x88, 0xd1, 0xf7, 0x64, 0xf6, 0x2, 0xb3, 0xed, 0xd7, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xe, 0x6f, 0xbd, 0x30, 0x4f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x4a, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x40, 0x80, 0xb0, 0x8a, 0xf6, 0x54, 0x10, 0x2d, 0xb9, 0xfa, 0xcc, 0x99, 0x5d, 0x93, 0x80, 0x8c, 0xb9, 0x67, 0x80, 0xe0, 0x26, 0x3, 0x3, 0xeb, 0x1a, 0x10, 0xe3, 0x54, 0x0, 0x3, 0xdb, 0x1e, 0x10, 0xe3, 0x74, 0x2, 0x3, 0xfb, 0x19, 0x30, 0x28, 0x60, 0xe0, 0x80, 0x30, 0x1a, 0x10, 0xc, 0xb8, 0x14, 0x5c, 0x31, 0x5c, 0x3b, 0xdc, 0x40, 0x6, 0x4b, 0x90, 0x15, 0x53, 0x90, 0x2d, 0x85, 0x2, 0x0, 0x37, 0xca, 0x3d, 0x81, 0xc4, 0xfc, 0x38, 0x7b, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char reference_border_png[] = { @@ -283,111 +287,115 @@ static const unsigned char reference_border_png[] = {  };  static const unsigned char scroll_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x80, 0x3a, 0x0, 0x0, 0x2, 0x4c, 0x0, 0x1, 0x4e, 0x94, 0x8c, 0x4d, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x3, 0x0, 0x0, 0x0, 0x61, 0xab, 0xac, 0xd5, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x48, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x40, 0x3e, 0x4a, 0x2a, 0x29, 0x2f, 0x20, 0x20, 0x24, 0x3f, 0x3e, 0x49, 0x1f, 0x1f, 0x24, 0x20, 0x20, 0x24, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x3f, 0x3e, 0x49, 0x3f, 0x3e, 0x49, 0x1e, 0x1e, 0x23, 0x20, 0x20, 0x25, 0x22, 0x22, 0x27, 0x23, 0x23, 0x27, 0x23, 0x23, 0x28, 0x25, 0x25, 0x2a, 0xff, 0xff, 0xff, 0x34, 0x3f, 0xa6, 0x65, 0x0, 0x0, 0x0, 0x11, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x4, 0x19, 0x40, 0x5d, 0x66, 0x28, 0x93, 0xf0, 0xfc, 0x94, 0xfc, 0xfd, 0x67, 0x1a, 0x96, 0x95, 0x1c, 0xf0, 0x43, 0x52, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x17, 0xb, 0xd6, 0x98, 0x8f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x5c, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x55, 0x8e, 0x49, 0xe, 0xc0, 0x20, 0xc, 0x3, 0x3, 0x61, 0x9, 0x3b, 0x61, 0xfb, 0xff, 0x53, 0x4b, 0x5b, 0x55, 0x15, 0x73, 0x1b, 0xc9, 0xb2, 0xd, 0x20, 0x24, 0x2a, 0xad, 0x15, 0x4a, 0x1, 0x20, 0x8c, 0x25, 0xc7, 0xec, 0xc8, 0x1a, 0x1, 0xd2, 0x87, 0xd6, 0xc7, 0xe8, 0x2d, 0x78, 0x9, 0x48, 0x6d, 0xae, 0xcd, 0x6c, 0x84, 0xa0, 0x62, 0x5f, 0xf, 0x3d, 0x2a, 0x48, 0x3c, 0x5e, 0x19, 0x9c, 0x4e, 0x39, 0x62, 0x47, 0x41, 0x2e, 0x5f, 0x75, 0xc9, 0x7b, 0xb4, 0x52, 0x64, 0x8e, 0x54, 0xcd, 0x7d, 0xe1, 0xbf, 0x73, 0x1, 0x30, 0x2f, 0x7, 0x53, 0x16, 0x34, 0xbd, 0xfa, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_down_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x70, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xd5, 0xcf, 0x31, 0xe, 0xc2, 0x50, 0xc, 0x3, 0xd0, 0xe7, 0x76, 0x5, 0xe, 0xd0, 0x1b, 0x20, 0xb1, 0xf7, 0xfe, 0x33, 0x23, 0x48, 0x48, 0x1d, 0x19, 0x38, 0x1, 0x6b, 0x9, 0x4b, 0x2b, 0x7d, 0x2a, 0xb1, 0x83, 0x97, 0x28, 0x89, 0x63, 0xc7, 0xfc, 0x3f, 0x2, 0x55, 0x35, 0xa2, 0xc3, 0x25, 0xc9, 0xb3, 0x25, 0x54, 0xd5, 0xe, 0x27, 0xcc, 0x49, 0xce, 0x5d, 0xb3, 0xdb, 0x63, 0xac, 0xaa, 0xa1, 0x21, 0xf, 0x18, 0x71, 0x58, 0xc5, 0x57, 0x87, 0x1e, 0x47, 0xac, 0xe4, 0xc7, 0x52, 0xdb, 0xfe, 0x96, 0x64, 0xce, 0xc6, 0x7e, 0x58, 0xe, 0xfb, 0x65, 0xf4, 0xc2, 0x94, 0xe4, 0xfe, 0x91, 0xe1, 0xcb, 0xcf, 0x70, 0xdd, 0x66, 0xfa, 0x41, 0xbc, 0x1, 0xb0, 0x67, 0x22, 0xbf, 0x25, 0xb5, 0x86, 0x91, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x21, 0x50, 0x4c, 0x54, 0x45, 0x2d, 0x2c, 0x2f, 0x48, 0x46, 0x4a, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x4c, 0x4a, 0x4e, 0x48, 0x46, 0x4a, 0x40, 0x3e, 0x42, 0x38, 0x36, 0x3a, 0xc3, 0xc3, 0xc3, 0x59, 0x59, 0x59, 0xb3, 0x52, 0xf2, 0x5, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x8, 0xfe, 0x9, 0xd, 0x19, 0x4a, 0xb6, 0xc1, 0xe6, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xa, 0x68, 0xd0, 0xf4, 0x56, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x33, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc, 0x5, 0x3, 0x21, 0x86, 0xf4, 0xe, 0x30, 0x28, 0x63, 0x88, 0x80, 0x30, 0x5a, 0xf1, 0x33, 0x66, 0x2, 0x1, 0x2a, 0xa3, 0x73, 0xe6, 0xcc, 0x19, 0x10, 0x35, 0x40, 0x1, 0x8, 0xa3, 0x73, 0x6, 0x1, 0x73, 0xe0, 0x96, 0x1a, 0x42, 0x9c, 0x21, 0x2, 0x0, 0x5a, 0xfa, 0x3d, 0xf9, 0xfa, 0xe2, 0x64, 0xe2, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_down_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x93, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xd5, 0x8f, 0x3d, 0xe, 0x1, 0x51, 0x18, 0x45, 0xcf, 0x7d, 0x44, 0xc1, 0x52, 0x14, 0xa, 0xb, 0x20, 0xb6, 0x21, 0xf1, 0xa6, 0xd7, 0x33, 0xcd, 0x4c, 0x31, 0x1a, 0x19, 0x95, 0xc2, 0xb4, 0x7e, 0x96, 0xf3, 0x7a, 0x4b, 0x31, 0xd1, 0xf0, 0x69, 0x5e, 0x18, 0x62, 0x1, 0xdc, 0xf2, 0xe6, 0xe6, 0xe4, 0x5c, 0xf8, 0xff, 0x8, 0x20, 0xb7, 0x32, 0x80, 0x3a, 0xc6, 0x6d, 0xba, 0x52, 0x7a, 0x6e, 0xe, 0x32, 0x5b, 0xf7, 0x85, 0x3b, 0x82, 0x5d, 0xa, 0x2d, 0x47, 0x2e, 0xf6, 0x6, 0x36, 0x10, 0x2e, 0x64, 0x56, 0x26, 0xaf, 0x71, 0x99, 0x8, 0x17, 0x80, 0x21, 0xa8, 0x5, 0xd0, 0x6, 0xa8, 0xd1, 0xa4, 0xb, 0x3b, 0x30, 0x2f, 0xd8, 0xe7, 0xb6, 0x19, 0x47, 0x8e, 0x8f, 0x1a, 0x7, 0x51, 0xcf, 0x9f, 0x4a, 0xd, 0xe2, 0x4c, 0x50, 0x1, 0xbd, 0x58, 0x5d, 0x81, 0xb4, 0xd0, 0x62, 0xfb, 0xf6, 0xe1, 0x8b, 0xf3, 0x9, 0x30, 0xe3, 0xee, 0x3f, 0x3f, 0xfd, 0x60, 0x1e, 0x29, 0x1e, 0x2d, 0x53, 0x18, 0xb0, 0x91, 0xaf, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x21, 0x50, 0x4c, 0x54, 0x45, 0x3d, 0x3b, 0x3f, 0x60, 0x5d, 0x62, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x65, 0x62, 0x67, 0x60, 0x5d, 0x62, 0x56, 0x53, 0x58, 0x4b, 0x49, 0x4e, 0xce, 0xce, 0xce, 0x59, 0x59, 0x59, 0xb8, 0xf5, 0x6d, 0x48, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x7, 0xfe, 0xc, 0x9, 0x1c, 0xda, 0x2b, 0xa5, 0x57, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xa, 0x68, 0xd0, 0xf4, 0x56, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x33, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc, 0x5, 0x3, 0x21, 0x86, 0xf4, 0xe, 0x30, 0x28, 0x63, 0x88, 0x80, 0x30, 0x5a, 0xf1, 0x33, 0x66, 0x2, 0x1, 0x2a, 0xa3, 0x73, 0xe6, 0xcc, 0x19, 0x10, 0x35, 0x40, 0x1, 0x8, 0xa3, 0x73, 0x6, 0x1, 0x73, 0xe0, 0x96, 0x1a, 0x42, 0x9c, 0x21, 0x2, 0x0, 0x5a, 0xfa, 0x3d, 0xf9, 0xfa, 0xe2, 0x64, 0xe2, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_left_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x84, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x95, 0x8f, 0x31, 0x12, 0x41, 0x41, 0x10, 0x44, 0x5f, 0xfb, 0x32, 0x94, 0x7c, 0x5d, 0x0, 0x45, 0xe6, 0xfe, 0x7, 0x90, 0x7e, 0x85, 0xb, 0xd8, 0xb, 0x90, 0xd2, 0x92, 0xd, 0xd4, 0xfa, 0xf3, 0x97, 0xce, 0x7a, 0x5e, 0xf5, 0x4c, 0xf, 0xfc, 0x29, 0xd, 0xd, 0x6d, 0x77, 0xc0, 0x1, 0xb0, 0xa4, 0xe3, 0x27, 0x9b, 0x4, 0x8b, 0x36, 0xc0, 0x12, 0xe8, 0x6a, 0xf0, 0x15, 0xb0, 0xbd, 0x2, 0x12, 0xf0, 0x2, 0x4e, 0xa3, 0x1, 0xdb, 0x73, 0x60, 0x5d, 0xec, 0x59, 0xd2, 0xbd, 0x75, 0x61, 0x5f, 0x6a, 0x64, 0x49, 0x79, 0xa8, 0x6b, 0xf4, 0x43, 0xa8, 0x3a, 0xd0, 0x3, 0x4f, 0x20, 0xd9, 0x4e, 0xcd, 0x80, 0xa4, 0x7, 0x70, 0x2d, 0x76, 0x6b, 0x7b, 0xd1, 0xac, 0x24, 0xe9, 0x6, 0xe4, 0xc2, 0x76, 0x35, 0x9f, 0x6, 0x55, 0x2f, 0xc0, 0xc, 0x70, 0xc0, 0x7f, 0xd7, 0x1b, 0x9c, 0x80, 0x1f, 0x32, 0x93, 0x39, 0x2b, 0x5, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0x2d, 0x2c, 0x2f, 0x48, 0x46, 0x4a, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x4c, 0x4a, 0x4e, 0x48, 0x46, 0x4a, 0x40, 0x3e, 0x42, 0x38, 0x36, 0x3a, 0xc3, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xbf, 0xbf, 0xbf, 0xbe, 0xbe, 0xbe, 0x59, 0x59, 0x59, 0x8e, 0x47, 0x76, 0xf1, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x8, 0xfe, 0x9, 0xd, 0x19, 0x4a, 0xb6, 0xc1, 0xe6, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xf, 0x18, 0xba, 0x0, 0xd9, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x3e, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc, 0x5, 0x3, 0x21, 0x86, 0xf4, 0xe, 0x30, 0x28, 0x63, 0x88, 0x80, 0x30, 0x5a, 0x51, 0x19, 0x33, 0xa1, 0x8c, 0xae, 0x55, 0x50, 0xc6, 0x2e, 0x28, 0xa3, 0x7b, 0xf7, 0x6e, 0x8, 0xa3, 0xe7, 0xcc, 0x19, 0xa8, 0x14, 0x9c, 0xd1, 0x7b, 0x17, 0xa6, 0xfd, 0x1d, 0x86, 0x81, 0x60, 0x6, 0xdc, 0x52, 0x43, 0x88, 0x33, 0x44, 0x0, 0xcc, 0x4e, 0x3f, 0xd1, 0x4, 0x90, 0xbf, 0x60, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_left_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xa9, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x95, 0x8f, 0x3d, 0xe, 0x82, 0x60, 0x10, 0x44, 0xdf, 0x82, 0x85, 0xf9, 0x8c, 0xf7, 0x30, 0xb1, 0xb0, 0xb4, 0xf2, 0x24, 0x16, 0x48, 0xad, 0xa5, 0x7f, 0xd, 0x16, 0xd0, 0x20, 0xd6, 0xc6, 0x52, 0x29, 0x3c, 0x86, 0x17, 0xb0, 0xf7, 0x2a, 0xc4, 0x84, 0x90, 0xb5, 0xa0, 0x51, 0xfc, 0x0, 0x9d, 0x72, 0x67, 0x27, 0xf3, 0x6, 0xfe, 0x94, 0xd8, 0x8e, 0x4b, 0x3d, 0xf4, 0xc, 0x7a, 0x3, 0xc9, 0x43, 0x59, 0x4d, 0xde, 0x3d, 0xc7, 0x16, 0x30, 0x70, 0x4, 0xc6, 0x40, 0xbf, 0xea, 0x7d, 0x5, 0x76, 0xba, 0xf7, 0x41, 0x3d, 0xe0, 0xa9, 0x14, 0x5e, 0x23, 0x52, 0xa0, 0xf1, 0x50, 0x70, 0xee, 0x80, 0x51, 0xf0, 0x23, 0x59, 0x5f, 0x1a, 0x1b, 0x4, 0xf7, 0x5a, 0x12, 0x49, 0x6a, 0x7b, 0xae, 0xdd, 0xd0, 0xa4, 0x8f, 0x80, 0x52, 0x4c, 0x81, 0xc, 0xd4, 0xb, 0x34, 0x99, 0xb5, 0x6, 0x22, 0xd9, 0x3e, 0x40, 0x17, 0x25, 0x1e, 0xa7, 0x40, 0xe3, 0x51, 0x2b, 0x52, 0x28, 0x9b, 0x33, 0x48, 0xa, 0x74, 0x5, 0x37, 0xad, 0xfa, 0x1d, 0x5b, 0x6d, 0x6, 0x73, 0x3, 0x3, 0x20, 0xaf, 0x5f, 0xf3, 0xa3, 0x5e, 0xf4, 0x92, 0x29, 0x8d, 0x1, 0xf8, 0x4f, 0x56, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x33, 0x50, 0x4c, 0x54, 0x45, 0x3d, 0x3b, 0x3f, 0x60, 0x5d, 0x62, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x65, 0x62, 0x67, 0x60, 0x5d, 0x62, 0x56, 0x53, 0x58, 0x4b, 0x49, 0x4e, 0xc9, 0xc9, 0xc9, 0xc8, 0xc8, 0xc8, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc5, 0xc5, 0xc5, 0xc4, 0xc4, 0xc4, 0xc3, 0xc3, 0xc3, 0x59, 0x59, 0x59, 0x2a, 0x13, 0xff, 0x12, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x7, 0xfe, 0xc, 0x9, 0x1c, 0xda, 0x2b, 0xa5, 0x57, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x10, 0x95, 0xb2, 0xd, 0x2c, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x85, 0xcf, 0xcb, 0xe, 0x80, 0x20, 0xc, 0x44, 0xd1, 0xa2, 0x96, 0x47, 0x7, 0xe4, 0xff, 0xff, 0x16, 0xdc, 0x90, 0xe, 0xc6, 0x78, 0x97, 0x27, 0x69, 0xd3, 0x8a, 0x4, 0x75, 0x85, 0x43, 0x62, 0xca, 0xae, 0x14, 0x45, 0x33, 0xa5, 0xdf, 0x50, 0xa, 0x83, 0x99, 0x11, 0xa0, 0xa2, 0x7a, 0x0, 0xd0, 0xe0, 0xa1, 0x3d, 0xd1, 0xc8, 0x3d, 0xe3, 0xa5, 0xbd, 0x6f, 0x30, 0xe5, 0xef, 0xb0, 0x5, 0xaf, 0xe7, 0x4e, 0x7e, 0xff, 0x1a, 0xb, 0x26, 0x7, 0xac, 0xd9, 0xa3, 0x51, 0xe3, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_right_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x82, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x95, 0x90, 0x3b, 0xe, 0xc2, 0x40, 0x10, 0x43, 0x9f, 0x49, 0xb, 0xa2, 0xdf, 0x5c, 0x80, 0x8f, 0x68, 0xb9, 0xff, 0x1, 0xe8, 0x50, 0x2, 0x17, 0x60, 0x7b, 0x4, 0xed, 0x62, 0xa, 0xb6, 0x8a, 0x46, 0x59, 0xe2, 0x6e, 0x3c, 0x7a, 0x63, 0x6b, 0x60, 0xa1, 0x34, 0x35, 0x6c, 0x9f, 0xab, 0x7f, 0x91, 0x54, 0xa6, 0xfb, 0x55, 0x70, 0xa4, 0x3, 0xb6, 0xc0, 0x3e, 0x4a, 0x88, 0x80, 0x2b, 0x50, 0x80, 0x64, 0x3b, 0x35, 0x1, 0x49, 0x6f, 0xe0, 0x5e, 0xc7, 0x83, 0xed, 0x4d, 0x2b, 0x1, 0x49, 0xf, 0x20, 0xd7, 0xfd, 0xb1, 0x9, 0xcc, 0x29, 0x4, 0x6c, 0xf7, 0x40, 0x2, 0x3e, 0xc0, 0x30, 0xb, 0xd8, 0x5e, 0x3, 0xbb, 0x3a, 0x8e, 0x92, 0x5e, 0xad, 0x84, 0x13, 0xbf, 0xd7, 0x66, 0x49, 0xf9, 0x9f, 0x4a, 0x5, 0x78, 0x2, 0xb7, 0xa8, 0xee, 0x62, 0x7d, 0x1, 0x99, 0xba, 0x20, 0x14, 0x78, 0xfe, 0x46, 0x82, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0x2d, 0x2c, 0x2f, 0x48, 0x46, 0x4a, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x4c, 0x4a, 0x4e, 0x48, 0x46, 0x4a, 0x40, 0x3e, 0x42, 0x38, 0x36, 0x3a, 0xc3, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xbf, 0xbf, 0xbf, 0xbe, 0xbe, 0xbe, 0x59, 0x59, 0x59, 0x8e, 0x47, 0x76, 0xf1, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x8, 0xfe, 0x9, 0xd, 0x19, 0x4a, 0xb6, 0xc1, 0xe6, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xf, 0x18, 0xba, 0x0, 0xd9, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x40, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc, 0x5, 0x3, 0x21, 0x86, 0xf4, 0xe, 0x30, 0x28, 0x63, 0x88, 0x80, 0x30, 0x5a, 0x51, 0x18, 0x33, 0x61, 0x8c, 0x59, 0x2b, 0xa0, 0x8c, 0x5d, 0xab, 0xa0, 0x8c, 0xdd, 0xbb, 0x77, 0x40, 0x18, 0x67, 0xce, 0x9c, 0x80, 0x31, 0xa0, 0x52, 0x77, 0x6f, 0x40, 0x19, 0xef, 0x30, 0xc, 0x84, 0x30, 0xe0, 0x96, 0x1a, 0x42, 0x9c, 0x21, 0x2, 0x0, 0xfd, 0x36, 0x40, 0x93, 0xf1, 0x83, 0x5f, 0xf2, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_right_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xa8, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0x95, 0x90, 0x2b, 0xe, 0xc2, 0x50, 0x10, 0x45, 0xcf, 0x3c, 0x4, 0xa4, 0x61, 0x27, 0x8, 0x14, 0xb, 0x60, 0x1f, 0x24, 0xb4, 0x41, 0x82, 0xe5, 0x63, 0x5e, 0x5, 0x35, 0xe5, 0x63, 0x9, 0x8a, 0x50, 0x4, 0x2b, 0x41, 0x81, 0x67, 0x29, 0x7d, 0x41, 0x75, 0x30, 0x8, 0xd2, 0x6f, 0x7a, 0xe5, 0xdc, 0x39, 0x33, 0x77, 0x6, 0x5a, 0x4a, 0xf2, 0x85, 0x50, 0xf, 0xf, 0xd0, 0xae, 0x43, 0xc6, 0x47, 0x59, 0xa6, 0x79, 0xdf, 0x14, 0x67, 0x68, 0x1f, 0x18, 0x79, 0x70, 0x2a, 0xdb, 0x50, 0x0, 0x94, 0x6c, 0x2, 0x38, 0xd0, 0xa9, 0xd5, 0xbd, 0xdf, 0x8, 0x44, 0xb2, 0x79, 0x83, 0x2e, 0x7e, 0x79, 0xcf, 0x56, 0xe3, 0x61, 0x43, 0x24, 0xd8, 0xca, 0xfa, 0x2a, 0x90, 0x0, 0x3d, 0xc1, 0x5c, 0x1a, 0x81, 0x3a, 0x95, 0x2, 0xa1, 0xee, 0x2, 0x5, 0x1f, 0xf8, 0x28, 0xd9, 0xec, 0xdf, 0x2b, 0xbc, 0xd5, 0x6a, 0x3c, 0x10, 0xcc, 0xb, 0xf0, 0x14, 0x82, 0x48, 0x56, 0x49, 0xed, 0x6, 0xa1, 0x73, 0x7, 0x3c, 0x90, 0x5b, 0xbe, 0xb9, 0x2a, 0x52, 0xa, 0x3c, 0x1d, 0xcc, 0xab, 0x2f, 0x69, 0xa1, 0x2f, 0x8b, 0xc4, 0x2c, 0x1a, 0xc7, 0x92, 0x74, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x36, 0x50, 0x4c, 0x54, 0x45, 0x3d, 0x3b, 0x3f, 0x60, 0x5d, 0x62, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x65, 0x62, 0x67, 0x60, 0x5d, 0x62, 0x56, 0x53, 0x58, 0x4b, 0x49, 0x4e, 0xc9, 0xc9, 0xc9, 0xc8, 0xc8, 0xc8, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc5, 0xc5, 0xc5, 0xc4, 0xc4, 0xc4, 0xc3, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0x59, 0x59, 0x59, 0x56, 0xec, 0x9e, 0xdc, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x7, 0xfe, 0xc, 0x9, 0x1c, 0xda, 0x2b, 0xa5, 0x57, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x11, 0xe2, 0xb5, 0x3d, 0xba, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x0, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x85, 0xcf, 0xcb, 0xe, 0x80, 0x30, 0x8, 0x44, 0x51, 0xaa, 0xd2, 0x7, 0xb4, 0xd2, 0xff, 0xff, 0xda, 0xea, 0x6e, 0x46, 0x63, 0xbc, 0xcb, 0x93, 0x40, 0x40, 0x24, 0x29, 0x94, 0x36, 0xc9, 0xa5, 0x42, 0x25, 0x8b, 0x56, 0x4a, 0xbf, 0xa0, 0xb5, 0x7, 0x98, 0x19, 0x83, 0x77, 0xef, 0xc, 0x3e, 0xdc, 0x11, 0xc6, 0x1d, 0xc2, 0x79, 0x45, 0x23, 0x11, 0xc1, 0x4b, 0xe7, 0xfc, 0x3b, 0xc, 0xe0, 0xf5, 0xdc, 0xce, 0xef, 0x1f, 0xb, 0xc, 0x30, 0x7, 0xaf, 0x1f, 0x5b, 0x76, 0x12, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_up_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x73, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xd5, 0x90, 0xb1, 0xa, 0xc3, 0x40, 0xc, 0x43, 0x9f, 0xb8, 0x8c, 0x81, 0xee, 0xf7, 0x7, 0x81, 0xec, 0xfd, 0xff, 0x35, 0x6b, 0xb, 0x81, 0x8e, 0x1d, 0x6e, 0xe, 0x49, 0xd7, 0x44, 0x59, 0x5c, 0xb8, 0x96, 0x36, 0x73, 0xab, 0xc5, 0x48, 0xb6, 0xb0, 0x6c, 0xf8, 0x39, 0xe8, 0x5d, 0xb0, 0xdd, 0x2, 0x7d, 0xd0, 0xab, 0xa4, 0xc7, 0x57, 0x83, 0xed, 0xc, 0x74, 0x40, 0xa, 0x69, 0x3, 0x6e, 0x92, 0xee, 0x2f, 0x6, 0xdb, 0x29, 0x6, 0x73, 0xe8, 0x25, 0x6a, 0xcd, 0x47, 0x49, 0xeb, 0xd3, 0x70, 0x6, 0x4e, 0xc0, 0x1a, 0x8d, 0xf2, 0x61, 0xe3, 0x24, 0x69, 0x68, 0xaa, 0x44, 0xb, 0x70, 0xa9, 0x33, 0x4b, 0x2a, 0xb6, 0xe7, 0xb8, 0xc9, 0x47, 0xcf, 0xf8, 0x27, 0xec, 0x8c, 0xe8, 0x25, 0xc9, 0x7b, 0x5, 0xa, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x21, 0x50, 0x4c, 0x54, 0x45, 0x2d, 0x2c, 0x2f, 0x48, 0x46, 0x4a, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x2d, 0x2c, 0x2f, 0x4c, 0x4a, 0x4e, 0x48, 0x46, 0x4a, 0x40, 0x3e, 0x42, 0x38, 0x36, 0x3a, 0xc3, 0xc3, 0xc3, 0x59, 0x59, 0x59, 0xb3, 0x52, 0xf2, 0x5, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x8, 0xfe, 0x9, 0xd, 0x19, 0x4a, 0xb6, 0xc1, 0xe6, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xa, 0x68, 0xd0, 0xf4, 0x56, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x36, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc, 0x5, 0x3, 0x21, 0x86, 0xf4, 0xe, 0x30, 0x28, 0x63, 0x88, 0x80, 0x30, 0x5a, 0xb1, 0x33, 0x3a, 0x67, 0x40, 0x19, 0x33, 0x67, 0x42, 0x18, 0x9d, 0x33, 0x67, 0xce, 0x0, 0x33, 0x66, 0x2, 0x1, 0x2a, 0x3, 0x9f, 0x39, 0x10, 0x6, 0xdc, 0x52, 0x43, 0x88, 0x33, 0x44, 0x0, 0x59, 0xc8, 0x3d, 0xf9, 0xf, 0x68, 0xc5, 0xa9, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_button_up_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x9d, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xcd, 0x90, 0x2b, 0xe, 0xc2, 0x50, 0x14, 0x44, 0xcf, 0xbc, 0xa0, 0xca, 0x3a, 0x50, 0x38, 0x48, 0xaa, 0x58, 0xb, 0xc5, 0x57, 0x60, 0xa0, 0xc1, 0x40, 0x9a, 0x3c, 0x43, 0x8a, 0xae, 0x7f, 0xb0, 0x10, 0x82, 0x25, 0x1, 0x81, 0x60, 0x2b, 0x55, 0xa4, 0x17, 0xd1, 0x12, 0x7e, 0xa, 0xc7, 0x98, 0xc9, 0x9d, 0xb9, 0xc9, 0x49, 0x6, 0xfe, 0x4e, 0xfa, 0xc, 0x96, 0xb6, 0xee, 0xb, 0xb7, 0x3, 0xcc, 0xa8, 0x13, 0xaf, 0xc5, 0xf5, 0xb5, 0x77, 0xef, 0xcf, 0xc5, 0x58, 0xb8, 0x23, 0x30, 0x0, 0x86, 0xc2, 0x9d, 0x56, 0x56, 0x4c, 0xbf, 0x8, 0x33, 0xdb, 0x74, 0x23, 0x28, 0xc1, 0x92, 0x36, 0xde, 0x36, 0xde, 0xdc, 0x82, 0x20, 0xaa, 0x34, 0x57, 0x5e, 0x75, 0x0, 0x22, 0x6c, 0xf, 0xc4, 0x40, 0x65, 0x90, 0x7a, 0xcd, 0x43, 0x4b, 0x3c, 0x8, 0x4a, 0x83, 0x89, 0x11, 0xf5, 0x80, 0x91, 0x7b, 0x92, 0x74, 0x31, 0xea, 0xd8, 0x2b, 0xb, 0xf, 0xbc, 0x57, 0x16, 0x8c, 0x3a, 0x6, 0xce, 0xc0, 0xed, 0xe7, 0x85, 0xfe, 0x54, 0x77, 0x8c, 0xb2, 0x2f, 0x36, 0xd, 0xf7, 0x95, 0x26, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x21, 0x50, 0x4c, 0x54, 0x45, 0x3d, 0x3b, 0x3f, 0x60, 0x5d, 0x62, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x3d, 0x3b, 0x3f, 0x65, 0x62, 0x67, 0x60, 0x5d, 0x62, 0x56, 0x53, 0x58, 0x4b, 0x49, 0x4e, 0xce, 0xce, 0xce, 0x59, 0x59, 0x59, 0xb8, 0xf5, 0x6d, 0x48, 0x0, 0x0, 0x0, 0x5, 0x74, 0x52, 0x4e, 0x53, 0x7, 0xfe, 0xc, 0x9, 0x1c, 0xda, 0x2b, 0xa5, 0x57, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xa, 0x68, 0xd0, 0xf4, 0x56, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x36, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc, 0x5, 0x3, 0x21, 0x86, 0xf4, 0xe, 0x30, 0x28, 0x63, 0x88, 0x80, 0x30, 0x5a, 0xb1, 0x33, 0x3a, 0x67, 0x40, 0x19, 0x33, 0x67, 0x42, 0x18, 0x9d, 0x33, 0x67, 0xce, 0x0, 0x33, 0x66, 0x2, 0x1, 0x2a, 0x3, 0x9f, 0x39, 0x10, 0x6, 0xdc, 0x52, 0x43, 0x88, 0x33, 0x44, 0x0, 0x59, 0xc8, 0x3d, 0xf9, 0xf, 0x68, 0xc5, 0xa9, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_grabber_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x48, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xd5, 0xcc, 0xb1, 0xd, 0x80, 0x40, 0x10, 0x3, 0xc1, 0x39, 0x12, 0x68, 0x80, 0x22, 0xa0, 0xff, 0x5a, 0xbe, 0xa, 0xa, 0x20, 0x3b, 0x92, 0xf, 0x0, 0x9d, 0x90, 0x8, 0x7f, 0x25, 0x27, 0xb6, 0xd6, 0x8c, 0x4f, 0xbc, 0x8b, 0xcc, 0x5c, 0xb1, 0x23, 0xd1, 0x22, 0xe2, 0xb8, 0xef, 0x53, 0x71, 0xb2, 0x61, 0xc6, 0xd2, 0xc5, 0x7, 0x95, 0xf0, 0x49, 0x25, 0x34, 0x9c, 0x3d, 0xed, 0xef, 0xe1, 0x8, 0x5c, 0x37, 0x9a, 0xa, 0x6, 0x38, 0xcd, 0xba, 0x62, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x3, 0x0, 0x0, 0x0, 0x61, 0xab, 0xac, 0xd5, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x60, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x5b, 0x59, 0x61, 0x5b, 0x59, 0x61, 0x5a, 0x58, 0x60, 0x59, 0x57, 0x5f, 0x5a, 0x58, 0x60, 0x5a, 0x58, 0x60, 0x57, 0x56, 0x5e, 0x58, 0x56, 0x5e, 0x56, 0x55, 0x5d, 0x57, 0x55, 0x5d, 0x57, 0x55, 0x5d, 0x55, 0x53, 0x5b, 0x55, 0x53, 0x5b, 0x54, 0x53, 0x5b, 0x55, 0x54, 0x5c, 0x54, 0x52, 0x5a, 0x55, 0x53, 0x5b, 0x5a, 0x58, 0x60, 0x56, 0x54, 0x5c, 0x54, 0x53, 0x5a, 0x55, 0x53, 0x5b, 0x53, 0x51, 0x59, 0x52, 0x51, 0x59, 0x52, 0x50, 0x58, 0x51, 0x50, 0x58, 0x51, 0x4f, 0x57, 0x50, 0x4e, 0x56, 0x4f, 0x4d, 0x55, 0x50, 0x4f, 0x57, 0x54, 0x52, 0x5a, 0xff, 0xff, 0xff, 0xc7, 0x51, 0xc2, 0xf2, 0x0, 0x0, 0x0, 0x12, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x2c, 0xb8, 0xf4, 0x2e, 0xf2, 0xb8, 0xf4, 0xf5, 0xf4, 0xf5, 0xb8, 0x2f, 0xf2, 0x2e, 0xb8, 0xf4, 0xb8, 0x66, 0xf6, 0xf7, 0x12, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1f, 0x5, 0xd, 0x10, 0xbd, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x50, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc0, 0x7, 0x18, 0x99, 0x98, 0x85, 0x98, 0x18, 0x21, 0x6c, 0x16, 0x56, 0x61, 0x11, 0x11, 0x61, 0x56, 0x16, 0x30, 0x87, 0x4d, 0x54, 0xc, 0x8, 0x44, 0xd9, 0xc0, 0x1c, 0x76, 0x71, 0x9, 0x20, 0x10, 0xe7, 0x0, 0x73, 0x38, 0x25, 0xa5, 0x80, 0x40, 0x92, 0xb, 0xcc, 0xe1, 0x96, 0x90, 0x6, 0x2, 0x9, 0x6e, 0x30, 0x87, 0x87, 0x57, 0x4a, 0x46, 0x46, 0x96, 0x97, 0x7, 0x62, 0x1c, 0x1f, 0xbf, 0x80, 0x9c, 0x20, 0x1f, 0x5e, 0xdb, 0x1, 0x23, 0xfd, 0x4, 0x11, 0x2d, 0x48, 0xcb, 0xd2, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char scroll_grabber_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x71, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xcd, 0x8f, 0x3b, 0xe, 0x83, 0x30, 0x10, 0x44, 0xdf, 0x5a, 0x88, 0x2, 0xce, 0x8, 0xdc, 0x82, 0x50, 0x11, 0xb, 0x8e, 0xc2, 0x19, 0xdd, 0x20, 0xe1, 0xa1, 0x88, 0xac, 0xd8, 0x4, 0xa5, 0x66, 0xba, 0x59, 0xcd, 0x6f, 0xe1, 0x71, 0xb0, 0x9c, 0x78, 0xf9, 0x5a, 0x34, 0xab, 0x50, 0x7, 0x26, 0xb0, 0xcd, 0x11, 0x66, 0x6f, 0x7e, 0x4f, 0x9a, 0x2a, 0x37, 0x44, 0xda, 0x5, 0x34, 0x7e, 0x73, 0xf4, 0x8a, 0xb4, 0x0, 0x53, 0xd2, 0xb8, 0xb2, 0x30, 0xf6, 0xbf, 0x23, 0x34, 0xe4, 0xec, 0x62, 0x30, 0xdd, 0xcc, 0x3e, 0xfe, 0x19, 0xb6, 0xab, 0xda, 0xa0, 0xb8, 0x15, 0x3f, 0x38, 0xc2, 0xfc, 0xd9, 0xac, 0x2e, 0x5, 0x18, 0xe1, 0x7d, 0xd3, 0xfa, 0x24, 0x9c, 0x8, 0xa7, 0x1c, 0xfa, 0x20, 0xb5, 0xcd, 0xac, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x3, 0x0, 0x0, 0x0, 0x61, 0xab, 0xac, 0xd5, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6c, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x97, 0xd0, 0xdf, 0x92, 0xcb, 0xdc, 0x84, 0xbb, 0xd4, 0x92, 0xca, 0xdc, 0x95, 0xd0, 0xdd, 0x83, 0xbb, 0xd3, 0x8b, 0xc8, 0xd7, 0x79, 0xb5, 0xcb, 0x78, 0xb4, 0xca, 0x73, 0xb0, 0xc7, 0x73, 0xb0, 0xc7, 0x7b, 0xc0, 0xcf, 0x79, 0xc5, 0xd1, 0x6b, 0xae, 0xc1, 0x75, 0xc6, 0xcf, 0x70, 0xbc, 0xca, 0x64, 0xa6, 0xbc, 0x71, 0xbc, 0xc9, 0x82, 0xba, 0xd4, 0x6a, 0xa2, 0xc6, 0x62, 0x9a, 0xc2, 0x61, 0x9a, 0xc1, 0x68, 0x9f, 0xc2, 0x5d, 0x92, 0xbb, 0x5c, 0x92, 0xb8, 0x58, 0x8d, 0xb6, 0x59, 0x8e, 0xb3, 0x56, 0x89, 0xb0, 0x5c, 0x91, 0xb2, 0x53, 0x84, 0xa9, 0x58, 0x8f, 0xae, 0x54, 0x83, 0xa4, 0x57, 0x8e, 0xad, 0x64, 0xa5, 0xba, 0xff, 0xff, 0xff, 0xbb, 0x65, 0x65, 0x27, 0x0, 0x0, 0x0, 0x13, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x25, 0xad, 0xf1, 0xad, 0x27, 0xef, 0xad, 0xf1, 0xf3, 0xf1, 0xf3, 0xad, 0x28, 0xef, 0x27, 0xad, 0xf2, 0xad, 0xcd, 0x8a, 0x27, 0xfe, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x23, 0x2a, 0x62, 0x6c, 0x3a, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x50, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc0, 0x7, 0x18, 0x99, 0x98, 0x85, 0x59, 0x18, 0x21, 0x6c, 0x56, 0x36, 0x11, 0x51, 0x31, 0x11, 0x36, 0x56, 0x30, 0x87, 0x5d, 0x5c, 0x2, 0x8, 0xc4, 0xd9, 0xc1, 0x1c, 0xe, 0x49, 0x29, 0x20, 0x90, 0xe4, 0x4, 0x73, 0xb8, 0xa4, 0x65, 0x80, 0x40, 0x9a, 0x1b, 0xcc, 0xe1, 0x91, 0x95, 0x3, 0x2, 0x59, 0x1e, 0x30, 0x87, 0x97, 0x4f, 0x5e, 0x41, 0x41, 0x91, 0x8f, 0x17, 0x62, 0x1c, 0xbf, 0x80, 0xa0, 0x92, 0x10, 0x3f, 0x5e, 0xdb, 0x1, 0x41, 0x87, 0x4, 0x7d, 0x15, 0xc4, 0xfd, 0x6a, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char selection_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xba, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xc5, 0xd2, 0xc1, 0x4a, 0x43, 0x31, 0x10, 0x85, 0xe1, 0x6f, 0x42, 0xdd, 0x15, 0xb, 0x15, 0x14, 0xe9, 0x23, 0xb4, 0xd7, 0xf7, 0x7f, 0x8e, 0x56, 0x17, 0xdd, 0x8b, 0x16, 0xc1, 0x82, 0xc5, 0xdd, 0x15, 0xc6, 0x45, 0x73, 0xe5, 0x6e, 0xaa, 0x91, 0x22, 0x9e, 0xcd, 0x64, 0x92, 0xfc, 0x73, 0x48, 0x38, 0xfc, 0xb7, 0x62, 0x58, 0x64, 0xe6, 0xd, 0x56, 0xb8, 0xc2, 0xe4, 0xc4, 0xfd, 0xf, 0xbc, 0x62, 0x1b, 0x11, 0x8f, 0x5f, 0x3, 0x32, 0x73, 0x85, 0x6e, 0x3c, 0xb0, 0x41, 0xf7, 0x11, 0xb1, 0x9e, 0x54, 0xe7, 0xae, 0x6e, 0x3e, 0xe1, 0xf0, 0x3, 0x38, 0xc5, 0x2, 0xcb, 0xcc, 0xdc, 0x95, 0x91, 0xf3, 0x73, 0x3, 0xc, 0xef, 0xd8, 0x55, 0xa6, 0x2b, 0x98, 0xd7, 0x83, 0x16, 0x78, 0xd0, 0x5b, 0xad, 0xf3, 0xe2, 0xf4, 0x87, 0xb5, 0xe8, 0xa2, 0x9c, 0x1, 0x83, 0x82, 0xfe, 0xc, 0xbe, 0x2f, 0xd8, 0xd7, 0x66, 0xfa, 0xb, 0xf0, 0xb2, 0xd6, 0x7d, 0xc1, 0xb6, 0x36, 0xb, 0xcc, 0x1a, 0xe0, 0x19, 0x6e, 0x91, 0xd8, 0xc, 0x41, 0xba, 0xc3, 0x52, 0x7b, 0x90, 0x12, 0xeb, 0x88, 0x78, 0x18, 0x47, 0xf9, 0xda, 0x31, 0x13, 0xdf, 0x45, 0xb9, 0x77, 0x7c, 0xf2, 0x26, 0x22, 0x5e, 0x1a, 0xcd, 0xfe, 0x58, 0x9f, 0x3f, 0x85, 0x2f, 0x71, 0xd3, 0xd7, 0x3f, 0x66, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2d, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd, 0xfb, 0xff, 0xfd, 0xf7, 0xff, 0xfd, 0xf7, 0xff, 0xfd, 0xf7, 0xff, 0xfd, 0xf6, 0xff, 0xf6, 0xf4, 0xff, 0x15, 0x15, 0x17, 0xff, 0x70, 0xc0, 0x21, 0x0, 0x0, 0x0, 0xe, 0x74, 0x52, 0x4e, 0x53, 0x6, 0xf, 0x16, 0x18, 0x2a, 0x3b, 0x40, 0x3c, 0x6, 0x3d, 0x44, 0x3e, 0x31, 0x25, 0x8, 0x3d, 0x16, 0xb4, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xe, 0x6f, 0xbd, 0x30, 0x4f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x37, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x54, 0x36, 0x6, 0x2, 0x23, 0x1, 0x6, 0x91, 0xb0, 0x34, 0x20, 0x48, 0x75, 0x64, 0x50, 0xef, 0x5c, 0x5, 0x4, 0x33, 0x8a, 0x18, 0xcc, 0xf6, 0xdc, 0x5, 0x82, 0xd3, 0xc9, 0xc, 0x66, 0x6b, 0x41, 0x8c, 0x5b, 0x94, 0x33, 0x60, 0x6, 0xc2, 0xad, 0x80, 0x5b, 0xa, 0x73, 0x6, 0x0, 0x45, 0x34, 0x48, 0x41, 0xa3, 0xc5, 0x91, 0x23, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char selection_oof_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xb6, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd3, 0xbd, 0x4a, 0x43, 0x41, 0x10, 0xc5, 0xf1, 0xdf, 0x2c, 0xb1, 0xb, 0x6, 0x22, 0x28, 0x92, 0x47, 0x48, 0xae, 0xef, 0xff, 0x1c, 0x89, 0x16, 0xe9, 0x45, 0x83, 0x60, 0xc0, 0x60, 0x77, 0x85, 0xb1, 0xb8, 0x7b, 0x43, 0xa, 0x3f, 0x56, 0xd2, 0x7a, 0x9a, 0xe1, 0xec, 0xf0, 0x9f, 0x61, 0x7, 0x4e, 0xa8, 0xca, 0xcc, 0x1b, 0xac, 0x70, 0x85, 0x89, 0xaf, 0xf5, 0x81, 0x57, 0x6c, 0x23, 0xe2, 0x11, 0xa2, 0xc2, 0x2b, 0x74, 0xa3, 0x6f, 0xd4, 0x7d, 0x44, 0xac, 0x27, 0x75, 0x73, 0x57, 0x1f, 0x9f, 0x70, 0xf8, 0x5, 0x9c, 0x62, 0x81, 0x65, 0x66, 0xee, 0xca, 0xc9, 0xe6, 0xe7, 0x6, 0x18, 0xde, 0xb1, 0xab, 0x4c, 0x57, 0x30, 0xaf, 0x8d, 0x16, 0x78, 0xd4, 0x5b, 0xad, 0xf3, 0xe2, 0xfb, 0x83, 0xb5, 0xe8, 0xa2, 0x9c, 0x1, 0x83, 0xff, 0x1, 0xc3, 0x80, 0xfe, 0xc, 0xbe, 0x2f, 0xd8, 0x57, 0x33, 0xfd, 0x3, 0x78, 0x59, 0xeb, 0xbe, 0x60, 0x5b, 0xcd, 0x2, 0xb3, 0x6, 0x78, 0x86, 0x5b, 0x24, 0x36, 0x63, 0x98, 0xee, 0xb0, 0xd4, 0x1e, 0xa6, 0xc4, 0x3a, 0x22, 0x1e, 0x8e, 0x40, 0x66, 0x5e, 0x1b, 0x72, 0xf1, 0x53, 0x9c, 0x7b, 0xc3, 0x97, 0x37, 0x11, 0xf1, 0x2, 0x9f, 0x25, 0x19, 0x2f, 0x79, 0x66, 0x8a, 0x69, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x30, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x2, 0xfd, 0xfb, 0xff, 0xfd, 0xfb, 0xff, 0xfd, 0xfb, 0xff, 0xfd, 0xfb, 0xff, 0x15, 0x15, 0x17, 0xe9, 0x54, 0x1, 0x21, 0x0, 0x0, 0x0, 0xf, 0x74, 0x52, 0x4e, 0x53, 0xa, 0x1a, 0x26, 0x29, 0x2a, 0x48, 0x65, 0x6d, 0x6e, 0x66, 0x3, 0x20, 0x25, 0x16, 0xc, 0x1f, 0x74, 0xbf, 0x74, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xf, 0x18, 0xba, 0x0, 0xd9, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x38, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x54, 0x76, 0x1, 0x2, 0x23, 0x1, 0x6, 0xd1, 0xf4, 0xe, 0x20, 0x28, 0xb, 0x64, 0xd0, 0x5c, 0x7d, 0x6, 0x8, 0x76, 0x4d, 0x62, 0x70, 0xdf, 0xfb, 0xe, 0x8, 0x6e, 0x97, 0x30, 0x78, 0x9c, 0x3, 0x31, 0xde, 0xb4, 0x50, 0xca, 0x80, 0x1b, 0x8, 0xb7, 0x2, 0x6e, 0x29, 0xcc, 0x19, 0x0, 0x1a, 0x23, 0x52, 0x59, 0xa4, 0x2f, 0x3d, 0xa7, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char spinbox_updown_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0xe, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xc5, 0x53, 0xc1, 0x4a, 0xc3, 0x40, 0x14, 0x9c, 0x79, 0x90, 0xd4, 0xa3, 0x1, 0x8f, 0x81, 0xa5, 0xe4, 0x50, 0xff, 0x4c, 0xb1, 0x45, 0xd0, 0xbf, 0xd0, 0x83, 0x7a, 0x88, 0xd0, 0x4f, 0x6b, 0xf, 0xa1, 0xbc, 0xbb, 0xa5, 0x1e, 0xa5, 0x98, 0x37, 0x5e, 0xc, 0xc4, 0xd0, 0x68, 0xa1, 0x7, 0xe7, 0xb4, 0xfb, 0x96, 0x9d, 0x19, 0x66, 0x67, 0x81, 0x13, 0xc1, 0xb1, 0x3, 0x77, 0x2f, 0x24, 0x3d, 0x90, 0xcc, 0x0, 0xdc, 0xa7, 0x94, 0x76, 0x47, 0x13, 0x6c, 0x36, 0x9b, 0x73, 0x92, 0xaf, 0x0, 0x2a, 0x0, 0x90, 0xe4, 0xfb, 0xfd, 0x7e, 0x3e, 0x9b, 0xcd, 0xde, 0xfe, 0x24, 0x70, 0xf7, 0x82, 0x64, 0x1d, 0x11, 0x95, 0x99, 0x35, 0x0, 0xd0, 0xad, 0x25, 0x2d, 0x86, 0x4e, 0x6c, 0xa8, 0x2c, 0xa9, 0x8e, 0x88, 0x4a, 0x92, 0x9b, 0xd9, 0x6d, 0xdb, 0xb6, 0x73, 0x0, 0x4d, 0x44, 0x54, 0x11, 0xb1, 0x5c, 0xaf, 0xd7, 0x17, 0xa3, 0x4, 0x66, 0xf6, 0xc, 0xa0, 0x32, 0xb3, 0xc6, 0xcc, 0xae, 0xcb, 0xb2, 0xdc, 0x4e, 0xa7, 0xd3, 0x77, 0x92, 0xb, 0x33, 0x6b, 0x48, 0xa6, 0xc9, 0x64, 0xf2, 0x38, 0x4a, 0x20, 0xa9, 0x25, 0xb9, 0x1a, 0x5a, 0x4d, 0x29, 0xed, 0x24, 0x2d, 0x48, 0xae, 0x0, 0xc4, 0xa1, 0xdc, 0xfe, 0xf, 0x3f, 0x5e, 0xc1, 0xdd, 0x97, 0x0, 0xce, 0x0, 0xdc, 0xd, 0xd3, 0x76, 0xf7, 0x22, 0x22, 0x5e, 0xcc, 0xec, 0x23, 0xa5, 0x74, 0xd5, 0xcd, 0x87, 0x19, 0xe4, 0x92, 0x2e, 0x49, 0xd6, 0xee, 0x5e, 0xf4, 0x2f, 0x93, 0xac, 0x49, 0xce, 0x24, 0x65, 0xa3, 0xe, 0xfa, 0x5, 0xea, 0xca, 0x93, 0xe7, 0xf9, 0x67, 0x7f, 0x96, 0x65, 0xd9, 0x4d, 0x59, 0x96, 0xdb, 0x83, 0x4, 0x7d, 0xb5, 0x63, 0x8b, 0x74, 0x74, 0x95, 0x87, 0xca, 0xbf, 0x12, 0x74, 0x4e, 0x0, 0x3c, 0x7d, 0x6f, 0x47, 0x3f, 0xd3, 0xc9, 0xf8, 0x2, 0x8c, 0x16, 0xa2, 0xfd, 0x26, 0x18, 0xca, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xcd, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xe5, 0x53, 0x31, 0xe, 0x82, 0x40, 0x10, 0x9c, 0x5d, 0x22, 0x3e, 0x80, 0x86, 0xc4, 0x0, 0xe1, 0xf, 0x16, 0x5a, 0x58, 0xf9, 0x5, 0xe3, 0x13, 0xd0, 0xc2, 0xc4, 0xcf, 0xd8, 0xf0, 0x5, 0xe3, 0x1f, 0x2c, 0x2c, 0x6c, 0xf8, 0x1, 0xc5, 0x72, 0x85, 0x9, 0xd, 0xf, 0x10, 0x43, 0xce, 0x86, 0x82, 0xe0, 0xe9, 0x19, 0x8d, 0x95, 0x53, 0xce, 0xce, 0x6e, 0x26, 0x99, 0x59, 0xe0, 0x97, 0x10, 0x91, 0x95, 0x52, 0x2a, 0x79, 0xa5, 0xa1, 0x67, 0x83, 0xa2, 0x28, 0xa6, 0x0, 0x8e, 0x0, 0x98, 0x99, 0xe7, 0x61, 0x18, 0x9e, 0xde, 0x3e, 0x20, 0x22, 0x3e, 0x11, 0x65, 0x0, 0x46, 0x2d, 0x55, 0x3a, 0x8e, 0x33, 0xe, 0x82, 0xe0, 0xd2, 0xd7, 0x72, 0x9f, 0xc8, 0xb2, 0x6c, 0x0, 0x60, 0xdf, 0x59, 0x6, 0x0, 0xbf, 0x69, 0x9a, 0x43, 0x9e, 0xe7, 0x43, 0xeb, 0x1, 0xcf, 0xf3, 0x76, 0x44, 0x34, 0x33, 0x18, 0x9b, 0xb8, 0xae, 0x9b, 0x9a, 0x1c, 0xff, 0x3b, 0x1e, 0x62, 0x14, 0x91, 0x94, 0x88, 0x8c, 0xe5, 0x21, 0xa2, 0x34, 0x8a, 0xa2, 0x75, 0x97, 0x7b, 0x48, 0xa1, 0xaa, 0xaa, 0x8d, 0xd6, 0xda, 0x54, 0x9a, 0x73, 0x5d, 0xd7, 0x5b, 0xab, 0x83, 0xd6, 0xc5, 0xe7, 0x45, 0x2, 0x80, 0x38, 0x8e, 0x4b, 0xad, 0xf5, 0x2, 0xc0, 0x15, 0xc0, 0x8d, 0x99, 0x97, 0xa6, 0x65, 0x2b, 0x94, 0x52, 0x89, 0xed, 0x99, 0xbe, 0xc6, 0x1d, 0x31, 0x1f, 0x40, 0xdc, 0x74, 0x8a, 0x5b, 0xc1, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char submenu_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x8e, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x75, 0xcf, 0x31, 0xa, 0xc2, 0x50, 0x10, 0x4, 0xd0, 0x99, 0x8d, 0x62, 0x4a, 0x5, 0xcb, 0xc0, 0x27, 0xa4, 0xf1, 0x70, 0xbf, 0x51, 0xbc, 0x85, 0x60, 0x95, 0x42, 0x6f, 0x66, 0x8a, 0x10, 0xf6, 0x4, 0x49, 0x2f, 0xec, 0xd8, 0x18, 0x31, 0xa0, 0x53, 0x2d, 0xc3, 0x63, 0x61, 0x88, 0x77, 0xdc, 0xfd, 0xe, 0x60, 0x3, 0xe0, 0x98, 0x52, 0x1a, 0xe7, 0xde, 0xe6, 0x43, 0xd2, 0x5a, 0xd2, 0x81, 0x64, 0xeb, 0xee, 0xbb, 0x5f, 0xe0, 0x4, 0xa0, 0x8f, 0x88, 0x26, 0x22, 0x6e, 0x5d, 0xd7, 0xed, 0x17, 0xa0, 0xae, 0xeb, 0x89, 0x64, 0x36, 0xb3, 0x9e, 0x64, 0x2a, 0xcb, 0xf2, 0xb2, 0x0, 0xff, 0xf2, 0x1, 0xc3, 0x30, 0x6c, 0x25, 0xb5, 0x11, 0xd1, 0x48, 0xf2, 0xa2, 0x28, 0xce, 0x0, 0xb0, 0x9a, 0x1, 0xc9, 0x2b, 0x80, 0xc6, 0xcc, 0x7a, 0x49, 0xb9, 0xaa, 0xaa, 0x71, 0xf1, 0x81, 0xe4, 0x93, 0xe4, 0x43, 0x52, 0xfe, 0x9e, 0xf9, 0x2, 0x35, 0xca, 0x3a, 0xf, 0x29, 0x4, 0xd0, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x64, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x7d, 0xca, 0x21, 0x12, 0x80, 0x20, 0x14, 0x45, 0xd1, 0xf7, 0x2d, 0x4, 0x36, 0x40, 0x63, 0xa8, 0xba, 0x1f, 0xbb, 0x9d, 0xe5, 0xb8, 0x0, 0xb3, 0xfb, 0xd1, 0xc, 0x8d, 0xd, 0x10, 0x48, 0xcf, 0x22, 0x6, 0xc7, 0xef, 0x6d, 0x77, 0xe6, 0x8, 0x0, 0xa4, 0x94, 0x88, 0x3b, 0x92, 0x4b, 0x8, 0x61, 0xeb, 0x3f, 0xe0, 0x95, 0x88, 0xac, 0x39, 0xe7, 0x49, 0x5, 0x0, 0x2c, 0xc9, 0xbd, 0x94, 0x62, 0x35, 0x0, 0x0, 0x63, 0x6b, 0x6d, 0xfd, 0x3, 0x4f, 0x1a, 0x38, 0x8d, 0x31, 0x51, 0x3, 0x55, 0x44, 0x66, 0xe7, 0x5c, 0xfd, 0x4, 0x24, 0xa3, 0xf7, 0xfe, 0xe8, 0x7f, 0x1, 0xe, 0xc2, 0x1e, 0x10, 0xa, 0xf0, 0x33, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x53, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x75, 0x8f, 0x31, 0xe, 0x80, 0x30, 0xc, 0x3, 0xcf, 0xa5, 0x73, 0xbb, 0xf0, 0xff, 0x3f, 0xc2, 0xa, 0xd4, 0x2c, 0x54, 0xa, 0x11, 0xdc, 0xe8, 0x58, 0x3e, 0x45, 0x4, 0x6c, 0x77, 0x40, 0xc0, 0x2e, 0x69, 0x0, 0x14, 0xde, 0x8, 0xa8, 0x40, 0xb7, 0x5d, 0x66, 0x10, 0x17, 0xa, 0xd0, 0x9e, 0xd2, 0x5, 0x6c, 0xb2, 0xbd, 0xf2, 0xcf, 0x91, 0x15, 0x19, 0x7d, 0x29, 0x3a, 0xb0, 0x4c, 0x45, 0x5e, 0x68, 0xf1, 0x28, 0x69, 0xd4, 0x54, 0x30, 0x70, 0x12, 0xde, 0xbc, 0x1, 0x5f, 0x4b, 0x1d, 0x1b, 0xbf, 0xb6, 0xb, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x4, 0x0, 0x0, 0x0, 0x6e, 0x6, 0x76, 0x0, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0x0, 0xaa, 0x8d, 0x23, 0x32, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x1f, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc0, 0x4, 0xff, 0x23, 0xff, 0x8b, 0xfc, 0x17, 0xf9, 0x1f, 0x49, 0xac, 0x10, 0x13, 0x3, 0x3, 0x61, 0x53, 0xb0, 0x98, 0x80, 0xc, 0x0, 0xa8, 0x3e, 0x18, 0x31, 0xbe, 0x78, 0xfc, 0x7a, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_behind_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x12, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x60, 0x14, 0x8c, 0x2, 0x8, 0x0, 0x0, 0x4, 0x10, 0x0, 0x1, 0x7f, 0x4d, 0x78, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x5a, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x2e, 0x36, 0x43, 0x40, 0x4d, 0x0, 0x0, 0x0, 0x43, 0x40, 0x4c, 0x3e, 0x3c, 0x47, 0x3e, 0x3b, 0x46, 0x31, 0x2f, 0x38, 0x2d, 0x2b, 0x33, 0x3f, 0x3c, 0x47, 0x35, 0x32, 0x3b, 0x5b, 0xb0, 0x1, 0xb7, 0x0, 0x0, 0x0, 0x18, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x1, 0x3, 0x5, 0x8, 0xa, 0xb, 0xc, 0x4, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x77, 0xf3, 0x7, 0xef, 0xd3, 0x51, 0x5e, 0xca, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1d, 0xeb, 0x3, 0x71, 0x91, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x6e, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0xb5, 0xcc, 0x49, 0xe, 0x80, 0x20, 0x10, 0x44, 0xd1, 0x2, 0x6c, 0x90, 0x49, 0x26, 0x27, 0xd4, 0xfb, 0x9f, 0x53, 0x63, 0x34, 0x2e, 0x58, 0xfb, 0x97, 0x2f, 0xa9, 0x2, 0x18, 0x17, 0x1d, 0x49, 0xa5, 0x24, 0x75, 0x82, 0x33, 0x80, 0xf5, 0xa4, 0x8d, 0x75, 0xde, 0x3b, 0x6b, 0x34, 0xf5, 0xc, 0x9c, 0x86, 0x10, 0x53, 0x2e, 0x25, 0xa7, 0x18, 0x6, 0xe2, 0x10, 0x3a, 0x8c, 0xd3, 0x5a, 0xaf, 0xd6, 0x69, 0xc, 0x5a, 0x60, 0x36, 0x71, 0xd9, 0xf6, 0xbb, 0x6d, 0x89, 0x66, 0x6, 0xd9, 0x74, 0xec, 0x4f, 0x47, 0xb2, 0x4, 0xe9, 0x72, 0x7d, 0xa1, 0x66, 0x27, 0xa1, 0x7c, 0xf9, 0xa0, 0x78, 0xd5, 0x42, 0x33, 0x69, 0x4e, 0xff, 0x80, 0x13, 0xce, 0x8, 0x12, 0xa9, 0x90, 0xd8, 0x47, 0x93, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_close_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xbe, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x90, 0x3b, 0xe, 0xc2, 0x40, 0xc, 0x44, 0x9f, 0x9, 0x45, 0xf8, 0x14, 0x80, 0xb8, 0xf, 0x15, 0x8a, 0x8, 0x48, 0xdc, 0x94, 0x8a, 0x4, 0x85, 0x9a, 0xe3, 0x20, 0x48, 0xc3, 0xa7, 0x20, 0x32, 0x8d, 0x41, 0x8b, 0xc9, 0x4a, 0xb4, 0xb8, 0xda, 0x1d, 0x7b, 0x9e, 0x35, 0x86, 0xbf, 0x2f, 0x9, 0x3f, 0xaa, 0xba, 0x2, 0xba, 0x40, 0x25, 0x22, 0x37, 0xd7, 0xeb, 0x1, 0x19, 0xf0, 0x10, 0x91, 0xed, 0x4b, 0xef, 0x38, 0x60, 0x2, 0x4c, 0x81, 0xdc, 0xc, 0xa1, 0x39, 0xb7, 0x5e, 0x12, 0x1a, 0x3c, 0xa0, 0x2, 0x4e, 0xc0, 0x18, 0x58, 0xaa, 0x6a, 0x5f, 0x55, 0x53, 0x60, 0x61, 0x5a, 0xd, 0xec, 0xa3, 0x11, 0x6c, 0x5b, 0x6a, 0xdb, 0x26, 0xc0, 0xc5, 0xe4, 0x81, 0x99, 0xb, 0x1f, 0xed, 0xb, 0x10, 0x40, 0xd6, 0xc0, 0xcc, 0x66, 0xe, 0xc0, 0xc6, 0x9b, 0xdb, 0x22, 0xc4, 0x4a, 0x63, 0xcb, 0x7e, 0x89, 0xa0, 0xc0, 0xd0, 0x22, 0x94, 0x22, 0x72, 0x8d, 0x2, 0x9c, 0xb9, 0x6, 0xa, 0x3, 0x84, 0xda, 0x7, 0xc4, 0x47, 0xc8, 0x6c, 0xf0, 0x8c, 0x1d, 0x4c, 0x44, 0xee, 0xc0, 0xce, 0xb4, 0x11, 0x30, 0xf, 0xd, 0x1e, 0xd0, 0x0, 0x47, 0xdb, 0xf2, 0x3e, 0x98, 0xbd, 0x4b, 0xeb, 0x35, 0x6d, 0xb7, 0xf8, 0xe3, 0x7a, 0x2, 0x49, 0x7e, 0x47, 0x10, 0xc3, 0xf7, 0xae, 0x75, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 -}; - -static const unsigned char tab_container_backup_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x88, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x92, 0xb1, 0xd, 0xc2, 0x40, 0xc, 0x45, 0x9f, 0xcf, 0x91, 0x4e, 0x99, 0x21, 0x7, 0xb, 0x65, 0x5, 0x3a, 0xa4, 0x5b, 0x3, 0xb1, 0x5, 0x81, 0x9a, 0x19, 0x18, 0x28, 0xd9, 0x1, 0xa5, 0x48, 0x4c, 0xc3, 0x45, 0x54, 0x58, 0x14, 0x28, 0x14, 0xfc, 0xca, 0x67, 0xfb, 0x3d, 0xb9, 0x38, 0x58, 0x3b, 0x52, 0x8a, 0xdd, 0xfe, 0xd8, 0x9a, 0x58, 0x7, 0x34, 0xe, 0x33, 0x20, 0x92, 0xaf, 0x97, 0xc3, 0xd, 0xa0, 0x2a, 0x5d, 0x13, 0x3b, 0x8d, 0xe3, 0xbd, 0x99, 0xa7, 0xe9, 0x2d, 0x1d, 0x54, 0x53, 0x8c, 0x75, 0x7, 0x6c, 0x1, 0xc2, 0xcb, 0x2c, 0x79, 0x30, 0xc0, 0x73, 0x67, 0xb3, 0x8, 0x5d, 0xc2, 0xc9, 0x5f, 0xf0, 0x6b, 0x82, 0x21, 0xa8, 0xfa, 0x40, 0x50, 0x80, 0xbe, 0xbc, 0x97, 0x9f, 0x88, 0x48, 0x8e, 0xb1, 0x3e, 0x3, 0xc9, 0x71, 0xf4, 0x62, 0xe4, 0x8f, 0xce, 0xfc, 0x6a, 0x1e, 0x1b, 0xcd, 0x1d, 0x1e, 0xc0, 0x10, 0x6, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xfa, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0x92, 0x5f, 0x4a, 0xc4, 0x30, 0x10, 0x87, 0xbf, 0xb1, 0xb9, 0xc2, 0x16, 0x7c, 0x6b, 0xc1, 0xa2, 0x85, 0x7a, 0x4, 0x2d, 0xfe, 0x39, 0xc4, 0x9e, 0x70, 0x4f, 0x61, 0xc5, 0x3d, 0x83, 0x5, 0x95, 0x4, 0xd2, 0x37, 0x5, 0x8f, 0x90, 0x94, 0xf1, 0xc5, 0x4a, 0x76, 0xcd, 0x22, 0xf8, 0xa2, 0xf3, 0x38, 0xc3, 0xef, 0x9b, 0xe4, 0x4b, 0xe0, 0x5f, 0x95, 0xf7, 0x7e, 0xed, 0x9c, 0x2b, 0xf, 0xcd, 0x9d, 0x73, 0xa5, 0xf7, 0x7e, 0x9d, 0xf6, 0x8e, 0xd2, 0xb0, 0x88, 0x6c, 0x8c, 0x31, 0x43, 0xe, 0xe2, 0x9c, 0x2b, 0x8d, 0x31, 0x83, 0x88, 0x6c, 0x52, 0xc8, 0x17, 0x20, 0xc6, 0x38, 0xa8, 0xea, 0x8, 0x74, 0xc6, 0x98, 0xed, 0x34, 0x4d, 0xc7, 0xcb, 0xcc, 0x5a, 0xbb, 0x2a, 0x8a, 0xe2, 0xe, 0xe8, 0x80, 0x17, 0xe0, 0x61, 0x99, 0x49, 0xba, 0xc5, 0x5a, 0xbb, 0xfa, 0xdc, 0x72, 0xe, 0x3c, 0x3, 0xd7, 0x21, 0x84, 0x98, 0xf6, 0x54, 0xf5, 0xaa, 0xae, 0xeb, 0xb7, 0x2c, 0x60, 0x1f, 0x22, 0x22, 0x56, 0x55, 0x23, 0xd0, 0xe6, 0xc2, 0x59, 0x40, 0x2, 0xd9, 0x8a, 0x48, 0xbb, 0x28, 0x50, 0xd5, 0x8b, 0xfd, 0xf0, 0x8e, 0x83, 0x9f, 0x4a, 0x44, 0xb2, 0xcb, 0xbe, 0x1, 0x92, 0x2b, 0xb4, 0xaa, 0x6a, 0x81, 0x27, 0xe0, 0x4, 0xb8, 0x4f, 0xc5, 0x66, 0x1, 0x19, 0x89, 0x97, 0x21, 0x84, 0x5e, 0x55, 0x1f, 0x81, 0xb3, 0x1c, 0x44, 0xe, 0x85, 0x53, 0x61, 0xb9, 0xd7, 0xa9, 0xaa, 0xea, 0x75, 0xe7, 0x4, 0xc6, 0x98, 0x1b, 0x11, 0xe9, 0x80, 0x31, 0xc6, 0xd8, 0xa7, 0xc2, 0x9a, 0xa6, 0x79, 0x9f, 0xe7, 0xf9, 0x16, 0x18, 0x81, 0x53, 0x55, 0xed, 0xb3, 0xa2, 0x7e, 0xf3, 0x95, 0xff, 0xbe, 0x3e, 0x0, 0xbd, 0x2c, 0x93, 0xec, 0xb, 0xe5, 0x4f, 0xb1, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_container_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x1, 0x0, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0x31, 0x4a, 0x43, 0x51, 0x10, 0x45, 0xcf, 0x7d, 0xef, 0x83, 0x2b, 0x50, 0x88, 0x8d, 0x9d, 0xbd, 0xa9, 0x52, 0x44, 0xbb, 0x8f, 0x62, 0xe1, 0x16, 0xcc, 0x22, 0x5c, 0x40, 0x96, 0xa2, 0xd9, 0x82, 0x4, 0x94, 0xdf, 0x19, 0x1b, 0x9b, 0x8f, 0xb, 0xb0, 0x10, 0x91, 0x8, 0xba, 0x84, 0xbc, 0xf7, 0xae, 0x8d, 0x86, 0x20, 0x3f, 0x28, 0xa4, 0xf5, 0xc2, 0xc0, 0x14, 0x33, 0x67, 0xee, 0xc, 0xc, 0x6c, 0x28, 0xad, 0xe6, 0xfd, 0xe1, 0xf1, 0x48, 0x52, 0x6d, 0xd8, 0x5e, 0x53, 0xfc, 0x61, 0xbb, 0x69, 0xef, 0x6f, 0x2f, 0x1, 0xaf, 0x0, 0xc6, 0xe1, 0xe0, 0xe8, 0xe1, 0x5a, 0xf6, 0xa9, 0xa4, 0x84, 0x54, 0x75, 0x8e, 0xb3, 0x93, 0xed, 0xa, 0x31, 0x6d, 0xef, 0x6, 0x67, 0x30, 0x2e, 0x11, 0xa0, 0x3f, 0xdc, 0x1a, 0x9, 0x2e, 0x62, 0xac, 0x8, 0xb1, 0xa, 0x21, 0x4, 0xba, 0x23, 0x6, 0x4, 0x2e, 0xde, 0xef, 0xed, 0xbd, 0x3e, 0xbf, 0xbd, 0x3c, 0x3d, 0x6, 0x0, 0x49, 0xb5, 0xa4, 0xa4, 0x10, 0x7e, 0xdd, 0x39, 0x84, 0x88, 0xa4, 0x6c, 0xab, 0x6, 0x8, 0x0, 0x5, 0x7a, 0x6b, 0x6d, 0x77, 0x1e, 0x43, 0x11, 0x79, 0x77, 0x9, 0xd8, 0x44, 0xff, 0x80, 0x6f, 0x80, 0x35, 0xc7, 0x4e, 0x7f, 0xee, 0xb2, 0x13, 0xd6, 0x7c, 0x9, 0x90, 0xdc, 0xd8, 0xae, 0x4a, 0xc9, 0xbf, 0xf6, 0x96, 0x92, 0xb1, 0x5d, 0x49, 0x6e, 0x96, 0x80, 0x76, 0x36, 0x98, 0x20, 0xa6, 0x25, 0x67, 0x72, 0x5a, 0xa4, 0x9c, 0x13, 0x9d, 0x91, 0x16, 0xa9, 0xe4, 0xc, 0x62, 0xda, 0xce, 0x6, 0x13, 0xf8, 0xf9, 0x4c, 0x87, 0x27, 0xe7, 0xb6, 0x6a, 0xc9, 0x3b, 0xdd, 0xce, 0xf5, 0x2e, 0xb9, 0x69, 0x67, 0x37, 0x57, 0x7c, 0x3d, 0xd3, 0xc6, 0xfa, 0x4, 0xa9, 0xb7, 0x78, 0x10, 0x23, 0xd5, 0x4b, 0x13, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x8a, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x3a, 0x44, 0x56, 0x53, 0x61, 0x56, 0x52, 0x60, 0x47, 0x44, 0x52, 0x33, 0x31, 0x39, 0x47, 0x44, 0x50, 0x47, 0x44, 0x51, 0x52, 0x50, 0x5d, 0x51, 0x4f, 0x5d, 0x46, 0x42, 0x4e, 0x42, 0x3e, 0x4a, 0x41, 0x3e, 0x49, 0x51, 0x4e, 0x5b, 0x40, 0x3e, 0x48, 0x4f, 0x4c, 0x59, 0x3f, 0x3d, 0x47, 0x4e, 0x4a, 0x58, 0x3e, 0x3b, 0x46, 0x4b, 0x49, 0x55, 0x3c, 0x3a, 0x44, 0x4a, 0x47, 0x54, 0x3b, 0x39, 0x43, 0x49, 0x46, 0x53, 0x3a, 0x38, 0x42, 0x47, 0x45, 0x50, 0x39, 0x37, 0x40, 0x47, 0x43, 0x50, 0x38, 0x35, 0x3f, 0x36, 0x34, 0x3e, 0x44, 0x42, 0x4d, 0x44, 0x41, 0x4c, 0xff, 0xff, 0xff, 0xe5, 0x37, 0x10, 0x78, 0x0, 0x0, 0x0, 0x15, 0x74, 0x52, 0x4e, 0x53, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x77, 0xef, 0xef, 0xef, 0x77, 0xef, 0xed, 0xe8, 0xff, 0x76, 0xed, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x2d, 0xcd, 0xda, 0x41, 0x3d, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x93, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x65, 0xcf, 0x47, 0x12, 0x82, 0x40, 0x10, 0x5, 0xd0, 0x9e, 0xc8, 0x44, 0x92, 0x22, 0x41, 0x54, 0x44, 0x40, 0x14, 0xef, 0x7f, 0x3e, 0x7, 0x8a, 0xea, 0x85, 0xbe, 0xe5, 0xaf, 0xea, 0xf0, 0x1, 0x8, 0x65, 0x5c, 0xc8, 0x40, 0x70, 0x46, 0x9, 0x0, 0x89, 0x94, 0x36, 0xd6, 0x79, 0xef, 0xac, 0xd1, 0x2a, 0x22, 0x40, 0x55, 0x9c, 0x14, 0xa7, 0x4d, 0x91, 0xc4, 0x8a, 0x2, 0xd3, 0x69, 0x59, 0xd5, 0x9b, 0xaa, 0x4c, 0x35, 0x3, 0x6e, 0x9a, 0xfa, 0xbc, 0xab, 0x1b, 0xc3, 0x41, 0xd8, 0xf6, 0x82, 0x5a, 0x2b, 0x40, 0xba, 0xeb, 0xd, 0x5d, 0x9d, 0x4, 0xe9, 0xbb, 0x3b, 0xea, 0xfc, 0x1a, 0xf4, 0xf, 0xd4, 0xaf, 0x81, 0x1b, 0x46, 0x34, 0x84, 0x11, 0x61, 0xa7, 0x27, 0x9a, 0xc2, 0x52, 0x6e, 0xe6, 0x17, 0x9a, 0xc3, 0x59, 0xa6, 0xb3, 0xf1, 0xbd, 0x1b, 0xb3, 0xf0, 0x18, 0x55, 0xf9, 0x61, 0xf9, 0x6c, 0x96, 0x63, 0x1e, 0x5e, 0xff, 0x2b, 0xf7, 0x5b, 0xff, 0xb, 0x69, 0x5a, 0x14, 0xfa, 0x84, 0xf6, 0xc2, 0x8, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_current_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xb5, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xcf, 0x21, 0x6e, 0x2, 0x61, 0x10, 0xc5, 0xf1, 0xff, 0x7b, 0x1f, 0x88, 0x1e, 0x0, 0x1, 0xa2, 0x8e, 0x3, 0xac, 0x22, 0x4d, 0x36, 0xa8, 0x35, 0x88, 0xde, 0x81, 0x9e, 0x81, 0xb, 0xec, 0x55, 0xb8, 0x3, 0xc1, 0xd4, 0x11, 0xc, 0x6, 0xb8, 0x0, 0x82, 0x56, 0x20, 0x7a, 0x85, 0xe5, 0x1b, 0x5c, 0xa9, 0x58, 0x52, 0x1, 0x92, 0x97, 0x4c, 0x32, 0x62, 0xf2, 0x9b, 0x19, 0xb8, 0x33, 0xba, 0xb6, 0xb5, 0x8b, 0x72, 0x33, 0xb5, 0xa2, 0xa, 0xe8, 0xdd, 0x18, 0xfe, 0x89, 0x88, 0xcf, 0xed, 0xfa, 0x6d, 0xe, 0x75, 0xfe, 0x3, 0xd4, 0x2e, 0xc6, 0x9b, 0x85, 0x22, 0x26, 0x12, 0xd, 0x72, 0xa7, 0x75, 0x5d, 0xe4, 0x26, 0x82, 0x4e, 0x48, 0xcb, 0xdd, 0x6a, 0xf4, 0xe, 0x75, 0x4e, 0x0, 0x45, 0xf9, 0xf2, 0x21, 0x62, 0xe6, 0x94, 0x48, 0xa9, 0x6b, 0xdb, 0xb4, 0x57, 0xb2, 0x24, 0x22, 0xe7, 0x61, 0xff, 0xf5, 0xfb, 0x78, 0xfa, 0x3a, 0xec, 0xd, 0x60, 0x45, 0x25, 0xa9, 0xb1, 0xd3, 0xff, 0x3f, 0xdb, 0x48, 0x3a, 0x7, 0xae, 0x0, 0xc, 0x90, 0xa1, 0x8f, 0xd4, 0x7e, 0x76, 0xab, 0xa2, 0x84, 0x62, 0xf0, 0xb, 0xdc, 0x93, 0x27, 0xf0, 0x4, 0x1e, 0x2, 0x5c, 0x0, 0x20, 0x84, 0x2f, 0x10, 0x74, 0xfb, 0x66, 0x2f, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x9c, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x3d, 0x48, 0x5b, 0x58, 0x66, 0x5b, 0x57, 0x65, 0x57, 0x54, 0x62, 0x55, 0x53, 0x62, 0x4a, 0x46, 0x52, 0x46, 0x41, 0x4e, 0x45, 0x41, 0x4d, 0x55, 0x52, 0x60, 0x44, 0x41, 0x4c, 0x53, 0x50, 0x5e, 0x43, 0x40, 0x4b, 0x52, 0x4e, 0x5d, 0x41, 0x3e, 0x4a, 0x4f, 0x4d, 0x5a, 0x3f, 0x3d, 0x48, 0x4e, 0x4b, 0x59, 0x3e, 0x3c, 0x47, 0x4d, 0x4a, 0x58, 0x3d, 0x3b, 0x46, 0x4b, 0x49, 0x54, 0x3c, 0x3a, 0x44, 0x4b, 0x47, 0x54, 0x3b, 0x39, 0x43, 0x3b, 0x39, 0x42, 0x3b, 0x38, 0x43, 0x3b, 0x38, 0x42, 0x3a, 0x37, 0x41, 0x39, 0x37, 0x41, 0x3a, 0x38, 0x41, 0x39, 0x36, 0x3f, 0x38, 0x36, 0x3f, 0x39, 0x36, 0x40, 0x38, 0x36, 0x40, 0x37, 0x35, 0x3e, 0x37, 0x34, 0x3e, 0x36, 0x35, 0x3d, 0x35, 0x32, 0x3b, 0x59, 0xdd, 0xd3, 0xff, 0x0, 0x0, 0x0, 0x11, 0x74, 0x52, 0x4e, 0x53, 0x4, 0xa, 0x11, 0x19, 0x1f, 0x22, 0x24, 0x15, 0x25, 0x34, 0x3f, 0x46, 0x47, 0x48, 0x77, 0xef, 0xef, 0xa3, 0x31, 0x6b, 0xc2, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x33, 0x37, 0xd5, 0x7c, 0x5e, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xa2, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x45, 0xcd, 0xd9, 0x12, 0x82, 0x30, 0xc, 0x40, 0xd1, 0x0, 0x2d, 0x4b, 0x5b, 0x36, 0x59, 0x44, 0x44, 0x44, 0xa4, 0x68, 0x59, 0x54, 0xfc, 0xff, 0x8f, 0x33, 0x30, 0x4c, 0x3d, 0x93, 0xa7, 0x3b, 0x93, 0x4, 0xc0, 0x30, 0x2d, 0x42, 0x6d, 0x44, 0x89, 0x65, 0x1a, 0x0, 0x86, 0xe3, 0x7a, 0x8c, 0xb, 0xdf, 0x17, 0x9c, 0x79, 0xae, 0x63, 0x80, 0xe9, 0x6, 0x61, 0x7c, 0xd8, 0xc4, 0x61, 0xe0, 0x9a, 0x60, 0x79, 0x51, 0x92, 0x66, 0x9b, 0x34, 0x89, 0x3c, 0xb, 0x8, 0xcb, 0xb3, 0xe3, 0x2e, 0xcb, 0x19, 0x1, 0xca, 0x8b, 0x93, 0x56, 0x70, 0xa, 0xb6, 0x28, 0xcf, 0x5a, 0x29, 0x6c, 0xb0, 0xfd, 0xea, 0xa2, 0x55, 0xfe, 0x1a, 0xea, 0xab, 0x56, 0xaf, 0x41, 0x34, 0x37, 0xad, 0xc1, 0x15, 0xca, 0xdb, 0xbb, 0xd6, 0xe2, 0x51, 0xc2, 0xba, 0x7f, 0xe8, 0xf0, 0x2d, 0x6, 0x29, 0xfb, 0x5e, 0xca, 0xc7, 0x53, 0xca, 0x3d, 0xa8, 0x61, 0x50, 0xc3, 0xa8, 0xc6, 0x41, 0xed, 0x61, 0x9a, 0xa6, 0x19, 0xbd, 0xe6, 0xf7, 0x1e, 0x3e, 0xcb, 0x82, 0x83, 0xbe, 0x18, 0x7e, 0xa1, 0xe5, 0x17, 0x1f, 0xcf, 0x5d, 0x82, 0x6b, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_menu_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x47, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x64, 0xc0, 0x1, 0xfe, 0xff, 0xff, 0x2f, 0xcb, 0xc0, 0xc0, 0x60, 0x3, 0xe5, 0x1e, 0x61, 0x64, 0x64, 0x7c, 0x8c, 0x4d, 0x1d, 0x13, 0x2e, 0x3, 0xa0, 0x9a, 0xb9, 0xa1, 0xd8, 0x6, 0x97, 0x22, 0x7c, 0x6, 0x10, 0x5, 0xf0, 0x19, 0x70, 0x84, 0x81, 0x81, 0xe1, 0x2b, 0x14, 0x1f, 0xa6, 0xd4, 0x22, 0xda, 0x1, 0x46, 0x5c, 0x12, 0xa3, 0xb1, 0x40, 0x47, 0x30, 0x1a, 0xb, 0xc, 0xc, 0x0, 0xfd, 0x7d, 0x1b, 0x13, 0xc4, 0xa1, 0x25, 0x31, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x6f, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x80, 0x81, 0x81, 0x11, 0x5d, 0xe0, 0xc1, 0x83, 0x7, 0xff, 0xf1, 0x69, 0x50, 0x50, 0x50, 0x40, 0xd1, 0xc3, 0x44, 0xa9, 0xb, 0xa8, 0x6f, 0x0, 0x23, 0x23, 0x63, 0x3c, 0x3, 0x3, 0xc3, 0x57, 0x2c, 0x6a, 0xbf, 0x33, 0x32, 0x32, 0xa6, 0x63, 0xa8, 0xc7, 0x66, 0xea, 0xfd, 0xfb, 0xf7, 0x35, 0x18, 0x18, 0x18, 0x56, 0x31, 0x32, 0x32, 0xea, 0x42, 0x85, 0x6e, 0x30, 0x33, 0x33, 0x87, 0xc9, 0xca, 0xca, 0x5e, 0x26, 0xca, 0x0, 0x6, 0x6, 0x6, 0x86, 0x17, 0x2f, 0x5e, 0x70, 0xff, 0xfc, 0xf9, 0x73, 0xa, 0x3, 0x3, 0x3, 0x3, 0x3b, 0x3b, 0x7b, 0x8e, 0x84, 0x84, 0x4, 0x36, 0x57, 0xd, 0x2, 0x0, 0x0, 0x67, 0xf2, 0x14, 0xc2, 0xc2, 0xbe, 0xf5, 0xb5, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tab_menu_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x47, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x64, 0xc0, 0x1, 0xfe, 0xff, 0xff, 0x2f, 0xcb, 0xc0, 0xc0, 0x60, 0x3, 0xe5, 0x1e, 0x61, 0x64, 0x64, 0x7c, 0x8c, 0x4d, 0x1d, 0x13, 0x2e, 0x3, 0xa0, 0x9a, 0xb9, 0xa1, 0xd8, 0x6, 0x97, 0x22, 0x7c, 0x6, 0x10, 0x5, 0xf0, 0x19, 0x70, 0x84, 0x81, 0x81, 0xe1, 0x2b, 0x14, 0x1f, 0xa6, 0xd4, 0x22, 0xda, 0x1, 0x46, 0x5c, 0x12, 0xa3, 0xb1, 0x40, 0x47, 0x30, 0x1a, 0xb, 0xc, 0xc, 0x0, 0xfd, 0x7d, 0x1b, 0x13, 0xc4, 0xa1, 0x25, 0x31, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x6f, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x60, 0x18, 0x5, 0xa3, 0x80, 0x81, 0x81, 0x11, 0x5d, 0xe0, 0xc1, 0x83, 0x7, 0xff, 0xf1, 0x69, 0x50, 0x50, 0x50, 0x40, 0xd1, 0xc3, 0x44, 0xa9, 0xb, 0xa8, 0x6f, 0x0, 0x23, 0x23, 0x63, 0x3c, 0x3, 0x3, 0xc3, 0x57, 0x2c, 0x6a, 0xbf, 0x33, 0x32, 0x32, 0xa6, 0x63, 0xa8, 0xc7, 0x66, 0xea, 0xfd, 0xfb, 0xf7, 0x35, 0x18, 0x18, 0x18, 0x56, 0x31, 0x32, 0x32, 0xea, 0x42, 0x85, 0x6e, 0x30, 0x33, 0x33, 0x87, 0xc9, 0xca, 0xca, 0x5e, 0x26, 0xca, 0x0, 0x6, 0x6, 0x6, 0x86, 0x17, 0x2f, 0x5e, 0x70, 0xff, 0xfc, 0xf9, 0x73, 0xa, 0x3, 0x3, 0x3, 0x3, 0x3b, 0x3b, 0x7b, 0x8e, 0x84, 0x84, 0x4, 0x36, 0x57, 0xd, 0x2, 0x0, 0x0, 0x67, 0xf2, 0x14, 0xc2, 0xc2, 0xbe, 0xf5, 0xb5, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char toggle_off_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x20, 0x8, 0x6, 0x0, 0x0, 0x0, 0xa2, 0x9d, 0x7e, 0x84, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x2, 0x73, 0x49, 0x44, 0x41, 0x54, 0x68, 0x81, 0xed, 0x98, 0x4d, 0x4b, 0x1b, 0x51, 0x14, 0x86, 0x1f, 0x33, 0x38, 0xa9, 0x2d, 0xc6, 0x14, 0x46, 0xd2, 0x66, 0xba, 0x2a, 0xae, 0xba, 0xae, 0xa5, 0x3b, 0xd7, 0x11, 0xa4, 0x24, 0x6b, 0x21, 0xbf, 0xa0, 0x83, 0xc5, 0x75, 0x77, 0x5d, 0xdb, 0x45, 0x83, 0x4b, 0x5, 0x51, 0x68, 0x83, 0x20, 0x45, 0xa6, 0x4b, 0x77, 0xa5, 0x98, 0xfe, 0x6, 0x5d, 0x94, 0x99, 0x90, 0x81, 0x91, 0xaa, 0x83, 0xa6, 0xc9, 0x94, 0x4c, 0x17, 0x93, 0x94, 0x50, 0x6d, 0x31, 0xf7, 0x8c, 0x6d, 0xc1, 0x79, 0xe0, 0x2e, 0xcf, 0x79, 0xcf, 0x7d, 0xef, 0x7, 0xe7, 0x5e, 0x48, 0x49, 0x49, 0x49, 0x49, 0xb9, 0xb9, 0x8c, 0x5d, 0x43, 0xbe, 0x7c, 0x7f, 0x4c, 0x0, 0x3a, 0x90, 0x11, 0xe6, 0xec, 0x1, 0x5d, 0xa0, 0xd, 0x1c, 0xf7, 0x47, 0x24, 0xcc, 0xf9, 0x93, 0x24, 0xd, 0xc8, 0x3, 0x26, 0x90, 0x4d, 0x30, 0xe7, 0x65, 0x74, 0x0, 0x97, 0xd8, 0x8, 0x31, 0x49, 0x18, 0x30, 0x6, 0x14, 0x81, 0x2, 0x80, 0x65, 0x59, 0x33, 0xa5, 0x52, 0xa9, 0x6c, 0x18, 0xc6, 0xac, 0xae, 0xeb, 0x45, 0x80, 0x6e, 0xb7, 0xdb, 0xf4, 0x7d, 0xbf, 0x61, 0xdb, 0xf6, 0x4e, 0xad, 0x56, 0x3b, 0x48, 0x40, 0x13, 0xc0, 0x23, 0x36, 0x42, 0x44, 0x12, 0x6, 0x98, 0x40, 0xc1, 0x34, 0x4d, 0x7d, 0x6d, 0x6d, 0x6d, 0xb9, 0x58, 0x2c, 0x56, 0xf8, 0xfd, 0xb6, 0xef, 0xb9, 0xae, 0xbb, 0x5d, 0xad, 0x56, 0x57, 0x3c, 0xcf, 0xb, 0x13, 0xd0, 0x16, 0x9b, 0x20, 0x35, 0x20, 0xf, 0x3c, 0x34, 0x4d, 0x53, 0xaf, 0xd7, 0xeb, 0x6f, 0x72, 0xb9, 0xdc, 0xe3, 0xab, 0x4, 0x9d, 0x9e, 0x9e, 0x7e, 0xae, 0x54, 0x2a, 0xcf, 0x13, 0x32, 0xe1, 0x10, 0xc1, 0x71, 0x90, 0x5c, 0x50, 0x63, 0xc4, 0xab, 0xcf, 0xfa, 0xfa, 0xfa, 0xf2, 0x55, 0x27, 0xf, 0x90, 0xcb, 0xe5, 0x66, 0x37, 0x36, 0x36, 0x5e, 0x8, 0xb4, 0x87, 0x79, 0x80, 0x60, 0x21, 0x35, 0x81, 0xf0, 0x5d, 0xc0, 0xb0, 0x2c, 0x6b, 0x66, 0x6e, 0x6e, 0xee, 0xe5, 0xa8, 0x45, 0x4c, 0x4e, 0x4e, 0x3e, 0xd2, 0x34, 0x6d, 0xaf, 0xd1, 0x68, 0x7c, 0x15, 0xd4, 0x0, 0xf1, 0x1c, 0xbe, 0xf5, 0xc7, 0xc8, 0x48, 0x76, 0x40, 0x1e, 0xa0, 0x54, 0x2a, 0x95, 0x15, 0xf3, 0x64, 0xe6, 0xe7, 0xe7, 0x9f, 0x9, 0xf4, 0x87, 0x99, 0x52, 0xd, 0x94, 0x18, 0x70, 0x1b, 0xc0, 0x30, 0x8c, 0x27, 0xaa, 0x9, 0xa6, 0xa7, 0xa7, 0x9f, 0xa, 0xf4, 0x2f, 0xd4, 0xa2, 0x82, 0xc4, 0x80, 0x71, 0x0, 0x5d, 0xd7, 0xef, 0x29, 0x27, 0x18, 0x1f, 0xbf, 0x2f, 0xd0, 0x1f, 0x46, 0x57, 0xd, 0x94, 0x76, 0x69, 0x44, 0x91, 0xa8, 0x29, 0x4b, 0xaa, 0xa3, 0x53, 0xce, 0x23, 0x31, 0x20, 0x4, 0x8, 0xc3, 0xb0, 0xa5, 0x9c, 0x40, 0x10, 0x7b, 0x59, 0x2d, 0x2a, 0x48, 0xc, 0x38, 0x7, 0xf0, 0x7d, 0x7f, 0x5f, 0x35, 0x81, 0xef, 0xfb, 0x9f, 0x4, 0xfa, 0x17, 0x6a, 0x51, 0x41, 0x62, 0xc0, 0x31, 0x80, 0x6d, 0xdb, 0x3b, 0xc4, 0xf, 0x96, 0x51, 0xe9, 0xed, 0xee, 0xee, 0xbe, 0x17, 0xe8, 0x5f, 0xa8, 0x45, 0x5, 0xa9, 0x1, 0x9d, 0x5a, 0xad, 0x76, 0xe0, 0xba, 0xee, 0xf6, 0xa8, 0xc1, 0x8e, 0xe3, 0xd4, 0x57, 0x57, 0x57, 0xf, 0x5, 0xfa, 0x3, 0x3a, 0xc0, 0x89, 0x6a, 0xb0, 0xc4, 0x80, 0x88, 0x7e, 0x1f, 0x5e, 0xad, 0x56, 0x57, 0x82, 0x20, 0x68, 0x5c, 0x35, 0x30, 0x8, 0x82, 0xfd, 0xc5, 0xc5, 0xc5, 0xd7, 0x2, 0xed, 0x61, 0x1c, 0xfe, 0xd1, 0x25, 0x8, 0xf1, 0x2e, 0xf0, 0x3c, 0xcf, 0xb, 0xcb, 0xe5, 0xb2, 0xd5, 0x6c, 0x36, 0xdf, 0xf1, 0xe7, 0xe3, 0xd0, 0x73, 0x1c, 0xe7, 0xed, 0xc2, 0xc2, 0x82, 0x75, 0x74, 0x74, 0xf4, 0x5d, 0xa8, 0xd, 0xf1, 0x63, 0x48, 0x79, 0xf5, 0x41, 0xd6, 0xa, 0xf, 0x8, 0x80, 0xcc, 0xd9, 0xd9, 0xd9, 0xc4, 0xe6, 0xe6, 0xe6, 0x47, 0x4d, 0xd3, 0xf6, 0xa, 0x85, 0x42, 0x37, 0x9b, 0xcd, 0xde, 0xc9, 0x64, 0x32, 0xb7, 0xa2, 0x28, 0xa, 0x3b, 0x9d, 0xce, 0x97, 0x56, 0xab, 0xf5, 0x61, 0x6b, 0x6b, 0xeb, 0xd5, 0xd2, 0xd2, 0x92, 0xdd, 0x6e, 0xb7, 0x55, 0xee, 0x8c, 0x5f, 0xf9, 0x6f, 0x9e, 0xc3, 0x3, 0xfe, 0xe6, 0x87, 0x88, 0x83, 0x70, 0xe5, 0x7, 0x5c, 0xd7, 0x97, 0xd8, 0x14, 0x71, 0x7b, 0x9a, 0xe4, 0x97, 0xd8, 0x39, 0xf1, 0x91, 0x3b, 0x21, 0xc1, 0x2f, 0xb1, 0x94, 0x94, 0x94, 0x94, 0x94, 0x9b, 0xcc, 0xf, 0x49, 0x2b, 0xc7, 0x9a, 0xce, 0xd2, 0xbd, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x20, 0x8, 0x3, 0x0, 0x0, 0x0, 0x95, 0x43, 0x8e, 0xb6, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x7a, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x14, 0x17, 0x20, 0x20, 0x25, 0x24, 0x24, 0x28, 0x24, 0x24, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x13, 0x22, 0x22, 0x27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x19, 0x1c, 0x1a, 0x1a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x11, 0x14, 0x12, 0x12, 0x14, 0x23, 0x23, 0x27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x18, 0x20, 0x20, 0x25, 0x20, 0x20, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0x24, 0x28, 0x0, 0x0, 0x0, 0x24, 0x24, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0x24, 0x27, 0x15, 0x15, 0x18, 0x23, 0x23, 0x28, 0x12, 0x12, 0x14, 0x0, 0x0, 0x0, 0x1a, 0x1a, 0x1e, 0x0, 0x0, 0x0, 0x11, 0x11, 0x13, 0x22, 0x22, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0x24, 0x29, 0x25, 0x25, 0x2a, 0x24, 0x24, 0x28, 0x25, 0x25, 0x28, 0x25, 0x25, 0x29, 0x25, 0x25, 0x27, 0x2d, 0x26, 0x2c, 0x4d, 0x2b, 0x37, 0x63, 0x2f, 0x3f, 0x6e, 0x31, 0x43, 0x71, 0x32, 0x44, 0x6c, 0x31, 0x42, 0x51, 0x2c, 0x39, 0x47, 0x2a, 0x35, 0x66, 0x30, 0x40, 0x4d, 0x2b, 0x38, 0x32, 0x26, 0x2e, 0x26, 0x25, 0x2a, 0x2e, 0x25, 0x2c, 0x3c, 0x28, 0x31, 0x52, 0x2c, 0x39, 0x68, 0x30, 0x40, 0x27, 0x25, 0x2a, 0x50, 0x2c, 0x38, 0x5f, 0x2e, 0x3d, 0x35, 0x27, 0x2f, 0x38, 0x27, 0x30, 0x5e, 0x2e, 0x3d, 0x43, 0x2a, 0x34, 0x5f, 0x2f, 0x3e, 0x2f, 0x25, 0x2c, 0x44, 0x2a, 0x34, 0x2b, 0x26, 0x2c, 0x64, 0x2f, 0x3f, 0x36, 0x27, 0x30, 0x37, 0x27, 0x30, 0x66, 0x2f, 0x40, 0x2c, 0x26, 0x2c, 0x46, 0x2a, 0x35, 0x53, 0x2c, 0x39, 0x40, 0x40, 0x44, 0xad, 0xad, 0xaf, 0xff, 0xff, 0xff, 0xf2, 0xf2, 0xf2, 0x77, 0x77, 0x7a, 0x5b, 0x5b, 0x5f, 0x32, 0x32, 0x37, 0x5d, 0x2e, 0x3d, 0x3e, 0x29, 0x32, 0xc9, 0xc9, 0xca, 0xbb, 0xbb, 0xbd, 0x69, 0x69, 0x6c, 0x69, 0x30, 0x41, 0x2f, 0x26, 0x2d, 0x84, 0x84, 0x87, 0xd6, 0xd6, 0xd7, 0x92, 0x92, 0x94, 0xa0, 0xa0, 0xa2, 0x4e, 0x4e, 0x52, 0x48, 0x2b, 0x36, 0x2c, 0x26, 0x2b, 0x97, 0xb0, 0x86, 0xb4, 0x0, 0x0, 0x0, 0x41, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x1, 0x2, 0x3, 0x4, 0x9, 0xe, 0x13, 0x16, 0x18, 0x19, 0xa, 0x26, 0x36, 0x44, 0x4d, 0x52, 0x54, 0x55, 0x6, 0x12, 0x27, 0x43, 0x98, 0xe5, 0xfa, 0xfe, 0x8, 0x17, 0x35, 0x86, 0xf3, 0x7, 0x3a, 0xb4, 0xb9, 0xb, 0x28, 0x8a, 0x8b, 0xf6, 0x45, 0x5, 0x9b, 0xe6, 0xe6, 0x37, 0xf, 0xfb, 0x4c, 0xfe, 0x4e, 0x4f, 0x50, 0xfb, 0x9c, 0xf6, 0x8c, 0x3b, 0xbb, 0x3c, 0x87, 0xf3, 0x53, 0x14, 0xe5, 0x7c, 0xf3, 0x66, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x6b, 0x52, 0x65, 0xa5, 0x98, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x2, 0x47, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0x55, 0xfb, 0x5b, 0x93, 0x50, 0x18, 0x96, 0x3, 0xc, 0x48, 0x60, 0xde, 0x70, 0x9b, 0x43, 0x37, 0x75, 0xa6, 0x9b, 0xb5, 0xad, 0x56, 0x59, 0x99, 0xe9, 0xc6, 0x39, 0xb3, 0x56, 0x59, 0xcd, 0x4c, 0xbb, 0xd9, 0x3d, 0xdb, 0xd, 0x74, 0xa6, 0xa3, 0xdb, 0xff, 0x1e, 0x70, 0x68, 0x6e, 0xc0, 0xe0, 0xe9, 0xe9, 0x97, 0x7a, 0x79, 0x9e, 0x3, 0xf, 0x7c, 0xdf, 0xcb, 0x7b, 0xbe, 0xf3, 0x5d, 0x86, 0x86, 0xfe, 0x21, 0x10, 0x80, 0x24, 0xa9, 0x40, 0x90, 0x24, 0x20, 0x3c, 0xdd, 0x1, 0x45, 0x87, 0x18, 0x96, 0x3b, 0x17, 0x0, 0x8e, 0x65, 0x42, 0x34, 0x5, 0xdc, 0x7f, 0xa7, 0x86, 0x59, 0x5e, 0x10, 0xc3, 0x23, 0xa3, 0x63, 0xbe, 0x18, 0x1d, 0x9, 0x8b, 0x2, 0xcf, 0xe, 0x53, 0xe, 0x15, 0x60, 0x7c, 0x42, 0x9a, 0x8c, 0x44, 0x63, 0x53, 0xc5, 0x52, 0x0, 0x8a, 0x53, 0xb1, 0x68, 0x64, 0x52, 0x9a, 0x18, 0xef, 0x13, 0x1, 0xe2, 0xf2, 0xf4, 0x4c, 0x42, 0x81, 0x10, 0x21, 0x84, 0xed, 0x90, 0x9, 0x88, 0xca, 0xc8, 0x93, 0x24, 0x31, 0x33, 0x2d, 0xc7, 0x7b, 0x18, 0x88, 0x24, 0x37, 0x3b, 0xa7, 0xc0, 0xcd, 0x3b, 0x77, 0x2b, 0xf7, 0x30, 0xee, 0x3f, 0xd8, 0xb4, 0x58, 0xca, 0x70, 0x80, 0x8e, 0xb9, 0x59, 0x2e, 0x49, 0x9c, 0xed, 0x9f, 0x11, 0xe6, 0x15, 0xb4, 0xf5, 0xf0, 0xd1, 0xe3, 0xaa, 0xf5, 0xb9, 0xba, 0xfd, 0x64, 0xe7, 0xe9, 0xd6, 0xae, 0xa5, 0x64, 0xd0, 0x4e, 0xe6, 0x5, 0xa6, 0x1b, 0x7, 0x90, 0x5a, 0x38, 0xaf, 0xa0, 0xbd, 0x67, 0xcf, 0x7b, 0x2d, 0x5e, 0xbc, 0xdc, 0xdb, 0xf5, 0x8d, 0xc5, 0xe2, 0x42, 0xea, 0xf7, 0x26, 0x28, 0x59, 0x5c, 0x82, 0xaf, 0xf6, 0xb7, 0xfb, 0x2d, 0x5e, 0xef, 0xbf, 0xa9, 0xfa, 0x31, 0x2c, 0xa5, 0xe5, 0xc, 0x96, 0x40, 0xd0, 0xfc, 0x32, 0x7c, 0xfb, 0xee, 0xbd, 0xd3, 0xe2, 0xc3, 0xc7, 0x4f, 0xbe, 0xe7, 0xb1, 0xcc, 0xd3, 0x98, 0x0, 0x84, 0x84, 0xb, 0xf0, 0x60, 0xc7, 0x6d, 0xf1, 0xf9, 0xc0, 0x7e, 0xa8, 0xd5, 0x1b, 0xcd, 0x56, 0x49, 0x6d, 0x18, 0xb0, 0x16, 0xcd, 0x7a, 0x7b, 0x31, 0x9b, 0xc3, 0x7b, 0x20, 0x19, 0x31, 0x86, 0xe, 0x8f, 0xdc, 0x4, 0x47, 0x87, 0xf6, 0x43, 0xfb, 0xb8, 0xf6, 0xa5, 0x51, 0x53, 0x4d, 0x47, 0xd5, 0xf6, 0x36, 0x90, 0x4f, 0x33, 0x24, 0x26, 0x60, 0x2f, 0x5d, 0x46, 0x27, 0xa7, 0x6e, 0x82, 0xd3, 0x13, 0x5b, 0x80, 0xe9, 0x74, 0xdc, 0x51, 0x75, 0x93, 0x40, 0xef, 0x12, 0x14, 0xb, 0x2c, 0x85, 0x9, 0xe4, 0x2b, 0xa, 0xaa, 0x78, 0x4, 0xac, 0x5a, 0xc1, 0x77, 0x55, 0x37, 0x96, 0xaf, 0x75, 0xb5, 0xdd, 0x6e, 0x6b, 0xd6, 0x62, 0x7f, 0xbf, 0x2a, 0xdb, 0x4, 0x6c, 0x58, 0xf1, 0x55, 0xa0, 0x99, 0xa, 0xea, 0xdf, 0x54, 0xd3, 0x53, 0x6d, 0x7b, 0x28, 0x60, 0xc4, 0x6b, 0xd0, 0x37, 0x6, 0x7a, 0xa7, 0xa4, 0x35, 0x5b, 0x4e, 0x82, 0x6e, 0xc, 0x40, 0x28, 0x1b, 0x70, 0xa, 0x6a, 0x53, 0x6f, 0xd6, 0x4b, 0x4e, 0x82, 0xee, 0x29, 0x18, 0x79, 0xb0, 0x12, 0x90, 0x7, 0x5a, 0xe7, 0xbb, 0x11, 0xcb, 0x96, 0x66, 0x2f, 0x18, 0x2b, 0x92, 0x9d, 0x7, 0x66, 0x26, 0x5e, 0x47, 0x7f, 0x91, 0x89, 0x66, 0x2d, 0x2c, 0xfe, 0x79, 0x2d, 0xdc, 0x38, 0xab, 0x5, 0xef, 0x6a, 0xfc, 0xe1, 0xef, 0xdf, 0x5b, 0x8d, 0x66, 0x3f, 0xb8, 0xb9, 0xaa, 0xc0, 0x9f, 0xce, 0x7e, 0xe0, 0xe3, 0xbf, 0x7a, 0xab, 0xa7, 0x1f, 0x98, 0x1d, 0x89, 0x13, 0xd6, 0x6e, 0xc3, 0x32, 0xc4, 0xd, 0x9, 0xd9, 0x80, 0xc6, 0xe5, 0xe9, 0x9f, 0x58, 0x13, 0xb8, 0x78, 0x7f, 0x4f, 0x4b, 0x32, 0x92, 0x18, 0x89, 0xe6, 0x3, 0x5b, 0xa2, 0xf1, 0xf3, 0x7c, 0x34, 0x22, 0x4a, 0x4c, 0xd2, 0xd1, 0x98, 0x9, 0x2a, 0xc5, 0xf2, 0xd9, 0x74, 0x61, 0x7d, 0x2c, 0x0, 0xeb, 0x85, 0x74, 0x96, 0x67, 0x53, 0x94, 0x6b, 0x36, 0x10, 0x20, 0x43, 0xe7, 0x36, 0xe4, 0xe0, 0xb9, 0x20, 0x6f, 0xe4, 0xe8, 0x8c, 0xf7, 0x6c, 0x31, 0x26, 0x53, 0xf0, 0x60, 0x32, 0x46, 0xd3, 0x80, 0xc9, 0xf4, 0xff, 0xe2, 0x17, 0x82, 0xde, 0x40, 0xde, 0x2d, 0xc3, 0x2a, 0xca, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char toggle_on_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x20, 0x8, 0x6, 0x0, 0x0, 0x0, 0xa2, 0x9d, 0x7e, 0x84, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x2, 0x97, 0x49, 0x44, 0x41, 0x54, 0x68, 0x81, 0xed, 0x98, 0x4f, 0x48, 0x14, 0x51, 0x1c, 0xc7, 0x3f, 0xb3, 0xbb, 0xed, 0x9f, 0xdc, 0x76, 0x47, 0x9, 0xf2, 0x4f, 0x91, 0x44, 0x4, 0x2d, 0x6c, 0x8, 0x66, 0x4, 0xe1, 0xa1, 0x53, 0x97, 0x20, 0xf4, 0xe4, 0xa1, 0x43, 0x75, 0x49, 0x88, 0x88, 0xf0, 0x6a, 0xd4, 0xa1, 0x8e, 0x19, 0x25, 0x52, 0xd1, 0x45, 0x8a, 0x10, 0x43, 0x90, 0xe, 0x85, 0x78, 0x58, 0x8c, 0xfe, 0xa1, 0x41, 0x4a, 0xe1, 0x51, 0xc5, 0xb2, 0x34, 0x2, 0x1b, 0x77, 0xcd, 0x71, 0xdc, 0x75, 0xa6, 0xc3, 0x8c, 0x5b, 0x7, 0x3, 0x77, 0x7e, 0x63, 0x4, 0xce, 0x7, 0x1e, 0xec, 0x83, 0xf7, 0xfd, 0xbd, 0xdf, 0xfb, 0xce, 0xbe, 0xc7, 0xef, 0x3d, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xd9, 0xba, 0x28, 0x9b, 0x10, 0x4f, 0x75, 0x5a, 0xc, 0x8, 0x3, 0x1, 0x61, 0x4c, 0x13, 0x58, 0x1, 0x74, 0x40, 0x73, 0x9a, 0x25, 0x8c, 0x59, 0xc4, 0x4b, 0x3, 0x54, 0xa0, 0x6, 0x88, 0x78, 0x18, 0x73, 0x3d, 0xc, 0xe0, 0xb, 0xb6, 0x11, 0x62, 0xbc, 0x30, 0x40, 0x1, 0xaa, 0x81, 0x5d, 0x1e, 0xc4, 0xe2, 0xf8, 0x8d, 0x13, 0xfb, 0xd3, 0x2d, 0x75, 0x4d, 0xf1, 0xaa, 0x44, 0x43, 0x30, 0x12, 0xaa, 0x6, 0x58, 0x35, 0xa, 0x5f, 0x73, 0xb3, 0xb9, 0x91, 0xf1, 0x9e, 0xb1, 0xfe, 0x4c, 0xfb, 0xc0, 0x84, 0x33, 0xf4, 0x1b, 0xb6, 0x11, 0x22, 0xbc, 0x30, 0xa0, 0x6, 0xf, 0x16, 0x9f, 0xa8, 0xad, 0x8, 0x9f, 0x19, 0x3a, 0xdf, 0xa6, 0xee, 0x2d, 0x6f, 0xe6, 0x6f, 0xdb, 0xc6, 0xb2, 0x4c, 0x6d, 0x5a, 0xeb, 0xeb, 0x6e, 0xec, 0xea, 0xc8, 0xce, 0x64, 0xf3, 0x78, 0x60, 0x82, 0xd4, 0x0, 0x15, 0xd8, 0x27, 0x8c, 0x41, 0xa2, 0xb6, 0x22, 0xdc, 0x3a, 0x7a, 0xa9, 0x33, 0xaa, 0xc6, 0xe, 0x6f, 0x64, 0xbc, 0xae, 0xe9, 0xef, 0xee, 0xa7, 0x6f, 0x5e, 0x74, 0x4c, 0x98, 0x44, 0xb0, 0x1d, 0x24, 0x7, 0x94, 0x82, 0xfd, 0xf5, 0xc5, 0x9c, 0x7b, 0xd1, 0xda, 0xb6, 0xd1, 0xc5, 0x3, 0xc4, 0xd4, 0x58, 0xc3, 0xd9, 0x97, 0x17, 0x2e, 0x3b, 0xdd, 0xdd, 0x8, 0x3e, 0x64, 0xd0, 0xad, 0x10, 0x28, 0x7, 0x76, 0xa, 0xf4, 0x80, 0xbd, 0xe7, 0xf, 0x9c, 0x4c, 0x5d, 0xa1, 0xc4, 0x45, 0x44, 0x93, 0xd1, 0x14, 0x1, 0x25, 0x33, 0x3d, 0x34, 0x99, 0x5, 0x96, 0x9d, 0x56, 0x32, 0x92, 0x7f, 0x80, 0x2a, 0xd0, 0x16, 0x49, 0xb7, 0xd4, 0x35, 0xb9, 0xca, 0x43, 0x51, 0x2, 0x87, 0x4e, 0xd7, 0x9f, 0x72, 0x7a, 0x49, 0xb7, 0xf3, 0x4b, 0xc, 0xd8, 0x2e, 0xd0, 0x16, 0x29, 0xab, 0x4a, 0x1c, 0x71, 0xab, 0x8d, 0x57, 0xc6, 0x8f, 0x4a, 0x73, 0x91, 0x18, 0xb0, 0x4d, 0xa0, 0x2d, 0x12, 0x8a, 0x84, 0x2a, 0x5, 0xda, 0x2a, 0xe7, 0x67, 0xd8, 0x6d, 0xc, 0x69, 0x95, 0x26, 0xc7, 0x72, 0x5f, 0xd4, 0x59, 0xbf, 0x2b, 0x42, 0xd7, 0x41, 0x24, 0x6, 0xe4, 0x5, 0xda, 0x22, 0x85, 0x95, 0xd5, 0x39, 0xb7, 0xda, 0x55, 0xa3, 0xb0, 0xa6, 0x75, 0x9d, 0x8b, 0xc4, 0x80, 0x25, 0x81, 0xb6, 0xc8, 0xe2, 0x6c, 0x6e, 0xd8, 0xad, 0xf6, 0xe7, 0x5c, 0xee, 0xad, 0x34, 0x17, 0x89, 0x1, 0x9e, 0xd4, 0xe2, 0xe3, 0x3d, 0x63, 0xfd, 0x58, 0x96, 0x59, 0xb2, 0xd0, 0xb2, 0xcc, 0xf, 0x8f, 0x46, 0x9f, 0x4a, 0x73, 0x91, 0x1a, 0x60, 0x8, 0xf4, 0x0, 0x64, 0xda, 0x7, 0x26, 0xb4, 0x69, 0xad, 0xaf, 0xe4, 0xc9, 0xa7, 0xe6, 0x9f, 0xc, 0x5d, 0x1b, 0x9c, 0x74, 0x72, 0x58, 0x70, 0x3b, 0xbf, 0xc4, 0x0, 0xb, 0xf, 0x2e, 0x23, 0x0, 0xdd, 0x8d, 0x5d, 0x1d, 0xcb, 0x9a, 0x3e, 0xb2, 0xd1, 0xf1, 0xfa, 0xf, 0x7d, 0xf8, 0xc1, 0xb1, 0xbb, 0xb7, 0x9c, 0xee, 0xc, 0x82, 0x43, 0x50, 0x52, 0x9, 0x82, 0x5d, 0x7d, 0x5, 0x80, 0xb8, 0x24, 0x88, 0x91, 0x35, 0xcc, 0x8f, 0x8f, 0xdf, 0xf, 0x1e, 0x6c, 0x4e, 0xef, 0x88, 0x26, 0xa3, 0x29, 0x14, 0x65, 0xfd, 0xaa, 0xd0, 0xb2, 0x4c, 0x6d, 0x6a, 0xbe, 0xf7, 0x5e, 0xfd, 0x9d, 0xab, 0xfa, 0x5c, 0xb6, 0x80, 0x7d, 0x19, 0xfa, 0x2e, 0x99, 0x5b, 0x6a, 0x0, 0x40, 0xe, 0x8f, 0x4c, 0x18, 0xbe, 0xfd, 0xea, 0x35, 0x1, 0x25, 0x93, 0xdc, 0x53, 0xbe, 0x12, 0x8a, 0x4, 0xcb, 0x2, 0xc1, 0x40, 0x14, 0x8b, 0x7c, 0x41, 0xcf, 0x7f, 0xca, 0x7d, 0xd6, 0x9e, 0x8f, 0x74, 0xbe, 0xb9, 0xde, 0xdb, 0xfc, 0xf0, 0x59, 0x61, 0xd1, 0x30, 0xf9, 0x8f, 0xae, 0xc3, 0x6b, 0xfc, 0xcb, 0x7, 0x91, 0x19, 0x4, 0xfb, 0xfe, 0x4f, 0x36, 0xeb, 0x49, 0x2c, 0x89, 0x5d, 0x9e, 0x7a, 0xf9, 0x24, 0xb6, 0x84, 0x7d, 0xf0, 0x2e, 0xe0, 0xe1, 0x93, 0x98, 0x8f, 0x8f, 0x8f, 0x8f, 0xcf, 0x56, 0xe6, 0x17, 0xc3, 0x92, 0xcd, 0xe2, 0x0, 0xde, 0xae, 0x9b, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x20, 0x8, 0x3, 0x0, 0x0, 0x0, 0x95, 0x43, 0x8e, 0xb6, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x1, 0x74, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0xd, 0xf, 0x1a, 0x1a, 0x1e, 0x20, 0x20, 0x24, 0x22, 0x22, 0x27, 0x24, 0x24, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xa, 0xc, 0x1d, 0x1d, 0x21, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x11, 0x14, 0x23, 0x23, 0x28, 0x12, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xb, 0xd, 0x23, 0x23, 0x28, 0xb, 0xb, 0xd, 0x1e, 0x1e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xe, 0x10, 0x1a, 0x1a, 0x1e, 0x1a, 0x1a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x20, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xe, 0x10, 0xb, 0xb, 0xd, 0x0, 0x0, 0x0, 0x13, 0x13, 0x15, 0x0, 0x0, 0x0, 0xb, 0xb, 0xc, 0x1d, 0x1d, 0x21, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x25, 0x25, 0x2a, 0x24, 0x24, 0x29, 0x25, 0x2c, 0x36, 0x27, 0x49, 0x65, 0x29, 0x5d, 0x85, 0x2a, 0x66, 0x95, 0x2a, 0x68, 0x99, 0x29, 0x64, 0x92, 0x28, 0x4c, 0x6b, 0x25, 0x27, 0x2d, 0x27, 0x43, 0x5c, 0x29, 0x5f, 0x89, 0x27, 0x49, 0x66, 0x25, 0x30, 0x3e, 0x25, 0x26, 0x2d, 0x25, 0x25, 0x2b, 0x25, 0x26, 0x2c, 0x25, 0x2d, 0x38, 0x25, 0x3a, 0x4c, 0x27, 0x4d, 0x6b, 0x29, 0x60, 0x8c, 0x27, 0x44, 0x5c, 0x27, 0x4b, 0x69, 0x28, 0x59, 0x7f, 0x25, 0x34, 0x43, 0x25, 0x35, 0x45, 0x28, 0x58, 0x7f, 0x25, 0x26, 0x2b, 0x27, 0x40, 0x57, 0x27, 0x41, 0x57, 0x25, 0x2a, 0x33, 0x29, 0x5d, 0x87, 0x25, 0x34, 0x44, 0x25, 0x2b, 0x34, 0x40, 0x40, 0x44, 0xad, 0xad, 0xaf, 0xff, 0xff, 0xff, 0xf2, 0xf2, 0xf2, 0x77, 0x77, 0x7a, 0x5b, 0x5b, 0x5f, 0x4e, 0x4e, 0x52, 0xc9, 0xc9, 0xca, 0x27, 0x43, 0x5b, 0x27, 0x4d, 0x6c, 0x27, 0x4e, 0x6d, 0xbb, 0xbb, 0xbd, 0x69, 0x69, 0x6c, 0x28, 0x56, 0x7b, 0x26, 0x3b, 0x4e, 0x26, 0x3a, 0x4e, 0x32, 0x32, 0x37, 0x84, 0x84, 0x87, 0xd6, 0xd6, 0xd7, 0x29, 0x61, 0x8d, 0x25, 0x2e, 0x39, 0x92, 0x92, 0x94, 0xa0, 0xa0, 0xa2, 0xe4, 0xe4, 0xe5, 0x27, 0x44, 0x5d, 0xdd, 0xc9, 0xf2, 0x7e, 0x0, 0x0, 0x0, 0x41, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x1, 0x2, 0x3, 0x4, 0x9, 0xe, 0x13, 0x16, 0x18, 0x19, 0xa, 0x26, 0x36, 0x44, 0x4d, 0x52, 0x54, 0x55, 0x6, 0x12, 0x27, 0x43, 0x80, 0xc5, 0xe7, 0xf5, 0xfe, 0x8, 0x17, 0x35, 0x73, 0xd9, 0x7, 0x3a, 0x96, 0xf9, 0x9a, 0xb, 0x28, 0x76, 0xfb, 0x77, 0xde, 0x45, 0x5, 0x82, 0xc6, 0xc6, 0x37, 0xf, 0xe9, 0x4c, 0x4e, 0x4f, 0x50, 0x83, 0x78, 0x3b, 0x9c, 0x3c, 0x74, 0xda, 0x53, 0x14, 0x37, 0x21, 0x5a, 0x6c, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x65, 0xb5, 0xdd, 0x88, 0x9f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x4, 0x4e, 0x1d, 0x2, 0xaf, 0x0, 0x0, 0x2, 0x28, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0x55, 0x69, 0x57, 0xd3, 0x40, 0x14, 0x25, 0x93, 0xa4, 0x49, 0x24, 0x49, 0xd9, 0x42, 0xd7, 0x0, 0x85, 0x50, 0x2c, 0xb4, 0x68, 0x5b, 0xab, 0x28, 0xb2, 0xc, 0x4b, 0x95, 0x82, 0x56, 0xab, 0x42, 0x45, 0x5c, 0x9b, 0xad, 0x45, 0x11, 0x6d, 0x3, 0xa8, 0x7f, 0xde, 0xc4, 0x94, 0x26, 0x69, 0x30, 0x89, 0xc7, 0x2f, 0x7a, 0x3f, 0xe4, 0x9c, 0xcc, 0x3b, 0xef, 0xce, 0x7d, 0x6f, 0xde, 0x32, 0x30, 0xf0, 0xf, 0x1, 0x1, 0x28, 0x8a, 0xf9, 0x2, 0x45, 0x1, 0x72, 0xa5, 0x3b, 0xc0, 0xf0, 0x10, 0x41, 0x52, 0xd7, 0x7c, 0x40, 0x91, 0x44, 0x8, 0xc7, 0x80, 0xfb, 0x76, 0x6c, 0x90, 0xa4, 0x19, 0x36, 0x3c, 0x34, 0x3c, 0xe2, 0x89, 0xe1, 0xa1, 0x30, 0xcb, 0xd0, 0xe4, 0x20, 0xd6, 0xa7, 0x2, 0x8c, 0x8e, 0x71, 0xe3, 0x91, 0x68, 0x2c, 0x9e, 0x80, 0x3e, 0x48, 0xc4, 0x63, 0xd1, 0xc8, 0x38, 0x37, 0x36, 0xea, 0x10, 0x1, 0x92, 0xfc, 0xc4, 0xe4, 0xd4, 0x86, 0x9f, 0xf3, 0x25, 0x36, 0xa6, 0x26, 0x27, 0xf8, 0xa4, 0x8d, 0x1, 0x49, 0x51, 0xd3, 0x33, 0x82, 0xa7, 0xcf, 0xe6, 0xd6, 0x76, 0xf9, 0x81, 0x89, 0x87, 0x3b, 0x9b, 0x50, 0x98, 0x99, 0xa6, 0x52, 0x88, 0x15, 0x3f, 0xc1, 0xcc, 0x7a, 0x6a, 0xaf, 0xec, 0xee, 0x3d, 0x7a, 0x5c, 0x7d, 0x62, 0xe0, 0x69, 0xed, 0xd9, 0xf3, 0x17, 0xfb, 0x95, 0xc4, 0x2c, 0x43, 0xf4, 0xf2, 0x0, 0xd2, 0x73, 0xd7, 0x33, 0x9e, 0xfe, 0x7, 0xf5, 0x97, 0xf6, 0xff, 0xc3, 0x57, 0x7, 0x95, 0xcc, 0xfc, 0x5c, 0xfa, 0x32, 0x8, 0x8c, 0x67, 0x17, 0xbc, 0xfc, 0x8f, 0x5e, 0xd7, 0x6b, 0xce, 0x93, 0x5a, 0xfd, 0xcd, 0xd1, 0x42, 0x96, 0xcf, 0x99, 0x12, 0x10, 0x9c, 0x5e, 0xf4, 0x8c, 0xff, 0xed, 0xbb, 0xf7, 0xfd, 0x47, 0x87, 0x7b, 0x1f, 0xe0, 0x22, 0x8d, 0x9b, 0x4, 0x20, 0xc4, 0xdc, 0xb0, 0x4c, 0xd, 0x51, 0x92, 0x15, 0xa8, 0x4a, 0x4d, 0xa8, 0xb6, 0xba, 0x47, 0xc7, 0x1f, 0xdd, 0xa4, 0x9f, 0x8e, 0xe1, 0xcd, 0x7c, 0xc1, 0x8c, 0x1, 0x25, 0xd8, 0x98, 0x65, 0x69, 0x9d, 0x34, 0x3e, 0x4b, 0xd, 0x55, 0x6a, 0x59, 0x4, 0xa7, 0x5f, 0xdc, 0x4, 0x5f, 0x4f, 0x61, 0x31, 0x4b, 0xa0, 0x26, 0x1, 0x79, 0x2b, 0x6e, 0x9, 0x90, 0xda, 0x10, 0x9e, 0x74, 0x54, 0x4d, 0x56, 0x7b, 0x4, 0x67, 0xe7, 0x6e, 0x82, 0xf3, 0x33, 0x28, 0x94, 0x48, 0xcc, 0x24, 0xe0, 0x6f, 0x5b, 0x6f, 0xa8, 0x6a, 0xfa, 0xe7, 0x42, 0x54, 0x5b, 0x17, 0x5a, 0x8f, 0xa0, 0x5c, 0x75, 0x13, 0x54, 0xcb, 0x10, 0xde, 0xe1, 0xbb, 0x4, 0x64, 0xd8, 0x2a, 0xa2, 0xb6, 0xa1, 0x40, 0xfc, 0xa6, 0x3b, 0x7f, 0x17, 0x3, 0x2b, 0x20, 0xd8, 0xa2, 0x65, 0xd1, 0x3a, 0xb0, 0x2d, 0x2b, 0x3a, 0x81, 0x22, 0x5, 0xcd, 0x1, 0x8, 0xe5, 0x6d, 0xaf, 0xa0, 0xca, 0x9a, 0x2c, 0xfe, 0x4a, 0xa0, 0x16, 0xf4, 0x15, 0xf4, 0x3a, 0x58, 0xb2, 0x99, 0xda, 0x9d, 0xa6, 0x9e, 0x4b, 0x5, 0xc2, 0xa6, 0xe2, 0x5d, 0x7, 0x4b, 0x5c, 0xb7, 0xe, 0xfe, 0xba, 0x12, 0x8d, 0x5e, 0x98, 0xff, 0xf3, 0x5e, 0xb8, 0x6b, 0xf5, 0x42, 0x80, 0x6e, 0xdc, 0x77, 0x76, 0xe3, 0xf, 0x67, 0x37, 0x1a, 0xf3, 0xe0, 0xde, 0xb2, 0xa7, 0x86, 0xfe, 0x79, 0x90, 0x59, 0xbe, 0x6f, 0x9b, 0x7, 0xc6, 0x44, 0xa2, 0x98, 0x95, 0x55, 0x18, 0x18, 0xab, 0x2b, 0xc, 0x95, 0x74, 0xce, 0xb4, 0x14, 0xc1, 0xb1, 0x91, 0x68, 0x51, 0xf0, 0x77, 0x16, 0x8a, 0xd1, 0x8, 0xcb, 0x11, 0xa9, 0xbe, 0xc1, 0x8c, 0x60, 0x69, 0x92, 0xce, 0x67, 0x4b, 0x6b, 0x23, 0x3e, 0x58, 0x2b, 0x65, 0xf3, 0x34, 0x99, 0xc6, 0x5c, 0xbb, 0x1, 0x1, 0x39, 0xbc, 0xb0, 0xce, 0xfb, 0xef, 0x5, 0x7e, 0xbd, 0x80, 0xe7, 0xae, 0xde, 0x2d, 0xfa, 0x66, 0xf2, 0x5f, 0x4c, 0xfa, 0x6a, 0xfa, 0xcd, 0x66, 0xfa, 0x7f, 0xf1, 0x13, 0xb7, 0x71, 0x36, 0xc6, 0x87, 0x41, 0xd4, 0x5, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; + +static const unsigned char tool_button_pressed_png[] = { +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x2, 0x1, 0x50, 0x4c, 0x54, 0x45, 0x29, 0x3a, 0x40, 0x2d, 0x3e, 0x44, 0x26, 0x34, 0x3b, 0x24, 0x34, 0x39, 0x23, 0x31, 0x38, 0x22, 0x31, 0x37, 0x22, 0x31, 0x37, 0x22, 0x30, 0x36, 0x22, 0x31, 0x36, 0x26, 0x34, 0x3c, 0x32, 0x44, 0x4c, 0x26, 0x34, 0x39, 0x23, 0x31, 0x36, 0x21, 0x2e, 0x34, 0x1f, 0x2c, 0x30, 0x1f, 0x2b, 0x2f, 0x1f, 0x2a, 0x2e, 0x1e, 0x2b, 0x2f, 0x1f, 0x2b, 0x2e, 0x36, 0x4b, 0x52, 0x25, 0x33, 0x38, 0x20, 0x2f, 0x32, 0x1c, 0x29, 0x2e, 0x1b, 0x26, 0x2a, 0x1a, 0x23, 0x26, 0x18, 0x22, 0x26, 0x19, 0x22, 0x26, 0x19, 0x23, 0x26, 0x19, 0x26, 0x29, 0x20, 0x2d, 0x32, 0x25, 0x31, 0x38, 0x3c, 0x51, 0x59, 0x23, 0x31, 0x37, 0x1f, 0x2b, 0x31, 0x1a, 0x25, 0x2b, 0x17, 0x20, 0x24, 0x15, 0x1c, 0x21, 0x14, 0x1b, 0x21, 0x14, 0x1c, 0x21, 0x13, 0x1b, 0x21, 0x15, 0x1d, 0x21, 0x1a, 0x25, 0x2a, 0x40, 0x57, 0x60, 0x23, 0x31, 0x36, 0x1f, 0x2b, 0x31, 0x1b, 0x25, 0x29, 0x16, 0x1e, 0x23, 0x14, 0x1b, 0x1d, 0x12, 0x19, 0x1d, 0x12, 0x1b, 0x1d, 0x14, 0x1a, 0x1d, 0x45, 0x5e, 0x67, 0x22, 0x32, 0x37, 0x20, 0x2d, 0x31, 0x1a, 0x26, 0x2a, 0x15, 0x1f, 0x25, 0x14, 0x1c, 0x1f, 0x12, 0x1b, 0x1f, 0x12, 0x1b, 0x20, 0x14, 0x1b, 0x1f, 0x15, 0x1e, 0x24, 0x1a, 0x25, 0x29, 0x4b, 0x64, 0x6d, 0x23, 0x32, 0x38, 0x20, 0x2e, 0x32, 0x1b, 0x27, 0x2b, 0x17, 0x22, 0x27, 0x16, 0x1e, 0x23, 0x14, 0x1e, 0x23, 0x16, 0x20, 0x24, 0x14, 0x1e, 0x22, 0x15, 0x1e, 0x22, 0x17, 0x21, 0x27, 0x1c, 0x27, 0x2c, 0x4f, 0x6a, 0x75, 0x21, 0x2f, 0x33, 0x1d, 0x29, 0x2d, 0x19, 0x23, 0x2a, 0x18, 0x22, 0x27, 0x16, 0x21, 0x27, 0x18, 0x23, 0x29, 0x17, 0x21, 0x26, 0x19, 0x23, 0x29, 0x1c, 0x28, 0x2d, 0x21, 0x2e, 0x33, 0x54, 0x70, 0x7c, 0x23, 0x33, 0x38, 0x22, 0x30, 0x34, 0x1e, 0x2a, 0x2f, 0x1a, 0x26, 0x2d, 0x1a, 0x25, 0x2b, 0x19, 0x25, 0x2b, 0x1a, 0x26, 0x2d, 0x1a, 0x26, 0x2c, 0x18, 0x25, 0x2a, 0x1a, 0x24, 0x2a, 0x1a, 0x25, 0x2c, 0x1d, 0x2a, 0x2f, 0x22, 0x2f, 0x34, 0x59, 0x77, 0x82, 0x23, 0x33, 0x39, 0x22, 0x30, 0x35, 0x1f, 0x2c, 0x31, 0x1c, 0x28, 0x30, 0x1c, 0x28, 0x2e, 0x1b, 0x29, 0x2f, 0x1c, 0x2a, 0x31, 0x1b, 0x28, 0x2f, 0x1c, 0x28, 0x2d, 0x1b, 0x27, 0x2f, 0x1f, 0x2b, 0x31, 0x5e, 0x7d, 0x8a, 0x24, 0x34, 0x39, 0x21, 0x2f, 0x37, 0x20, 0x2d, 0x34, 0x1d, 0x2b, 0x33, 0x1d, 0x2b, 0x32, 0x1d, 0x2d, 0x35, 0x1e, 0x2e, 0x36, 0x1f, 0x2e, 0x36, 0x1d, 0x2b, 0x34, 0x1d, 0x2b, 0x31, 0x1d, 0x2b, 0x32, 0x20, 0x2d, 0x32, 0x21, 0x2f, 0x36, 0x63, 0x83, 0x90, 0x25, 0x34, 0x39, 0x21, 0x31, 0x36, 0x1f, 0x2e, 0x34, 0x1f, 0x2e, 0x34, 0x1f, 0x2e, 0x36, 0x20, 0x31, 0x39, 0x21, 0x33, 0x3b, 0x21, 0x32, 0x3b, 0x1f, 0x30, 0x37, 0x1f, 0x2e, 0x35, 0x1e, 0x2d, 0x33, 0x1f, 0x2d, 0x33, 0x21, 0x30, 0x36, 0x67, 0x8a, 0x97, 0x24, 0x33, 0x39, 0x20, 0x30, 0x36, 0x1f, 0x2f, 0x35, 0x21, 0x30, 0x37, 0x22, 0x32, 0x39, 0x21, 0x35, 0x3e, 0x24, 0x37, 0x41, 0x24, 0x36, 0x41, 0x21, 0x33, 0x3c, 0x21, 0x31, 0x38, 0x1e, 0x2f, 0x35, 0x1e, 0x2e, 0x35, 0x20, 0x2e, 0x35, 0x24, 0x31, 0x39, 0x6c, 0x90, 0x9e, 0x22, 0x30, 0x36, 0x1f, 0x2e, 0x36, 0x20, 0x30, 0x36, 0x20, 0x31, 0x39, 0x23, 0x34, 0x3d, 0x23, 0x37, 0x41, 0x26, 0x3c, 0x47, 0x26, 0x3b, 0x46, 0x22, 0x35, 0x3f, 0x22, 0x32, 0x3b, 0x1f, 0x30, 0x37, 0x1f, 0x2e, 0x35, 0x1f, 0x2d, 0x35, 0x21, 0x30, 0x36, 0x72, 0x96, 0xa5, 0x72, 0x96, 0xa5, 0xe8, 0x14, 0xaa, 0x3f, 0x0, 0x0, 0x0, 0xaa, 0x74, 0x52, 0x4e, 0x53, 0xc3, 0xc3, 0xe6, 0xd7, 0xcb, 0xc3, 0xbf, 0xbe, 0xbd, 0xe5, 0xc3, 0xd7, 0xc0, 0xac, 0xa0, 0x9a, 0x98, 0x98, 0x98, 0xc3, 0xcb, 0xac, 0x92, 0x82, 0x7b, 0x78, 0x78, 0x7b, 0x82, 0xac, 0xcb, 0xc3, 0xc3, 0xa0, 0x82, 0x6f, 0x67, 0x64, 0x63, 0x64, 0x67, 0x82, 0xc3, 0xbf, 0x9a, 0x7a, 0x67, 0x5e, 0x5b, 0x5a, 0x5e, 0xc3, 0xbd, 0x98, 0x78, 0x64, 0x5b, 0x57, 0x57, 0x5b, 0x64, 0x78, 0xc3, 0xbd, 0x98, 0x78, 0x63, 0x5a, 0x57, 0x56, 0x57, 0x5a, 0x63, 0x77, 0xc3, 0x98, 0x78, 0x63, 0x5a, 0x57, 0x56, 0x5a, 0x63, 0x77, 0x98, 0xc3, 0xbd, 0x98, 0x78, 0x63, 0x5a, 0x57, 0x56, 0x56, 0x57, 0x5a, 0x63, 0x77, 0x98, 0xc3, 0xbd, 0x98, 0x77, 0x63, 0x5a, 0x57, 0x56, 0x57, 0x5a, 0x63, 0x77, 0xc3, 0xbb, 0x96, 0x76, 0x63, 0x5a, 0x57, 0x56, 0x56, 0x57, 0x5a, 0x63, 0x76, 0x96, 0xc3, 0xb5, 0x92, 0x75, 0x62, 0x5a, 0x57, 0x56, 0x56, 0x57, 0x59, 0x62, 0x74, 0x92, 0xc3, 0xa9, 0x8b, 0x71, 0x61, 0x59, 0x57, 0x56, 0x56, 0x57, 0x59, 0x61, 0x71, 0x8b, 0xa9, 0xc3, 0x95, 0x7e, 0x6b, 0x5e, 0x59, 0x57, 0x56, 0x56, 0x57, 0x59, 0x5e, 0x6b, 0x7e, 0x95, 0xc3, 0x4f, 0x78, 0x99, 0x30, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xa9, 0x27, 0xf, 0x6, 0x4, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xff, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x63, 0x60, 0x40, 0x7, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x1c, 0x1c, 0x6c, 0xac, 0x2c, 0xcc, 0x9c, 0x8c, 0xc, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 0x2, 0x82, 0x82, 0x42, 0xfc, 0x7c, 0xbc, 0x3c, 0xdc, 0x5c, 0xc, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, 0x52, 0x92, 0xd2, 0x32, 0x62, 0xb2, 0x72, 0xc2, 0xc, 0xf2, 0xa, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0x6a, 0xea, 0x1a, 0xca, 0x9a, 0x8a, 0xa, 0xf2, 0xc, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x6, 0x86, 0x86, 0x6, 0x46, 0x7a, 0xba, 0x3a, 0xda, 0x5a, 0xc, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0x56, 0x96, 0xd6, 0x36, 0xb6, 0xa6, 0x26, 0xc6, 0xc, 0x76, 0xf6, 0xe, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0xe, 0x26, 0x76, 0xc, 0x5e, 0xf6, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x1, 0x1, 0xfe, 0x81, 0x41, 0xc1, 0x21, 0xf6, 0x5e, 0xc, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 0x9, 0x89, 0x49, 0x61, 0xa1, 0xc, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xa9, 0x29, 0xc9, 0xc, 0xf9, 0x5, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, 0x55, 0xd5, 0x35, 0x5, 0xf9, 0xc, 0xb5, 0x75, 0xf5, 0xd, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0x75, 0xb5, 0xc, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 0x13, 0x26, 0x4e, 0x9a, 0x3c, 0x65, 0xea, 0xb4, 0xe9, 0x33, 0x66, 0x76, 0x33, 0xcc, 0x9a, 0x3d, 0x67, 0xee, 0xbc, 0xf9, 0xb, 0x16, 0x2e, 0x5a, 0xbc, 0x64, 0xe9, 0xb2, 0xe5, 0x2b, 0x66, 0x31, 0xac, 0x44, 0x3, 0x0, 0xa4, 0xd7, 0x4d, 0x73, 0x12, 0x21, 0x19, 0xde, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tooltip_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x77, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0xc1, 0xd, 0x40, 0x40, 0x14, 0x44, 0xdf, 0xa, 0x15, 0x50, 0x86, 0x42, 0xe8, 0x81, 0xb3, 0x3, 0x15, 0x71, 0xa3, 0x5, 0x89, 0x46, 0x94, 0xb1, 0x6a, 0x18, 0x97, 0xdd, 0x10, 0x71, 0xd8, 0x75, 0x36, 0xa7, 0xff, 0x93, 0x79, 0xf3, 0xe7, 0xf2, 0x8d, 0xa4, 0xc, 0xe8, 0x80, 0xa, 0x28, 0x8, 0x93, 0x5, 0x36, 0x60, 0x34, 0x92, 0x6, 0xa0, 0x9, 0x4, 0x9f, 0x5a, 0x8c, 0xa4, 0xd5, 0x5d, 0xde, 0x81, 0x3c, 0x10, 0x3c, 0x80, 0x12, 0xb0, 0x9, 0x57, 0xed, 0x50, 0xf8, 0xee, 0x2d, 0x92, 0x8, 0xe8, 0x55, 0x7f, 0xc0, 0x1f, 0xe0, 0x3, 0xac, 0x9b, 0x8f, 0x8, 0xce, 0x33, 0xd6, 0x48, 0xea, 0x81, 0xf6, 0x63, 0x81, 0x39, 0x5, 0x46, 0xb7, 0xd4, 0xc4, 0xbf, 0xf3, 0x74, 0x2, 0x7e, 0x1c, 0x1c, 0xd5, 0x3c, 0x27, 0x88, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x33, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2d, 0x2c, 0x2f, 0x48, 0x46, 0x4a, 0xdd, 0xdd, 0xdd, 0x4c, 0x4a, 0x4e, 0x48, 0x46, 0x4a, 0x40, 0x3e, 0x42, 0xdd, 0xdd, 0xdd, 0xfe, 0x3f, 0x83, 0xa9, 0x0, 0x0, 0x0, 0xd, 0x74, 0x52, 0x4e, 0x53, 0xa, 0x1a, 0x26, 0x29, 0x2a, 0x48, 0x65, 0x6d, 0x6e, 0x66, 0xf5, 0xfe, 0xcc, 0xff, 0xb7, 0x4a, 0xbe, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xc, 0x81, 0xb3, 0x51, 0x63, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x44, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0xc5, 0xcf, 0xbb, 0x15, 0x0, 0x20, 0x8, 0x43, 0xd1, 0x80, 0x28, 0xf8, 0x41, 0xf7, 0xdf, 0xd6, 0x86, 0x63, 0xa1, 0x3, 0x78, 0xcb, 0x54, 0x79, 0x0, 0x71, 0x92, 0x90, 0x98, 0x0, 0xca, 0x45, 0x2d, 0x68, 0xc9, 0x4, 0xae, 0xad, 0x7b, 0xe8, 0xad, 0x32, 0x44, 0xe7, 0x1a, 0x61, 0x4d, 0x15, 0x88, 0xf9, 0x38, 0xdc, 0xfe, 0xd, 0xf7, 0xb1, 0xe7, 0xfa, 0x13, 0x77, 0xe7, 0x6f, 0xdc, 0x6c, 0x9, 0x25, 0x82, 0x67, 0x68, 0x78, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tree_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xe5, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x93, 0x31, 0x4a, 0x43, 0x41, 0x18, 0x84, 0xbf, 0xd9, 0x7f, 0xdf, 0x9, 0x24, 0x1, 0x5, 0xcb, 0xd8, 0xa5, 0x35, 0x5e, 0x20, 0x8d, 0x82, 0x57, 0xd0, 0x43, 0x78, 0x20, 0xbd, 0x82, 0x62, 0xf5, 0x2e, 0xa0, 0x56, 0x81, 0x94, 0x69, 0x2c, 0xc4, 0x22, 0x82, 0x27, 0xd8, 0xb7, 0xbf, 0xc5, 0x3e, 0x49, 0x94, 0x95, 0x28, 0xaf, 0xf5, 0x87, 0x85, 0x2d, 0x76, 0x66, 0xfe, 0x61, 0x67, 0x60, 0xe0, 0x68, 0xfb, 0x3e, 0x99, 0xce, 0x2e, 0x11, 0x73, 0x60, 0xf4, 0xc3, 0xfb, 0x37, 0x9c, 0x76, 0xb5, 0x7c, 0xbc, 0x6, 0x7c, 0x9b, 0x20, 0x4c, 0xa6, 0xb3, 0x3b, 0xc4, 0x69, 0x90, 0x92, 0x4b, 0xb1, 0xaa, 0xe6, 0x9e, 0xb2, 0x7b, 0xc4, 0xfd, 0x7e, 0xb5, 0x7c, 0x3a, 0x7, 0xb2, 0x1, 0xf4, 0xca, 0x57, 0x16, 0x1b, 0x62, 0xd3, 0x4, 0x33, 0xa3, 0x76, 0x82, 0xc5, 0x20, 0x89, 0xec, 0xf9, 0x68, 0x6f, 0x7c, 0xf8, 0xfc, 0xbe, 0x7e, 0x59, 0x84, 0xde, 0xc8, 0x3c, 0x48, 0xc9, 0xcc, 0x76, 0x7a, 0xe, 0x66, 0x48, 0xea, 0x7a, 0xab, 0x14, 0x2, 0x67, 0x1f, 0xea, 0x6b, 0x57, 0xad, 0x20, 0xc3, 0xfd, 0x60, 0x43, 0x30, 0x60, 0xfe, 0x9, 0x3e, 0x9, 0xa4, 0x57, 0xf0, 0xf4, 0x7b, 0x98, 0xa7, 0x82, 0xd9, 0x7c, 0x63, 0x9b, 0xdd, 0x63, 0xee, 0xba, 0x9d, 0xd0, 0xdc, 0x75, 0x94, 0x34, 0xd2, 0xc2, 0x97, 0x28, 0x1f, 0xdf, 0x22, 0x9d, 0xfd, 0x35, 0xca, 0xdf, 0xca, 0x74, 0x72, 0x51, 0x12, 0xe6, 0xe3, 0xba, 0xbe, 0xd6, 0xa5, 0x4c, 0xf, 0x37, 0xf4, 0x65, 0x1a, 0x3c, 0x1f, 0xbb, 0xac, 0x55, 0xac, 0xed, 0xfe, 0xe5, 0xf1, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xa, 0x0, 0x0, 0x0, 0xa, 0x4, 0x3, 0x0, 0x0, 0x0, 0x7f, 0x1c, 0xd2, 0x8e, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2a, 0x50, 0x4c, 0x54, 0x45, 0x17, 0x16, 0x1a, 0x1d, 0x1c, 0x21, 0x20, 0x1e, 0x24, 0x21, 0x1f, 0x25, 0x1d, 0x1c, 0x21, 0x20, 0x1e, 0x24, 0x1d, 0x1c, 0x21, 0x1d, 0x1c, 0x21, 0x24, 0x22, 0x29, 0x28, 0x26, 0x2d, 0x28, 0x26, 0x2e, 0x2b, 0x2a, 0x31, 0x2c, 0x2a, 0x32, 0xff, 0xff, 0xff, 0xb9, 0x11, 0x56, 0x3e, 0x0, 0x0, 0x0, 0x8, 0x74, 0x52, 0x4e, 0x53, 0x6f, 0xef, 0xf7, 0xf7, 0xf0, 0xf9, 0xf1, 0xee, 0xcf, 0x21, 0xd2, 0xdf, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xd, 0xf6, 0xb4, 0x61, 0xf5, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x2d, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x54, 0x36, 0x36, 0x12, 0x60, 0xf0, 0x98, 0xb5, 0x6a, 0x65, 0xb, 0x43, 0xe4, 0x9e, 0x33, 0xa7, 0xa7, 0x32, 0x58, 0x9d, 0x39, 0x73, 0x66, 0x31, 0x16, 0x12, 0x22, 0xb, 0x52, 0xd9, 0xc6, 0xc0, 0x2, 0xd4, 0x55, 0x0, 0x0, 0xc, 0x14, 0x1a, 0x90, 0x55, 0x1a, 0xec, 0xdb, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; + +static const unsigned char tree_bg_focus_png[] = { +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x8, 0x6, 0x0, 0x0, 0x0, 0x73, 0x7a, 0x7a, 0xf4, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xdb, 0xb, 0x4, 0x12, 0x2d, 0x3a, 0xb5, 0x1b, 0x14, 0x49, 0x0, 0x0, 0x2, 0xd9, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xc5, 0x57, 0x31, 0x8e, 0x14, 0x31, 0x10, 0xac, 0xea, 0x3d, 0x11, 0x91, 0xdf, 0x49, 0xf7, 0xf, 0x78, 0x1, 0xf, 0x40, 0x84, 0x44, 0x10, 0xf2, 0x20, 0x42, 0x62, 0x12, 0xc4, 0x3, 0x78, 0x1, 0xff, 0x21, 0x42, 0xb8, 0x8a, 0xc0, 0x1e, 0x4f, 0xdb, 0xe3, 0xb9, 0xbb, 0x45, 0x20, 0x7c, 0x1a, 0xdd, 0x8c, 0xec, 0xed, 0xae, 0xae, 0xea, 0xee, 0xe9, 0xe1, 0xfd, 0xed, 0xdd, 0xb, 0x0, 0xdf, 0xf1, 0x7f, 0xd6, 0x4b, 0xde, 0xdf, 0xde, 0xf9, 0xcb, 0xeb, 0x9f, 0xff, 0xc5, 0xfb, 0x9b, 0xaf, 0xcf, 0x70, 0xb3, 0x3d, 0x3c, 0xff, 0xf0, 0xd, 0x24, 0x11, 0x71, 0x1, 0x49, 0x90, 0x4, 0x0, 0x4, 0xd3, 0x2f, 0xb6, 0x7b, 0xf, 0xff, 0x86, 0x2d, 0x8c, 0x47, 0x60, 0x1b, 0x0, 0x61, 0x1b, 0xb6, 0x21, 0x15, 0xd8, 0xc6, 0x8f, 0x8f, 0xaf, 0x0, 0x60, 0x7, 0x0, 0xa2, 0x2, 0x20, 0x11, 0x41, 0x30, 0xa2, 0x2, 0xc1, 0xb5, 0x0, 0x8c, 0x79, 0xd9, 0x80, 0x24, 0x48, 0x0, 0x48, 0x28, 0x9d, 0xb9, 0xd9, 0xd, 0xb0, 0x31, 0x40, 0x5c, 0x2e, 0x1, 0x46, 0x0, 0xd, 0xd0, 0xb6, 0xef, 0x35, 0x8e, 0x13, 0x6, 0xbc, 0x33, 0x60, 0xa3, 0x9a, 0x11, 0x6c, 0x82, 0xe6, 0xa, 0x0, 0x86, 0xe8, 0x2f, 0x71, 0xa9, 0xf7, 0x9c, 0x4d, 0x1f, 0x69, 0x5e, 0x1, 0xd8, 0xa3, 0x37, 0xa4, 0xa, 0x27, 0x1a, 0x13, 0x79, 0x25, 0x9, 0xaa, 0xe3, 0xd8, 0x9c, 0x5f, 0xea, 0x7d, 0x67, 0x80, 0xd7, 0x31, 0x20, 0xab, 0x3, 0x20, 0x5, 0x20, 0x2a, 0x13, 0x41, 0x40, 0x2b, 0x0, 0x76, 0x22, 0xb9, 0xb1, 0xd1, 0x92, 0x91, 0x5d, 0x86, 0xf3, 0x35, 0xef, 0x5, 0xa3, 0x25, 0x60, 0xd, 0x6e, 0x66, 0xe5, 0x0, 0xc0, 0xa8, 0x54, 0x1, 0x6, 0xe9, 0x16, 0x9f, 0x4f, 0xdc, 0x1c, 0x13, 0xed, 0xb1, 0x55, 0x31, 0x78, 0x70, 0x8e, 0xca, 0xcb, 0x8e, 0x6a, 0xbe, 0x56, 0x88, 0x67, 0x38, 0xdb, 0x75, 0x58, 0x76, 0xdf, 0x1b, 0x6c, 0x7a, 0xc, 0x6c, 0x90, 0x0, 0xfd, 0xe0, 0xe8, 0x98, 0xe4, 0x4, 0xe2, 0x69, 0xc, 0xe4, 0x40, 0xaa, 0xf9, 0x63, 0x70, 0xbb, 0x4, 0x16, 0x9c, 0x12, 0xa7, 0x3e, 0xe7, 0x38, 0xb3, 0x4, 0x2b, 0x6f, 0xc7, 0x23, 0xbb, 0xc3, 0x66, 0xdb, 0x38, 0x7, 0x0, 0xcf, 0x32, 0x34, 0xb6, 0x52, 0xb4, 0x3c, 0xf7, 0x35, 0x10, 0xd9, 0xf7, 0x6, 0x56, 0x93, 0x4, 0x4b, 0x0, 0x43, 0x28, 0xf9, 0x4a, 0x3d, 0x6e, 0xb0, 0x3e, 0x9, 0x31, 0xa9, 0x62, 0xd6, 0xc4, 0x36, 0x9c, 0xf2, 0xd9, 0xbd, 0x41, 0x2d, 0x24, 0x68, 0xc7, 0x1f, 0x62, 0x60, 0x6a, 0xc1, 0x7f, 0x95, 0x81, 0xaa, 0x13, 0x61, 0x9, 0xa6, 0xf6, 0x1c, 0x30, 0x17, 0x11, 0x6f, 0x48, 0x12, 0x3b, 0xf3, 0x7b, 0xc2, 0xeb, 0xca, 0x92, 0xb7, 0x72, 0x5f, 0x31, 0x90, 0x11, 0x4e, 0x48, 0xb3, 0x13, 0xa6, 0xcc, 0x3e, 0x51, 0x60, 0x91, 0x53, 0x55, 0x87, 0xf3, 0x2a, 0x98, 0xff, 0x7c, 0x6c, 0x1a, 0xf9, 0xec, 0xda, 0xeb, 0x94, 0x13, 0x43, 0xdd, 0x3f, 0x2a, 0x41, 0xd2, 0xb, 0x27, 0x65, 0xe8, 0x13, 0x20, 0x29, 0x3f, 0xc6, 0x7c, 0x48, 0x65, 0x8, 0x41, 0xda, 0xa4, 0xd5, 0x11, 0xc0, 0x2a, 0x61, 0xce, 0x18, 0x58, 0xd2, 0xbe, 0x98, 0x48, 0x96, 0xdd, 0xf5, 0xbc, 0x11, 0x65, 0xb6, 0x12, 0x55, 0xcb, 0xde, 0xb3, 0x78, 0x27, 0x78, 0xdc, 0xcb, 0x72, 0xe6, 0xd7, 0x8a, 0x27, 0xe6, 0x52, 0x1f, 0x10, 0xe0, 0xb8, 0x92, 0x81, 0xb4, 0x3f, 0x1, 0x1d, 0xed, 0x6c, 0xd4, 0xef, 0x12, 0x2f, 0x73, 0xa0, 0xe, 0xf, 0x42, 0x24, 0x20, 0xf, 0x91, 0xbf, 0x6e, 0x44, 0xfb, 0xde, 0xa1, 0x4, 0xa5, 0x7, 0xaa, 0xa0, 0x23, 0xad, 0xd4, 0x4b, 0xaa, 0x73, 0x0, 0xb7, 0xa1, 0x82, 0x87, 0x46, 0x74, 0x9a, 0xf, 0x48, 0x5d, 0xb3, 0xd, 0xa2, 0xb0, 0x96, 0xe5, 0x7d, 0xc8, 0x81, 0x19, 0xf1, 0x36, 0x2b, 0xba, 0xbd, 0x5e, 0xb3, 0xb7, 0x55, 0x12, 0x76, 0x90, 0xc4, 0x3a, 0x1, 0xa7, 0x66, 0xbc, 0x3, 0x90, 0xe0, 0x8, 0xc8, 0x42, 0x29, 0xa5, 0x7b, 0xa2, 0x63, 0x9f, 0x88, 0x26, 0xa, 0x9c, 0x85, 0x6f, 0x7b, 0x2b, 0x0, 0x92, 0x51, 0x4a, 0x81, 0x5c, 0x2a, 0xcb, 0x2a, 0x47, 0x0, 0xb0, 0x2b, 0x8, 0x11, 0x62, 0x20, 0x58, 0x20, 0x47, 0x77, 0x5a, 0xe5, 0x98, 0x43, 0x3f, 0x2, 0xd8, 0xc1, 0xa5, 0x39, 0x40, 0x82, 0xb5, 0xd9, 0xd7, 0x5a, 0x2, 0x59, 0x80, 0x9, 0x8a, 0x0, 0x7f, 0x1, 0x8, 0x44, 0x8, 0x64, 0xe0, 0xe8, 0x6e, 0x4b, 0xb4, 0x87, 0xa6, 0xc4, 0x3d, 0x17, 0x24, 0xa3, 0xa8, 0xc0, 0x32, 0x8a, 0xea, 0x33, 0x67, 0x0, 0x6e, 0xc, 0x94, 0x5e, 0xe2, 0x46, 0x11, 0x3a, 0x0, 0x82, 0x57, 0x1, 0x98, 0xbf, 0xb, 0xa4, 0xf6, 0x55, 0xd4, 0x2a, 0xe1, 0x0, 0x40, 0xf5, 0xf3, 0xa5, 0xd3, 0x16, 0x6a, 0xb4, 0xa7, 0x19, 0xfa, 0x4f, 0x18, 0xe8, 0x2c, 0x34, 0xfb, 0x92, 0x20, 0xbb, 0xf, 0xa3, 0x1d, 0xc0, 0xcd, 0xe7, 0xb7, 0x83, 0xf9, 0xf2, 0x24, 0xd3, 0xd7, 0xaf, 0x40, 0x9a, 0x84, 0x1, 0xf0, 0xfe, 0xf6, 0xee, 0x1d, 0x80, 0x4f, 0xff, 0xc8, 0xdf, 0x63, 0xeb, 0xfd, 0x6f, 0x3, 0x74, 0x35, 0xa7, 0x2a, 0xf0, 0x17, 0xed, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tree_cursor_png[] = { @@ -399,35 +407,35 @@ static const unsigned char tree_cursor_unfocus_png[] = {  };  static const unsigned char tree_title_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x1d, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x64, 0x60, 0x60, 0x30, 0x62, 0xa0, 0x0, 0x30, 0x51, 0xa2, 0x79, 0xd4, 0x80, 0x51, 0x3, 0x46, 0xd, 0x18, 0x4c, 0x6, 0x0, 0x0, 0xf, 0x77, 0x0, 0x52, 0xbd, 0x9b, 0x8a, 0x28, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x1, 0x3, 0x0, 0x0, 0x0, 0x25, 0x3d, 0x6d, 0x22, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x50, 0x4c, 0x54, 0x45, 0x25, 0x23, 0x25, 0x4c, 0x4a, 0x4e, 0x1, 0xf9, 0x98, 0x2e, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1, 0xff, 0x2, 0x2d, 0xde, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xc, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x20, 0xd, 0x0, 0x0, 0x0, 0x30, 0x0, 0x1, 0xc7, 0xaa, 0x85, 0x8e, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char tree_title_pressed_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x1d, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x64, 0x60, 0x60, 0x70, 0x63, 0xa0, 0x0, 0x30, 0x51, 0xa2, 0x79, 0xd4, 0x80, 0x51, 0x3, 0x46, 0xd, 0x18, 0x4c, 0x6, 0x0, 0x0, 0x60, 0x67, 0x0, 0x66, 0xf1, 0xae, 0x47, 0x48, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x1, 0x3, 0x0, 0x0, 0x0, 0x25, 0x3d, 0x6d, 0x22, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x50, 0x4c, 0x54, 0x45, 0x36, 0x34, 0x36, 0x4c, 0x4a, 0x4e, 0x14, 0xd7, 0x5b, 0xf8, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1, 0xff, 0x2, 0x2d, 0xde, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xc, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x20, 0xd, 0x0, 0x0, 0x0, 0x30, 0x0, 0x1, 0xc7, 0xaa, 0x85, 0x8e, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char unchecked_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x9c, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x52, 0xbb, 0xd, 0xc2, 0x30, 0x10, 0x7d, 0x2f, 0xc7, 0xa, 0x84, 0xd6, 0x52, 0xa4, 0x2c, 0xc1, 0x2e, 0xac, 0x41, 0x36, 0xf0, 0x1e, 0x59, 0x86, 0x1d, 0x90, 0x2c, 0x25, 0x65, 0xb2, 0x83, 0xf5, 0x68, 0x30, 0x8a, 0x48, 0x1c, 0x8b, 0x6, 0x1a, 0x5e, 0x75, 0x77, 0xef, 0x73, 0x57, 0x1c, 0xf0, 0x6b, 0x30, 0x15, 0xe3, 0x38, 0x9e, 0x25, 0x75, 0x0, 0x8e, 0xbb, 0x6, 0x72, 0x96, 0xe4, 0x9d, 0x73, 0x37, 0x0, 0xa8, 0x16, 0xdc, 0xb5, 0x64, 0x6, 0x0, 0x49, 0x35, 0xc9, 0x2e, 0xf5, 0x87, 0x25, 0x1, 0x0, 0x31, 0xc6, 0x4b, 0xd3, 0x34, 0xf7, 0x2d, 0x73, 0x8, 0xa1, 0x35, 0xb3, 0x5e, 0xd2, 0x29, 0xcd, 0xaa, 0x77, 0x51, 0xce, 0x9c, 0xe3, 0x56, 0x1, 0x9f, 0xe2, 0x1f, 0xb0, 0x11, 0x10, 0x42, 0x68, 0x73, 0xe2, 0x2d, 0xee, 0xf5, 0x7, 0xcf, 0xf, 0xab, 0xcd, 0xac, 0x1f, 0x86, 0x61, 0x77, 0x2b, 0xc9, 0x69, 0x75, 0x81, 0x24, 0x4f, 0x72, 0x2e, 0x9d, 0x4c, 0x72, 0x32, 0x33, 0x5f, 0xd2, 0x7d, 0xf, 0xf, 0x38, 0xc7, 0x34, 0x81, 0x1c, 0x84, 0x6d, 0x22, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x36, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x38, 0x37, 0x40, 0x20, 0x20, 0x24, 0x20, 0x20, 0x24, 0x38, 0x36, 0x40, 0x20, 0x20, 0x25, 0x1e, 0x1e, 0x22, 0x1f, 0x1f, 0x23, 0x20, 0x20, 0x24, 0x22, 0x22, 0x27, 0x23, 0x23, 0x28, 0x25, 0x25, 0x2a, 0xff, 0xff, 0xff, 0xf7, 0x93, 0x46, 0x7a, 0x0, 0x0, 0x0, 0xb, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x7, 0x27, 0x50, 0x66, 0x68, 0xb4, 0xfa, 0xfb, 0xb4, 0xfa, 0xa4, 0x7f, 0xe1, 0x5a, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x11, 0xe2, 0xb5, 0x3d, 0xba, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x53, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0xb5, 0xcf, 0xc1, 0x12, 0x80, 0x20, 0x8, 0x45, 0x51, 0x5, 0x14, 0xd, 0x5, 0xff, 0xff, 0x6b, 0x23, 0x27, 0x67, 0x9a, 0x6c, 0xdb, 0x5d, 0x9e, 0xd, 0x8f, 0x10, 0xb6, 0x22, 0x20, 0xa5, 0x19, 0x21, 0x44, 0x7, 0xc8, 0x2c, 0x6d, 0x26, 0x9c, 0xc1, 0x1, 0xb9, 0xab, 0xcd, 0xb4, 0x33, 0x3a, 0x90, 0xe8, 0xb8, 0x53, 0x21, 0x87, 0xd4, 0x6c, 0x81, 0xb5, 0xf4, 0x17, 0x6c, 0x67, 0x9f, 0xc3, 0xca, 0x35, 0xc, 0x6a, 0x59, 0xd3, 0x8f, 0xa, 0x5f, 0xcf, 0xbd, 0x3a, 0x1, 0x93, 0xe2, 0x8, 0xa4, 0xb1, 0xeb, 0xd3, 0x56, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char updown_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x2b, 0x8a, 0x3e, 0x7d, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x8b, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xad, 0x90, 0x31, 0xe, 0xc2, 0x50, 0xc, 0x43, 0x5f, 0x2a, 0x55, 0xcc, 0xbd, 0x2, 0x2c, 0xed, 0xd9, 0x60, 0xe1, 0x24, 0x2c, 0xed, 0xc0, 0x54, 0x6e, 0xf5, 0x27, 0x7a, 0x85, 0xce, 0x9d, 0xcc, 0x80, 0xf3, 0x85, 0x58, 0x18, 0x8a, 0xa5, 0x2c, 0xb1, 0x63, 0xc5, 0x86, 0xbf, 0x41, 0x52, 0x27, 0x69, 0xf6, 0x74, 0xb9, 0x8f, 0x24, 0x81, 0x11, 0x38, 0x79, 0xff, 0x4, 0x2e, 0x11, 0xb1, 0x86, 0xc9, 0x9, 0x38, 0x9a, 0xc0, 0xc2, 0x5, 0x38, 0x87, 0xa4, 0x19, 0x18, 0xf2, 0xca, 0x82, 0x74, 0x2b, 0xd, 0xb0, 0x1, 0xa5, 0x5a, 0x46, 0xac, 0x16, 0x16, 0x73, 0x3b, 0x11, 0x92, 0xee, 0xc0, 0x1, 0xb8, 0xda, 0x3e, 0x53, 0xdd, 0x80, 0xad, 0x1, 0x5a, 0xa0, 0x7, 0x46, 0x77, 0x91, 0x91, 0x7b, 0xa0, 0x8d, 0xaf, 0xe, 0x3e, 0x63, 0xbe, 0xbb, 0xf8, 0x55, 0x54, 0x7d, 0xc6, 0xf6, 0xf, 0x4f, 0xad, 0x7a, 0x3f, 0x5e, 0x1d, 0x33, 0x50, 0xfd, 0xb1, 0xf2, 0xd7, 0xa2, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x2b, 0x8a, 0x3e, 0x7d, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xa6, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xa5, 0x90, 0x21, 0xe, 0xc2, 0x50, 0x10, 0x44, 0xdf, 0x27, 0x9b, 0x10, 0x2e, 0xc0, 0x9, 0xd6, 0x81, 0xe3, 0x6, 0xe0, 0xa0, 0xd7, 0x2d, 0xae, 0x18, 0x24, 0x95, 0xc5, 0x7d, 0x51, 0xdd, 0xb, 0x60, 0xf6, 0x67, 0x31, 0xfb, 0x49, 0xc1, 0x20, 0x3a, 0x6a, 0x93, 0x99, 0x9d, 0xcc, 0xc, 0x2c, 0x45, 0xaa, 0x47, 0xce, 0x79, 0x2b, 0x22, 0x2d, 0x80, 0x99, 0x5d, 0x54, 0x75, 0xfa, 0x8, 0x82, 0xec, 0x80, 0x7d, 0xe8, 0x7, 0x33, 0x3b, 0xa9, 0xea, 0x94, 0x82, 0xbc, 0x1, 0x3b, 0x60, 0x8, 0xc1, 0x1e, 0x78, 0x9a, 0xd9, 0x51, 0xc2, 0x76, 0x57, 0xbf, 0x0, 0xaa, 0x9b, 0x88, 0xb4, 0x2b, 0x77, 0x7f, 0x1, 0x7d, 0xb5, 0x54, 0xd5, 0x29, 0x84, 0x7d, 0x70, 0x4b, 0x6b, 0x8e, 0xe3, 0x78, 0x7, 0x36, 0x66, 0x76, 0xae, 0xd5, 0x22, 0xf8, 0x15, 0x78, 0x89, 0xbb, 0xaf, 0x53, 0x4a, 0x7, 0x11, 0xe9, 0x72, 0xce, 0x5f, 0x21, 0xdd, 0xfd, 0x21, 0xa5, 0x94, 0x66, 0x96, 0xba, 0x9b, 0xd5, 0x1c, 0x4a, 0x29, 0xcd, 0xff, 0xa1, 0x7e, 0xa6, 0xbe, 0xc6, 0xd4, 0x9f, 0x3c, 0xcb, 0xf1, 0x6, 0x8e, 0x4e, 0x65, 0x44, 0x6f, 0x74, 0x5c, 0xa1, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char vseparator_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x63, 0x60, 0x18, 0x5, 0xc, 0xc, 0xc, 0xc, 0x0, 0x1, 0x8, 0x0, 0x1, 0x7d, 0x41, 0xa5, 0xce, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x2, 0x3, 0x0, 0x0, 0x0, 0xb9, 0x61, 0x56, 0x18, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0xc, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x73, 0x9b, 0xaa, 0xce, 0xdc, 0xe1, 0xff, 0xff, 0xff, 0x64, 0x6c, 0x1, 0xd2, 0x0, 0x0, 0x0, 0x3, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xb3, 0xb3, 0x67, 0xf6, 0xdb, 0x93, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x3, 0x11, 0xc, 0x4c, 0xf2, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x10, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x80, 0x81, 0xac, 0x95, 0xc, 0x48, 0x0, 0x0, 0xe, 0x79, 0x1, 0x14, 0xa1, 0xc9, 0x59, 0x2, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char vslider_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x69, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd3, 0xa1, 0xe, 0x83, 0x40, 0x14, 0x5, 0xd1, 0x3, 0xa4, 0xc1, 0xa0, 0x30, 0x4d, 0xe8, 0xff, 0xff, 0x1a, 0x18, 0xc0, 0x80, 0x6b, 0xd2, 0x62, 0x56, 0x11, 0x1e, 0xd9, 0x4, 0x83, 0xe0, 0xba, 0x9d, 0x37, 0x19, 0xb7, 0x5c, 0x5c, 0x71, 0xc2, 0x3b, 0xb4, 0xe9, 0x3d, 0xa3, 0xc7, 0x7f, 0x2f, 0x56, 0x41, 0xe0, 0x83, 0x77, 0xba, 0x57, 0x68, 0x50, 0x62, 0xd9, 0x8b, 0x65, 0x10, 0x68, 0x33, 0x59, 0x18, 0x78, 0x65, 0xb2, 0x30, 0x90, 0xbd, 0x27, 0x70, 0xe7, 0xc0, 0x37, 0x93, 0x85, 0x81, 0xf9, 0x80, 0x4d, 0x47, 0x62, 0xf4, 0x17, 0xd6, 0x14, 0xaf, 0xf1, 0xc3, 0x88, 0x21, 0x70, 0xaf, 0x6d, 0x3, 0x2b, 0xaa, 0xc, 0x24, 0xe2, 0x1d, 0xb9, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x54, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x4d, 0x4b, 0x59, 0x34, 0x33, 0x3a, 0x2d, 0x2c, 0x32, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x4d, 0x4b, 0x59, 0x3f, 0x3e, 0x49, 0x2a, 0x29, 0x2f, 0x20, 0x20, 0x24, 0x3f, 0x3e, 0x49, 0x3f, 0x3e, 0x49, 0x1f, 0x1f, 0x24, 0x40, 0x3e, 0x4a, 0x20, 0x20, 0x24, 0x34, 0x33, 0x3a, 0x20, 0x20, 0x25, 0x22, 0x22, 0x27, 0x23, 0x23, 0x28, 0x25, 0x25, 0x2a, 0x1e, 0x1e, 0x23, 0x23, 0x23, 0x27, 0x2d, 0x2c, 0x32, 0x1f, 0x1f, 0x23, 0xff, 0xff, 0xff, 0x3, 0x35, 0xf1, 0x5f, 0x0, 0x0, 0x0, 0x13, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1a, 0x40, 0x5d, 0x19, 0x28, 0x96, 0xf0, 0xfd, 0x94, 0x95, 0xfc, 0x93, 0xfc, 0xc0, 0x0, 0xb4, 0xa, 0x5f, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1b, 0x2, 0x60, 0xd4, 0xa4, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x64, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x9d, 0xcf, 0x39, 0x2, 0x80, 0x20, 0x10, 0x3, 0xc0, 0xe5, 0x90, 0x43, 0x50, 0x94, 0x1b, 0xfe, 0xff, 0x50, 0x5, 0x69, 0x94, 0xce, 0x94, 0x53, 0xec, 0x26, 0x0, 0x0, 0x88, 0x2e, 0x8c, 0x73, 0x26, 0x28, 0x82, 0x1e, 0x44, 0xe5, 0xaa, 0xb4, 0x56, 0x9b, 0x1c, 0x82, 0xc4, 0x6e, 0x9c, 0xf7, 0xce, 0x1c, 0x62, 0x0, 0x53, 0x2e, 0xc4, 0x18, 0x9c, 0x62, 0x3, 0xb8, 0xf6, 0xf1, 0x8e, 0x3f, 0xf9, 0x3, 0xd8, 0xa6, 0xdc, 0x20, 0x27, 0x8b, 0x3b, 0x90, 0x52, 0x43, 0x83, 0x50, 0xb, 0xf9, 0xb, 0xd3, 0xd1, 0xe9, 0xed, 0x5c, 0x6c, 0xaa, 0xfe, 0x1d, 0xf7, 0x9e, 0x7f, 0x1, 0x89, 0x5c, 0xa, 0x6b, 0x1f, 0xe5, 0xca, 0x60, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char vslider_grabber_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xfd, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xad, 0x92, 0x31, 0x4e, 0xc3, 0x30, 0x18, 0x46, 0x9f, 0x7f, 0xc9, 0xde, 0x60, 0x83, 0xb, 0x50, 0xc8, 0x10, 0x45, 0x96, 0x72, 0x8d, 0x76, 0x84, 0x1e, 0x20, 0x7b, 0xb9, 0x4c, 0x66, 0xe, 0x80, 0x54, 0xb1, 0xb4, 0x5c, 0x23, 0x52, 0x32, 0x56, 0xf4, 0x2, 0x85, 0x85, 0x76, 0x8c, 0x94, 0x9f, 0x25, 0x89, 0xa2, 0x94, 0x56, 0xb5, 0xe0, 0x1b, 0x3f, 0xe9, 0xbd, 0xcf, 0xb6, 0xc, 0x7f, 0x8c, 0x19, 0x17, 0x65, 0x59, 0xde, 0x8a, 0xc8, 0x33, 0x30, 0x5, 0xee, 0x1, 0x54, 0x75, 0x3, 0xbc, 0xab, 0x6a, 0xee, 0xbd, 0xdf, 0x9d, 0x14, 0x54, 0x55, 0xf5, 0x64, 0x8c, 0x79, 0x1, 0xae, 0x4e, 0xc, 0x1e, 0x44, 0x24, 0x8b, 0xe3, 0x78, 0x79, 0x24, 0x68, 0xe1, 0xd7, 0xdf, 0x4e, 0x35, 0x8a, 0x8a, 0xc8, 0xbc, 0x93, 0x98, 0xc1, 0xb1, 0x3f, 0xce, 0x2c, 0x8f, 0xb3, 0xaf, 0xeb, 0x7a, 0x92, 0xa6, 0xe9, 0xa7, 0x0, 0xb4, 0x77, 0xbe, 0x14, 0x6, 0xb8, 0x76, 0xce, 0x2d, 0x0, 0xa4, 0x2d, 0x66, 0x1, 0x30, 0x0, 0x4d, 0xd3, 0xcc, 0x86, 0x82, 0xbb, 0x50, 0x81, 0x31, 0x66, 0x32, 0x14, 0x68, 0xa8, 0xa0, 0x63, 0x3a, 0xc1, 0x36, 0x98, 0x56, 0xdd, 0xf6, 0x2, 0x55, 0x5d, 0x87, 0xa, 0x44, 0x64, 0x35, 0x14, 0xe4, 0xc0, 0x21, 0x80, 0xff, 0xb6, 0xd6, 0xe6, 0xbd, 0xc0, 0x7b, 0xbf, 0x13, 0x91, 0x8c, 0xcb, 0xde, 0x42, 0x81, 0x2c, 0x8a, 0xa2, 0xaf, 0x5e, 0x0, 0x10, 0xc7, 0xf1, 0x52, 0x44, 0xe6, 0xc0, 0xfe, 0xdc, 0x32, 0xf0, 0x98, 0x24, 0xc9, 0x5b, 0x57, 0x1c, 0x7d, 0xdb, 0xa2, 0x28, 0x6e, 0x9c, 0x73, 0xb, 0x55, 0x9d, 0x2, 0xf, 0x6d, 0xbd, 0x31, 0xc6, 0xac, 0xad, 0xb5, 0x79, 0xb7, 0xfc, 0x6f, 0xf9, 0x1, 0x3c, 0x90, 0x4c, 0xcc, 0x74, 0x25, 0x3a, 0xc1, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x4, 0x0, 0x0, 0x0, 0xb5, 0xfa, 0x37, 0xea, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xb7, 0xff, 0x88, 0x5, 0x1d, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe1, 0x1, 0x12, 0x1, 0x36, 0x8, 0x50, 0xb9, 0xa7, 0x53, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0xf6, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0xbd, 0x90, 0xb1, 0x4a, 0x42, 0x51, 0x0, 0x86, 0xbf, 0x73, 0x8e, 0x71, 0xe5, 0x9a, 0x5c, 0x41, 0xd0, 0x66, 0x6b, 0x33, 0x1c, 0x7c, 0x80, 0xa0, 0xa5, 0x17, 0x8, 0xa2, 0x2d, 0x84, 0xf0, 0x1, 0xa2, 0x25, 0xf1, 0x9, 0x9a, 0x1c, 0xda, 0x5b, 0xb2, 0x47, 0xa8, 0xa5, 0xc1, 0xa0, 0x51, 0x88, 0xa2, 0x29, 0xa, 0xc1, 0x84, 0x8, 0x43, 0xf4, 0x96, 0x17, 0xcf, 0xed, 0xde, 0x73, 0x9c, 0xcc, 0x5c, 0xda, 0xea, 0x9f, 0x3f, 0xfe, 0x9f, 0xef, 0x87, 0x3f, 0x8f, 0x0, 0x40, 0xe1, 0xe2, 0x91, 0x42, 0x10, 0x32, 0xe6, 0x3, 0x8d, 0xc1, 0xce, 0x1, 0x45, 0xb6, 0xba, 0xbb, 0xba, 0xed, 0x95, 0x8c, 0xd0, 0x7d, 0xff, 0xe1, 0xee, 0xe2, 0xb6, 0xdd, 0x79, 0x61, 0xc4, 0xd7, 0xc, 0x48, 0x57, 0x2b, 0xeb, 0xb5, 0x28, 0xaf, 0x1, 0xc5, 0x12, 0x4e, 0xac, 0x7b, 0x6f, 0x57, 0x27, 0x8d, 0xcf, 0xe, 0x1, 0x56, 0x1, 0xb9, 0x9d, 0xba, 0x28, 0x6, 0x18, 0xc, 0x31, 0x21, 0x5a, 0xda, 0x4c, 0xb6, 0xbc, 0xb9, 0x35, 0x7c, 0xea, 0xbd, 0x13, 0x4a, 0x20, 0xe5, 0x95, 0xf4, 0x6c, 0x12, 0x30, 0x84, 0xf8, 0x44, 0x6b, 0xfb, 0xcd, 0x83, 0x3d, 0x1c, 0xf9, 0x8b, 0x80, 0x4a, 0xba, 0x88, 0x4, 0x30, 0x1e, 0xdd, 0x3b, 0x1b, 0xf1, 0x77, 0x87, 0x24, 0x81, 0x8b, 0x79, 0x3e, 0x3b, 0x6a, 0x5d, 0x33, 0x51, 0x80, 0x2d, 0x38, 0x2b, 0x65, 0xb5, 0x6c, 0x91, 0x28, 0x92, 0xa4, 0xad, 0xec, 0x76, 0xcf, 0x8f, 0xf, 0x1f, 0xdb, 0xc, 0x31, 0xb, 0x9a, 0xb1, 0xd0, 0x3, 0xfb, 0xda, 0x3a, 0xbd, 0xbc, 0x89, 0xfa, 0xf8, 0x73, 0xcd, 0x9f, 0x47, 0x45, 0x4, 0xf8, 0x4, 0x18, 0xfe, 0x2f, 0x53, 0x8, 0x62, 0x5c, 0xcf, 0x1f, 0x5f, 0xcb, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char vslider_grabber_hl_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0xf1, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xad, 0x92, 0x31, 0x4e, 0x2, 0x61, 0x10, 0x85, 0xbf, 0x37, 0xc6, 0x52, 0x3b, 0xbd, 0x0, 0xe8, 0x65, 0xa0, 0x54, 0xe, 0x40, 0xaf, 0x15, 0x64, 0xa3, 0x85, 0xf9, 0x2b, 0x4d, 0xa4, 0xdc, 0xda, 0x3, 0x98, 0x10, 0x1b, 0xf1, 0x32, 0x44, 0x2e, 0x0, 0x34, 0x42, 0xa9, 0x61, 0x2c, 0xfe, 0xdd, 0x65, 0xb3, 0xa, 0xba, 0xe8, 0xeb, 0x66, 0x92, 0xf7, 0xbd, 0x37, 0xc9, 0xc0, 0x1f, 0xa5, 0xea, 0x22, 0xf8, 0xe0, 0x78, 0xc5, 0xea, 0x12, 0xd4, 0x2, 0x4e, 0xe2, 0xd6, 0xc7, 0x42, 0x2f, 0x42, 0x69, 0x50, 0x7f, 0xba, 0x11, 0x70, 0xe3, 0xf7, 0xe7, 0xc0, 0x3, 0x70, 0xb0, 0x21, 0x70, 0x69, 0x78, 0x37, 0x28, 0x19, 0x7e, 0x1, 0x64, 0xe6, 0xc7, 0xef, 0x5a, 0x55, 0xe4, 0x86, 0x77, 0x72, 0x88, 0xd6, 0xb5, 0xfd, 0x75, 0x4b, 0x72, 0x55, 0x8b, 0x77, 0x3e, 0x9a, 0x77, 0xba, 0x9e, 0x19, 0x40, 0xbc, 0xf9, 0xd7, 0x66, 0x80, 0xc3, 0x7d, 0xf6, 0x2e, 0x0, 0x2c, 0xce, 0xd6, 0xae, 0x61, 0xce, 0xd5, 0x2e, 0x1, 0x68, 0xd4, 0xf7, 0xab, 0x59, 0x2, 0xb8, 0xef, 0xd0, 0xc0, 0xcb, 0xd, 0x26, 0x3b, 0xf8, 0x27, 0x5, 0x40, 0x30, 0xaa, 0x6b, 0x17, 0x7a, 0x2e, 0x1, 0x94, 0x2, 0xcb, 0x1a, 0xfe, 0x37, 0x61, 0x69, 0x1, 0x8, 0xea, 0x4f, 0xd, 0xef, 0x92, 0xdd, 0xf5, 0x83, 0x3c, 0x7e, 0x63, 0x6f, 0x5e, 0x0, 0x22, 0x24, 0x19, 0x1a, 0xde, 0x1, 0x16, 0xdb, 0x92, 0xd, 0x3f, 0xb, 0x4a, 0x9e, 0xd6, 0xa7, 0x54, 0x74, 0xe5, 0xb7, 0x47, 0xf1, 0x49, 0xd4, 0x2, 0x9d, 0x66, 0xa1, 0x63, 0xc1, 0x48, 0x58, 0x9a, 0x27, 0xff, 0x9b, 0x3e, 0x1, 0x5e, 0x62, 0x48, 0x81, 0x2e, 0xbf, 0x88, 0xea, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x3, 0x0, 0x0, 0x0, 0x28, 0x2d, 0xf, 0x53, 0x0, 0x0, 0x0, 0xc3, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x2a, 0x29, 0x3a, 0x69, 0x69, 0x5b, 0xa6, 0xa5, 0x61, 0xb3, 0xbc, 0x63, 0xb7, 0xc8, 0x65, 0xbb, 0xca, 0x60, 0xaf, 0xb1, 0x48, 0x83, 0x83, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xf, 0xf, 0x55, 0x9b, 0x9a, 0x60, 0xb2, 0xbd, 0x5e, 0xb1, 0xcd, 0x61, 0xb3, 0xc2, 0x0, 0x0, 0x0, 0x27, 0x48, 0x47, 0x62, 0xb4, 0xbd, 0x51, 0x93, 0x92, 0x68, 0xc0, 0xcf, 0x0, 0x0, 0x0, 0x56, 0x9d, 0x9c, 0x68, 0xc1, 0xcf, 0x2d, 0x52, 0x52, 0x63, 0xb7, 0xbf, 0x52, 0x96, 0x95, 0x62, 0xb3, 0xbf, 0x5e, 0xb0, 0xcd, 0x0, 0x0, 0x0, 0x3, 0x5, 0x5, 0x36, 0x63, 0x63, 0x63, 0xb4, 0xb6, 0x60, 0xb1, 0xbc, 0x63, 0xb7, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x55, 0xa3, 0xc8, 0x4f, 0x98, 0xc4, 0x4b, 0x93, 0xc2, 0x4c, 0x94, 0xc2, 0x54, 0xa2, 0xc8, 0x5a, 0xab, 0xcb, 0x4e, 0x97, 0xc4, 0x49, 0x8f, 0xc0, 0x47, 0x8c, 0xbf, 0x48, 0x8e, 0xc0, 0x52, 0x9e, 0xc6, 0x51, 0x9d, 0xc6, 0x5a, 0xac, 0xcc, 0x53, 0x9f, 0xc7, 0x4d, 0x96, 0xc3, 0x4b, 0x92, 0xc2, 0xff, 0xff, 0xff, 0x76, 0xbd, 0x27, 0x7a, 0x0, 0x0, 0x0, 0x1, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x40, 0xe6, 0xd8, 0x66, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x0, 0x88, 0x5, 0x1d, 0x48, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe1, 0x1, 0x12, 0x1, 0x36, 0x11, 0x34, 0xd2, 0xf, 0x93, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x48, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x63, 0x60, 0xa0, 0x12, 0x10, 0x14, 0xe0, 0xe7, 0xe3, 0x45, 0xe2, 0x4b, 0x9a, 0x18, 0x1b, 0x19, 0x1a, 0x48, 0x88, 0x8b, 0xc1, 0xe4, 0x4d, 0x2c, 0x2d, 0x80, 0xc0, 0xdc, 0xcc, 0x54, 0x6, 0x22, 0x20, 0x60, 0x6c, 0x1, 0x1, 0xe6, 0x56, 0x72, 0x68, 0x2, 0xd6, 0x8a, 0xa8, 0x5a, 0x6c, 0x94, 0x11, 0x86, 0xda, 0xdb, 0xd9, 0xaa, 0xa9, 0xaa, 0x20, 0x59, 0xab, 0xa3, 0xad, 0xc5, 0x40, 0x3d, 0x0, 0x0, 0xbf, 0x8e, 0xc, 0xed, 0xed, 0xc7, 0x67, 0x72, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char vslider_tick_png[] = { @@ -435,15 +443,15 @@ static const unsigned char vslider_tick_png[] = {  };  static const unsigned char vsplit_bg_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0xc4, 0xf, 0xbe, 0x8b, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x15, 0x49, 0x44, 0x41, 0x54, 0x18, 0x95, 0x63, 0x64, 0x60, 0x60, 0x90, 0x64, 0xc0, 0x3, 0x98, 0xf0, 0x49, 0xe, 0x1f, 0x5, 0x0, 0x22, 0xac, 0x0, 0x29, 0x2d, 0xd1, 0x16, 0xa4, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x1, 0x3, 0x0, 0x0, 0x0, 0xfe, 0xc1, 0x2c, 0xc8, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x50, 0x4c, 0x54, 0x45, 0x27, 0x27, 0x29, 0xff, 0xff, 0xff, 0x11, 0xab, 0xb9, 0xf3, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x1, 0xff, 0x2, 0x2d, 0xde, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0xb, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x40, 0x5, 0x0, 0x0, 0x10, 0x0, 0x1, 0xa1, 0xc5, 0x21, 0xc1, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char vsplitter_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x8, 0x8, 0x6, 0x0, 0x0, 0x0, 0x49, 0x62, 0xf9, 0xdf, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x2f, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xce, 0x41, 0x1, 0x0, 0x20, 0x0, 0x2, 0xb1, 0xc3, 0x14, 0x86, 0x32, 0xae, 0xa1, 0x6c, 0x81, 0x2d, 0xe4, 0x21, 0x4b, 0x30, 0xa8, 0xfa, 0x9a, 0x0, 0x6c, 0x2f, 0x60, 0x86, 0x2f, 0xaf, 0x1d, 0x49, 0x7b, 0xa4, 0x17, 0x55, 0x15, 0x75, 0x1, 0x7e, 0xa6, 0x5, 0x4, 0x90, 0x92, 0x89, 0x73, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x6c, 0x9, 0xa6, 0x3, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x0, 0x76, 0x93, 0xcd, 0x38, 0x0, 0x0, 0x0, 0x2, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x87, 0x8f, 0xcc, 0xbf, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x1f, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x63, 0x60, 0xa0, 0x10, 0x30, 0x33, 0x2c, 0x10, 0x3d, 0x47, 0x9, 0x66, 0x66, 0x10, 0xbd, 0xf6, 0x98, 0x22, 0x3c, 0xe0, 0x60, 0x18, 0x84, 0x1, 0x0, 0x59, 0x34, 0x6a, 0x2d, 0x64, 0xeb, 0x72, 0x24, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  static const unsigned char window_resizer_png[] = { -	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x6, 0x62, 0x4b, 0x47, 0x44, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x0, 0x0, 0x0, 0x3f, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x63, 0x60, 0x18, 0x32, 0xe0, 0xff, 0xff, 0xff, 0x29, 0x14, 0x69, 0xfe, 0xff, 0xff, 0xff, 0x9, 0x6c, 0x72, 0x4c, 0x44, 0xda, 0x8c, 0xd3, 0x76, 0xbc, 0x6, 0x10, 0xd2, 0x8c, 0xd7, 0x0, 0x62, 0x34, 0xe3, 0x34, 0x80, 0x58, 0xcd, 0x58, 0xd, 0x20, 0x45, 0x33, 0x86, 0x1, 0xa4, 0x6a, 0x46, 0x31, 0x80, 0x1c, 0xcd, 0xa3, 0x80, 0x4a, 0x0, 0x0, 0x6, 0xc5, 0x24, 0xf9, 0xe8, 0x3d, 0x88, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x8, 0x6, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, 0x61, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x8, 0x19, 0x11, 0x33, 0x13, 0xaa, 0xc0, 0xf, 0x5f, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x2f, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x63, 0x60, 0x18, 0x5, 0x24, 0x81, 0x17, 0x2f, 0x5e, 0xf4, 0xa3, 0x8b, 0x31, 0x91, 0xa2, 0xb9, 0xb9, 0xb9, 0x99, 0x7c, 0x9b, 0xb3, 0xb3, 0xb3, 0xfb, 0x87, 0x81, 0x66, 0x6c, 0x81, 0x48, 0x92, 0x66, 0xa2, 0x5c, 0x43, 0x91, 0xe6, 0x11, 0xa, 0x0, 0x73, 0x5b, 0x34, 0x19, 0x10, 0xa0, 0xb6, 0x7d, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82  };  // shaders block diff --git a/scene/resources/default_theme/toggle_off.png b/scene/resources/default_theme/toggle_off.png Binary files differindex 5537d00a4a..71cd64b001 100644 --- a/scene/resources/default_theme/toggle_off.png +++ b/scene/resources/default_theme/toggle_off.png diff --git a/scene/resources/default_theme/toggle_on.png b/scene/resources/default_theme/toggle_on.png Binary files differindex 77e4601205..6ea1b589c7 100644 --- a/scene/resources/default_theme/toggle_on.png +++ b/scene/resources/default_theme/toggle_on.png diff --git a/scene/resources/default_theme/tool_button_pressed.png b/scene/resources/default_theme/tool_button_pressed.png Binary files differnew file mode 100644 index 0000000000..bcf70b486d --- /dev/null +++ b/scene/resources/default_theme/tool_button_pressed.png diff --git a/scene/resources/default_theme/tooltip_bg.png b/scene/resources/default_theme/tooltip_bg.png Binary files differindex 7ca3567788..eca0675a98 100644 --- a/scene/resources/default_theme/tooltip_bg.png +++ b/scene/resources/default_theme/tooltip_bg.png diff --git a/scene/resources/default_theme/tree_bg.png b/scene/resources/default_theme/tree_bg.png Binary files differindex 0be4f628a9..839a6a272a 100644 --- a/scene/resources/default_theme/tree_bg.png +++ b/scene/resources/default_theme/tree_bg.png diff --git a/scene/resources/default_theme/tree_bg_focus.png b/scene/resources/default_theme/tree_bg_focus.png Binary files differnew file mode 100644 index 0000000000..692cf71926 --- /dev/null +++ b/scene/resources/default_theme/tree_bg_focus.png diff --git a/scene/resources/default_theme/tree_title.png b/scene/resources/default_theme/tree_title.png Binary files differindex 7f81acd89e..b0ddcffbbe 100644 --- a/scene/resources/default_theme/tree_title.png +++ b/scene/resources/default_theme/tree_title.png diff --git a/scene/resources/default_theme/tree_title_pressed.png b/scene/resources/default_theme/tree_title_pressed.png Binary files differindex b09604015b..746d10039e 100644 --- a/scene/resources/default_theme/tree_title_pressed.png +++ b/scene/resources/default_theme/tree_title_pressed.png diff --git a/scene/resources/default_theme/unchecked.png b/scene/resources/default_theme/unchecked.png Binary files differindex 8341cdc643..d6f790cbc2 100644 --- a/scene/resources/default_theme/unchecked.png +++ b/scene/resources/default_theme/unchecked.png diff --git a/scene/resources/default_theme/updown.png b/scene/resources/default_theme/updown.png Binary files differindex efcb04fde6..916284a3cf 100644 --- a/scene/resources/default_theme/updown.png +++ b/scene/resources/default_theme/updown.png diff --git a/scene/resources/default_theme/vseparator.png b/scene/resources/default_theme/vseparator.png Binary files differindex 88165ea6b2..498768c05b 100644 --- a/scene/resources/default_theme/vseparator.png +++ b/scene/resources/default_theme/vseparator.png diff --git a/scene/resources/default_theme/vslider_bg.png b/scene/resources/default_theme/vslider_bg.png Binary files differindex b88582ba36..8d9ead3c5a 100644 --- a/scene/resources/default_theme/vslider_bg.png +++ b/scene/resources/default_theme/vslider_bg.png diff --git a/scene/resources/default_theme/vslider_grabber.png b/scene/resources/default_theme/vslider_grabber.png Binary files differindex c8be897e07..afc490be45 100644 --- a/scene/resources/default_theme/vslider_grabber.png +++ b/scene/resources/default_theme/vslider_grabber.png diff --git a/scene/resources/default_theme/vslider_grabber_hl.png b/scene/resources/default_theme/vslider_grabber_hl.png Binary files differindex 1639776a28..548972e115 100644 --- a/scene/resources/default_theme/vslider_grabber_hl.png +++ b/scene/resources/default_theme/vslider_grabber_hl.png diff --git a/scene/resources/default_theme/vsplit_bg.png b/scene/resources/default_theme/vsplit_bg.png Binary files differindex 0c29b1e35c..7dd1d48b29 100644 --- a/scene/resources/default_theme/vsplit_bg.png +++ b/scene/resources/default_theme/vsplit_bg.png diff --git a/scene/resources/default_theme/vsplitter.png b/scene/resources/default_theme/vsplitter.png Binary files differindex 56fb20bc3f..ec5542bf69 100644 --- a/scene/resources/default_theme/vsplitter.png +++ b/scene/resources/default_theme/vsplitter.png diff --git a/scene/resources/default_theme/window_resizer.png b/scene/resources/default_theme/window_resizer.png Binary files differindex baa3f30e5b..ed51968c4e 100644 --- a/scene/resources/default_theme/window_resizer.png +++ b/scene/resources/default_theme/window_resizer.png diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index ab3e143e60..4846d84b33 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -982,10 +982,15 @@ void Mesh::_bind_methods() {  	ClassDB::bind_method(D_METHOD("surface_get_material:Material", "surf_idx"), &Mesh::surface_get_material);  	ClassDB::bind_method(D_METHOD("surface_set_name", "surf_idx", "name"), &Mesh::surface_set_name);  	ClassDB::bind_method(D_METHOD("surface_get_name", "surf_idx"), &Mesh::surface_get_name); +	ClassDB::bind_method(D_METHOD("create_trimesh_shape:Shape"), &Mesh::create_trimesh_shape); +	ClassDB::bind_method(D_METHOD("create_convex_shape:Shape"), &Mesh::create_convex_shape); +	ClassDB::bind_method(D_METHOD("create_outline:Mesh", "margin"), &Mesh::create_outline);  	ClassDB::bind_method(D_METHOD("center_geometry"), &Mesh::center_geometry);  	ClassDB::set_method_flags(get_class_static(), _scs_create("center_geometry"), METHOD_FLAGS_DEFAULT | METHOD_FLAG_EDITOR);  	ClassDB::bind_method(D_METHOD("regen_normalmaps"), &Mesh::regen_normalmaps);  	ClassDB::set_method_flags(get_class_static(), _scs_create("regen_normalmaps"), METHOD_FLAGS_DEFAULT | METHOD_FLAG_EDITOR); +	ClassDB::bind_method(D_METHOD("get_faces"), &Mesh::get_faces); +	ClassDB::bind_method(D_METHOD("generate_triangle_mesh:TriangleMesh"), &Mesh::generate_triangle_mesh);  	ClassDB::bind_method(D_METHOD("set_custom_aabb", "aabb"), &Mesh::set_custom_aabb);  	ClassDB::bind_method(D_METHOD("get_custom_aabb"), &Mesh::get_custom_aabb); diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index 13529c8572..b665de2de1 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -297,6 +297,15 @@ int StyleBoxFlat::get_border_size() const {  	return border_size;  } +void StyleBoxFlat::_set_additional_border_size(Margin p_margin, int p_size) { +	additional_border_size[p_margin] = p_size; +	emit_changed(); +} + +int StyleBoxFlat::_get_additional_border_size(Margin p_margin) const { +	return additional_border_size[p_margin]; +} +  void StyleBoxFlat::set_border_blend(bool p_blend) {  	blend = p_blend; @@ -357,6 +366,12 @@ void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const {  	if (draw_center)  		vs->canvas_item_add_rect(p_canvas_item, Rect2(r.pos, r.size), bg_color); + +	Rect2i r_add = p_rect; +	vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.pos.x - additional_border_size[MARGIN_LEFT], r_add.pos.y - additional_border_size[MARGIN_TOP]), Size2(r_add.size.width + additional_border_size[MARGIN_LEFT] + additional_border_size[MARGIN_RIGHT], additional_border_size[MARGIN_TOP])), light_color); +	vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.pos.x - additional_border_size[MARGIN_LEFT], r_add.pos.y), Size2(additional_border_size[MARGIN_LEFT], r_add.size.height)), light_color); +	vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.pos.x + r_add.size.width, r_add.pos.y), Size2(additional_border_size[MARGIN_RIGHT], r_add.size.height)), dark_color); +	vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.pos.x - additional_border_size[MARGIN_LEFT], r_add.pos.y + r_add.size.height), Size2(r_add.size.width + additional_border_size[MARGIN_LEFT] + additional_border_size[MARGIN_RIGHT], additional_border_size[MARGIN_BOTTOM])), dark_color);  }  float StyleBoxFlat::get_style_margin(Margin p_margin) const { @@ -394,6 +409,10 @@ StyleBoxFlat::StyleBoxFlat() {  	draw_center = true;  	blend = true;  	border_size = 0; +	additional_border_size[0] = 0; +	additional_border_size[1] = 0; +	additional_border_size[2] = 0; +	additional_border_size[3] = 0;  }  StyleBoxFlat::~StyleBoxFlat() {  } diff --git a/scene/resources/style_box.h b/scene/resources/style_box.h index e14a536879..bbb2444bd7 100644 --- a/scene/resources/style_box.h +++ b/scene/resources/style_box.h @@ -123,6 +123,7 @@ class StyleBoxFlat : public StyleBox {  	Color dark_color;  	int border_size; +	int additional_border_size[4];  	bool draw_center;  	bool blend; @@ -143,6 +144,9 @@ public:  	void set_border_size(int p_size);  	int get_border_size() const; +	void _set_additional_border_size(Margin p_margin, int p_size); +	int _get_additional_border_size(Margin p_margin) const; +  	void set_border_blend(bool p_blend);  	bool get_border_blend() const;  |