diff options
273 files changed, 4480 insertions, 882 deletions
diff --git a/.gitignore b/.gitignore index 4aee83c13f..571af848ac 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ tools/editor/register_exporters.cpp tools/editor/doc_data_compressed.h tools/editor/editor_icons.cpp -fpic +.fscache # Android specific platform/android/java/local.properties @@ -258,3 +259,4 @@ Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ logo.h +*.autosave diff --git a/SConstruct b/SConstruct index b9f2b7e2c4..c68ca3989f 100644 --- a/SConstruct +++ b/SConstruct @@ -116,6 +116,7 @@ opts.Add("CFLAGS", "Custom flags for the C compiler"); opts.Add("LINKFLAGS", "Custom flags for the linker"); opts.Add('disable_3d', 'Disable 3D nodes for smaller executable (yes/no)', "no") opts.Add('disable_advanced_gui', 'Disable advance 3D gui nodes and behaviors (yes/no)', "no") +opts.Add('colored', 'Enable colored output for the compilation (yes/no)', 'no') # add platform specific options @@ -299,6 +300,9 @@ if selected_platform in platform_list: if (env['xml']=='yes'): env.Append(CPPFLAGS=['-DXML_ENABLED']) + if (env['colored']=='yes'): + methods.colored(sys,env) + Export('env') diff --git a/core/object_type_db.cpp b/core/object_type_db.cpp index f7917b7418..1047d7eba5 100644 --- a/core/object_type_db.cpp +++ b/core/object_type_db.cpp @@ -847,8 +847,15 @@ void ObjectTypeDB::set_type_enabled(StringName p_type,bool p_enable) { bool ObjectTypeDB::is_type_enabled(StringName p_type) { - ERR_FAIL_COND_V(!types.has(p_type),false); - return !types[p_type].disabled; + TypeInfo *ti=types.getptr(p_type); + if (!ti || !ti->creation_func) { + if (compat_types.has(p_type)) { + ti=types.getptr(compat_types[p_type]); + } + } + + ERR_FAIL_COND_V(!ti,false); + return !ti->disabled; } StringName ObjectTypeDB::get_category(const StringName& p_node) { diff --git a/core/os/input.cpp b/core/os/input.cpp index a827e75896..5d4b3a834d 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -62,6 +62,8 @@ void Input::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_mouse_mode","mode"),&Input::set_mouse_mode); ObjectTypeDB::bind_method(_MD("get_mouse_mode"),&Input::get_mouse_mode); ObjectTypeDB::bind_method(_MD("warp_mouse_pos","to"),&Input::warp_mouse_pos); + ObjectTypeDB::bind_method(_MD("action_press"),&Input::action_press); + ObjectTypeDB::bind_method(_MD("action_release"),&Input::action_release); BIND_CONSTANT( MOUSE_MODE_VISIBLE ); BIND_CONSTANT( MOUSE_MODE_HIDDEN ); diff --git a/core/variant_op.cpp b/core/variant_op.cpp index ec43b1275c..fbb5e2631d 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -1687,6 +1687,19 @@ void Variant::set(const Variant& p_index, const Variant& p_value, bool *r_valid) return; } } + if (ie.type == InputEvent::ACTION) { + + if (str =="action") { + valid=true; + ie.action.action=p_value; + return; + } + else if (str == "pressed") { + valid=true; + ie.action.pressed=p_value; + return; + } + } } break; case DICTIONARY: { @@ -2365,6 +2378,17 @@ Variant Variant::get(const Variant& p_index, bool *r_valid) const { return Vector2(ie.screen_drag.speed_x,ie.screen_drag.speed_y); } } + if (ie.type == InputEvent::ACTION) { + + if (str =="action") { + valid=true; + return ie.action.action; + } + else if (str == "pressed") { + valid=true; + ie.action.pressed; + } + } } break; case DICTIONARY: { diff --git a/demos/2d/hexamap/.fscache b/demos/2d/hexamap/.fscache deleted file mode 100644 index 60aa69b645..0000000000 --- a/demos/2d/hexamap/.fscache +++ /dev/null @@ -1,33 +0,0 @@ -::res://::1412302385 -WWT-01.png::ImageTexture::1412126473:: -WWT-02.png::ImageTexture::1412126474:: -WWT-03.png::ImageTexture::1412126474:: -WWT-04.png::ImageTexture::1412126474:: -WWT-05.png::ImageTexture::1412126474:: -WWT-06.png::ImageTexture::1412126474:: -WWT-07.png::ImageTexture::1412126474:: -WWT-08.png::ImageTexture::1412126474:: -WWT-09.png::ImageTexture::1412126474:: -WWT-10.png::ImageTexture::1412126474:: -WWT-11.png::ImageTexture::1412126475:: -WWT-12.png::ImageTexture::1412126475:: -WWT-13.png::ImageTexture::1412126475:: -WWT-14.png::ImageTexture::1412126475:: -WWT-15.png::ImageTexture::1412126475:: -WWT-16.png::ImageTexture::1412126475:: -WWT-17.png::ImageTexture::1412126475:: -WWT-18.png::ImageTexture::1412126475:: -WWT-19.png::ImageTexture::1412126476:: -WWT-20.png::ImageTexture::1412126476:: -WWT-21.png::ImageTexture::1412126476:: -WWT-22.png::ImageTexture::1412126476:: -WWT-23.png::ImageTexture::1412126476:: -WWT-24.png::ImageTexture::1412126476:: -WWT-25.png::ImageTexture::1412126476:: -WWT-26.png::ImageTexture::1412126476:: -map.scn::PackedScene::1412127344:: -tiles.scn::PackedScene::1412126994:: -tileset.res::TileSet::1412127001:: -troll.gd::GDScript::1412302377:: -troll.png::ImageTexture::1412302385:: -troll.scn::PackedScene::1412302380:: diff --git a/demos/2d/kinematic_char/colworld.scn b/demos/2d/kinematic_char/colworld.scn Binary files differindex b3a0a1f168..7b79a1d887 100644 --- a/demos/2d/kinematic_char/colworld.scn +++ b/demos/2d/kinematic_char/colworld.scn diff --git a/demos/2d/kinematic_char/player.gd b/demos/2d/kinematic_char/player.gd index 9cff0269e8..e8b3cc8d00 100644 --- a/demos/2d/kinematic_char/player.gd +++ b/demos/2d/kinematic_char/player.gd @@ -15,6 +15,7 @@ const GRAVITY = 500.0 #consider "floor". const FLOOR_ANGLE_TOLERANCE = 40 const WALK_FORCE = 600 +const WALK_MIN_SPEED=10 const WALK_MAX_SPEED = 200 const STOP_FORCE = 1300 const JUMP_SPEED = 200 @@ -40,12 +41,12 @@ func _fixed_process(delta): var stop=true if (walk_left): - if (velocity.x<=0 and velocity.x > -WALK_MAX_SPEED): + if (velocity.x<=WALK_MIN_SPEED and velocity.x > -WALK_MAX_SPEED): force.x-=WALK_FORCE stop=false elif (walk_right): - if (velocity.x>=0 and velocity.x < WALK_MAX_SPEED): + if (velocity.x>=-WALK_MIN_SPEED and velocity.x < WALK_MAX_SPEED): force.x+=WALK_FORCE stop=false diff --git a/demos/2d/kinematic_char/player.scn b/demos/2d/kinematic_char/player.scn Binary files differindex 126b332184..5809c0e98a 100644 --- a/demos/2d/kinematic_char/player.scn +++ b/demos/2d/kinematic_char/player.scn diff --git a/demos/2d/platformer/stage.xml b/demos/2d/platformer/stage.xml index 78d0f9ae2c..e2943d8fcf 100644 --- a/demos/2d/platformer/stage.xml +++ b/demos/2d/platformer/stage.xml @@ -1,17 +1,17 @@ <?xml version="1.0" encoding="UTF-8" ?> -<resource_file type="PackedScene" subresource_count="9" version="1.0" version_name="Godot Engine v1.0.3917-beta1"> +<resource_file type="PackedScene" subresource_count="9" version="1.0" version_name="Godot Engine v1.0.stable.custom_build"> <ext_resource path="res://tileset.xml" type="TileSet"></ext_resource> <ext_resource path="res://music.ogg" type="AudioStream"></ext_resource> - <ext_resource path="res://coin.xml" type="PackedScene"></ext_resource> + <ext_resource path="res://parallax_bg.xml" type="PackedScene"></ext_resource> <ext_resource path="res://player.xml" type="PackedScene"></ext_resource> - <ext_resource path="res://seesaw.xml" type="PackedScene"></ext_resource> <ext_resource path="res://moving_platform.xml" type="PackedScene"></ext_resource> <ext_resource path="res://enemy.xml" type="PackedScene"></ext_resource> - <ext_resource path="res://parallax_bg.xml" type="PackedScene"></ext_resource> + <ext_resource path="res://seesaw.xml" type="PackedScene"></ext_resource> + <ext_resource path="res://coin.xml" type="PackedScene"></ext_resource> <main_resource> <dictionary name="_bundled" shared="false"> <string> "names" </string> - <string_array len="122"> + <string_array len="125"> <string> "stage" </string> <string> "Node" </string> <string> "_import_path" </string> @@ -25,13 +25,16 @@ <string> "transform/pos" </string> <string> "transform/rot" </string> <string> "transform/scale" </string> - <string> "cell_size" </string> - <string> "quadrant_size" </string> + <string> "mode" </string> <string> "tile_set" </string> - <string> "tile_data" </string> + <string> "cell/size" </string> + <string> "cell/quadrant_size" </string> + <string> "cell/custom_transform" </string> + <string> "cell/half_offset" </string> <string> "collision/friction" </string> <string> "collision/bounce" </string> <string> "collision/layers" </string> + <string> "tile_data" </string> <string> "coins" </string> <string> "coin" </string> <string> "Area2D" </string> @@ -142,7 +145,7 @@ <string> "node_count" </string> <int> 66 </int> <string> "variants" </string> - <array len="96" shared="false"> + <array len="103" shared="false"> <node_path> "" </node_path> <dictionary shared="false"> <string> "__editor_plugin_states__" </string> @@ -174,6 +177,8 @@ </dictionary> <string> "3D" </string> <dictionary shared="false"> + <string> "deflight_rot_y" </string> + <real> 0.628319 </real> <string> "zfar" </string> <real> 500 </real> <string> "fov" </string> @@ -187,10 +192,12 @@ <real> 0 </real> <string> "y_rot" </string> <real> 0 </real> - <string> "use_orthogonal" </string> - <bool> False </bool> + <string> "listener" </string> + <bool> True </bool> <string> "use_environment" </string> <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> <string> "pos" </string> <vector3> 0, 0, 0 </vector3> </dictionary> @@ -201,10 +208,12 @@ <real> 0 </real> <string> "y_rot" </string> <real> 0 </real> - <string> "use_orthogonal" </string> + <string> "listener" </string> <bool> False </bool> <string> "use_environment" </string> <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> <string> "pos" </string> <vector3> 0, 0, 0 </vector3> </dictionary> @@ -215,10 +224,12 @@ <real> 0 </real> <string> "y_rot" </string> <real> 0 </real> - <string> "use_orthogonal" </string> + <string> "listener" </string> <bool> False </bool> <string> "use_environment" </string> <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> <string> "pos" </string> <vector3> 0, 0, 0 </vector3> </dictionary> @@ -229,10 +240,12 @@ <real> 0 </real> <string> "y_rot" </string> <real> 0 </real> - <string> "use_orthogonal" </string> + <string> "listener" </string> <bool> False </bool> <string> "use_environment" </string> <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> <string> "pos" </string> <vector3> 0, 0, 0 </vector3> </dictionary> @@ -241,12 +254,18 @@ <int> 1 </int> <string> "default_light" </string> <bool> True </bool> + <string> "ambient_light_color" </string> + <color> 0.15, 0.15, 0.15, 1 </color> <string> "show_grid" </string> <bool> True </bool> <string> "show_origin" </string> <bool> True </bool> <string> "znear" </string> <real> 0.1 </real> + <string> "default_srgb" </string> + <bool> False </bool> + <string> "deflight_rot_x" </string> + <real> 0.942478 </real> </dictionary> </dictionary> <string> "__editor_run_settings__" </string> @@ -257,7 +276,7 @@ <int> 0 </int> </dictionary> <string> "__editor_plugin_screen__" </string> - <string> "2D" </string> + <string> "Script" </string> </dictionary> <bool> True </bool> <real> 1 </real> @@ -265,11 +284,14 @@ <vector2> 0, 0 </vector2> <real> 0 </real> <vector2> 1, 1 </vector2> - <int> 64 </int> - <int> 16 </int> + <int> 0 </int> <resource resource_type="TileSet" path="res://tileset.xml"> </resource> - <int_array len="1998"> 0, 2, 70, 536870914, 71, 10, 72, 10, 73, 10, 74, 10, 75, 10, 76, 10, 77, 10, 78, 10, 65536, 2, 65606, 536870914, 65607, 10, 65608, 10, 65609, 10, 65610, 10, 65611, 10, 65612, 10, 65613, 10, 65614, 10, 131072, 2, 131142, 536870914, 131143, 10, 131144, 10, 131145, 10, 131146, 10, 131147, 10, 131148, 10, 131149, 10, 131150, 10, 196608, 2, 196626, 9, 196678, 536870914, 196679, 10, 196680, 10, 196681, 10, 196682, 10, 196683, 10, 196684, 10, 196685, 10, 196686, 10, 262144, 2, 262162, 8, 262214, 536870914, 262215, 10, 262216, 10, 262217, 10, 262218, 10, 262219, 10, 262220, 10, 262221, 10, 262222, 10, 327680, 2, 327697, 536870921, 327698, 7, 327733, 9, 327750, 536870914, 327751, 10, 327752, 10, 327753, 10, 327754, 10, 327755, 10, 327756, 10, 327757, 10, 327758, 10, 393216, 2, 393233, 536870920, 393234, 7, 393257, 9, 393269, 7, 393286, 536870914, 393287, 10, 393288, 10, 393289, 10, 393290, 10, 393291, 10, 393292, 10, 393293, 10, 393294, 10, 458752, 2, 458769, 7, 458770, 8, 458790, 9, 458793, 8, 458805, 8, 458822, 536870914, 458823, 10, 458824, 10, 458825, 10, 458826, 10, 458827, 10, 458828, 10, 458829, 10, 458830, 10, 524288, 4, 524289, 1, 524304, 536870913, 524305, 536870918, 524306, 6, 524307, 5, 524308, 1, 524326, 8, 524329, 7, 524341, 7, 524358, 536870914, 524359, 10, 524360, 10, 524361, 10, 524362, 10, 524363, 10, 524364, 10, 524365, 10, 524366, 10, 589824, 10, 589825, 13, 589840, 536870914, 589841, 10, 589842, 10, 589843, 10, 589844, 2, 589862, 7, 589865, 7, 589876, 536870913, 589877, 6, 589878, 1, 589894, 536870914, 589895, 10, 589896, 10, 589897, 10, 589898, 10, 589899, 10, 589900, 10, 589901, 10, 589902, 10, 655360, 2, 655376, 536870914, 655377, 10, 655378, 10, 655379, 10, 655380, 2, 655398, 7, 655401, 8, 655412, 536870925, 655413, 11, 655414, 13, 655430, 536870914, 655431, 10, 655432, 10, 655433, 10, 655434, 10, 655435, 10, 655436, 10, 655437, 10, 655438, 10, 720896, 2, 720912, 536870914, 720913, 10, 720914, 10, 720915, 10, 720916, 2, 720934, 8, 720937, 7, 720958, 536870913, 720959, 5, 720960, 536870917, 720961, 5, 720962, 5, 720963, 536870917, 720964, 5, 720965, 0, 720966, 536870916, 720967, 10, 720968, 10, 720969, 10, 720970, 10, 720971, 10, 720972, 10, 720973, 10, 720974, 10, 786432, 2, 786437, 9, 786448, 536870914, 786449, 10, 786450, 10, 786451, 10, 786452, 2, 786464, 536870913, 786465, 1, 786470, 7, 786473, 7, 786474, 536870924, 786475, 1, 786494, 536870914, 786495, 10, 786496, 10, 786497, 10, 786498, 10, 786499, 10, 786500, 10, 786501, 10, 786502, 10, 786503, 10, 786504, 10, 786505, 10, 786506, 10, 786507, 10, 786508, 10, 786509, 10, 851968, 2, 851973, 7, 851984, 536870914, 851985, 10, 851986, 10, 851987, 10, 851988, 2, 851996, 536870913, 851997, 1, 852000, 536870914, 852001, 3, 852006, 7, 852009, 536870913, 852011, 2, 852030, 536870914, 852031, 10, 852032, 10, 852033, 10, 852034, 10, 852035, 10, 852036, 10, 852037, 10, 852038, 10, 852039, 10, 852040, 10, 852041, 10, 852042, 10, 852043, 10, 852044, 10, 852045, 10, 917504, 2, 917506, 9, 917509, 7, 917512, 536870921, 917520, 536870925, 917521, 11, 917522, 11, 917523, 11, 917524, 13, 917532, 536870925, 917533, 13, 917536, 536870914, 917537, 4, 917538, 1, 917540, 536870913, 917541, 0, 917542, 1, 917545, 536870914, 917546, 10, 917547, 4, 917548, 1, 917566, 536870914, 917567, 10, 917568, 10, 917569, 10, 917570, 10, 917571, 10, 917572, 10, 917573, 10, 917574, 10, 917575, 10, 917576, 10, 917577, 10, 917578, 10, 917579, 10, 917580, 10, 917581, 10, 983040, 2, 983042, 7, 983045, 7, 983048, 536870920, 983050, 536870913, 983051, 1, 983064, 536870913, 983065, 1, 983072, 536870914, 983073, 10, 983074, 4, 983075, 0, 983076, 536870916, 983077, 10, 983078, 4, 983079, 536870912, 983080, 536870912, 983081, 536870916, 983082, 10, 983083, 10, 983084, 2, 983095, 9, 983102, 536870914, 983103, 10, 983104, 10, 983105, 10, 983106, 10, 983107, 10, 983108, 10, 983109, 10, 983110, 10, 983111, 10, 983112, 10, 983113, 10, 983114, 10, 983115, 10, 983116, 10, 983117, 10, 1048576, 2, 1048578, 8, 1048581, 8, 1048584, 536870919, 1048586, 536870925, 1048587, 13, 1048600, 536870925, 1048601, 13, 1048604, 9, 1048608, 536870925, 1048609, 536870923, 1048610, 536870923, 1048611, 536870923, 1048612, 10, 1048613, 10, 1048614, 10, 1048615, 10, 1048616, 10, 1048617, 10, 1048618, 10, 1048619, 10, 1048620, 4, 1048621, 1, 1048630, 536870921, 1048631, 8, 1048638, 536870914, 1048639, 10, 1048640, 10, 1048641, 10, 1048642, 10, 1048643, 10, 1048644, 10, 1048645, 10, 1048646, 10, 1048647, 10, 1048648, 10, 1048649, 10, 1048650, 10, 1048651, 10, 1048652, 10, 1048653, 10, 1114112, 4, 1114113, 0, 1114114, 6, 1114115, 0, 1114116, 0, 1114117, 6, 1114118, 1, 1114120, 536870920, 1114128, 536870913, 1114129, 5, 1114130, 536870917, 1114131, 5, 1114132, 0, 1114133, 1, 1114140, 7, 1114141, 536870921, 1114148, 536870914, 1114149, 10, 1114150, 10, 1114151, 10, 1114152, 10, 1114153, 10, 1114154, 10, 1114155, 10, 1114156, 10, 1114157, 2, 1114166, 536870920, 1114167, 8, 1114174, 536870914, 1114175, 10, 1114176, 10, 1114177, 10, 1114178, 10, 1114179, 10, 1114180, 10, 1114181, 10, 1114182, 10, 1114183, 10, 1114184, 10, 1114185, 10, 1114186, 10, 1114187, 10, 1114188, 10, 1179648, 10, 1179649, 10, 1179650, 10, 1179651, 10, 1179652, 10, 1179653, 10, 1179654, 2, 1179656, 536870919, 1179663, 536870915, 1179665, 10, 1179666, 10, 1179667, 10, 1179668, 10, 1179669, 4, 1179670, 12, 1179675, 9, 1179676, 8, 1179677, 8, 1179684, 536870914, 1179685, 10, 1179686, 10, 1179687, 10, 1179688, 10, 1179689, 10, 1179690, 10, 1179691, 10, 1179692, 10, 1179693, 4, 1179694, 1, 1179701, 9, 1179702, 536870919, 1179703, 7, 1179710, 536870914, 1179711, 10, 1179712, 10, 1179713, 10, 1179714, 10, 1179715, 10, 1179716, 10, 1179717, 10, 1179718, 10, 1179719, 10, 1179720, 10, 1179721, 10, 1179722, 10, 1245184, 10, 1245185, 10, 1245186, 10, 1245187, 10, 1245188, 10, 1245189, 10, 1245190, 2, 1245192, 536870919, 1245199, 536870913, 1245200, 536870916, 1245201, 10, 1245202, 10, 1245203, 10, 1245204, 10, 1245205, 10, 1245207, 1, 1245211, 7, 1245212, 7, 1245213, 536870920, 1245220, 536870914, 1245221, 10, 1245222, 10, 1245223, 10, 1245224, 10, 1245225, 10, 1245226, 10, 1245227, 10, 1245228, 10, 1245229, 10, 1245230, 2, 1245237, 8, 1245238, 536870919, 1245239, 8, 1245240, 536870921, 1245246, 536870914, 1245247, 10, 1245248, 10, 1245249, 10, 1245250, 10, 1245251, 10, 1245252, 10, 1245253, 10, 1245254, 10, 1245255, 10, 1245256, 10, 1245257, 10, 1245258, 10, 1310720, 10, 1310721, 10, 1310722, 10, 1310723, 10, 1310724, 10, 1310725, 10, 1310726, 2, 1310728, 536870920, 1310730, 536870913, 1310731, 1, 1310734, 536870913, 1310735, 536870916, 1310736, 10, 1310737, 10, 1310738, 10, 1310739, 10, 1310740, 10, 1310741, 10, 1310742, 10, 1310743, 4, 1310744, 1, 1310747, 8, 1310748, 7, 1310749, 536870919, 1310756, 536870914, 1310757, 10, 1310758, 10, 1310759, 10, 1310760, 10, 1310761, 10, 1310762, 10, 1310763, 10, 1310764, 10, 1310765, 10, 1310766, 4, 1310767, 5, 1310768, 12, 1310773, 7, 1310774, 536870919, 1310775, 7, 1310776, 536870919, 1310782, 536870914, 1310783, 10, 1310784, 10, 1310785, 10, 1310786, 10, 1310787, 10, 1310788, 10, 1310789, 10, 1310790, 10, 1310791, 10, 1310792, 10, 1310793, 10, 1376256, 10, 1376257, 10, 1376258, 10, 1376259, 10, 1376260, 10, 1376261, 10, 1376262, 4, 1376263, 0, 1376264, 536870918, 1376265, 0, 1376266, 536870916, 1376267, 4, 1376268, 0, 1376269, 0, 1376270, 536870916, 1376271, 10, 1376272, 10, 1376273, 10, 1376274, 10, 1376275, 10, 1376276, 10, 1376277, 10, 1376278, 10, 1376279, 10, 1376280, 4, 1376281, 12, 1376283, 8, 1376284, 8, 1376285, 536870920, 1376287, 536870924, 1376288, 0, 1376289, 5, 1376290, 536870917, 1376291, 0, 1376292, 536870916, 1376293, 10, 1376294, 10, 1376295, 10, 1376296, 10, 1376297, 10, 1376298, 10, 1376299, 10, 1376300, 10, 1376301, 10, 1376302, 10, 1376303, 10, 1376305, 12, 1376309, 7, 1376310, 536870920, 1376311, 7, 1376312, 536870920, 1376318, 536870914, 1376319, 10, 1376320, 10, 1376321, 10, 1376322, 10, 1376323, 10, 1376324, 10, 1376325, 10, 1376326, 10, 1376327, 10, 1376328, 10, 1441792, 10, 1441793, 10, 1441794, 10, 1441795, 10, 1441796, 10, 1441797, 10, 1441798, 10, 1441799, 10, 1441800, 10, 1441801, 10, 1441802, 10, 1441803, 10, 1441804, 10, 1441805, 10, 1441806, 10, 1441807, 10, 1441808, 10, 1441809, 10, 1441810, 10, 1441811, 10, 1441812, 10, 1441813, 10, 1441814, 10, 1441815, 10, 1441816, 10, 1441818, 0, 1441819, 6, 1441820, 6, 1441821, 536870918, 1441822, 5, 1441824, 10, 1441825, 10, 1441826, 10, 1441827, 10, 1441828, 10, 1441829, 10, 1441830, 10, 1441831, 10, 1441832, 10, 1441833, 10, 1441834, 10, 1441835, 10, 1441836, 10, 1441837, 10, 1441838, 10, 1441839, 10, 1441840, 10, 1441842, 0, 1441843, 0, 1441844, 0, 1441845, 6, 1441846, 536870918, 1441847, 6, 1441848, 536870918, 1441849, 0, 1441850, 5, 1441851, 536870917, 1441852, 5, 1441853, 0, 1441854, 536870916, 1441855, 10, 1441856, 10, 1441857, 10, 1441858, 10, 1441859, 10, 1441860, 10, 1441861, 10, 1441862, 10, 1441863, 10, 1507328, 10, 1507329, 10, 1507330, 10, 1507331, 10, 1507332, 10, 1507333, 10, 1507334, 10, 1507335, 10, 1507336, 10, 1507337, 10, 1507338, 10, 1507339, 10, 1507340, 10, 1507341, 10, 1507342, 10, 1507343, 10, 1507344, 10, 1507345, 10, 1507346, 10, 1507347, 10, 1507348, 10, 1507349, 10, 1507350, 10, 1507351, 10, 1507352, 10, 1507353, 10, 1507354, 10, 1507355, 10, 1507356, 10, 1507357, 10, 1507358, 10, 1507359, 10, 1507360, 10, 1507361, 10, 1507362, 10, 1507363, 10, 1507364, 10, 1507365, 10, 1507366, 10, 1507367, 10, 1507368, 10, 1507369, 10, 1507370, 10, 1507371, 10, 1507372, 10, 1507373, 10, 1507374, 10, 1507375, 10, 1507376, 10, 1507377, 10, 1507378, 10, 1507379, 10, 1507380, 10, 1507381, 10, 1507382, 10, 1507383, 10, 1507384, 10, 1507385, 10, 1507386, 10, 1507387, 10, 1507388, 10, 1507389, 10, 1507390, 10, 1507391, 10, 1507392, 10, 1507393, 10, 1507394, 10, 1507395, 10, 1507396, 10, 1507397, 10, 1507398, 10, 1507399, 10, 1572864, 10, 1572865, 10, 1572866, 10, 1572867, 10, 1572868, 10, 1572869, 10, 1572870, 10, 1572871, 10, 1572872, 10, 1572873, 10, 1572874, 10, 1572875, 10, 1572876, 10, 1572877, 10, 1572878, 10, 1572879, 10, 1572880, 10, 1572881, 10, 1572882, 10, 1572883, 10, 1572884, 10, 1572885, 10, 1572886, 10, 1572887, 10, 1572888, 10, 1572889, 10, 1572890, 10, 1572891, 10, 1572892, 10, 1572893, 10, 1572894, 10, 1572895, 10, 1572896, 10, 1572897, 10, 1572898, 10, 1572899, 10, 1572900, 10, 1572901, 10, 1572902, 10, 1572903, 10, 1572904, 10, 1572905, 10, 1572906, 10, 1572907, 10, 1572908, 10, 1572909, 10, 1572910, 10, 1572911, 10, 1572912, 10, 1572913, 10, 1572914, 10, 1572915, 10, 1572916, 10, 1572917, 10, 1572918, 10, 1572919, 10, 1572920, 10, 1572921, 10, 1572922, 10, 1572923, 10, 1572924, 10, 1572925, 10, 1572926, 10, 1572927, 10, 1572928, 10, 1572929, 10, 1572930, 10, 1572931, 10, 1572932, 10, 1572933, 10, 1572934, 10, 1572935, 10, 1638400, 10, 1638401, 10, 1638402, 10, 1638403, 10, 1638404, 10, 1638405, 10, 1638406, 10, 1638407, 10, 1638408, 10, 1638409, 10, 1638410, 10, 1638411, 10, 1638412, 10, 1638413, 10, 1638414, 10, 1638415, 10, 1638416, 10, 1638417, 10, 1638418, 10, 1638419, 10, 1638420, 10, 1638421, 10, 1638422, 10, 1638423, 10, 1638424, 10, 1638425, 10, 1638426, 10, 1638427, 10, 1638428, 10, 1638429, 10, 1638430, 10, 1638431, 10, 1638432, 10, 1638433, 10, 1638434, 10, 1638435, 10, 1638436, 10, 1638437, 10, 1638438, 10, 1638439, 10, 1638440, 10, 1638441, 10, 1638442, 10, 1638443, 10, 1638444, 10, 1638445, 10, 1638446, 10, 1638447, 10, 1638448, 10, 1638449, 10, 1638450, 10, 1638451, 10, 1638452, 10, 1638453, 10, 1638454, 10, 1638455, 10, 1638456, 10, 1638457, 10, 1638458, 10, 1638459, 10, 1638460, 10, 1638461, 10, 1638462, 10, 1638463, 10, 1638464, 10, 1638465, 10, 1638466, 10, 1638467, 10, 1638468, 10, 1638469, 10, 1638470, 10, 1638471, 10, 1703952, 10, 1703953, 10, 1703954, 10, 1703955, 10, 1703956, 10, 1703957, 10, 1703958, 10, 1703959, 10, 1703960, 10, 1703961, 10, 1703962, 10, 1703963, 10, 1703964, 10, 1703965, 10, 1703966, 10, 1703967, 10, 1703968, 10, 1703969, 10, 1703970, 10, 1703971, 10, 1703972, 10, 1703973, 10, 1703974, 10, 1703975, 10, 1703976, 10, 1703977, 10, 1703978, 10, 1703979, 10, 1703980, 10, 1703981, 10, 1703982, 10, 1703983, 10, 1703984, 10, 1703985, 10, 1703986, 10, 1703987, 10, 1703988, 10, 1703989, 10, 1703990, 10, 1703991, 10, 1703992, 10, 1703993, 10, 1703994, 10, 1703995, 10, 1703996, 10, 1703997, 10, 1703998, 10, 1703999, 10, 1704000, 10, 1704001, 10, 1704002, 10, 1704003, 10, 1704004, 10, 1704005, 10, 1704006, 10, 1704007, 10, 1769488, 10, 1769489, 10, 1769490, 10, 1769491, 10, 1769492, 10, 1769493, 10, 1769494, 10, 1769495, 10, 1769496, 10, 1769497, 10, 1769498, 10, 1769499, 10, 1769500, 10, 1769501, 10, 1769502, 10, 1769503, 10, 1769504, 10, 1769505, 10, 1769506, 10, 1769507, 10, 1769508, 10, 1769509, 10, 1769510, 10, 1769511, 10, 1769512, 10, 1769513, 10, 1769514, 10, 1769515, 10, 1769516, 10, 1769517, 10, 1769518, 10, 1769519, 10, 1769520, 10, 1769521, 10, 1769522, 10, 1769523, 10, 1769524, 10, 1769525, 10, 1769526, 10, 1769527, 10, 1769528, 10, 1769529, 10, 1769530, 10, 1769531, 10, 1769532, 10, 1769533, 10, 1769534, 10, 1769535, 10, 1769536, 10, 1769537, 10, 1769538, 10, 1769539, 10, 1769540, 10, 1769541, 10 </int_array> + <vector2> 64, 64 </vector2> + <int> 16 </int> + <matrix32> 1, 0, 0, 1, 0, 0 </matrix32> + <int> 2 </int> <int> 1 </int> + <int_array len="1998"> 0, 2, 70, 536870914, 71, 10, 72, 10, 73, 10, 74, 10, 75, 10, 76, 10, 77, 10, 78, 10, 65536, 2, 65606, 536870914, 65607, 10, 65608, 10, 65609, 10, 65610, 10, 65611, 10, 65612, 10, 65613, 10, 65614, 10, 131072, 2, 131142, 536870914, 131143, 10, 131144, 10, 131145, 10, 131146, 10, 131147, 10, 131148, 10, 131149, 10, 131150, 10, 196608, 2, 196626, 9, 196678, 536870914, 196679, 10, 196680, 10, 196681, 10, 196682, 10, 196683, 10, 196684, 10, 196685, 10, 196686, 10, 262144, 2, 262162, 8, 262214, 536870914, 262215, 10, 262216, 10, 262217, 10, 262218, 10, 262219, 10, 262220, 10, 262221, 10, 262222, 10, 327680, 2, 327697, 536870921, 327698, 7, 327733, 9, 327750, 536870914, 327751, 10, 327752, 10, 327753, 10, 327754, 10, 327755, 10, 327756, 10, 327757, 10, 327758, 10, 393216, 2, 393233, 536870920, 393234, 7, 393257, 9, 393269, 7, 393286, 536870914, 393287, 10, 393288, 10, 393289, 10, 393290, 10, 393291, 10, 393292, 10, 393293, 10, 393294, 10, 458752, 2, 458769, 7, 458770, 8, 458790, 9, 458793, 8, 458805, 8, 458822, 536870914, 458823, 10, 458824, 10, 458825, 10, 458826, 10, 458827, 10, 458828, 10, 458829, 10, 458830, 10, 524288, 4, 524289, 1, 524304, 536870913, 524305, 536870918, 524306, 6, 524307, 5, 524308, 1, 524326, 8, 524329, 7, 524341, 7, 524358, 536870914, 524359, 10, 524360, 10, 524361, 10, 524362, 10, 524363, 10, 524364, 10, 524365, 10, 524366, 10, 589824, 10, 589825, 13, 589840, 536870914, 589841, 10, 589842, 10, 589843, 10, 589844, 2, 589862, 7, 589865, 7, 589876, 536870913, 589877, 6, 589878, 1, 589894, 536870914, 589895, 10, 589896, 10, 589897, 10, 589898, 10, 589899, 10, 589900, 10, 589901, 10, 589902, 10, 655360, 2, 655376, 536870914, 655377, 10, 655378, 10, 655379, 10, 655380, 2, 655398, 7, 655401, 8, 655412, 536870925, 655413, 11, 655414, 13, 655430, 536870914, 655431, 10, 655432, 10, 655433, 10, 655434, 10, 655435, 10, 655436, 10, 655437, 10, 655438, 10, 720896, 2, 720912, 536870914, 720913, 10, 720914, 10, 720915, 10, 720916, 2, 720934, 8, 720937, 7, 720958, 536870913, 720959, 5, 720960, 536870917, 720961, 5, 720962, 5, 720963, 536870917, 720964, 5, 720965, 0, 720966, 536870916, 720967, 10, 720968, 10, 720969, 10, 720970, 10, 720971, 10, 720972, 10, 720973, 10, 720974, 10, 786432, 2, 786437, 9, 786448, 536870914, 786449, 10, 786450, 10, 786451, 10, 786452, 2, 786464, 536870913, 786465, 1, 786470, 7, 786473, 7, 786474, 536870924, 786475, 1, 786494, 536870914, 786495, 10, 786496, 10, 786497, 10, 786498, 10, 786499, 10, 786500, 10, 786501, 10, 786502, 10, 786503, 10, 786504, 10, 786505, 10, 786506, 10, 786507, 10, 786508, 10, 786509, 10, 851968, 2, 851973, 7, 851984, 536870914, 851985, 10, 851986, 10, 851987, 10, 851988, 2, 851996, 536870913, 851997, 1, 852000, 536870914, 852001, 3, 852006, 7, 852009, 536870913, 852011, 2, 852030, 536870914, 852031, 10, 852032, 10, 852033, 10, 852034, 10, 852035, 10, 852036, 10, 852037, 10, 852038, 10, 852039, 10, 852040, 10, 852041, 10, 852042, 10, 852043, 10, 852044, 10, 852045, 10, 917504, 2, 917506, 9, 917509, 7, 917512, 536870921, 917520, 536870925, 917521, 11, 917522, 11, 917523, 11, 917524, 13, 917532, 536870925, 917533, 13, 917536, 536870914, 917537, 4, 917538, 1, 917540, 536870913, 917541, 0, 917542, 1, 917545, 536870914, 917546, 10, 917547, 4, 917548, 1, 917566, 536870914, 917567, 10, 917568, 10, 917569, 10, 917570, 10, 917571, 10, 917572, 10, 917573, 10, 917574, 10, 917575, 10, 917576, 10, 917577, 10, 917578, 10, 917579, 10, 917580, 10, 917581, 10, 983040, 2, 983042, 7, 983045, 7, 983048, 536870920, 983050, 536870913, 983051, 1, 983064, 536870913, 983065, 1, 983072, 536870914, 983073, 10, 983074, 4, 983075, 0, 983076, 536870916, 983077, 10, 983078, 4, 983079, 536870912, 983080, 536870912, 983081, 536870916, 983082, 10, 983083, 10, 983084, 2, 983095, 9, 983102, 536870914, 983103, 10, 983104, 10, 983105, 10, 983106, 10, 983107, 10, 983108, 10, 983109, 10, 983110, 10, 983111, 10, 983112, 10, 983113, 10, 983114, 10, 983115, 10, 983116, 10, 983117, 10, 1048576, 2, 1048578, 8, 1048581, 8, 1048584, 536870919, 1048586, 536870925, 1048587, 13, 1048600, 536870925, 1048601, 13, 1048604, 9, 1048608, 536870925, 1048609, 536870923, 1048610, 536870923, 1048611, 536870923, 1048612, 10, 1048613, 10, 1048614, 10, 1048615, 10, 1048616, 10, 1048617, 10, 1048618, 10, 1048619, 10, 1048620, 4, 1048621, 1, 1048630, 536870921, 1048631, 8, 1048638, 536870914, 1048639, 10, 1048640, 10, 1048641, 10, 1048642, 10, 1048643, 10, 1048644, 10, 1048645, 10, 1048646, 10, 1048647, 10, 1048648, 10, 1048649, 10, 1048650, 10, 1048651, 10, 1048652, 10, 1048653, 10, 1114112, 4, 1114113, 0, 1114114, 6, 1114115, 0, 1114116, 0, 1114117, 6, 1114118, 1, 1114120, 536870920, 1114128, 536870913, 1114129, 5, 1114130, 536870917, 1114131, 5, 1114132, 0, 1114133, 1, 1114140, 7, 1114141, 536870921, 1114148, 536870914, 1114149, 10, 1114150, 10, 1114151, 10, 1114152, 10, 1114153, 10, 1114154, 10, 1114155, 10, 1114156, 10, 1114157, 2, 1114166, 536870920, 1114167, 8, 1114174, 536870914, 1114175, 10, 1114176, 10, 1114177, 10, 1114178, 10, 1114179, 10, 1114180, 10, 1114181, 10, 1114182, 10, 1114183, 10, 1114184, 10, 1114185, 10, 1114186, 10, 1114187, 10, 1114188, 10, 1179648, 10, 1179649, 10, 1179650, 10, 1179651, 10, 1179652, 10, 1179653, 10, 1179654, 2, 1179656, 536870919, 1179663, 536870915, 1179665, 10, 1179666, 10, 1179667, 10, 1179668, 10, 1179669, 4, 1179670, 12, 1179675, 9, 1179676, 8, 1179677, 8, 1179684, 536870914, 1179685, 10, 1179686, 10, 1179687, 10, 1179688, 10, 1179689, 10, 1179690, 10, 1179691, 10, 1179692, 10, 1179693, 4, 1179694, 1, 1179701, 9, 1179702, 536870919, 1179703, 7, 1179710, 536870914, 1179711, 10, 1179712, 10, 1179713, 10, 1179714, 10, 1179715, 10, 1179716, 10, 1179717, 10, 1179718, 10, 1179719, 10, 1179720, 10, 1179721, 10, 1179722, 10, 1245184, 10, 1245185, 10, 1245186, 10, 1245187, 10, 1245188, 10, 1245189, 10, 1245190, 2, 1245192, 536870919, 1245199, 536870913, 1245200, 536870916, 1245201, 10, 1245202, 10, 1245203, 10, 1245204, 10, 1245205, 10, 1245207, 1, 1245211, 7, 1245212, 7, 1245213, 536870920, 1245220, 536870914, 1245221, 10, 1245222, 10, 1245223, 10, 1245224, 10, 1245225, 10, 1245226, 10, 1245227, 10, 1245228, 10, 1245229, 10, 1245230, 2, 1245237, 8, 1245238, 536870919, 1245239, 8, 1245240, 536870921, 1245246, 536870914, 1245247, 10, 1245248, 10, 1245249, 10, 1245250, 10, 1245251, 10, 1245252, 10, 1245253, 10, 1245254, 10, 1245255, 10, 1245256, 10, 1245257, 10, 1245258, 10, 1310720, 10, 1310721, 10, 1310722, 10, 1310723, 10, 1310724, 10, 1310725, 10, 1310726, 2, 1310728, 536870920, 1310730, 536870913, 1310731, 1, 1310734, 536870913, 1310735, 536870916, 1310736, 10, 1310737, 10, 1310738, 10, 1310739, 10, 1310740, 10, 1310741, 10, 1310742, 10, 1310743, 4, 1310744, 1, 1310747, 8, 1310748, 7, 1310749, 536870919, 1310756, 536870914, 1310757, 10, 1310758, 10, 1310759, 10, 1310760, 10, 1310761, 10, 1310762, 10, 1310763, 10, 1310764, 10, 1310765, 10, 1310766, 4, 1310767, 5, 1310768, 12, 1310773, 7, 1310774, 536870919, 1310775, 7, 1310776, 536870919, 1310782, 536870914, 1310783, 10, 1310784, 10, 1310785, 10, 1310786, 10, 1310787, 10, 1310788, 10, 1310789, 10, 1310790, 10, 1310791, 10, 1310792, 10, 1310793, 10, 1376256, 10, 1376257, 10, 1376258, 10, 1376259, 10, 1376260, 10, 1376261, 10, 1376262, 4, 1376263, 0, 1376264, 536870918, 1376265, 0, 1376266, 536870916, 1376267, 4, 1376268, 0, 1376269, 0, 1376270, 536870916, 1376271, 10, 1376272, 10, 1376273, 10, 1376274, 10, 1376275, 10, 1376276, 10, 1376277, 10, 1376278, 10, 1376279, 10, 1376280, 4, 1376281, 12, 1376283, 8, 1376284, 8, 1376285, 536870920, 1376287, 536870924, 1376288, 0, 1376289, 5, 1376290, 536870917, 1376291, 0, 1376292, 536870916, 1376293, 10, 1376294, 10, 1376295, 10, 1376296, 10, 1376297, 10, 1376298, 10, 1376299, 10, 1376300, 10, 1376301, 10, 1376302, 10, 1376303, 10, 1376305, 12, 1376309, 7, 1376310, 536870920, 1376311, 7, 1376312, 536870920, 1376318, 536870914, 1376319, 10, 1376320, 10, 1376321, 10, 1376322, 10, 1376323, 10, 1376324, 10, 1376325, 10, 1376326, 10, 1376327, 10, 1376328, 10, 1441792, 10, 1441793, 10, 1441794, 10, 1441795, 10, 1441796, 10, 1441797, 10, 1441798, 10, 1441799, 10, 1441800, 10, 1441801, 10, 1441802, 10, 1441803, 10, 1441804, 10, 1441805, 10, 1441806, 10, 1441807, 10, 1441808, 10, 1441809, 10, 1441810, 10, 1441811, 10, 1441812, 10, 1441813, 10, 1441814, 10, 1441815, 10, 1441816, 10, 1441818, 0, 1441819, 6, 1441820, 6, 1441821, 536870918, 1441822, 5, 1441824, 10, 1441825, 10, 1441826, 10, 1441827, 10, 1441828, 10, 1441829, 10, 1441830, 10, 1441831, 10, 1441832, 10, 1441833, 10, 1441834, 10, 1441835, 10, 1441836, 10, 1441837, 10, 1441838, 10, 1441839, 10, 1441840, 10, 1441842, 0, 1441843, 0, 1441844, 0, 1441845, 6, 1441846, 536870918, 1441847, 6, 1441848, 536870918, 1441849, 0, 1441850, 5, 1441851, 536870917, 1441852, 5, 1441853, 0, 1441854, 536870916, 1441855, 10, 1441856, 10, 1441857, 10, 1441858, 10, 1441859, 10, 1441860, 10, 1441861, 10, 1441862, 10, 1441863, 10, 1507328, 10, 1507329, 10, 1507330, 10, 1507331, 10, 1507332, 10, 1507333, 10, 1507334, 10, 1507335, 10, 1507336, 10, 1507337, 10, 1507338, 10, 1507339, 10, 1507340, 10, 1507341, 10, 1507342, 10, 1507343, 10, 1507344, 10, 1507345, 10, 1507346, 10, 1507347, 10, 1507348, 10, 1507349, 10, 1507350, 10, 1507351, 10, 1507352, 10, 1507353, 10, 1507354, 10, 1507355, 10, 1507356, 10, 1507357, 10, 1507358, 10, 1507359, 10, 1507360, 10, 1507361, 10, 1507362, 10, 1507363, 10, 1507364, 10, 1507365, 10, 1507366, 10, 1507367, 10, 1507368, 10, 1507369, 10, 1507370, 10, 1507371, 10, 1507372, 10, 1507373, 10, 1507374, 10, 1507375, 10, 1507376, 10, 1507377, 10, 1507378, 10, 1507379, 10, 1507380, 10, 1507381, 10, 1507382, 10, 1507383, 10, 1507384, 10, 1507385, 10, 1507386, 10, 1507387, 10, 1507388, 10, 1507389, 10, 1507390, 10, 1507391, 10, 1507392, 10, 1507393, 10, 1507394, 10, 1507395, 10, 1507396, 10, 1507397, 10, 1507398, 10, 1507399, 10, 1572864, 10, 1572865, 10, 1572866, 10, 1572867, 10, 1572868, 10, 1572869, 10, 1572870, 10, 1572871, 10, 1572872, 10, 1572873, 10, 1572874, 10, 1572875, 10, 1572876, 10, 1572877, 10, 1572878, 10, 1572879, 10, 1572880, 10, 1572881, 10, 1572882, 10, 1572883, 10, 1572884, 10, 1572885, 10, 1572886, 10, 1572887, 10, 1572888, 10, 1572889, 10, 1572890, 10, 1572891, 10, 1572892, 10, 1572893, 10, 1572894, 10, 1572895, 10, 1572896, 10, 1572897, 10, 1572898, 10, 1572899, 10, 1572900, 10, 1572901, 10, 1572902, 10, 1572903, 10, 1572904, 10, 1572905, 10, 1572906, 10, 1572907, 10, 1572908, 10, 1572909, 10, 1572910, 10, 1572911, 10, 1572912, 10, 1572913, 10, 1572914, 10, 1572915, 10, 1572916, 10, 1572917, 10, 1572918, 10, 1572919, 10, 1572920, 10, 1572921, 10, 1572922, 10, 1572923, 10, 1572924, 10, 1572925, 10, 1572926, 10, 1572927, 10, 1572928, 10, 1572929, 10, 1572930, 10, 1572931, 10, 1572932, 10, 1572933, 10, 1572934, 10, 1572935, 10, 1638400, 10, 1638401, 10, 1638402, 10, 1638403, 10, 1638404, 10, 1638405, 10, 1638406, 10, 1638407, 10, 1638408, 10, 1638409, 10, 1638410, 10, 1638411, 10, 1638412, 10, 1638413, 10, 1638414, 10, 1638415, 10, 1638416, 10, 1638417, 10, 1638418, 10, 1638419, 10, 1638420, 10, 1638421, 10, 1638422, 10, 1638423, 10, 1638424, 10, 1638425, 10, 1638426, 10, 1638427, 10, 1638428, 10, 1638429, 10, 1638430, 10, 1638431, 10, 1638432, 10, 1638433, 10, 1638434, 10, 1638435, 10, 1638436, 10, 1638437, 10, 1638438, 10, 1638439, 10, 1638440, 10, 1638441, 10, 1638442, 10, 1638443, 10, 1638444, 10, 1638445, 10, 1638446, 10, 1638447, 10, 1638448, 10, 1638449, 10, 1638450, 10, 1638451, 10, 1638452, 10, 1638453, 10, 1638454, 10, 1638455, 10, 1638456, 10, 1638457, 10, 1638458, 10, 1638459, 10, 1638460, 10, 1638461, 10, 1638462, 10, 1638463, 10, 1638464, 10, 1638465, 10, 1638466, 10, 1638467, 10, 1638468, 10, 1638469, 10, 1638470, 10, 1638471, 10, 1703952, 10, 1703953, 10, 1703954, 10, 1703955, 10, 1703956, 10, 1703957, 10, 1703958, 10, 1703959, 10, 1703960, 10, 1703961, 10, 1703962, 10, 1703963, 10, 1703964, 10, 1703965, 10, 1703966, 10, 1703967, 10, 1703968, 10, 1703969, 10, 1703970, 10, 1703971, 10, 1703972, 10, 1703973, 10, 1703974, 10, 1703975, 10, 1703976, 10, 1703977, 10, 1703978, 10, 1703979, 10, 1703980, 10, 1703981, 10, 1703982, 10, 1703983, 10, 1703984, 10, 1703985, 10, 1703986, 10, 1703987, 10, 1703988, 10, 1703989, 10, 1703990, 10, 1703991, 10, 1703992, 10, 1703993, 10, 1703994, 10, 1703995, 10, 1703996, 10, 1703997, 10, 1703998, 10, 1703999, 10, 1704000, 10, 1704001, 10, 1704002, 10, 1704003, 10, 1704004, 10, 1704005, 10, 1704006, 10, 1704007, 10, 1769488, 10, 1769489, 10, 1769490, 10, 1769491, 10, 1769492, 10, 1769493, 10, 1769494, 10, 1769495, 10, 1769496, 10, 1769497, 10, 1769498, 10, 1769499, 10, 1769500, 10, 1769501, 10, 1769502, 10, 1769503, 10, 1769504, 10, 1769505, 10, 1769506, 10, 1769507, 10, 1769508, 10, 1769509, 10, 1769510, 10, 1769511, 10, 1769512, 10, 1769513, 10, 1769514, 10, 1769515, 10, 1769516, 10, 1769517, 10, 1769518, 10, 1769519, 10, 1769520, 10, 1769521, 10, 1769522, 10, 1769523, 10, 1769524, 10, 1769525, 10, 1769526, 10, 1769527, 10, 1769528, 10, 1769529, 10, 1769530, 10, 1769531, 10, 1769532, 10, 1769533, 10, 1769534, 10, 1769535, 10, 1769536, 10, 1769537, 10, 1769538, 10, 1769539, 10, 1769540, 10, 1769541, 10 </int_array> <dictionary shared="false"> <string> "_edit_lock_" </string> <bool> True </bool> @@ -280,6 +302,116 @@ </dictionary> <resource resource_type="PackedScene" path="res://coin.xml"> </resource> <vector2> 672, 1120 </vector2> + <dictionary shared="false"> + <string> "__editor_plugin_states__" </string> + <dictionary shared="false"> + <string> "Script" </string> + <dictionary shared="false"> + <string> "current" </string> + <int> 2 </int> + <string> "sources" </string> + <array len="3" shared="false"> + <string> "res://enemy.gd" </string> + <string> "res://player.gd" </string> + <string> "res://coin.gd" </string> + </array> + </dictionary> + <string> "2D" </string> + <dictionary shared="false"> + <string> "pixel_snap" </string> + <bool> False </bool> + <string> "zoom" </string> + <real> 3.794776 </real> + <string> "ofs" </string> + <vector2> -34.3697, -21.6562 </vector2> + </dictionary> + <string> "3D" </string> + <dictionary shared="false"> + <string> "fov" </string> + <real> 45 </real> + <string> "zfar" </string> + <real> 500 </real> + <string> "viewports" </string> + <array len="4" shared="false"> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + </array> + <string> "viewport_mode" </string> + <int> 1 </int> + <string> "default_light" </string> + <bool> True </bool> + <string> "show_grid" </string> + <bool> True </bool> + <string> "znear" </string> + <real> 0.1 </real> + <string> "show_origin" </string> + <bool> True </bool> + </dictionary> + </dictionary> + <string> "__editor_run_settings__" </string> + <dictionary shared="false"> + <string> "custom_args" </string> + <string> "-l $scene" </string> + <string> "run_mode" </string> + <int> 0 </int> + </dictionary> + <string> "__editor_plugin_screen__" </string> + <string> "2D" </string> + </dictionary> <vector2> 704, 1120 </vector2> <vector2> 736, 1120 </vector2> <vector2> 1120, 992 </vector2> @@ -323,8 +455,247 @@ <vector2> 4172.75, 541.058 </vector2> <resource resource_type="PackedScene" path="res://player.xml"> </resource> <vector2> 251.684, 1045.6 </vector2> + <dictionary shared="false"> + <string> "__editor_plugin_states__" </string> + <dictionary shared="false"> + <string> "Script" </string> + <dictionary shared="false"> + <string> "current" </string> + <int> 0 </int> + <string> "sources" </string> + <array len="1" shared="false"> + <string> "res://player.gd" </string> + </array> + </dictionary> + <string> "2D" </string> + <dictionary shared="false"> + <string> "pixel_snap" </string> + <bool> False </bool> + <string> "zoom" </string> + <real> 2.272073 </real> + <string> "use_snap" </string> + <bool> False </bool> + <string> "ofs" </string> + <vector2> -181.946, -86.2812 </vector2> + <string> "snap" </string> + <int> 10 </int> + </dictionary> + <string> "3D" </string> + <dictionary shared="false"> + <string> "viewports" </string> + <array len="4" shared="false"> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "listener" </string> + <bool> True </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "listener" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "listener" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "listener" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + </array> + <string> "zfar" </string> + <real> 500 </real> + <string> "deflight_rot_y" </string> + <real> 0.628319 </real> + <string> "fov" </string> + <real> 45 </real> + <string> "default_light" </string> + <bool> True </bool> + <string> "viewport_mode" </string> + <int> 1 </int> + <string> "ambient_light_color" </string> + <color> 0.15, 0.15, 0.15, 1 </color> + <string> "show_grid" </string> + <bool> True </bool> + <string> "znear" </string> + <real> 0.1 </real> + <string> "show_origin" </string> + <bool> True </bool> + <string> "deflight_rot_x" </string> + <real> 0.942478 </real> + <string> "default_srgb" </string> + <bool> False </bool> + </dictionary> + </dictionary> + <string> "__editor_run_settings__" </string> + <dictionary shared="false"> + <string> "custom_args" </string> + <string> "-l $scene" </string> + <string> "run_mode" </string> + <int> 0 </int> + </dictionary> + <string> "__editor_plugin_screen__" </string> + <string> "Script" </string> + </dictionary> <resource resource_type="PackedScene" path="res://moving_platform.xml"> </resource> <vector2> 1451.86, 742.969 </vector2> + <dictionary shared="false"> + <string> "__editor_plugin_states__" </string> + <dictionary shared="false"> + <string> "Script" </string> + <dictionary shared="false"> + <string> "current" </string> + <int> 0 </int> + <string> "sources" </string> + <array len="4" shared="false"> + <string> "res://moving_platform.gd" </string> + <string> "res://enemy.gd" </string> + <string> "res://player.gd" </string> + <string> "res://coin.gd" </string> + </array> + </dictionary> + <string> "2D" </string> + <dictionary shared="false"> + <string> "pixel_snap" </string> + <bool> False </bool> + <string> "zoom" </string> + <real> 1.360373 </real> + <string> "ofs" </string> + <vector2> -210.652, -172.81 </vector2> + </dictionary> + <string> "3D" </string> + <dictionary shared="false"> + <string> "fov" </string> + <real> 400 </real> + <string> "zfar" </string> + <real> 500 </real> + <string> "viewports" </string> + <array len="4" shared="false"> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + </array> + <string> "viewport_mode" </string> + <int> 1 </int> + <string> "default_light" </string> + <bool> True </bool> + <string> "show_grid" </string> + <bool> True </bool> + <string> "znear" </string> + <real> 0.1 </real> + <string> "show_origin" </string> + <bool> True </bool> + </dictionary> + </dictionary> + <string> "__editor_run_settings__" </string> + <dictionary shared="false"> + <string> "custom_args" </string> + <string> "-l $scene" </string> + <string> "run_mode" </string> + <int> 0 </int> + </dictionary> + <string> "__editor_plugin_screen__" </string> + <string> "2D" </string> + </dictionary> <vector2> 0, 140 </vector2> <real> 5 </real> <vector2> 624.824, 545.544 </vector2> @@ -334,10 +705,217 @@ <vector2> 450, 0 </vector2> <resource resource_type="PackedScene" path="res://seesaw.xml"> </resource> <vector2> 2402.79, 849.52 </vector2> + <dictionary shared="false"> + <string> "__editor_plugin_states__" </string> + <dictionary shared="false"> + <string> "2D" </string> + <dictionary shared="false"> + <string> "pixel_snap" </string> + <bool> False </bool> + <string> "zoom" </string> + <real> 2.050547 </real> + <string> "ofs" </string> + <vector2> -116.979, -109.897 </vector2> + </dictionary> + <string> "3D" </string> + <dictionary shared="false"> + <string> "fov" </string> + <real> 400 </real> + <string> "zfar" </string> + <real> 500 </real> + <string> "viewports" </string> + <array len="4" shared="false"> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + </array> + <string> "viewport_mode" </string> + <int> 1 </int> + <string> "default_light" </string> + <bool> True </bool> + <string> "show_grid" </string> + <bool> True </bool> + <string> "znear" </string> + <real> 0.1 </real> + <string> "show_origin" </string> + <bool> True </bool> + </dictionary> + </dictionary> + <string> "__editor_run_settings__" </string> + <dictionary shared="false"> + <string> "custom_args" </string> + <string> "-l $scene" </string> + <string> "run_mode" </string> + <int> 0 </int> + </dictionary> + <string> "__editor_plugin_screen__" </string> + <string> "2D" </string> + </dictionary> <resource resource_type="AudioStream" path="res://music.ogg"> </resource> <real> 2 </real> <resource resource_type="PackedScene" path="res://enemy.xml"> </resource> <vector2> 834.664, 1309.6 </vector2> + <dictionary shared="false"> + <string> "__editor_plugin_states__" </string> + <dictionary shared="false"> + <string> "Script" </string> + <dictionary shared="false"> + <string> "current" </string> + <int> 0 </int> + <string> "sources" </string> + <array len="1" shared="false"> + <string> "res://enemy.gd" </string> + </array> + </dictionary> + <string> "2D" </string> + <dictionary shared="false"> + <string> "pixel_snap" </string> + <bool> False </bool> + <string> "zoom" </string> + <real> 1.108033 </real> + <string> "ofs" </string> + <vector2> -227.625, -197.9 </vector2> + </dictionary> + <string> "3D" </string> + <dictionary shared="false"> + <string> "fov" </string> + <real> 45 </real> + <string> "zfar" </string> + <real> 500 </real> + <string> "viewports" </string> + <array len="4" shared="false"> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0 </real> + <string> "y_rot" </string> + <real> 0 </real> + <string> "use_orthogonal" </string> + <bool> False </bool> + <string> "use_environment" </string> + <bool> False </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + </array> + <string> "viewport_mode" </string> + <int> 1 </int> + <string> "default_light" </string> + <bool> True </bool> + <string> "show_grid" </string> + <bool> True </bool> + <string> "znear" </string> + <real> 0.1 </real> + <string> "show_origin" </string> + <bool> True </bool> + </dictionary> + </dictionary> + <string> "__editor_run_settings__" </string> + <dictionary shared="false"> + <string> "custom_args" </string> + <string> "-l $scene" </string> + <string> "run_mode" </string> + <int> 0 </int> + </dictionary> + <string> "__editor_plugin_screen__" </string> + <string> "2D" </string> + </dictionary> <vector2> 707.665, 1225.05 </vector2> <vector2> 1125.21, 1053.06 </vector2> <vector2> 1292.11, 1059.24 </vector2> @@ -349,19 +927,78 @@ <vector2> 3546.2, 1356.19 </vector2> <vector2> 2406.63, 815.115 </vector2> <resource resource_type="PackedScene" path="res://parallax_bg.xml"> </resource> + <dictionary shared="false"> + <string> "__editor_plugin_states__" </string> + <dictionary shared="false"> + <string> "Script" </string> + <dictionary shared="false"> + <string> "current" </string> + <int> 0 </int> + <string> "sources" </string> + <array len="4" shared="false"> + <string> "res://moving_platform.gd" </string> + <string> "res://enemy.gd" </string> + <string> "res://player.gd" </string> + <string> "res://coin.gd" </string> + </array> + </dictionary> + <string> "2D" </string> + <dictionary shared="false"> + <string> "zoom" </string> + <real> 1 </real> + <string> "ofs" </string> + <vector2> -5, -25 </vector2> + </dictionary> + <string> "3D" </string> + <dictionary shared="false"> + <string> "zfar" </string> + <real> 500 </real> + <string> "fov" </string> + <real> 45 </real> + <string> "window_mode" </string> + <int> 0 </int> + <string> "window_0" </string> + <dictionary shared="false"> + <string> "distance" </string> + <real> 4 </real> + <string> "x_rot" </string> + <real> 0.337 </real> + <string> "default_light" </string> + <bool> True </bool> + <string> "y_rot" </string> + <real> -0.575 </real> + <string> "show_grid" </string> + <bool> True </bool> + <string> "show_origin" </string> + <bool> True </bool> + <string> "pos" </string> + <vector3> 0, 0, 0 </vector3> + </dictionary> + <string> "znear" </string> + <real> 0.1 </real> + </dictionary> + </dictionary> + <string> "__editor_run_settings__" </string> + <dictionary shared="false"> + <string> "custom_args" </string> + <string> "-l $scene" </string> + <string> "run_mode" </string> + <int> 0 </int> + </dictionary> + <string> "__editor_plugin_screen__" </string> + <string> "2D" </string> + </dictionary> <real> 12 </real> <real> -202 </real> <real> 358 </real> <real> -10 </real> - <int> 2 </int> <real> 7 </real> <real> 14.769231 </real> - <string> "This is a simple demo on how to make a platformer game with Godot.This version uses physics and the 2D physics engine for motion and collision.The demo also shows the benefits of using the scene system, where coins,enemies and the player are edited separatedly and instanced in the stage.To edit the base tiles for the tileset, open the tileset_edit.xml file and follow instructions." </string> - <int> 0 </int> + <string> "This is a simple demo on how to make a platformer game with Godot."This version uses physics and the 2D physics engine for motion and collision.""The demo also shows the benefits of using the scene system, where coins,"enemies and the player are edited separatedly and instanced in the stage.""To edit the base tiles for the tileset, open the tileset_edit.xml file and follow "instructions."" </string> <real> -1 </real> </array> <string> "nodes" </string> - <int_array len="708"> -1, -1, 1, 0, -1, 2, 2, 0, 3, 1, 0, 0, 0, 5, 4, -1, 16, 2, 0, 6, 2, 7, 3, 8, 3, 9, 4, 10, 5, 11, 6, 12, 7, 13, 8, 14, 9, 15, 10, 16, 11, 17, 3, 18, 6, 19, 12, 3, 13, 0, 0, 0, 1, 20, -1, 2, 2, 0, 3, 14, 0, 2, 0, 22, 21, 15, 1, 10, 16, 0, 2, 0, 22, 23, 15, 1, 10, 17, 0, 2, 0, 22, 24, 15, 1, 10, 18, 0, 2, 0, 22, 25, 15, 1, 10, 19, 0, 2, 0, 22, 26, 15, 1, 10, 20, 0, 2, 0, 22, 27, 15, 1, 10, 21, 0, 2, 0, 22, 28, 15, 1, 10, 22, 0, 2, 0, 22, 29, 15, 1, 10, 23, 0, 2, 0, 22, 30, 15, 1, 10, 24, 0, 2, 0, 22, 31, 15, 1, 10, 25, 0, 2, 0, 22, 32, 15, 1, 10, 26, 0, 2, 0, 22, 33, 15, 1, 10, 27, 0, 2, 0, 22, 34, 15, 1, 10, 28, 0, 2, 0, 22, 35, 15, 1, 10, 29, 0, 2, 0, 22, 36, 15, 1, 10, 30, 0, 2, 0, 22, 37, 15, 1, 10, 31, 0, 2, 0, 22, 38, 15, 1, 10, 32, 0, 2, 0, 22, 39, 15, 1, 10, 33, 0, 2, 0, 22, 40, 15, 1, 10, 34, 0, 2, 0, 22, 41, 15, 1, 10, 35, 0, 2, 0, 22, 42, 15, 1, 10, 36, 0, 2, 0, 22, 43, 15, 1, 10, 37, 0, 2, 0, 22, 44, 15, 1, 10, 38, 0, 2, 0, 22, 45, 15, 1, 10, 39, 0, 2, 0, 22, 46, 15, 1, 10, 40, 0, 2, 0, 22, 47, 15, 1, 10, 41, 0, 2, 0, 22, 48, 15, 1, 10, 42, 0, 2, 0, 22, 49, 15, 1, 10, 43, 0, 2, 0, 22, 50, 15, 1, 10, 44, 0, 2, 0, 22, 51, 15, 1, 10, 45, 0, 2, 0, 22, 52, 15, 1, 10, 46, 0, 2, 0, 22, 53, 15, 1, 10, 47, 0, 2, 0, 22, 54, 15, 1, 10, 48, 0, 2, 0, 22, 55, 15, 1, 10, 49, 0, 2, 0, 22, 56, 15, 1, 10, 50, 0, 2, 0, 22, 57, 15, 1, 10, 51, 0, 2, 0, 22, 58, 15, 1, 10, 52, 0, 2, 0, 22, 59, 15, 1, 10, 53, 0, 2, 0, 22, 60, 15, 1, 10, 54, 0, 2, 0, 22, 61, 15, 1, 10, 55, 0, 2, 0, 22, 62, 15, 1, 10, 56, 0, 2, 0, 22, 63, 15, 1, 10, 57, 0, 0, 0, 65, 64, 58, 1, 10, 59, 0, 0, 0, 1, 66, -1, 1, 2, 0, 0, 46, 0, 68, 67, 60, 3, 10, 61, 69, 62, 70, 63, 0, 46, 0, 68, 71, 60, 3, 10, 64, 69, 65, 70, 66, 0, 46, 0, 68, 72, 60, 3, 10, 67, 69, 68, 70, 66, 0, 46, 0, 68, 73, 69, 1, 10, 70, 0, 0, 0, 75, 74, -1, 7, 2, 0, 76, 71, 77, 4, 78, 2, 79, 72, 80, 2, 81, 4, 0, 0, 0, 1, 82, -1, 1, 2, 0, 0, 52, 0, 65, 83, 73, 1, 10, 74, 0, 52, 0, 65, 84, 73, 1, 10, 75, 0, 52, 0, 65, 85, 73, 1, 10, 76, 0, 52, 0, 65, 86, 73, 1, 10, 77, 0, 52, 0, 65, 87, 73, 1, 10, 78, 0, 52, 0, 65, 88, 73, 1, 10, 79, 0, 52, 0, 65, 89, 73, 1, 10, 80, 0, 52, 0, 65, 90, 73, 1, 10, 81, 0, 52, 0, 65, 91, 73, 1, 10, 82, 0, 52, 0, 65, 92, 73, 1, 10, 83, 0, 52, 0, 65, 93, 73, 1, 10, 84, 0, 0, 0, 95, 94, 85, 0, 0, 0, 0, 96, 96, -1, 30, 2, 0, 6, 2, 7, 3, 8, 3, 9, 4, 97, 86, 98, 87, 99, 88, 100, 89, 101, 0, 102, 0, 103, 0, 104, 0, 105, 2, 106, 2, 107, 90, 108, 3, 109, 6, 110, 91, 111, 3, 112, 92, 113, 6, 114, 4, 115, 4, 116, 93, 117, 94, 118, 94, 119, 2, 120, 4, 121, 95, 0 </int_array> + <int_array len="950"> -1, -1, 1, 0, -1, 2, 2, 0, 3, 1, 0, 0, 0, 5, 4, -1, 19, 2, 0, 6, 2, 7, 3, 8, 3, 9, 4, 10, 5, 11, 6, 12, 7, 13, 8, 14, 9, 15, 10, 16, 11, 17, 12, 18, 13, 19, 3, 20, 6, 21, 14, 22, 15, 3, 16, 0, 0, 0, 1, 23, -1, 2, 2, 0, 3, 17, 0, 2, 0, 25, 24, 18, 3, 2, 0, 10, 19, 3, 20, 0, 2, 0, 25, 26, 18, 3, 2, 0, 10, 21, 3, 20, 0, 2, 0, 25, 27, 18, 3, 2, 0, 10, 22, 3, 20, 0, 2, 0, 25, 28, 18, 3, 2, 0, 10, 23, 3, 20, 0, 2, 0, 25, 29, 18, 3, 2, 0, 10, 24, 3, 20, 0, 2, 0, 25, 30, 18, 3, 2, 0, 10, 25, 3, 20, 0, 2, 0, 25, 31, 18, 3, 2, 0, 10, 26, 3, 20, 0, 2, 0, 25, 32, 18, 3, 2, 0, 10, 27, 3, 20, 0, 2, 0, 25, 33, 18, 3, 2, 0, 10, 28, 3, 20, 0, 2, 0, 25, 34, 18, 3, 2, 0, 10, 29, 3, 20, 0, 2, 0, 25, 35, 18, 3, 2, 0, 10, 30, 3, 20, 0, 2, 0, 25, 36, 18, 3, 2, 0, 10, 31, 3, 20, 0, 2, 0, 25, 37, 18, 3, 2, 0, 10, 32, 3, 20, 0, 2, 0, 25, 38, 18, 3, 2, 0, 10, 33, 3, 20, 0, 2, 0, 25, 39, 18, 3, 2, 0, 10, 34, 3, 20, 0, 2, 0, 25, 40, 18, 3, 2, 0, 10, 35, 3, 20, 0, 2, 0, 25, 41, 18, 3, 2, 0, 10, 36, 3, 20, 0, 2, 0, 25, 42, 18, 3, 2, 0, 10, 37, 3, 20, 0, 2, 0, 25, 43, 18, 3, 2, 0, 10, 38, 3, 20, 0, 2, 0, 25, 44, 18, 3, 2, 0, 10, 39, 3, 20, 0, 2, 0, 25, 45, 18, 3, 2, 0, 10, 40, 3, 20, 0, 2, 0, 25, 46, 18, 3, 2, 0, 10, 41, 3, 20, 0, 2, 0, 25, 47, 18, 3, 2, 0, 10, 42, 3, 20, 0, 2, 0, 25, 48, 18, 3, 2, 0, 10, 43, 3, 20, 0, 2, 0, 25, 49, 18, 3, 2, 0, 10, 44, 3, 20, 0, 2, 0, 25, 50, 18, 3, 2, 0, 10, 45, 3, 20, 0, 2, 0, 25, 51, 18, 3, 2, 0, 10, 46, 3, 20, 0, 2, 0, 25, 52, 18, 3, 2, 0, 10, 47, 3, 20, 0, 2, 0, 25, 53, 18, 3, 2, 0, 10, 48, 3, 20, 0, 2, 0, 25, 54, 18, 3, 2, 0, 10, 49, 3, 20, 0, 2, 0, 25, 55, 18, 3, 2, 0, 10, 50, 3, 20, 0, 2, 0, 25, 56, 18, 3, 2, 0, 10, 51, 3, 20, 0, 2, 0, 25, 57, 18, 3, 2, 0, 10, 52, 3, 20, 0, 2, 0, 25, 58, 18, 3, 2, 0, 10, 53, 3, 20, 0, 2, 0, 25, 59, 18, 3, 2, 0, 10, 54, 3, 20, 0, 2, 0, 25, 60, 18, 3, 2, 0, 10, 55, 3, 20, 0, 2, 0, 25, 61, 18, 3, 2, 0, 10, 56, 3, 20, 0, 2, 0, 25, 62, 18, 3, 2, 0, 10, 57, 3, 20, 0, 2, 0, 25, 63, 18, 3, 2, 0, 10, 58, 3, 20, 0, 2, 0, 25, 64, 18, 3, 2, 0, 10, 59, 3, 20, 0, 2, 0, 25, 65, 18, 3, 2, 0, 10, 60, 3, 20, 0, 2, 0, 25, 66, 18, 3, 2, 0, 10, 61, 3, 20, 0, 0, 0, 68, 67, 62, 3, 2, 0, 10, 63, 3, 64, 0, 0, 0, 1, 69, -1, 1, 2, 0, 0, 46, 0, 71, 70, 65, 5, 2, 0, 10, 66, 3, 67, 72, 68, 73, 69, 0, 46, 0, 71, 74, 65, 5, 2, 0, 10, 70, 3, 67, 72, 71, 73, 72, 0, 46, 0, 71, 75, 65, 5, 2, 0, 10, 73, 3, 67, 72, 74, 73, 72, 0, 46, 0, 71, 76, 75, 3, 2, 0, 10, 76, 3, 77, 0, 0, 0, 78, 77, -1, 7, 2, 0, 79, 78, 80, 4, 81, 2, 82, 79, 83, 2, 84, 4, 0, 0, 0, 1, 85, -1, 1, 2, 0, 0, 52, 0, 68, 86, 80, 3, 2, 0, 10, 81, 3, 82, 0, 52, 0, 68, 87, 80, 3, 2, 0, 10, 83, 3, 82, 0, 52, 0, 68, 88, 80, 3, 2, 0, 10, 84, 3, 82, 0, 52, 0, 68, 89, 80, 3, 2, 0, 10, 85, 3, 82, 0, 52, 0, 68, 90, 80, 3, 2, 0, 10, 86, 3, 82, 0, 52, 0, 68, 91, 80, 3, 2, 0, 10, 87, 3, 82, 0, 52, 0, 68, 92, 80, 3, 2, 0, 10, 88, 3, 82, 0, 52, 0, 68, 93, 80, 3, 2, 0, 10, 89, 3, 82, 0, 52, 0, 68, 94, 80, 3, 2, 0, 10, 90, 3, 82, 0, 52, 0, 68, 95, 80, 3, 2, 0, 10, 91, 3, 82, 0, 52, 0, 68, 96, 80, 3, 2, 0, 10, 92, 3, 82, 0, 0, 0, 98, 97, 93, 2, 2, 0, 3, 94, 0, 0, 0, 99, 99, -1, 30, 2, 0, 6, 2, 7, 3, 8, 3, 9, 4, 100, 95, 101, 96, 102, 97, 103, 98, 104, 0, 105, 0, 106, 0, 107, 0, 108, 2, 109, 2, 110, 13, 111, 3, 112, 6, 113, 99, 114, 3, 115, 100, 116, 6, 117, 4, 118, 4, 119, 101, 120, 8, 121, 8, 122, 2, 123, 4, 124, 102, 0 </int_array> <string> "conns" </string> <int_array len="0"> </int_array> </dictionary> diff --git a/demos/2d/polygon_path_finder_demo/engine.cfg b/demos/2d/polygon_path_finder_demo/engine.cfg new file mode 100644 index 0000000000..41c4adf701 --- /dev/null +++ b/demos/2d/polygon_path_finder_demo/engine.cfg @@ -0,0 +1,5 @@ +[application] + +name="polygon_path_finder_demo" +main_scene="res://new_scene_poly_with_holes.scn" +icon="icon.png" diff --git a/demos/2d/polygon_path_finder_demo/icon.png b/demos/2d/polygon_path_finder_demo/icon.png Binary files differnew file mode 100644 index 0000000000..0c422e37b0 --- /dev/null +++ b/demos/2d/polygon_path_finder_demo/icon.png diff --git a/demos/2d/polygon_path_finder_demo/icon.png.flags b/demos/2d/polygon_path_finder_demo/icon.png.flags new file mode 100644 index 0000000000..dbef2209e8 --- /dev/null +++ b/demos/2d/polygon_path_finder_demo/icon.png.flags @@ -0,0 +1 @@ +gen_mipmaps=true diff --git a/demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn b/demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn Binary files differnew file mode 100644 index 0000000000..07838be41e --- /dev/null +++ b/demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn diff --git a/demos/2d/polygon_path_finder_demo/polygonpathfinder.gd b/demos/2d/polygon_path_finder_demo/polygonpathfinder.gd new file mode 100644 index 0000000000..a0e71dd127 --- /dev/null +++ b/demos/2d/polygon_path_finder_demo/polygonpathfinder.gd @@ -0,0 +1,80 @@ + +extends Spatial + +func _ready(): + var pf = PolygonPathFinder.new() + + var points = Vector2Array() + var connections = IntArray() + + # poly 1 + points.push_back(Vector2(0, 0)) #0 + points.push_back(Vector2(10, 0)) #1 + points.push_back(Vector2(10, 10)) #2 + points.push_back(Vector2(0, 10)) #3 + + connections.push_back(0) # connect vertex 0 ... + connections.push_back(1) # ... to 1 + drawLine(points[0], points[1], get_node("/root/Spatial/Polys")) + connections.push_back(1) # connect vertex 1 ... + connections.push_back(2) # ... to 2 + drawLine(points[1], points[2], get_node("/root/Spatial/Polys")) + connections.push_back(2) # etc. + connections.push_back(3) + drawLine(points[2], points[3], get_node("/root/Spatial/Polys")) + connections.push_back(3) # connect vertex 3 ... + connections.push_back(0) # back to vertex 0, to close the polygon + drawLine(points[3], points[0], get_node("/root/Spatial/Polys")) + + # poly 2, as obstacle inside poly 1 + points.push_back(Vector2(2, 0.5)) #4 + points.push_back(Vector2(4, 0.5)) #5 + points.push_back(Vector2(4, 9.5)) #6 + points.push_back(Vector2(2, 9.5)) #7 + + connections.push_back(4) + connections.push_back(5) + drawLine(points[4], points[5], get_node("/root/Spatial/Polys")) + connections.push_back(5) + connections.push_back(6) + drawLine(points[5], points[6], get_node("/root/Spatial/Polys")) + connections.push_back(6) + connections.push_back(7) + drawLine(points[6], points[7], get_node("/root/Spatial/Polys")) + connections.push_back(7) + connections.push_back(4) + drawLine(points[7], points[4], get_node("/root/Spatial/Polys")) + + + print("points: ",points) + print("connections: ",connections) + + pf.setup(points, connections) + + var path = pf.find_path(Vector2(1, 5), Vector2(8, 5)) + + var lastStep = null + print("path: ",path) + for step in path: + print("step: ",step) + if (lastStep != null): + var currPathSegment = Vector2Array() + drawLine(lastStep, step, get_node("/root/Spatial/Path")) + lastStep = step + + + +func drawLine(pointA, pointB, immediateGeo): + var drawPosY = 0.1 + var im = immediateGeo + + im.begin(Mesh.PRIMITIVE_POINTS, null) + im.add_vertex(Vector3(pointA.x, drawPosY, pointA.y)) + im.add_vertex(Vector3(pointB.x, drawPosY, pointB.y)) + im.end() + im.begin(Mesh.PRIMITIVE_LINE_STRIP, null) + im.add_vertex(Vector3(pointA.x, drawPosY, pointA.y)) + im.add_vertex(Vector3(pointB.x, drawPosY, pointB.y)) + im.end() + + diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index 59f844904e..3e68c65d45 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -1411,6 +1411,9 @@ void RasterizerGLES2::shader_set_mode(RID p_shader,VS::ShaderMode p_mode) { case VS::SHADER_MATERIAL: { material_shader.free_custom_shader(shader->custom_code_id); } break; + case VS::SHADER_CANVAS_ITEM: { + canvas_shader.free_custom_shader(shader->custom_code_id); + } break; } shader->custom_code_id=0; @@ -1422,6 +1425,9 @@ void RasterizerGLES2::shader_set_mode(RID p_shader,VS::ShaderMode p_mode) { case VS::SHADER_MATERIAL: { shader->custom_code_id=material_shader.create_custom_shader(); } break; + case VS::SHADER_CANVAS_ITEM: { + shader->custom_code_id=canvas_shader.create_custom_shader(); + } break; } _shader_make_dirty(shader); @@ -1558,6 +1564,7 @@ void RasterizerGLES2::shader_set_default_texture_param(RID p_shader, const Strin RID RasterizerGLES2::shader_get_default_texture_param(RID p_shader, const StringName& p_name) const{ const Shader *shader=shader_owner.get(p_shader); + ERR_FAIL_COND_V(!shader,RID()); const Map<StringName,RID>::Element *E=shader->default_textures.find(p_name); if (!E) @@ -1565,6 +1572,22 @@ RID RasterizerGLES2::shader_get_default_texture_param(RID p_shader, const String return E->get(); } +Variant RasterizerGLES2::shader_get_default_param(RID p_shader, const StringName& p_name) { + + Shader *shader=shader_owner.get(p_shader); + ERR_FAIL_COND_V(!shader,Variant()); + + //update shader params if necesary + //make sure the shader is compiled and everything + //so the actual parameters can be properly retrieved! + if (shader->dirty_list.in_list()) { + _update_shader(shader); + } + if (shader->valid && shader->uniforms.has(p_name)) + return shader->uniforms[p_name].default_value; + + return Variant(); +} /* COMMON MATERIAL API */ @@ -4015,8 +4038,16 @@ void RasterizerGLES2::render_target_set_size(RID p_render_target,int p_width,int glGenTextures(1, &rt->color); glBindTexture(GL_TEXTURE_2D, rt->color); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, rt->width, rt->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + if (rt->texture_ptr->flags&VS::TEXTURE_FLAG_FILTER) { + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + } else { + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->color, 0); @@ -4434,6 +4465,13 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { if (err) { return; //invalid } + } else if (p_shader->mode==VS::SHADER_CANVAS_ITEM) { + + Error err = shader_precompiler.compile(p_shader->vertex_code,ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX,vertex_code,vertex_globals,vertex_flags,&p_shader->uniforms); + if (err) { + return; //invalid + } + } //print_line("compiled vertex: "+vertex_code); @@ -4443,9 +4481,16 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { String fragment_code; String fragment_globals; - Error err = shader_precompiler.compile(p_shader->fragment_code,(p_shader->mode==VS::SHADER_MATERIAL?ShaderLanguage::SHADER_MATERIAL_FRAGMENT:ShaderLanguage::SHADER_POST_PROCESS),fragment_code,fragment_globals,fragment_flags,&p_shader->uniforms); - if (err) { - return; //invalid + if (p_shader->mode==VS::SHADER_MATERIAL) { + Error err = shader_precompiler.compile(p_shader->fragment_code,ShaderLanguage::SHADER_MATERIAL_FRAGMENT,fragment_code,fragment_globals,fragment_flags,&p_shader->uniforms); + if (err) { + return; //invalid + } + } else if (p_shader->mode==VS::SHADER_CANVAS_ITEM) { + Error err = shader_precompiler.compile(p_shader->fragment_code,ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT,fragment_code,fragment_globals,fragment_flags,&p_shader->uniforms); + if (err) { + return; //invalid + } } @@ -4458,6 +4503,11 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { if (err) { return; //invalid } + } else if (p_shader->mode==VS::SHADER_CANVAS_ITEM) { + Error err = shader_precompiler.compile(p_shader->light_code,(ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT),light_code,light_globals,light_flags,&p_shader->uniforms); + if (err) { + return; //invalid + } } fragment_globals+=light_globals; //both fragment anyway @@ -4518,7 +4568,39 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { } material_shader.set_custom_shader_code(p_shader->custom_code_id,vertex_code, vertex_globals,fragment_code, light_code, fragment_globals,uniform_names,enablers); - } else { + } else if (p_shader->mode==VS::SHADER_CANVAS_ITEM) { + + Vector<const char*> enablers; + + if (light_flags.uses_time || fragment_flags.uses_time || vertex_flags.uses_time) { + enablers.push_back("#define USE_TIME\n"); + uses_time=true; + } + if (fragment_flags.uses_normal) { + enablers.push_back("#define NORMAL_USED\n"); + } + if (light_flags.uses_light) { + enablers.push_back("#define USE_LIGHT_SHADER_CODE\n"); + } + if (fragment_flags.use_var1_interp || vertex_flags.use_var1_interp) + enablers.push_back("#define ENABLE_VAR1_INTERP\n"); + if (fragment_flags.use_var2_interp || vertex_flags.use_var2_interp) + enablers.push_back("#define ENABLE_VAR2_INTERP\n"); + if (fragment_flags.uses_texscreen) { + enablers.push_back("#define ENABLE_TEXSCREEN\n"); + } + if (fragment_flags.uses_screen_uv) { + enablers.push_back("#define ENABLE_SCREEN_UV\n"); + } + if (fragment_flags.uses_texpixel_size) { + enablers.push_back("#define USE_TEXPIXEL_SIZE\n"); + } + + if (vertex_flags.uses_worldvec) { + enablers.push_back("#define USE_WORLD_VEC\n"); + } + canvas_shader.set_custom_shader_code(p_shader->custom_code_id,vertex_code, vertex_globals,fragment_code, light_code, fragment_globals,uniform_names,enablers); + //postprocess_shader.set_custom_shader_code(p_shader->custom_code_id,vertex_code, vertex_globals,fragment_code, fragment_globals,uniform_names); } @@ -4529,7 +4611,9 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { p_shader->has_texscreen=fragment_flags.uses_texscreen; p_shader->has_screen_uv=fragment_flags.uses_screen_uv; p_shader->can_zpass=!fragment_flags.uses_discard && !vertex_flags.vertex_code_writes_vertex; + p_shader->uses_normal=fragment_flags.uses_normal || light_flags.uses_normal; p_shader->uses_time=uses_time; + p_shader->uses_texpixel_size=fragment_flags.uses_texpixel_size; p_shader->version++; } @@ -4881,25 +4965,37 @@ _FORCE_INLINE_ void RasterizerGLES2::_update_material_shader_params(Material *p_ Material::UniformData ud; bool keep=true; //keep material value - bool has_old = old_mparams.has(E->key()); + + Map<StringName,Material::UniformData>::Element *OLD=old_mparams.find(E->key()); + bool has_old = OLD; bool old_inuse=has_old && old_mparams[E->key()].inuse; - if (!has_old || !old_inuse) + ud.istexture=(E->get().type==ShaderLanguage::TYPE_TEXTURE || E->get().type==ShaderLanguage::TYPE_CUBEMAP); + + if (!has_old || !old_inuse) { keep=false; - else if (old_mparams[E->key()].value.get_type()!=E->value().default_value.get_type()) { + } + else if (OLD->get().value.get_type()!=E->value().default_value.get_type()) { + + if (OLD->get().value.get_type()==Variant::INT && E->get().type==ShaderLanguage::TYPE_FLOAT) { + //handle common mistake using shaders (feeding ints instead of float) + OLD->get().value=float(OLD->get().value); + keep=true; + } else if (!ud.istexture && E->value().default_value.get_type()!=Variant::NIL) { + + keep=false; + } //type changed between old and new - /*if (old_mparams[E->key()].value.get_type()==Variant::OBJECT) { + /* if (old_mparams[E->key()].value.get_type()==Variant::OBJECT) { if (E->value().default_value.get_type()!=Variant::_RID) //hackfor textures keep=false; } else if (!old_mparams[E->key()].value.is_num() || !E->value().default_value.get_type()) keep=false;*/ //value is invalid because type differs and default is not null - if (E->value().default_value.get_type()!=Variant::NIL) - keep=false; + ; } - ud.istexture=(E->get().type==ShaderLanguage::TYPE_TEXTURE || E->get().type==ShaderLanguage::TYPE_CUBEMAP); if (keep) { ud.value=old_mparams[E->key()].value; @@ -5023,8 +5119,10 @@ bool RasterizerGLES2::_setup_material(const Geometry *p_geometry,const Material int texcoord=0; for (Map<StringName,Material::UniformData>::Element *E=p_material->shader_params.front();E;E=E->next()) { + if (E->get().index<0) continue; +// print_line(String(E->key())+": "+E->get().value); if (E->get().istexture) { //clearly a texture.. RID rid = E->get().value; @@ -5068,6 +5166,7 @@ bool RasterizerGLES2::_setup_material(const Geometry *p_geometry,const Material if (p_material->shader_cache->has_texscreen && framebuffer.active) { material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_SCREEN_MULT,Vector2(float(viewport.width)/framebuffer.width,float(viewport.height)/framebuffer.height)); + material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_SCREEN_CLAMP,Color(0,0,float(viewport.width)/framebuffer.width,float(viewport.height)/framebuffer.height)); material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_TEX,texcoord); glActiveTexture(GL_TEXTURE0+texcoord); glBindTexture(GL_TEXTURE_2D,framebuffer.sample_color); @@ -7722,10 +7821,11 @@ void RasterizerGLES2::canvas_begin() { canvas_tex=RID(); //material_shader.unbind(); canvas_shader.unbind(); + canvas_shader.set_custom_shader(0); canvas_shader.bind(); canvas_shader.set_uniform(CanvasShaderGLES2::TEXTURE, 0); _set_color_attrib(Color(1,1,1)); - Transform canvas_transform; + canvas_transform=Transform(); canvas_transform.translate(-(viewport.width / 2.0f), -(viewport.height / 2.0f), 0.0f); float csy = 1.0; if (current_rt && current_rt_vflip) @@ -7739,6 +7839,9 @@ void RasterizerGLES2::canvas_begin() { canvas_opacity=1.0; canvas_blend_mode=VS::MATERIAL_BLEND_MODE_MIX; + canvas_texscreen_used=false; + uses_texpixel_size=false; + canvas_last_shader=RID(); } @@ -7821,7 +7924,7 @@ void RasterizerGLES2::canvas_end_rect() { RasterizerGLES2::Texture* RasterizerGLES2::_bind_canvas_texture(const RID& p_texture) { - if (p_texture==canvas_tex) { + if (p_texture==canvas_tex && !rebind_texpixel_size) { if (canvas_tex.is_valid()) { Texture*texture=texture_owner.get(p_texture); return texture; @@ -7829,14 +7932,16 @@ RasterizerGLES2::Texture* RasterizerGLES2::_bind_canvas_texture(const RID& p_tex return NULL; } - + rebind_texpixel_size=false; if (p_texture.is_valid()) { + Texture*texture=texture_owner.get(p_texture); if (!texture) { canvas_tex=RID(); glBindTexture(GL_TEXTURE_2D,white_tex); + return NULL; } @@ -7845,6 +7950,9 @@ RasterizerGLES2::Texture* RasterizerGLES2::_bind_canvas_texture(const RID& p_tex glBindTexture(GL_TEXTURE_2D,texture->tex_id); canvas_tex=p_texture; + if (uses_texpixel_size) { + canvas_shader.set_uniform(CanvasShaderGLES2::TEXPIXEL_SIZE,Size2(1.0/texture->width,1.0/texture->height)); + } return texture; @@ -8215,12 +8323,13 @@ void RasterizerGLES2::canvas_set_transform(const Matrix32& p_transform) { //canvas_transform = Variant(p_transform); } + void RasterizerGLES2::canvas_render_items(CanvasItem *p_item_list) { CanvasItem *current_clip=NULL; - + canvas_opacity=1.0; while(p_item_list) { CanvasItem *ci=p_item_list; @@ -8231,6 +8340,7 @@ void RasterizerGLES2::canvas_render_items(CanvasItem *p_item_list) { } memdelete(ci->vp_render); ci->vp_render=NULL; + canvas_last_shader=RID(); } if (current_clip!=ci->final_clip_owner) { @@ -8248,10 +8358,131 @@ void RasterizerGLES2::canvas_render_items(CanvasItem *p_item_list) { glDisable(GL_SCISSOR_TEST); } } + + //begin rect + CanvasItem *shader_owner = ci->shader_owner?ci->shader_owner:ci; + + if (shader_owner->shader!=canvas_last_shader) { + + Shader *shader = NULL; + if (shader_owner->shader.is_valid()) { + shader = this->shader_owner.get(shader_owner->shader); + if (shader && !shader->valid) { + shader=NULL; + } + } + + if (shader) { + canvas_shader.set_custom_shader(shader->custom_code_id); + if (canvas_shader.bind()) + rebind_texpixel_size=true; + + if (shader_owner->shader_version!=shader->version) { + //todo optimize uniforms + shader_owner->shader_version=shader->version; + } + //this can be optimized.. + int tex_id=1; + int idx=0; + for(Map<StringName,ShaderLanguage::Uniform>::Element *E=shader->uniforms.front();E;E=E->next()) { + + Map<StringName,Variant>::Element *F=shader_owner->shader_param.find(E->key()); + + if ((E->get().type==ShaderLanguage::TYPE_TEXTURE || E->get().type==ShaderLanguage::TYPE_CUBEMAP)) { + + RID rid; + if (F) { + rid=F->get(); + } + + if (!rid.is_valid()) { + + Map<StringName,RID>::Element *DT=shader->default_textures.find(E->key()); + if (DT) { + rid=DT->get(); + } + } + + if (rid.is_valid()) { + + int loc = canvas_shader.get_custom_uniform_location(idx); //should be automatic.. + + glActiveTexture(GL_TEXTURE0+tex_id); + Texture *t=texture_owner.get(rid); + if (!t) + glBindTexture(GL_TEXTURE_2D,white_tex); + else + glBindTexture(t->target,t->tex_id); + + glUniform1i(loc,tex_id); + tex_id++; + } + } else { + Variant &v=F?F->get():E->get().default_value; + canvas_shader.set_custom_uniform(idx,v); + } + + idx++; + } + + + if (shader->has_texscreen && framebuffer.active) { + + int x = viewport.x; + int y = window_size.height-(viewport.height+viewport.y); + + canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_SCREEN_MULT,Vector2(float(viewport.width)/framebuffer.width,float(viewport.height)/framebuffer.height)); + canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_SCREEN_CLAMP,Color(float(x)/framebuffer.width,float(y)/framebuffer.height,float(x+viewport.width)/framebuffer.width,float(y+viewport.height)/framebuffer.height)); + canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_TEX,tex_id); + glActiveTexture(GL_TEXTURE0+tex_id); + glBindTexture(GL_TEXTURE_2D,framebuffer.sample_color); + if (framebuffer.scale==1 && !canvas_texscreen_used) { +#ifdef GLEW_ENABLED + glReadBuffer(GL_COLOR_ATTACHMENT0); +#endif + glCopyTexSubImage2D(GL_TEXTURE_2D,0,x,y,x,y,viewport.width,viewport.height); + if (current_clip) { + // print_line(" a clip "); + } + + canvas_texscreen_used=true; + } + tex_id++; + + } + + if (tex_id>1) { + glActiveTexture(GL_TEXTURE0); + } + if (shader->has_screen_uv) { + canvas_shader.set_uniform(CanvasShaderGLES2::SCREEN_UV_MULT,Vector2(1.0/viewport.width,1.0/viewport.height)); + } + + if (shader->uses_time) { + canvas_shader.set_uniform(CanvasShaderGLES2::TIME,Math::fmod(last_time,300.0)); + draw_next_frame=true; + } + //if uses TIME - draw_next_frame=true + + uses_texpixel_size=shader->uses_texpixel_size; + + } else { + canvas_shader.set_custom_shader(0); + canvas_shader.bind(); + uses_texpixel_size=false; + + } + + + canvas_shader.set_uniform(CanvasShaderGLES2::PROJECTION_MATRIX,canvas_transform); + canvas_last_shader=shader_owner->shader; + } + canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX,ci->final_transform); canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX,Matrix32()); + bool reclip=false; if (ci==p_item_list || ci->blend_mode!=canvas_blend_mode) { @@ -8291,6 +8522,8 @@ void RasterizerGLES2::canvas_render_items(CanvasItem *p_item_list) { int cc=ci->commands.size(); CanvasItem::Command **commands = ci->commands.ptr(); + canvas_opacity = ci->final_opacity; + for(int i=0;i<cc;i++) { CanvasItem::Command *c=commands[i]; diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h index f97d112395..0f77d18dee 100644 --- a/drivers/gles2/rasterizer_gles2.h +++ b/drivers/gles2/rasterizer_gles2.h @@ -191,6 +191,8 @@ class RasterizerGLES2 : public Rasterizer { bool writes_vertex; bool uses_discard; bool uses_time; + bool uses_normal; + bool uses_texpixel_size; Map<StringName,ShaderLanguage::Uniform> uniforms; StringName first_texture; @@ -214,6 +216,7 @@ class RasterizerGLES2 : public Rasterizer { writes_vertex=false; uses_discard=false; uses_time=false; + uses_normal=false; } @@ -1169,6 +1172,13 @@ class RasterizerGLES2 : public Rasterizer { GLuint white_tex; RID canvas_tex; float canvas_opacity; + bool uses_texpixel_size; + bool rebind_texpixel_size; + Transform canvas_transform; + RID canvas_last_shader; + bool canvas_texscreen_used; + + _FORCE_INLINE_ Texture* _bind_canvas_texture(const RID& p_texture); VS::MaterialBlendMode canvas_blend_mode; @@ -1199,7 +1209,7 @@ class RasterizerGLES2 : public Rasterizer { RID overdraw_material; mutable MaterialShaderGLES2 material_shader; - CanvasShaderGLES2 canvas_shader; + mutable CanvasShaderGLES2 canvas_shader; BlurShaderGLES2 blur_shader; CopyShaderGLES2 copy_shader; @@ -1260,6 +1270,8 @@ public: virtual void shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture); virtual RID shader_get_default_texture_param(RID p_shader, const StringName& p_name) const; + virtual Variant shader_get_default_param(RID p_shader, const StringName& p_name); + /* COMMON MATERIAL API */ virtual RID material_create(); @@ -1535,6 +1547,7 @@ public: virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width); virtual void canvas_draw_polygon(int p_vertex_count, const int* p_indices, const Vector2* p_vertices, const Vector2* p_uvs, const Color* p_colors,const RID& p_texture,bool p_singlecolor); virtual void canvas_set_transform(const Matrix32& p_transform); + virtual void canvas_render_items(CanvasItem *p_item_list); /* ENVIRONMENT */ diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index 8eed423b8a..d8841d407e 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -147,6 +147,7 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } break; case SL::Node::TYPE_VARIABLE: { SL::VariableNode *vnode=(SL::VariableNode*)p_node; + if (type==ShaderLanguage::SHADER_MATERIAL_VERTEX) { if (vnode->name==vname_vertex && p_assign_left) { @@ -173,6 +174,9 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } + + + if (type==ShaderLanguage::SHADER_MATERIAL_FRAGMENT) { if (vnode->name==vname_discard) { @@ -214,6 +218,50 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } } + if (type==ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX) { + + if (vnode->name==vname_var1_interp) { + flags->use_var1_interp=true; + } + if (vnode->name==vname_var2_interp) { + flags->use_var2_interp=true; + } + if (vnode->name==vname_world_vec) { + uses_worldvec=true; + } + + } + + + if (type==ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT) { + + + if (vnode->name==vname_texpixel_size) { + uses_texpixel_size=true; + } + if (vnode->name==vname_normal) { + uses_normal=true; + } + + if (vnode->name==vname_screen_uv) { + uses_screen_uv=true; + } + + if (vnode->name==vname_var1_interp) { + flags->use_var1_interp=true; + } + if (vnode->name==vname_var2_interp) { + flags->use_var2_interp=true; + } + } + + if (type==ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT) { + + if (vnode->name==vname_light) { + uses_light=true; + } + + } if (vnode->name==vname_time) { uses_time=true; @@ -262,13 +310,13 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a String mul_l=dump_node_code(onode->arguments[0],p_level,true); String mul_r=dump_node_code(onode->arguments[1],p_level); - code=mul_l+"=(vec4("+mul_l+",1.0,1.0)*("+mul_r+")).xy"; + code=mul_l+"=(vec4("+mul_l+",0.0,1.0)*("+mul_r+")).xy"; break; } else if (onode->arguments[0]->get_datatype()==SL::TYPE_MAT4 && onode->arguments[1]->get_datatype()==SL::TYPE_VEC2) { String mul_l=dump_node_code(onode->arguments[0],p_level,true); String mul_r=dump_node_code(onode->arguments[1],p_level); - code=mul_l+"=(("+mul_l+")*vec4("+mul_r+",1.0,1.0)).xy"; + code=mul_l+"=(("+mul_l+")*vec4("+mul_r+",0.0,1.0)).xy"; break; } else if (onode->arguments[0]->get_datatype()==SL::TYPE_VEC2 && onode->arguments[1]->get_datatype()==SL::TYPE_MAT3) { String mul_l=dump_node_code(onode->arguments[0],p_level,true); @@ -298,11 +346,11 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a break; } else if (onode->arguments[0]->get_datatype()==SL::TYPE_MAT4 && onode->arguments[1]->get_datatype()==SL::TYPE_VEC2) { - code="("+dump_node_code(onode->arguments[0],p_level)+"*vec4("+dump_node_code(onode->arguments[1],p_level)+",1.0,1.0)).xyz"; + code="("+dump_node_code(onode->arguments[0],p_level)+"*vec4("+dump_node_code(onode->arguments[1],p_level)+",0.0,1.0)).xy"; break; } else if (onode->arguments[0]->get_datatype()==SL::TYPE_VEC2 && onode->arguments[1]->get_datatype()==SL::TYPE_MAT4) { - code="(vec4("+dump_node_code(onode->arguments[0],p_level)+",1.0,1.0)*"+dump_node_code(onode->arguments[1],p_level)+").xyz"; + code="(vec4("+dump_node_code(onode->arguments[0],p_level)+",0.0,1.0)*"+dump_node_code(onode->arguments[1],p_level)+").xy"; break; } else if (onode->arguments[0]->get_datatype()==SL::TYPE_MAT3 && onode->arguments[1]->get_datatype()==SL::TYPE_VEC2) { @@ -359,7 +407,7 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } else if (callfunc=="texscreen") { //create the call to sample the screen, and clamp it uses_texscreen=true; - code="(texture2D( texscreen_tex, min(("+dump_node_code(onode->arguments[1],p_level)+").xy*texscreen_screen_mult,texscreen_screen_mult))).rgb"; + code="(texture2D( texscreen_tex, clamp(("+dump_node_code(onode->arguments[1],p_level)+").xy*texscreen_screen_mult,texscreen_screen_clamp.xy,texscreen_screen_clamp.zw))).rgb"; //code="(texture2D( screen_texture, ("+dump_node_code(onode->arguments[1],p_level)+").xy).rgb"; break; } else if (callfunc=="texpos") { @@ -552,6 +600,9 @@ Error ShaderCompilerGLES2::compile(const String& p_code, ShaderLanguage::ShaderT uses_light=false; uses_time=false; uses_normalmap=false; + uses_normal=false; + uses_texpixel_size=false; + uses_worldvec=false; vertex_code_writes_vertex=false; uniforms=r_uniforms; flags=&r_flags; @@ -562,6 +613,7 @@ Error ShaderCompilerGLES2::compile(const String& p_code, ShaderLanguage::ShaderT r_flags.use_var1_interp=false; r_flags.use_var2_interp=false; r_flags.uses_normalmap=false; + r_flags.uses_normal=false; String error; int errline,errcol; @@ -584,6 +636,9 @@ Error ShaderCompilerGLES2::compile(const String& p_code, ShaderLanguage::ShaderT r_flags.uses_light=uses_light; r_flags.uses_time=uses_time; r_flags.uses_normalmap=uses_normalmap; + r_flags.uses_normal=uses_normalmap; + r_flags.uses_texpixel_size=uses_texpixel_size; + r_flags.uses_worldvec=uses_worldvec; r_code_line=code; r_globals_line=global_code; @@ -640,6 +695,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { replace_table["cross" ]="cross"; replace_table["normalize"]= "normalize"; replace_table["reflect"]= "reflect"; + replace_table["refract"]= "refract"; replace_table["tex"]= "tex"; replace_table["texa"]= "texa"; replace_table["tex2"]= "tex2"; @@ -721,6 +777,43 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { mode_replace_table[2]["POINT_COORD"]="gl_PointCoord"; mode_replace_table[2]["TIME"]="time"; + mode_replace_table[3]["SRC_VERTEX"]="src_vtx"; + mode_replace_table[3]["VERTEX"]="outvec.xy"; + mode_replace_table[3]["WORLD_VERTEX"]="outvec.xy"; + mode_replace_table[3]["UV"]="uv_interp"; + mode_replace_table[3]["COLOR"]="color_interp"; + mode_replace_table[3]["VAR1"]="var1_interp"; + mode_replace_table[3]["VAR2"]="var2_interp"; + mode_replace_table[3]["POINT_SIZE"]="gl_PointSize"; + mode_replace_table[3]["WORLD_MATRIX"]="modelview_matrix"; + mode_replace_table[3]["PROJECTION_MATRIX"]="projection_matrix"; + mode_replace_table[3]["EXTRA_MATRIX"]="extra_matrix"; + mode_replace_table[3]["TIME"]="time"; + + mode_replace_table[4]["POSITION"]="gl_Position"; + mode_replace_table[4]["NORMAL"]="normal"; + mode_replace_table[4]["UV"]="uv_interp"; + mode_replace_table[4]["SRC_COLOR"]="color_interp"; + mode_replace_table[4]["COLOR"]="color"; + mode_replace_table[4]["TEXTURE"]="texture"; + mode_replace_table[4]["TEXTURE_PIXEL_SIZE"]="texpixel_size"; + mode_replace_table[4]["VAR1"]="var1_interp"; + mode_replace_table[4]["VAR2"]="var2_interp"; + mode_replace_table[4]["SCREEN_UV"]="screen_uv"; + mode_replace_table[4]["POINT_COORD"]="gl_PointCoord"; + mode_replace_table[4]["TIME"]="time"; + + mode_replace_table[5]["SRC_COLOR"]="color"; + mode_replace_table[5]["COLOR"]="color"; + mode_replace_table[5]["NORMAL"]="normal"; + mode_replace_table[5]["LIGHT_DIR"]="light_dir"; + mode_replace_table[5]["LIGHT_DISTANCE"]="light_distance"; + mode_replace_table[5]["LIGHT"]="light"; + mode_replace_table[5]["POINT_COORD"]="gl_PointCoord"; + mode_replace_table[5]["TIME"]="time"; + + + //mode_replace_table[2]["SCREEN_POS"]="SCREEN_POS"; //mode_replace_table[2]["SCREEN_TEXEL_SIZE"]="SCREEN_TEXEL_SIZE"; @@ -741,5 +834,8 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { vname_light="LIGHT"; vname_time="TIME"; vname_normalmap="NORMALMAP"; + vname_normal="NORMAL"; + vname_texpixel_size="TEXTURE_PIXEL_SIZE"; + vname_world_vec="WORLD_VERTEX"; } diff --git a/drivers/gles2/shader_compiler_gles2.h b/drivers/gles2/shader_compiler_gles2.h index 5012414c8b..87722602fd 100644 --- a/drivers/gles2/shader_compiler_gles2.h +++ b/drivers/gles2/shader_compiler_gles2.h @@ -51,6 +51,9 @@ private: bool uses_time; bool uses_screen_uv; bool uses_normalmap; + bool uses_normal; + bool uses_texpixel_size; + bool uses_worldvec; bool vertex_code_writes_vertex; Flags *flags; @@ -68,6 +71,9 @@ private: StringName vname_light; StringName vname_time; StringName vname_normalmap; + StringName vname_normal; + StringName vname_texpixel_size; + StringName vname_world_vec; Map<StringName,ShaderLanguage::Uniform> *uniforms; @@ -79,7 +85,7 @@ private: String replace_string(const StringName& p_string); - Map<StringName,StringName> mode_replace_table[3]; + Map<StringName,StringName> mode_replace_table[9]; Map<StringName,StringName> replace_table; public: @@ -101,6 +107,9 @@ public: bool use_var2_interp; bool uses_light; bool uses_time; + bool uses_normal; + bool uses_texpixel_size; + bool uses_worldvec; }; Error compile(const String& p_code, ShaderLanguage::ShaderType p_type, String& r_code_line, String& r_globals_line, Flags& r_flags, Map<StringName,ShaderLanguage::Uniform> *r_uniforms=NULL); diff --git a/drivers/gles2/shaders/canvas.glsl b/drivers/gles2/shaders/canvas.glsl index f36741d586..dc0af017d0 100644 --- a/drivers/gles2/shaders/canvas.glsl +++ b/drivers/gles2/shaders/canvas.glsl @@ -18,20 +18,60 @@ attribute highp vec2 uv_attrib; // attrib:4 varying vec2 uv_interp; varying vec4 color_interp; +#if defined(USE_TIME) +uniform float time; +#endif + + +#ifdef USE_LIGHTING + +uniform highp mat4 light_matrix; +varying vec4 light_tex_pos; + +#endif + +#if defined(ENABLE_VAR1_INTERP) +varying vec4 var1_interp; +#endif + +#if defined(ENABLE_VAR2_INTERP) +varying vec4 var2_interp; +#endif + //uniform bool snap_pixels; +VERTEX_SHADER_GLOBALS + void main() { color_interp = color_attrib; uv_interp = uv_attrib; - highp vec4 outvec = vec4(vertex, 1.0); - outvec = extra_matrix * outvec; - outvec = modelview_matrix * outvec; + highp vec4 outvec = vec4(vertex, 1.0); +{ + vec2 src_vtx=outvec.xy; +VERTEX_SHADER_CODE + +} +#if !defined(USE_WORLD_VEC) + outvec = extra_matrix * outvec; + outvec = modelview_matrix * outvec; +#endif + #ifdef USE_PIXEL_SNAP - outvec.xy=floor(outvec.xy+0.5); + outvec.xy=floor(outvec.xy+0.5); #endif + + gl_Position = projection_matrix * outvec; + +#ifdef USE_LIGHTING + + light_tex_pos.xy = light_matrix * gl_Position; + light_tex_pos.zw=outvec.xy - light_matrix[4].xy; //likely wrong + +#endif + } [fragment] @@ -54,17 +94,112 @@ varying vec4 color_interp; #endif +#if defined(ENABLE_SCREEN_UV) + +uniform vec2 screen_uv_mult; + +#endif + +#if defined(ENABLE_TEXSCREEN) + +uniform vec2 texscreen_screen_mult; +uniform vec4 texscreen_screen_clamp; +uniform sampler2D texscreen_tex; + +#endif + + +#if defined(ENABLE_VAR1_INTERP) +varying vec4 var1_interp; +#endif + +#if defined(ENABLE_VAR2_INTERP) +varying vec4 var2_interp; +#endif + +#if defined(USE_TIME) +uniform float time; +#endif + + +#ifdef USE_LIGHTING + +uniform sampler2D light_texture; +varying vec4 light_tex_pos; + +#ifdef USE_SHADOWS + +uniform sampler2D shadow_texture; +uniform float shadow_attenuation; + +#endif + +#endif + +#if defined(USE_TEXPIXEL_SIZE) +uniform vec2 texpixel_size; +#endif + + +FRAGMENT_SHADER_GLOBALS + + void main() { vec4 color = color_interp; - +#if defined(NORMAL_USED) + vec3 normal = vec3(0,0,1); +#endif + color *= texture2D( texture, uv_interp ); +#if defined(ENABLE_SCREEN_UV) + vec2 screen_uv = gl_FragCoord.xy*screen_uv_mult; +#endif +{ +FRAGMENT_SHADER_CODE +} #ifdef DEBUG_ENCODED_32 highp float enc32 = dot( color,highp vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1) ); color = vec4(vec3(enc32),1.0); #endif +#ifdef USE_LIGHTING + + float att=1.0; + + vec3 light = texture2D(light_texture,light_tex_pos).rgb; +#ifdef USE_SHADOWS + //this might not be that great on mobile? + float light_dist = length(light_texture.zw); + float light_angle = atan2(light_texture.x,light_texture.z) + 1.0 * 0.5; + float shadow_dist = texture2D(shadow_texture,vec2(light_angle,0)); + if (light_dist>shadow_dist) { + light*=shadow_attenuation; + } +//use shadows +#endif + +#if defined(USE_LIGHT_SHADER_CODE) +//light is written by the light shader +{ + vec2 light_dir = normalize(light_tex_pos.zw); + float light_distance = length(light_tex_pos.zw); +LIGHT_SHADER_CODE +} +#else + +#if defined(NORMAL_USED) + vec2 light_normal = normalize(light_tex_pos.zw); + light = color.rgb * light * max(dot(light_normal,normal),0); +#endif + + color.rgb=light; +//light shader code +#endif + +//use lighting +#endif // color.rgb*=color.a; gl_FragColor = color; diff --git a/drivers/gles2/shaders/material.glsl b/drivers/gles2/shaders/material.glsl index 718dd56249..38fb03ab5c 100644 --- a/drivers/gles2/shaders/material.glsl +++ b/drivers/gles2/shaders/material.glsl @@ -779,6 +779,7 @@ uniform highp mat4 camera_inverse_transform; #if defined(ENABLE_TEXSCREEN) uniform vec2 texscreen_screen_mult; +uniform vec4 texscreen_screen_clamp; uniform sampler2D texscreen_tex; #endif diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp index 841160f941..ad0d4e00ea 100644 --- a/drivers/unix/ip_unix.cpp +++ b/drivers/unix/ip_unix.cpp @@ -50,11 +50,16 @@ #ifdef ANDROID_ENABLED #include "platform/android/ifaddrs_android.h" #else + #ifdef __FreeBSD__ + #include <sys/types.h> + #endif #include <ifaddrs.h> #endif #include <arpa/inet.h> #include <sys/socket.h> - + #ifdef __FreeBSD__ + #include <netinet/in.h> + #endif #endif IP_Address IP_Unix::_resolve_hostname(const String& p_hostname) { diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 2de975e5d1..d51a7c74e8 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -44,7 +44,9 @@ #include "stream_peer_tcp_posix.h" #include "packet_peer_udp_posix.h" - +#ifdef __FreeBSD__ +#include <sys/param.h> +#endif #include <stdarg.h> #include <sys/time.h> #include <sys/wait.h> @@ -305,7 +307,17 @@ Error OS_Unix::execute(const String& p_path, const List<String>& p_arguments,boo args.push_back((char*)cs[i].get_data());// shitty C cast args.push_back(0); +#ifdef __FreeBSD__ + if(p_path.find("/")) { + // exec name contains path so use it + execv(p_path.utf8().get_data(),&args[0]); + }else{ + // use program name and search through PATH to find it + execvp(getprogname(),&args[0]); + } +#else execv(p_path.utf8().get_data(),&args[0]); +#endif // still alive? something failed.. fprintf(stderr,"**ERROR** OS_Unix::execute - Could not create child process while executing: %s\n",p_path.utf8().get_data()); abort(); @@ -421,6 +433,12 @@ String OS_Unix::get_executable_path() const { return OS::get_executable_path(); } return b; +#elif defined(__FreeBSD__) + char resolved_path[MAXPATHLEN]; + + realpath(OS::get_executable_path().utf8().get_data(), resolved_path); + + return String(resolved_path); #else ERR_PRINT("Warning, don't know how to obtain executable path on this OS! Please override this function properly."); return OS::get_executable_path(); diff --git a/methods.py b/methods.py index 0c0c5a05e3..da1491e3f9 100755 --- a/methods.py +++ b/methods.py @@ -1316,3 +1316,39 @@ def save_active_platforms(apnames,ap): logow = open(wf,"wb") logow.write(str) + +def colored(sys,env): + + #If the output is not a terminal, do nothing + if not sys.stdout.isatty(): + return + + colors = {} + colors['cyan'] = '\033[96m' + colors['purple'] = '\033[95m' + colors['blue'] = '\033[94m' + colors['green'] = '\033[92m' + colors['yellow'] = '\033[93m' + colors['red'] = '\033[91m' + colors['end'] = '\033[0m' + + compile_source_message = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end']) + java_compile_source_message = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end']) + compile_shared_source_message = '%sCompiling shared %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end']) + link_program_message = '%sLinking Program %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end']) + link_library_message = '%sLinking Static Library %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end']) + ranlib_library_message = '%sRanlib Library %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end']) + link_shared_library_message = '%sLinking Shared Library %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end']) + java_library_message = '%sCreating Java Archive %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end']) + + env.Append( CXXCOMSTR=[compile_source_message] ) + env.Append( CCCOMSTR=[compile_source_message] ) + env.Append( SHCCCOMSTR=[compile_shared_source_message] ) + env.Append( SHCXXCOMSTR=[compile_shared_source_message] ) + env.Append( ARCOMSTR=[link_library_message] ) + env.Append( RANLIBCOMSTR=[ranlib_library_message] ) + env.Append( SHLINKCOMSTR=[link_shared_library_message] ) + env.Append( LINKCOMSTR=[link_program_message] ) + env.Append( JARCOMSTR=[java_library_message] ) + env.Append( JAVACCOMSTR=[java_compile_source_message] ) + diff --git a/modules/gdscript/gd_compiler.h b/modules/gdscript/gd_compiler.h index b83d0ded4b..0c34c23b25 100644 --- a/modules/gdscript/gd_compiler.h +++ b/modules/gdscript/gd_compiler.h @@ -37,77 +37,65 @@ class GDCompiler { const GDParser *parser; struct CodeGen { - - GDScript *script; const GDParser::ClassNode *class_node; const GDParser::FunctionNode *function_node; - - - bool debug_stack; - - - List< Map<StringName,int> > stack_id_stack; - Map<StringName,int> stack_identifiers; - - List<GDFunction::StackDebug> stack_debug; - List< Map<StringName,int> > block_identifier_stack; - Map<StringName,int> block_identifiers; - - - void add_stack_identifier(const StringName& p_id,int p_stackpos) { - - stack_identifiers[p_id]=p_stackpos; - if (debug_stack) { - - block_identifiers[p_id]=p_stackpos; - GDFunction::StackDebug sd; - sd.added=true; - sd.line=current_line; - sd.identifier=p_id; - sd.pos=p_stackpos; - stack_debug.push_back(sd); - } - } - - void push_stack_identifiers() { - - stack_id_stack.push_back( stack_identifiers ); - if (debug_stack) { - - block_identifier_stack.push_back(block_identifiers); - block_identifiers.clear(); - } - } - - void pop_stack_identifiers() { - - stack_identifiers = stack_id_stack.back()->get(); - stack_id_stack.pop_back(); - - if (debug_stack) { - for (Map<StringName,int>::Element *E=block_identifiers.front();E;E=E->next()) { - - GDFunction::StackDebug sd; - sd.added=false; - sd.identifier=E->key(); - sd.line=current_line; - sd.pos=E->get(); - stack_debug.push_back(sd); - } - block_identifiers=block_identifier_stack.back()->get(); - block_identifier_stack.pop_back(); - } - - } - - - // int get_identifier_pos(const StringName& p_dentifier) const; + bool debug_stack; + + List< Map<StringName,int> > stack_id_stack; + Map<StringName,int> stack_identifiers; + + List<GDFunction::StackDebug> stack_debug; + List< Map<StringName,int> > block_identifier_stack; + Map<StringName,int> block_identifiers; + + void add_stack_identifier(const StringName& p_id,int p_stackpos) { + stack_identifiers[p_id]=p_stackpos; + if (debug_stack) { + block_identifiers[p_id]=p_stackpos; + GDFunction::StackDebug sd; + sd.added=true; + sd.line=current_line; + sd.identifier=p_id; + sd.pos=p_stackpos; + stack_debug.push_back(sd); + } + } + + void push_stack_identifiers() { + stack_id_stack.push_back( stack_identifiers ); + if (debug_stack) { + + block_identifier_stack.push_back(block_identifiers); + block_identifiers.clear(); + } + } + + void pop_stack_identifiers() { + stack_identifiers = stack_id_stack.back()->get(); + stack_id_stack.pop_back(); + + if (debug_stack) { + for (Map<StringName,int>::Element *E=block_identifiers.front();E;E=E->next()) { + + GDFunction::StackDebug sd; + sd.added=false; + sd.identifier=E->key(); + sd.line=current_line; + sd.pos=E->get(); + stack_debug.push_back(sd); + } + block_identifiers=block_identifier_stack.back()->get(); + block_identifier_stack.pop_back(); + } + } + + + //int get_identifier_pos(const StringName& p_dentifier) const; HashMap<Variant,int,VariantHasher> constant_map; Map<StringName,int> name_map; int get_name_map_pos(const StringName& p_identifier) { - int ret; if (!name_map.has(p_identifier)) { ret=name_map.size(); @@ -118,11 +106,7 @@ class GDCompiler { return ret; } - - int get_constant_pos(const Variant& p_constant) { - - if (constant_map.has(p_constant)) return constant_map[p_constant]; int pos = constant_map.size(); @@ -134,7 +118,7 @@ class GDCompiler { void alloc_stack(int p_level) { if (p_level >= stack_max) stack_max=p_level+1; } void alloc_call(int p_params) { if (p_params >= call_max) call_max=p_params; } - int current_line; + int current_line; int stack_max; int call_max; }; diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp index 12dc1bb139..20cd09efd0 100644 --- a/modules/gdscript/gd_editor.cpp +++ b/modules/gdscript/gd_editor.cpp @@ -1661,7 +1661,7 @@ Error GDScriptLanguage::complete_code(const String& p_code, const String& p_base //print_line( p_code.replace(String::chr(0xFFFF),"<cursor>")); GDParser p; - Error err = p.parse(p_code,p_base_path); + Error err = p.parse(p_code,p_base_path,true); bool isfunction=false; Set<String> options; diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index 89a9091baa..0312d13644 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -205,6 +205,7 @@ Variant _jobject_to_variant(JNIEnv * env, jobject obj) { String name = _get_class_name(env, c, &array); //print_line("name is " + name + ", array "+Variant(array)); + print_line("ARGNAME: "+name); if (name == "java.lang.String") { return String::utf8(env->GetStringUTFChars( (jstring)obj, NULL )); diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 141a876657..5703cbc546 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -84,6 +84,9 @@ def configure(env): env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env["CC"]="clang" env["LD"]="clang++" + if (env["colored"]=="yes"): + if sys.stdout.isatty(): + env.Append(CPPFLAGS=["-fcolor-diagnostics"]) import methods diff --git a/platform/server/detect.py b/platform/server/detect.py index 24b36d3188..e2d64c6545 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -40,6 +40,9 @@ def configure(env): env["CC"]="clang" env["CXX"]="clang++" env["LD"]="clang++" + if (env["colored"]=="yes"): + if sys.stdout.isatty(): + env.Append(CXXFLAGS=["-fcolor-diagnostics"]) is64=sys.maxsize > 2**32 diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 45d13da828..915e1a6098 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -56,6 +56,13 @@ #include "shlobj.h" static const WORD MAX_CONSOLE_LINES = 1500; +extern "C" { +#ifdef _MSC_VER + _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; +#else + __attribute__((visibility("default"))) DWORD NvOptimusEnablement = 0x00000001; +#endif +} //#define STDOUT_FILE @@ -586,10 +593,11 @@ LRESULT OS_Windows::WndProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam) { ERR_BREAK(key_event_pos >= KEY_EVENT_BUFFER_SIZE); + // Make sure we don't include modifiers for the modifier key itself. KeyEvent ke; - ke.mod_state.shift=shift_mem; - ke.mod_state.alt=alt_mem; - ke.mod_state.control=control_mem; + ke.mod_state.shift= (wParam != VK_SHIFT) ? shift_mem : false; + ke.mod_state.alt= (! (wParam == VK_MENU && (uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN))) ? alt_mem : false; + ke.mod_state.control= (wParam != VK_CONTROL) ? control_mem : false; ke.mod_state.meta=meta_mem; ke.uMsg=uMsg; diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 621a0c66a0..fb5cdb5089 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -47,6 +47,7 @@ def get_opts(): return [ ('use_llvm','Use llvm compiler','no'), ('use_sanitizer','Use llvm compiler sanitize address','no'), + ('pulseaudio','Detect & Use pulseaudio','yes'), ] def get_flags(): @@ -69,21 +70,23 @@ def configure(env): else: env["bits"]="32" - env.Append(CPPPATH=['#platform/x11']) if (env["use_llvm"]=="yes"): - env["CC"]="clang" - env["CXX"]="clang++" - env["LD"]="clang++" - if (env["use_sanitizer"]=="yes"): - env.Append(CXXFLAGS=['-fsanitize=address','-fno-omit-frame-pointer']) - env.Append(LINKFLAGS=['-fsanitize=address']) - env.extra_suffix=".llvms" - else: - env.extra_suffix=".llvm" - + if 'clang++' not in env['CXX']: + env["CC"]="clang" + env["CXX"]="clang++" + env["LD"]="clang++" + env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) + env.extra_suffix=".llvm" + if (env["colored"]=="yes"): + if sys.stdout.isatty(): + env.Append(CXXFLAGS=["-fcolor-diagnostics"]) + if (env["use_sanitizer"]=="yes"): + env.Append(CXXFLAGS=['-fsanitize=address','-fno-omit-frame-pointer']) + env.Append(LINKFLAGS=['-fsanitize=address']) + env.extra_suffix+="s" #if (env["tools"]=="no"): # #no tools suffix @@ -115,12 +118,13 @@ def configure(env): env.Append(CPPFLAGS=['-DOPENGL_ENABLED','-DGLEW_ENABLED']) env.Append(CPPFLAGS=["-DALSA_ENABLED"]) - if not os.system("pkg-config --exists libpulse-simple"): - print("Enabling PulseAudio") - env.Append(CPPFLAGS=["-DPULSEAUDIO_ENABLED"]) - env.ParseConfig('pkg-config --cflags --libs libpulse-simple') - else: - print("PulseAudio development libraries not found, disabling driver") + if (env["pulseaudio"]=="yes"): + if not os.system("pkg-config --exists libpulse-simple"): + print("Enabling PulseAudio") + env.Append(CPPFLAGS=["-DPULSEAUDIO_ENABLED"]) + env.ParseConfig('pkg-config --cflags --libs libpulse-simple') + else: + print("PulseAudio development libraries not found, disabling driver") env.Append(CPPFLAGS=['-DX11_ENABLED','-DUNIX_ENABLED','-DGLES2_ENABLED','-DGLES_OVER_GL']) env.Append(LIBS=['GL', 'GLU', 'pthread','asound','z']) #TODO detect linux/BSD! @@ -136,11 +140,6 @@ def configure(env): env.Append(LINKFLAGS=['-m64','-L/usr/lib/i686-linux-gnu']) - if (env["CXX"]=="clang++"): - env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) - env["CC"]="clang" - env["LD"]="clang++" - import methods env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) diff --git a/platform/x11/export/export.cpp b/platform/x11/export/export.cpp index b17b92bccf..bed57fbe9f 100644 --- a/platform/x11/export/export.cpp +++ b/platform/x11/export/export.cpp @@ -11,7 +11,7 @@ void register_x11_exporter() { { Ref<EditorExportPlatformPC> exporter = Ref<EditorExportPlatformPC>( memnew(EditorExportPlatformPC) ); - exporter->set_binary_extension("bin"); + exporter->set_binary_extension(""); exporter->set_release_binary32("linux_x11_32_release"); exporter->set_debug_binary32("linux_x11_32_debug"); exporter->set_release_binary64("linux_x11_64_release"); diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index f90da51eea..6b892839bb 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -720,6 +720,95 @@ bool CanvasItem::is_draw_behind_parent_enabled() const{ return behind; } +void CanvasItem::set_shader(const Ref<Shader>& p_shader) { + + ERR_FAIL_COND(p_shader.is_valid() && p_shader->get_mode()!=Shader::MODE_CANVAS_ITEM); + +#ifdef TOOLS_ENABLED + + if (shader.is_valid()) { + shader->disconnect("changed",this,"_shader_changed"); + } +#endif + shader=p_shader; + +#ifdef TOOLS_ENABLED + + if (shader.is_valid()) { + shader->connect("changed",this,"_shader_changed"); + } +#endif + + RID rid; + if (shader.is_valid()) + rid=shader->get_rid(); + VS::get_singleton()->canvas_item_set_shader(canvas_item,rid); + _change_notify(); //properties for shader exposed +} + +void CanvasItem::set_use_parent_shader(bool p_use_parent_shader) { + + use_parent_shader=p_use_parent_shader; + VS::get_singleton()->canvas_item_set_use_parent_shader(canvas_item,p_use_parent_shader); +} + +bool CanvasItem::get_use_parent_shader() const{ + + return use_parent_shader; +} + +Ref<Shader> CanvasItem::get_shader() const{ + + return shader; +} + +void CanvasItem::set_shader_param(const StringName& p_param,const Variant& p_value) { + + VS::get_singleton()->canvas_item_set_shader_param(canvas_item,p_param,p_value); +} + +Variant CanvasItem::get_shader_param(const StringName& p_param) const { + + return VS::get_singleton()->canvas_item_get_shader_param(canvas_item,p_param); +} + +bool CanvasItem::_set(const StringName& p_name, const Variant& p_value) { + + if (shader.is_valid()) { + StringName pr = shader->remap_param(p_name); + if (pr) { + set_shader_param(pr,p_value); + return true; + } + } + return false; +} + +bool CanvasItem::_get(const StringName& p_name,Variant &r_ret) const{ + + if (shader.is_valid()) { + StringName pr = shader->remap_param(p_name); + if (pr) { + r_ret=get_shader_param(pr); + return true; + } + } + return false; + +} +void CanvasItem::_get_property_list( List<PropertyInfo> *p_list) const{ + + if (shader.is_valid()) { + shader->get_param_list(p_list); + } +} + +#ifdef TOOLS_ENABLED +void CanvasItem::_shader_changed() { + + _change_notify(); +} +#endif void CanvasItem::_bind_methods() { @@ -761,7 +850,9 @@ void CanvasItem::_bind_methods() { ObjectTypeDB::bind_method(_MD("_set_on_top","on_top"),&CanvasItem::_set_on_top); ObjectTypeDB::bind_method(_MD("_is_on_top"),&CanvasItem::_is_on_top); - +#ifdef TOOLS_ENABLED + ObjectTypeDB::bind_method(_MD("_shader_changed"),&CanvasItem::_shader_changed); +#endif //ObjectTypeDB::bind_method(_MD("get_transform"),&CanvasItem::get_transform); ObjectTypeDB::bind_method(_MD("draw_line","from","to","color","width"),&CanvasItem::draw_line,DEFVAL(1.0)); @@ -786,15 +877,22 @@ void CanvasItem::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_world_2d"),&CanvasItem::get_world_2d); //ObjectTypeDB::bind_method(_MD("get_viewport"),&CanvasItem::get_viewport); + ObjectTypeDB::bind_method(_MD("set_shader","shader"),&CanvasItem::set_shader); + ObjectTypeDB::bind_method(_MD("get_shader"),&CanvasItem::get_shader); + ObjectTypeDB::bind_method(_MD("set_use_parent_shader","enable"),&CanvasItem::set_use_parent_shader); + ObjectTypeDB::bind_method(_MD("get_use_parent_shader"),&CanvasItem::get_use_parent_shader); + BIND_VMETHOD(MethodInfo("_draw")); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"visibility/visible"), _SCS("_set_visible_"),_SCS("_is_visible_") ); ADD_PROPERTY( PropertyInfo(Variant::REAL,"visibility/opacity",PROPERTY_HINT_RANGE, "0,1,0.01"), _SCS("set_opacity"),_SCS("get_opacity") ); ADD_PROPERTY( PropertyInfo(Variant::REAL,"visibility/self_opacity",PROPERTY_HINT_RANGE, "0,1,0.01"), _SCS("set_self_opacity"),_SCS("get_self_opacity") ); - ADD_PROPERTY( PropertyInfo(Variant::BOOL,"visibility/behind_parent"), _SCS("set_draw_behind_parent"),_SCS("is_draw_behind_parent_enabled") ); + ADD_PROPERTYNZ( PropertyInfo(Variant::BOOL,"visibility/behind_parent"), _SCS("set_draw_behind_parent"),_SCS("is_draw_behind_parent_enabled") ); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"visibility/on_top",PROPERTY_HINT_NONE,"",0), _SCS("_set_on_top"),_SCS("_is_on_top") ); //compatibility ADD_PROPERTYNZ( PropertyInfo(Variant::INT,"visibility/blend_mode",PROPERTY_HINT_ENUM, "Mix,Add,Sub,Mul,PMAlpha"), _SCS("set_blend_mode"),_SCS("get_blend_mode") ); + ADD_PROPERTYNZ( PropertyInfo(Variant::OBJECT,"shader/shader",PROPERTY_HINT_RESOURCE_TYPE, "CanvasItemShader,CanvasItemShaderGraph"), _SCS("set_shader"),_SCS("get_shader") ); + ADD_PROPERTYNZ( PropertyInfo(Variant::BOOL,"shader/use_parent"), _SCS("set_use_parent_shader"),_SCS("get_use_parent_shader") ); //exporting these two things doesn't really make much sense i think //ADD_PROPERTY( PropertyInfo(Variant::BOOL,"transform/toplevel"), _SCS("set_as_toplevel"),_SCS("is_set_as_toplevel") ); //ADD_PROPERTY(PropertyInfo(Variant::BOOL,"transform/notify"),_SCS("set_transform_notify"),_SCS("is_transform_notify_enabled")); @@ -871,6 +969,7 @@ CanvasItem::CanvasItem() : xform_change(this) { block_transform_notify=false; // viewport=NULL; canvas_layer=NULL; + use_parent_shader=false; global_invalid=true; C=NULL; diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h index dbf8fd79e9..ed3ade9df2 100644 --- a/scene/2d/canvas_item.h +++ b/scene/2d/canvas_item.h @@ -32,6 +32,7 @@ #include "scene/main/node.h" #include "scene/resources/texture.h" #include "scene/main/scene_main_loop.h" +#include "scene/resources/shader.h" class CanvasLayer; class Viewport; @@ -80,6 +81,9 @@ private: bool block_transform_notify; bool behind; + bool use_parent_shader; + Ref<Shader> shader; + mutable Matrix32 global_transform; mutable bool global_invalid; @@ -99,8 +103,9 @@ private: void _queue_sort_children(); void _sort_children(); - - +#ifdef TOOLS_ENABLED + void _shader_changed(); +#endif void _notify_transform(CanvasItem *p_node); void _set_on_top(bool p_on_top) { set_draw_behind_parent(!p_on_top); } @@ -108,6 +113,9 @@ private: protected: + bool _set(const StringName& p_name, const Variant& p_value); + bool _get(const StringName& p_name,Variant &r_ret) const; + void _get_property_list( List<PropertyInfo> *p_list) const; _FORCE_INLINE_ void _notify_transform() { if (!is_inside_tree()) return; _notify_transform(this); if (!block_transform_notify) notification(NOTIFICATION_LOCAL_TRANSFORM_CHANGED); } @@ -204,7 +212,14 @@ public: RID get_canvas() const; Ref<World2D> get_world_2d() const; + void set_shader(const Ref<Shader>& p_shader); + Ref<Shader> get_shader() const; + + void set_use_parent_shader(bool p_use_parent_shader); + bool get_use_parent_shader() const; + void set_shader_param(const StringName& p_param,const Variant& p_value); + Variant get_shader_param(const StringName& p_param) const; CanvasItem(); ~CanvasItem(); diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp index b9041e1224..8b4196ee7f 100644 --- a/scene/2d/node_2d.cpp +++ b/scene/2d/node_2d.cpp @@ -291,13 +291,27 @@ void Node2D::set_global_transform(const Matrix32& p_transform) { void Node2D::set_z(int p_z) { - ERR_FAIL_COND(p_z<-VS::CANVAS_ITEM_Z_DEFAULT); - ERR_FAIL_COND(p_z>=VS::CANVAS_ITEM_Z_DEFAULT); + ERR_FAIL_COND(p_z<VS::CANVAS_ITEM_Z_MIN); + ERR_FAIL_COND(p_z>VS::CANVAS_ITEM_Z_MAX); z=p_z; - VS::get_singleton()->canvas_item_set_z(get_canvas_item(),z+VS::CANVAS_ITEM_Z_DEFAULT); + VS::get_singleton()->canvas_item_set_z(get_canvas_item(),z); } +void Node2D::set_z_as_relative(bool p_enabled) { + + if (z_relative==p_enabled) + return; + z_relative=p_enabled; + VS::get_singleton()->canvas_item_set_z_as_relative_to_parent(get_canvas_item(),p_enabled); +} + +bool Node2D::is_z_relative() const { + + return z_relative; +} + + int Node2D::get_z() const{ return z; @@ -332,13 +346,16 @@ void Node2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_z","z"),&Node2D::set_z); ObjectTypeDB::bind_method(_MD("get_z"),&Node2D::get_z); + ObjectTypeDB::bind_method(_MD("set_z_as_relative","enable"),&Node2D::set_z_as_relative); + ObjectTypeDB::bind_method(_MD("is_z_relative"),&Node2D::is_z_relative); + ObjectTypeDB::bind_method(_MD("edit_set_pivot"),&Node2D::edit_set_pivot); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2,"transform/pos"),_SCS("set_pos"),_SCS("get_pos")); ADD_PROPERTY(PropertyInfo(Variant::REAL,"transform/rot",PROPERTY_HINT_RANGE,"-1440,1440,0.1"),_SCS("_set_rotd"),_SCS("_get_rotd")); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2,"transform/scale"),_SCS("set_scale"),_SCS("get_scale")); - ADD_PROPERTY(PropertyInfo(Variant::INT,"visibility/z",PROPERTY_HINT_RANGE,"-512,511,1"),_SCS("set_z"),_SCS("get_z")); - + ADD_PROPERTY(PropertyInfo(Variant::INT,"z/z",PROPERTY_HINT_RANGE,itos(VS::CANVAS_ITEM_Z_MIN)+","+itos(VS::CANVAS_ITEM_Z_MAX)+",1"),_SCS("set_z"),_SCS("get_z")); + ADD_PROPERTY(PropertyInfo(Variant::BOOL,"z/relative"),_SCS("set_z_as_relative"),_SCS("is_z_relative")); } @@ -351,6 +368,7 @@ Node2D::Node2D() { scale=Vector2(1,1); _xform_dirty=false; z=0; + z_relative=true; } diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h index 63ca2e3b95..61b8c829d6 100644 --- a/scene/2d/node_2d.h +++ b/scene/2d/node_2d.h @@ -39,6 +39,7 @@ class Node2D : public CanvasItem { float angle; Size2 scale; int z; + bool z_relative; Matrix32 _mat; @@ -89,6 +90,8 @@ public: void set_z(int p_z); int get_z() const; + void set_z_as_relative(bool p_enabled); + bool is_z_relative() const; Matrix32 get_transform() const; diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index 2413fbded1..6f18325212 100644 --- a/scene/2d/physics_body_2d.cpp +++ b/scene/2d/physics_body_2d.cpp @@ -43,13 +43,44 @@ void PhysicsBody2D::_notification(int p_what) { */ } +void PhysicsBody2D::set_one_way_collision_direction(const Vector2& p_dir) { + + one_way_collision_direction=p_dir; + Physics2DServer::get_singleton()->body_set_one_way_collision_direction(get_rid(),p_dir); +} + +Vector2 PhysicsBody2D::get_one_way_collision_direction() const{ + + return one_way_collision_direction; +} + + +void PhysicsBody2D::set_one_way_collision_max_depth(float p_depth) { + + one_way_collision_max_depth=p_depth; + Physics2DServer::get_singleton()->body_set_one_way_collision_max_depth(get_rid(),p_depth); + +} + +float PhysicsBody2D::get_one_way_collision_max_depth() const{ + + return one_way_collision_max_depth; +} + + void PhysicsBody2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_layer_mask","mask"),&PhysicsBody2D::set_layer_mask); ObjectTypeDB::bind_method(_MD("get_layer_mask"),&PhysicsBody2D::get_layer_mask); + ObjectTypeDB::bind_method(_MD("set_one_way_collision_direction","dir"),&PhysicsBody2D::set_one_way_collision_direction); + ObjectTypeDB::bind_method(_MD("get_one_way_collision_direction"),&PhysicsBody2D::get_one_way_collision_direction); + ObjectTypeDB::bind_method(_MD("set_one_way_collision_max_depth","depth"),&PhysicsBody2D::set_one_way_collision_max_depth); + ObjectTypeDB::bind_method(_MD("get_one_way_collision_max_depth"),&PhysicsBody2D::get_one_way_collision_max_depth); ObjectTypeDB::bind_method(_MD("add_collision_exception_with","body:PhysicsBody2D"),&PhysicsBody2D::add_collision_exception_with); ObjectTypeDB::bind_method(_MD("remove_collision_exception_with","body:PhysicsBody2D"),&PhysicsBody2D::remove_collision_exception_with); ADD_PROPERTY(PropertyInfo(Variant::INT,"layers",PROPERTY_HINT_ALL_FLAGS),_SCS("set_layer_mask"),_SCS("get_layer_mask")); + ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2,"one_way_collision/direction"),_SCS("set_one_way_collision_direction"),_SCS("get_one_way_collision_direction")); + ADD_PROPERTYNZ(PropertyInfo(Variant::REAL,"one_way_collision/max_depth"),_SCS("set_one_way_collision_max_depth"),_SCS("get_one_way_collision_max_depth")); } void PhysicsBody2D::set_layer_mask(uint32_t p_mask) { @@ -66,6 +97,7 @@ uint32_t PhysicsBody2D::get_layer_mask() const { PhysicsBody2D::PhysicsBody2D(Physics2DServer::BodyMode p_mode) : CollisionObject2D( Physics2DServer::get_singleton()->body_create(p_mode), false) { mask=1; + set_one_way_collision_max_depth(0); } @@ -932,7 +964,7 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { //if (d<margin) /// continue; - recover_motion+=(b-a)*0.2; + recover_motion+=(b-a)*0.4; } if (recover_motion==Vector2()) { @@ -963,6 +995,7 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { bool valid = dss->cast_motion(get_shape(i)->get_rid(), get_global_transform() * get_shape_transform(i), p_motion, 0,lsafe,lunsafe,exclude,get_layer_mask(),mask); //print_line("shape: "+itos(i)+" travel:"+rtos(ltravel)); if (!valid) { + safe=0; unsafe=0; best_shape=i; //sadly it's the best @@ -994,9 +1027,11 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { bool c2 = dss->rest_info(get_shape(best_shape)->get_rid(), ugt*get_shape_transform(best_shape), Vector2(), margin,&rest_info,exclude,get_layer_mask(),mask); if (!c2) { //should not happen, but floating point precision is so weird.. + colliding=false; } else { + //print_line("Travel: "+rtos(travel)); colliding=true; collision=rest_info.point; diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h index 956999ce31..eed43c95be 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -39,6 +39,8 @@ class PhysicsBody2D : public CollisionObject2D { OBJ_TYPE(PhysicsBody2D,CollisionObject2D); uint32_t mask; + Vector2 one_way_collision_direction; + float one_way_collision_max_depth; protected: void _notification(int p_what); @@ -53,6 +55,12 @@ public: void add_collision_exception_with(Node* p_node); //must be physicsbody void remove_collision_exception_with(Node* p_node); + void set_one_way_collision_direction(const Vector2& p_dir); + Vector2 get_one_way_collision_direction() const; + + void set_one_way_collision_max_depth(float p_dir); + float get_one_way_collision_max_depth() const; + PhysicsBody2D(); }; diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index 27420f8002..95eafa0df4 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -604,7 +604,7 @@ Vector3 Camera::project_position(const Point2& p_point) const { Vector2 point; point.x = (p_point.x/viewport_size.x) * 2.0 - 1.0; - point.y = (p_point.y/viewport_size.y) * 2.0 - 1.0; + point.y = (1.0-(p_point.y/viewport_size.y)) * 2.0 - 1.0; point*=vp_size; Vector3 p(point.x,point.y,-near); diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index f2806f2af2..940a29b5d8 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -92,6 +92,7 @@ void PhysicsBody::remove_collision_exception_with(Node* p_node) { PhysicsServer::get_singleton()->body_remove_collision_exception(get_rid(),physics_body->get_rid()); } + void PhysicsBody::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_layer_mask","mask"),&PhysicsBody::set_layer_mask); ObjectTypeDB::bind_method(_MD("get_layer_mask"),&PhysicsBody::get_layer_mask); diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h index 0d1de7f236..beec01ff3a 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -56,6 +56,8 @@ public: void add_collision_exception_with(Node* p_node); //must be physicsbody void remove_collision_exception_with(Node* p_node); + + PhysicsBody(); }; diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index f668e52590..8b87ecf711 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -138,7 +138,8 @@ void Tween::_bind_methods() { ObjectTypeDB::bind_method(_MD("interpolate_property","object","property","initial_val","final_val","times_in_sec","trans_type","ease_type","delay"),&Tween::interpolate_property, DEFVAL(0) ); ObjectTypeDB::bind_method(_MD("interpolate_method","object","method","initial_val","final_val","times_in_sec","trans_type","ease_type","delay"),&Tween::interpolate_method, DEFVAL(0) ); - ObjectTypeDB::bind_method(_MD("interpolate_callback","object","times_in_sec","callback","args"),&Tween::interpolate_callback, DEFVAL(Variant()) ); + ObjectTypeDB::bind_method(_MD("interpolate_callback","object","times_in_sec","callback","arg1", "arg2","arg3","arg4","arg5"),&Tween::interpolate_callback, DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()) ); + ObjectTypeDB::bind_method(_MD("interpolate_deferred_callback","object","times_in_sec","callback","arg1","arg2","arg3","arg4","arg5"),&Tween::interpolate_deferred_callback, DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()) ); ObjectTypeDB::bind_method(_MD("follow_property","object","property","initial_val","target","target_property","times_in_sec","trans_type","ease_type","delay"),&Tween::follow_property, DEFVAL(0) ); ObjectTypeDB::bind_method(_MD("follow_method","object","method","initial_val","target","target_method","times_in_sec","trans_type","ease_type","delay"),&Tween::follow_method, DEFVAL(0) ); ObjectTypeDB::bind_method(_MD("targeting_property","object","property","initial","initial_val","final_val","times_in_sec","trans_type","ease_type","delay"),&Tween::targeting_property, DEFVAL(0) ); @@ -513,11 +514,33 @@ void Tween::_tween_process(float p_delta) { if(data.finish) { Variant::CallError error; - if (data.arg.get_type() != Variant::NIL) { - Variant *arg[1] = { &data.arg }; - object->call(data.key, (const Variant **) arg, 1, error); - } else { - object->call(data.key, NULL, 0, error); + if (data.call_deferred) { + + switch (data.args) { + case 0: + object->call_deferred(data.key); break; + case 1: + object->call_deferred(data.key, data.arg[0]); break; + case 2: + object->call_deferred(data.key, data.arg[0], data.arg[1]); break; + case 3: + object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2]); break; + case 4: + object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2], data.arg[3]); break; + case 5: + object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]); break; + } + + } + else { + Variant *arg[5] = { + &data.arg[0], + &data.arg[1], + &data.arg[2], + &data.arg[3], + &data.arg[4], + }; + object->call(data.key, (const Variant **) arg, data.args, error); } } continue; @@ -1003,7 +1026,58 @@ bool Tween::interpolate_method(Object *p_object bool Tween::interpolate_callback(Object *p_object , real_t p_times_in_sec , String p_callback - , Variant p_arg + , VARIANT_ARG_DECLARE +) { + + ERR_FAIL_COND_V(pending_update != 0, false); + ERR_FAIL_COND_V(p_object == NULL, false); + ERR_FAIL_COND_V(p_times_in_sec < 0, false); + + ERR_FAIL_COND_V(!p_object->has_method(p_callback), false); + + InterpolateData data; + data.active = true; + data.type = INTER_CALLBACK; + data.finish = false; + data.call_deferred = false; + data.elapsed = 0; + + data.id = p_object->get_instance_ID(); + data.key = p_callback; + data.times_in_sec = p_times_in_sec; + data.delay = 0; + + int args=0; + if (p_arg5.get_type()!=Variant::NIL) + args=5; + else if (p_arg4.get_type()!=Variant::NIL) + args=4; + else if (p_arg3.get_type()!=Variant::NIL) + args=3; + else if (p_arg2.get_type()!=Variant::NIL) + args=2; + else if (p_arg1.get_type()!=Variant::NIL) + args=1; + else + args=0; + + data.args = args; + data.arg[0] = p_arg1; + data.arg[1] = p_arg2; + data.arg[2] = p_arg3; + data.arg[3] = p_arg4; + data.arg[4] = p_arg5; + + pending_update ++; + interpolates.push_back(data); + pending_update --; + return true; +} + +bool Tween::interpolate_deferred_callback(Object *p_object + , real_t p_times_in_sec + , String p_callback + , VARIANT_ARG_DECLARE ) { ERR_FAIL_COND_V(pending_update != 0, false); @@ -1016,13 +1090,34 @@ bool Tween::interpolate_callback(Object *p_object data.active = true; data.type = INTER_CALLBACK; data.finish = false; + data.call_deferred = true; data.elapsed = 0; data.id = p_object->get_instance_ID(); data.key = p_callback; data.times_in_sec = p_times_in_sec; data.delay = 0; - data.arg = p_arg; + + int args=0; + if (p_arg5.get_type()!=Variant::NIL) + args=5; + else if (p_arg4.get_type()!=Variant::NIL) + args=4; + else if (p_arg3.get_type()!=Variant::NIL) + args=3; + else if (p_arg2.get_type()!=Variant::NIL) + args=2; + else if (p_arg1.get_type()!=Variant::NIL) + args=1; + else + args=0; + + data.args = args; + data.arg[0] = p_arg1; + data.arg[1] = p_arg2; + data.arg[2] = p_arg3; + data.arg[3] = p_arg4; + data.arg[4] = p_arg5; pending_update ++; interpolates.push_back(data); diff --git a/scene/animation/tween.h b/scene/animation/tween.h index 3e23cc362a..d34c9e6ba2 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -83,6 +83,7 @@ private: bool active; InterpolateType type; bool finish; + bool call_deferred; real_t elapsed; ObjectID id; StringName key; @@ -95,7 +96,8 @@ private: TransitionType trans_type; EaseType ease_type; real_t delay; - Variant arg; + int args; + Variant arg[5]; }; String autoplay; @@ -178,10 +180,16 @@ public: , real_t p_delay = 0 ); - bool interpolate_callback(Object *p_node + bool interpolate_callback(Object *p_object , real_t p_times_in_sec , String p_callback - , Variant p_arg = Variant() + , VARIANT_ARG_DECLARE + ); + + bool interpolate_deferred_callback(Object *p_object + , real_t p_times_in_sec + , String p_callback + , VARIANT_ARG_DECLARE ); bool follow_property(Object *p_node diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index a7ff1431bd..fbcfdb69bb 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -156,7 +156,6 @@ void FileDialog::_action_pressed() { if (mode==MODE_SAVE_FILE) { - String ext = f.extension(); bool valid=false; if (filter->get_selected()==filter->get_item_count()-1) { @@ -184,7 +183,8 @@ void FileDialog::_action_pressed() { if (idx>=0 && idx<filters.size()) { String flt=filters[idx].get_slice(";",0); - for (int j=0;j<flt.get_slice_count(",");j++) { + int filterSliceCount=flt.get_slice_count(","); + for (int j=0;j<filterSliceCount;j++) { String str = (flt.get_slice(",",j).strip_edges()); if (f.match(str)) { @@ -192,6 +192,13 @@ void FileDialog::_action_pressed() { break; } } + + if (!valid && filterSliceCount>0) { + String str = (flt.get_slice(",",0).strip_edges()); + f+=str.substr(1, str.length()-1); + file->set_text(f.get_file()); + valid=true; + } } else { valid=true; } diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp index f54345cdb8..582693eb3a 100644 --- a/scene/gui/grid_container.cpp +++ b/scene/gui/grid_container.cpp @@ -226,5 +226,6 @@ Size2 GridContainer::get_minimum_size() const { GridContainer::GridContainer() { + set_stop_mouse(false); columns=1; } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index d589b93049..8855627bb4 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -298,7 +298,7 @@ void TextEdit::_update_scrollbars() { int hscroll_rows = ((hmin.height-1)/get_row_height())+1; int visible_rows = get_visible_rows(); - int total_rows = text.size() * cache.line_spacing; + int total_rows = text.size(); int vscroll_pixels = v_scroll->get_combined_minimum_size().width; int visible_width = size.width - cache.style_normal->get_minimum_size().width; diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index b7b52a39dc..035dbb8cc4 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -2472,6 +2472,10 @@ void Tree::_notification(int p_what) { } } + if (p_what==NOTIFICATION_THEME_CHANGED) { + update_cache(); + } + } diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index cf49979118..9d907391ec 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -272,7 +272,7 @@ void register_scene_types() { ObjectTypeDB::register_type<Control>(); // ObjectTypeDB::register_type<EmptyControl>(); - ObjectTypeDB::add_compatibility_type("EmptyControl","control"); + ObjectTypeDB::add_compatibility_type("EmptyControl","Control"); ObjectTypeDB::register_type<Button>(); ObjectTypeDB::register_type<Label>(); ObjectTypeDB::register_type<HScrollBar>(); @@ -496,16 +496,17 @@ void register_scene_types() { /* REGISTER RESOURCES */ + ObjectTypeDB::register_virtual_type<Shader>(); + ObjectTypeDB::register_virtual_type<ShaderGraph>(); + ObjectTypeDB::register_type<CanvasItemShader>(); + ObjectTypeDB::register_type<CanvasItemShaderGraph>(); + #ifndef _3D_DISABLED ObjectTypeDB::register_type<Mesh>(); ObjectTypeDB::register_virtual_type<Material>(); ObjectTypeDB::register_type<FixedMaterial>(); - //ObjectTypeDB::register_type<ParticleSystemMaterial>(); - //ObjectTypeDB::register_type<UnshadedMaterial>(); ObjectTypeDB::register_type<ShaderMaterial>(); ObjectTypeDB::register_type<RoomBounds>(); - ObjectTypeDB::register_virtual_type<Shader>(); - ObjectTypeDB::register_virtual_type<ShaderGraph>(); ObjectTypeDB::register_type<MaterialShaderGraph>(); ObjectTypeDB::register_type<MaterialShader>(); ObjectTypeDB::add_compatibility_type("Shader","MaterialShader"); diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp index 6c27ffc6d9..7c2fa4d6f4 100644 --- a/scene/resources/curve.cpp +++ b/scene/resources/curve.cpp @@ -541,19 +541,12 @@ void Curve2D::_bake() const { Vector2 pos=points[0].pos; - int point=0; - float ofs=0; List<Vector2> pointlist; for(int i=0;i<points.size()-1;i++) { - float slen=points[i].pos.distance_to(points[i+1].pos); - float divs = slen / bake_interval; - if (divs>1) - divs=1; - - float step = divs*0.1; // 10 substeps ought to be enough? + float step = 0.1; // at least 10 substeps ought to be enough? float p = 0; while(p<1.0) { @@ -1014,19 +1007,12 @@ void Curve3D::_bake() const { Vector3 pos=points[0].pos; - int point=0; - float ofs=0; List<Plane> pointlist; pointlist.push_back(Plane(pos,points[0].tilt)); for(int i=0;i<points.size()-1;i++) { - float slen=points[i].pos.distance_to(points[i+1].pos); - float divs = slen / bake_interval; - if (divs>1) - divs=1; - - float step = divs*0.1; // 10 substeps ought to be enough? + float step = 0.1; // at least 10 substeps ought to be enough? float p = 0; while(p<1.0) { diff --git a/scene/resources/default_theme/arrow_down.png b/scene/resources/default_theme/arrow_down.png Binary files differindex 1e5c04cb0e..bb4c9d6831 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 33e0c1965b..e39356dea8 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 8bcfa54cc6..e1d25c08fb 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 aa3035fe4f..b01af258f0 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 fbccf22636..d10df91b1d 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 882b583081..9d627936e6 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 171c61b6e5..a41b33cccf 100644 --- a/scene/resources/default_theme/checked.png +++ b/scene/resources/default_theme/checked.png diff --git a/scene/resources/default_theme/close_hl.png b/scene/resources/default_theme/close_hl.png Binary files differindex 835790e9e9..0f3be4a320 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 e7f0d9b1f5..4d1e9896db 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -168,8 +168,6 @@ void make_default_theme() { tex_cache = memnew( TexCacheMap ); - uint32_t last=OS::get_singleton()->get_ticks_msec(); - Ref<Theme> t( memnew( Theme ) ); //Ref<Font> default_font = make_font(_bi_font_normal_height,_bi_font_normal_ascent,_bi_font_normal_valign,_bi_font_normal_charcount,_bi_font_normal_characters,make_icon(font_normal_png)); @@ -177,167 +175,240 @@ void make_default_theme() { Ref<Font> source_font=make_font2(_builtin_source_font_height,_builtin_source_font_ascent,_builtin_source_font_charcount,&_builtin_source_font_charrects[0][0],_builtin_source_font_kerning_pair_count,&_builtin_source_font_kerning_pairs[0][0],_builtin_source_font_img_width,_builtin_source_font_img_height,_builtin_source_font_img_data); Ref<Font> large_font=make_font2(_builtin_large_font_height,_builtin_large_font_ascent,_builtin_large_font_charcount,&_builtin_large_font_charrects[0][0],_builtin_large_font_kerning_pair_count,&_builtin_large_font_kerning_pairs[0][0],_builtin_large_font_img_width,_builtin_large_font_img_height,_builtin_large_font_img_data); + // Font Colors + + Color control_font_color = Color::html("e0e0e0"); + Color control_font_color_low = Color::html("b0b0b0"); + Color control_font_color_hover = Color::html("f0f0f0"); + 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"); + + + // Panel + t->set_stylebox("panel","Panel", make_stylebox( panel_bg_png,0,0,0,0) ); - Color control_font_color = Color::html("cfc9d5"); - Color control_font_color_low = Color::html("bab4c1"); - Color control_font_color_hover = Color::html("ffffff"); - Color control_font_color_disabled = Color(0.9,0.9,0.9,0.6); - Color control_font_color_pressed = Color::html("bfb9c5"); - Color font_color_selection = Color::html("715e7d"); - Ref<Texture> empty_icon = memnew( ImageTexture ); - t->set_stylebox("normal","Button", make_stylebox( button_normal_png,5,5,5,5,8,3,8,4) ); - t->set_stylebox("pressed","Button", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("hover","Button", make_stylebox( button_hover_png,5,5,5,5,3,0,3,0) ); - t->set_stylebox("disabled","Button", make_stylebox( button_disabled_png,5,5,5,5,3,3,3,3) ); - Ref<StyleBoxTexture> focus = make_stylebox( focus_png,6,6,6,6,3,3,3,3); + + // Focus + + Ref<StyleBoxTexture> focus = make_stylebox( focus_png,5,5,5,5); for(int i=0;i<4;i++) { focus->set_expand_margin_size(Margin(i),2); } + + + + // Button + + t->set_stylebox("normal","Button", make_stylebox( button_normal_png,4,4,4,4,8,4,8,4) ); + t->set_stylebox("pressed","Button", make_stylebox( button_pressed_png,4,4,4,4) ); + t->set_stylebox("hover","Button", make_stylebox( button_hover_png,4,4,4,4) ); + t->set_stylebox("disabled","Button", make_stylebox( button_disabled_png,4,4,4,4) ); t->set_stylebox("focus","Button", focus ); + t->set_font("font","Button", default_font ); + 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("hseparation","Button", 2 ); + t->set_constant("hseparation","Button", 2); + + + + // ColorPickerButton + + t->set_stylebox("normal","ColorPickerButton", make_stylebox( button_normal_png,4,4,4,4) ); + t->set_stylebox("pressed","ColorPickerButton", make_stylebox( button_pressed_png,4,4,4,4) ); + t->set_stylebox("hover","ColorPickerButton", make_stylebox( button_hover_png,4,4,4,4) ); + t->set_stylebox("disabled","ColorPickerButton", make_stylebox( button_disabled_png,4,4,4,4) ); + t->set_stylebox("focus","ColorPickerButton", focus ); - t->set_stylebox("normal","ColorPickerButton", make_stylebox( button_normal_png,7,7,7,7,8,3,8,3) ); - t->set_stylebox("pressed","ColorPickerButton", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("hover","ColorPickerButton", make_stylebox( button_hover_png,4,4,4,4,3,3,3,3) ); - t->set_stylebox("disabled","ColorPickerButton", make_stylebox( button_disabled_png,4,4,4,4,3,3,3,3) ); - t->set_stylebox("focus","ColorPickerButton", make_stylebox( focus_png,5,5,5,5,3,3,3,3) ); t->set_font("font","ColorPickerButton", default_font ); + t->set_color("font_color","ColorPickerButton", Color(1,1,1,1) ); t->set_color("font_color_pressed","ColorPickerButton", Color(0.8,0.8,0.8,1) ); t->set_color("font_color_hover","ColorPickerButton", Color(1,1,1,1) ); - t->set_color("font_color_disabled","ColorPickerButton", Color(0.9,0.9,0.9,0.6) ); + t->set_color("font_color_disabled","ColorPickerButton", Color(0.9,0.9,0.9,0.3) ); + t->set_constant("hseparation","ColorPickerButton", 2 ); - t->set_stylebox("normal","ToolButton", make_empty_stylebox(5,3,5,3) ); - t->set_stylebox("pressed","ToolButton", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("hover","ToolButton", make_stylebox( button_normal_png,5,5,5,5,3,3,3,3) ); - //t->set_stylebox("disabled","ToolButton", make_stylebox( button_disabled_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("disabled","ToolButton", make_empty_stylebox(3,3,3,3) ); - t->set_stylebox("focus","ToolButton", make_stylebox( focus_png,5,5,5,5,3,3,3,3) ); + // ToolButton + + Ref<StyleBox> tb_empty = memnew( StyleBoxEmpty ); + tb_empty->set_default_margin(MARGIN_LEFT,8); + tb_empty->set_default_margin(MARGIN_RIGHT,8); + tb_empty->set_default_margin(MARGIN_TOP,4); + tb_empty->set_default_margin(MARGIN_BOTTOM,4); + + t->set_stylebox("normal","ToolButton", tb_empty); + t->set_stylebox("pressed","ToolButton", make_stylebox( button_pressed_png,4,4,4,4) ); + t->set_stylebox("hover","ToolButton", make_stylebox( button_normal_png,4,4,4,4) ); + t->set_stylebox("disabled","ToolButton", make_empty_stylebox(4,4,4,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", control_font_color_pressed ); t->set_color("font_color_hover","ToolButton", control_font_color_hover ); - t->set_color("font_color_disabled","ToolButton", Color(0.9,0.95,1,0.6) ); - t->set_constant("hseparation","ToolButton", 2 ); + t->set_color("font_color_disabled","ToolButton", Color(0.9,0.95,1,0.3) ); + + t->set_constant("hseparation","ToolButton", 0 ); + + + + // OptionButton - t->set_stylebox("normal","OptionButton", make_stylebox( option_button_normal_png,4,4,20,5,8,3,20,4) ); - t->set_stylebox("pressed","OptionButton", make_stylebox( option_button_pressed_png,4,4,20,5,3,3,3,3) ); - t->set_stylebox("hover","OptionButton", make_stylebox( option_button_hover_png,4,4,20,5,3,3,3,3) ); - t->set_stylebox("disabled","OptionButton", make_stylebox( option_button_disabled_png,4,4,20,5,3,3,3,3) ); + t->set_stylebox("normal","OptionButton", make_stylebox( option_button_normal_png,5,5,21,5,8,4,8,4) ); + t->set_stylebox("pressed","OptionButton", make_stylebox( option_button_pressed_png,5,5,21,5) ); + t->set_stylebox("hover","OptionButton", make_stylebox( option_button_hover_png,5,5,21,5) ); + t->set_stylebox("disabled","OptionButton", make_stylebox( option_button_disabled_png,5,5,21,5) ); t->set_stylebox("focus","OptionButton", focus ); - t->set_constant("arrow_margin","OptionButton", 1 ); + t->set_icon("arrow","OptionButton", make_icon( option_arrow_png ) ); t->set_font("font","OptionButton", default_font ); + 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 ); + t->set_constant("arrow_margin","OptionButton", 2 ); + + - t->set_stylebox("normal","MenuButton", make_stylebox( button_normal_png,6,6,6,6,3,3,3,3) ); - t->set_stylebox("pressed","MenuButton", make_stylebox( tool_button_pressed_png ,6,6,6,6,3,3,3,3) ); - t->set_stylebox("hover","MenuButton", make_stylebox( button_normal_png,6,6,6,6,3,3,3,3) ); + // MenuButton + + t->set_stylebox("normal","MenuButton", make_stylebox( button_normal_png,4,4,4,4,8,4,8,4) ); + t->set_stylebox("pressed","MenuButton", make_stylebox( tool_button_pressed_png ,4,4,4,4) ); + t->set_stylebox("hover","MenuButton", make_stylebox( button_normal_png,4,4,4,4) ); t->set_stylebox("disabled","MenuButton", make_empty_stylebox(0,0,0,0) ); + t->set_font("font","MenuButton", default_font ); + t->set_color("font_color","MenuButton", control_font_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", Color(1,1,1,0.3) ); - t->set_stylebox("focus","OptionButton", Ref<StyleBox>( memnew( StyleBoxEmpty )) ); - t->set_constant("hseparation","MenuButton", 2 ); + t->set_constant("hseparation","MenuButton", 0 ); + + + + // CheckButton Ref<StyleBox> cb_empty = memnew( StyleBoxEmpty ); + cb_empty->set_default_margin(MARGIN_LEFT,6); cb_empty->set_default_margin(MARGIN_RIGHT,70); cb_empty->set_default_margin(MARGIN_TOP,4); cb_empty->set_default_margin(MARGIN_BOTTOM,4); + t->set_stylebox("normal","CheckButton", cb_empty ); t->set_stylebox("pressed","CheckButton", cb_empty ); t->set_stylebox("disabled","CheckButton", cb_empty ); t->set_stylebox("hover","CheckButton", cb_empty ); - //t->set_stylebox("hover","CheckButton", make_stylebox( button_hover_png,5,5,5,5,3,3,3,3) ); + t->set_stylebox("focus","CheckButton", focus ); + + t->set_icon("on","CheckButton", make_icon(toggle_on_png) ); + t->set_icon("off","CheckButton", make_icon(toggle_off_png)); + t->set_font("font","CheckButton", default_font ); + t->set_color("font_color","CheckButton", control_font_color ); t->set_color("font_color_pressed","CheckButton", control_font_color_pressed ); t->set_color("font_color_hover","CheckButton", control_font_color_hover ); t->set_color("font_color_disabled","CheckButton", control_font_color_disabled ); - t->set_icon("on","CheckButton", make_icon(toggle_on_png) ); - t->set_icon("off","CheckButton", make_icon(toggle_off_png)); - t->set_stylebox("focus","CheckButton", focus ); + t->set_constant("hseparation","CheckButton",4); t->set_constant("check_vadjust","CheckButton",0); + + + // Label t->set_font("font","Label", default_font ); + 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 ); t->set_constant("shadow_offset_y","Label", 1 ); t->set_constant("shadow_as_outline","Label", 0 ); - t->set_stylebox("normal","LineEdit", make_stylebox( line_edit_png,4,4,4,4,3,4,3,4) ); - t->set_stylebox("focus","LineEdit", focus ); - t->set_stylebox("read_only","LineEdit", make_stylebox( line_edit_disabled_png,6,6,6,6,4,4,4,4) ); - Image n(line_edit_png); - Image nf(line_edit_focus_png); + // LineEdit + + t->set_stylebox("normal","LineEdit", make_stylebox( line_edit_png,5,5,5,5) ); + t->set_stylebox("focus","LineEdit", focus ); + 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", 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", 8 ); - t->set_stylebox("bg","ProgressBar", make_stylebox( progress_bar_png,5,5,5,5,0,0,0,0) ); - t->set_stylebox("fg","ProgressBar", make_stylebox( progress_fill_png,5,5,5,5,2,2,2,2) ); + t->set_constant("minimum_spaces","LineEdit", 12 ); + + + + // ProgressBar + + t->set_stylebox("bg","ProgressBar", make_stylebox( progress_bar_png,4,4,4,4,0,0,0,0) ); + t->set_stylebox("fg","ProgressBar", make_stylebox( progress_fill_png,6,6,6,6,2,1,2,1) ); + t->set_font("font","ProgressBar", default_font ); - t->set_color("font_color","ProgressBar", control_font_color ); + + t->set_color("font_color","ProgressBar", control_font_color_hover ); t->set_color("font_color_shadow","ProgressBar", Color(0,0,0) ); - t->set_icon("tab","TextEdit", make_icon( tab_png) ); - t->set_stylebox("normal","TextEdit", make_stylebox( tree_bg_png,12,12,12,12,3,3,3,3) ); - t->set_stylebox("focus","TextEdit", focus ); - t->set_stylebox("completion","TextEdit", make_stylebox( tree_bg_png,4,4,4,5,3,3,3,3) ); - t->set_constant("completion_lines","TextEdit", 7 ); - t->set_constant("completion_max_width","TextEdit", 50 ); - t->set_constant("completion_scroll_width","TextEdit", 3 ); - t->set_color("completion_scroll_color","TextEdit", control_font_color_pressed ); - t->set_color("completion_existing","TextEdit", control_font_color ); + // TextEdit - //t->set_font("font","TextEdit", mono_font ); + 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,3,3,3,3) ); + + t->set_icon("tab","TextEdit", make_icon( tab_png) ); t->set_font("font","TextEdit", default_font ); + + t->set_color("completion_scroll_color","TextEdit", control_font_color_pressed ); + t->set_color("completion_existing","TextEdit", control_font_color ); t->set_color("font_color","TextEdit", control_font_color ); t->set_color("font_color_selected","TextEdit", Color(0,0,0) ); t->set_color("selection_color","TextEdit", font_color_selection ); t->set_color("mark_color","TextEdit", Color(1.0,0.4,0.4,0.4) ); - t->set_color("breakpoint_color","TextEdit", Color(0.8,0.8,0.4,0.4) ); - t->set_color("current_line_color","TextEdit", Color(0.3,0.5,0.8,0.15) ); + t->set_color("breakpoint_color","TextEdit", Color(0.8,0.8,0.4,0.2) ); + t->set_color("current_line_color","TextEdit", Color(0.25,0.25,0.26,0.8) ); t->set_color("cursor_color","TextEdit", control_font_color ); t->set_color("symbol_color","TextEdit", control_font_color_hover ); t->set_color("brace_mismatch_color","TextEdit", Color(1,0.2,0.2) ); - t->set_constant("line_spacing","TextEdit",1 ); - t->set_stylebox("scroll","HScrollBar", make_stylebox( hscroll_bg_png,3,3,3,3,0,0,0,0) ); - t->set_stylebox("scroll_focus","HScrollBar", make_stylebox( hscroll_bg_png,3,3,3,3,0,0,0,0) ); - t->set_stylebox("grabber","HScrollBar", make_stylebox( hscroll_grabber_png,3,3,3,3,2,2,2,2) ); - t->set_stylebox("grabber_hilite","HScrollBar", make_stylebox( hscroll_grabber_hl_png,3,3,3,3,2,2,2,2) ); + t->set_constant("completion_lines","TextEdit", 7 ); + t->set_constant("completion_max_width","TextEdit", 50 ); + t->set_constant("completion_scroll_width","TextEdit", 3 ); + t->set_constant("line_spacing","TextEdit",4 ); + + + Ref<Texture> empty_icon = memnew( ImageTexture ); + + // HScrollBar + + t->set_stylebox("scroll","HScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) ); + t->set_stylebox("scroll_focus","HScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) ); + t->set_stylebox("grabber","HScrollBar", make_stylebox( scroll_grabber_png,3,3,3,3,2,2,2,2) ); + t->set_stylebox("grabber_hilite","HScrollBar", make_stylebox( scroll_grabber_hl_png,3,3,3,3,2,2,2,2) ); t->set_icon("increment","HScrollBar",empty_icon); t->set_icon("increment_hilite","HScrollBar",empty_icon); @@ -345,77 +416,112 @@ void make_default_theme() { t->set_icon("decrement_hilite","HScrollBar",empty_icon); - t->set_stylebox("scroll","VScrollBar", make_stylebox( vscroll_bg_png,3,3,3,3,0,0,0,0) ); - t->set_stylebox("scroll_focus","VScrollBar", make_stylebox( vscroll_bg_png,3,3,3,3,0,0,0,0) ); - t->set_stylebox("grabber","VScrollBar", make_stylebox( vscroll_grabber_png,3,3,3,3,2,2,2,2) ); - t->set_stylebox("grabber_hilite","VScrollBar", make_stylebox( vscroll_grabber_hl_png,3,3,3,3,2,2,2,2) ); + + // VScrollBar + + t->set_stylebox("scroll","VScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) ); + t->set_stylebox("scroll_focus","VScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) ); + t->set_stylebox("grabber","VScrollBar", make_stylebox( scroll_grabber_png,3,3,3,3,2,2,2,2) ); + t->set_stylebox("grabber_hilite","VScrollBar", make_stylebox( scroll_grabber_hl_png,3,3,3,3,2,2,2,2) ); + t->set_icon("increment","VScrollBar",empty_icon); t->set_icon("increment_hilite","VScrollBar",empty_icon); t->set_icon("decrement","VScrollBar",empty_icon); t->set_icon("decrement_hilite","VScrollBar",empty_icon); - t->set_stylebox("slider","HSlider", make_stylebox( hslider_bg_png,5,5,5,5,1,1,1,1) ); - t->set_stylebox("focus","HSlider", make_stylebox( focus_png,3,3,3,3,1,1,1,1) ); - //t->set_stylebox("slider_focus","HSlider", make_stylebox( hslider_bg_focus_png,6,6,6,6,2,2,2,2) ); + + + // 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("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("tick","HSlider", make_icon( hslider_tick_png ) ); - t->set_stylebox("grabber_hilite","HSlider", make_stylebox( hslider_grabber_hl_png,6,6,6,6,2,2,2,2) ); - t->set_stylebox("slider","VSlider", make_stylebox( vslider_bg_png,5,5,5,5,1,1,1,1) ); - t->set_stylebox("focus","HSlider", make_stylebox( focus_png,3,3,3,3,1,1,1,1) ); - //t->set_stylebox("slider_focus","VSlider", make_stylebox( vslider_bg_focus_png,6,6,6,6,2,2,2,2) ); + + + + // 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("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("tick","VSlider", make_icon( vslider_tick_png ) ); - t->set_stylebox("grabber_hilite","VSlider", make_stylebox( vslider_grabber_hl_png,6,6,6,6,2,2,2,2) ); + + + + // SpinBox t->set_icon("updown","SpinBox",make_icon(spinbox_updown_png)); - Ref<StyleBoxTexture> style_pp_win = make_stylebox( popup_window_png,6,28,6,7,8,8,8,8); + + // WindowDialog + + Ref<StyleBoxTexture> style_pp_win = make_stylebox( popup_window_png,6,28,6,7); for(int i=0;i<4;i++) style_pp_win->set_expand_margin_size((Margin)i,3); style_pp_win->set_expand_margin_size(MARGIN_TOP,26); + t->set_stylebox("panel","WindowDialog", style_pp_win ); - t->set_constant("titlebar_height","WindowDialog", 18 ); - t->set_constant("title_height","WindowDialog", 20 ); - t->set_font("title_font","WindowDialog", large_font ); - t->set_color("title_color","WindowDialog", Color(0,0,0) ); + 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(0,0,0) ); + t->set_constant("close_h_ofs","WindowDialog", 22 ); t->set_constant("close_v_ofs","WindowDialog", 20 ); + t->set_constant("titlebar_height","WindowDialog", 18 ); + t->set_constant("title_height","WindowDialog", 20 ); - Ref<StyleBoxTexture> style_pp = make_stylebox( popup_bg_png,6,19,6,7,8,8,8,8); - style_pp->set_expand_margin_size(MARGIN_LEFT,2); - style_pp->set_expand_margin_size(MARGIN_TOP,3); - style_pp->set_expand_margin_size(MARGIN_RIGHT,2); - style_pp->set_expand_margin_size(MARGIN_BOTTOM,3); + // Popup - t->set_stylebox("panel","PopupMenu", style_pp ); - t->set_stylebox("panel","PopupPanel", style_pp ); + Ref<StyleBoxTexture> style_pp = make_stylebox( popup_bg_png,4,4,4,4,8,8,8,8); 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); } - t->set_stylebox("panel_disabled","PopupMenu", make_stylebox( popup_bg_disabled_png,5,5,5,5) ); + t->set_stylebox("panel","PopupPanel", style_pp ); + + + + + // PopupMenu + + t->set_stylebox("panel","PopupMenu", make_stylebox( popup_bg_png,4,4,4,4,10,10,10,10) ); + t->set_stylebox("panel_disabled","PopupMenu", make_stylebox( popup_bg_disabled_png,4,4,4,4) ); t->set_stylebox("hover","PopupMenu", selected ); t->set_stylebox("separator","PopupMenu", make_stylebox( vseparator_png,3,3,3,3) ); - t->set_icon("checked","PopupMenu", make_icon(popup_checked_png) ); - t->set_icon("unchecked","PopupMenu", make_icon(popup_unchecked_png) ); + + t->set_icon("checked","PopupMenu", make_icon(checked_png) ); + t->set_icon("unchecked","PopupMenu", make_icon(unchecked_png) ); t->set_icon("submenu","PopupMenu", make_icon(submenu_png) ); + t->set_font("font","PopupMenu", default_font ); + t->set_color("font_color","PopupMenu", control_font_color ); t->set_color("font_color_accel","PopupMenu", Color(0.7,0.7,0.7,0.8) ); t->set_color("font_color_disabled","PopupMenu", Color(0.4,0.4,0.4,0.8) ); t->set_color("font_color_hover","PopupMenu", control_font_color ); - t->set_constant("hseparation","PopupMenu",2); - t->set_constant("vseparation","PopupMenu",1); + + t->set_constant("hseparation","PopupMenu",4); + t->set_constant("vseparation","PopupMenu",4); + + + // GraphNode Ref<StyleBoxTexture> graphsb = make_stylebox(graph_node_png,6,24,6,5,16,24,16,5); //graphsb->set_expand_margin_size(MARGIN_LEFT,10); @@ -431,57 +537,65 @@ void make_default_theme() { t->set_constant("port_offset","GraphNode", 3); - t->set_stylebox("bg","Tree", make_stylebox( tree_bg_png,4,4,4,5,3,3,3,3) ); + // Tree + + 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,4,4,4,5) ); t->set_stylebox("bg_focus","Tree", focus ); - Ref<StyleBoxTexture> tree_selected = make_stylebox( selection_png,4,4,4,4); - Ref<StyleBoxTexture> tree_selected_oof = make_stylebox( selection_oof_png,4,4,4,4); - for(int i=0;i<4;i++) { - tree_selected->set_expand_margin_size(Margin(i),2); - tree_selected_oof->set_expand_margin_size(Margin(i),2); - } t->set_stylebox("selected","Tree", tree_selected_oof ); t->set_stylebox("selected_focus","Tree", tree_selected ); - t->set_stylebox("completion_selected","TextEdit", 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,5,5,5,5,3,3,3,3)); + 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) ); + + t->set_icon("checked","Tree",make_icon(checked_png)); + t->set_icon("unchecked","Tree",make_icon(unchecked_png)); + t->set_icon("updown","Tree",make_icon(updown_png)); + t->set_icon("select_arrow","Tree",make_icon(dropdown_png)); + t->set_icon("arrow","Tree",make_icon(arrow_down_png)); + t->set_icon("arrow_collapsed","Tree",make_icon(arrow_right_png)); + + t->set_font("title_button_font","Tree", default_font ); t->set_font("font","Tree", default_font ); + + 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 ); + t->set_color("font_color_selected","Tree", control_font_color_pressed ); 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_constant("hseparation","Tree",2); - t->set_constant("vseparation","Tree",1); - t->set_constant("guide_width","Tree",1); + + t->set_constant("hseparation","Tree",4); + t->set_constant("vseparation","Tree",2); + t->set_constant("guide_width","Tree",2); t->set_constant("item_margin","Tree",12); - t->set_constant("button_margin","Tree",2); + t->set_constant("button_margin","Tree",4); - t->set_stylebox("title_button_normal","Tree", make_stylebox( tree_title_png,4,4,4,4,3,3,3,3) ); - t->set_stylebox("title_button_pressed","Tree", make_stylebox( tree_title_pressed_png,4,4,4,4,3,3,3,3) ); - t->set_stylebox("title_button_hover","Tree", make_stylebox( tree_title_png,4,4,4,4,3,3,3,3) ); - t->set_color("title_button_color","Tree", control_font_color ); - t->set_font("title_button_font","Tree", default_font ); - t->set_icon("checked","Tree",make_icon(checked_png)); - t->set_icon("unchecked","Tree",make_icon(unchecked_png)); - t->set_icon("updown","Tree",make_icon(updown_png)); - t->set_icon("select_arrow","Tree",make_icon(dropdown_png)); - t->set_icon("arrow","Tree",make_icon(arrow_down_png)); - t->set_icon("arrow_collapsed","Tree",make_icon(arrow_right_png)); + // TextEdit - t->set_stylebox("tab_fg","TabContainer", make_stylebox( tab_current_png,5,5,5,5,8,3,8,3) ); - t->set_stylebox("tab_bg","TabContainer", make_stylebox( tab_behind_png,5,5,5,5,8,4,8,3) ); - Ref<StyleBoxTexture> tc_sb = make_stylebox( tab_container_bg_png,6,19,6,7); + t->set_stylebox("completion_selected","TextEdit", tree_selected ); + + + + // TabContainer + + Ref<StyleBoxTexture> tc_sb = make_stylebox( tab_container_bg_png,4,4,4,4); for(int i=0;i<4;i++) { - tc_sb->set_default_margin(Margin(i),7); + tc_sb->set_default_margin(Margin(i),4); tc_sb->set_expand_margin_size(Margin(i),2); } - //tc_sb->set_expand_margin_size(MARGIN_TOP,2); - //tc_sb->set_default_margin(MARGIN_TOP,6); + tc_sb->set_expand_margin_size(MARGIN_TOP,2); + tc_sb->set_default_margin(MARGIN_TOP,8); + + t->set_stylebox("tab_fg","TabContainer", make_stylebox( tab_current_png,4,4,4,4,16,4,16,4) ); + t->set_stylebox("tab_bg","TabContainer", make_stylebox( tab_behind_png,4,4,4,4,16,6,16,4) ); t->set_stylebox("panel","TabContainer", tc_sb ); t->set_icon("increment","TabContainer",make_icon( scroll_button_right_png)); @@ -490,116 +604,178 @@ void make_default_theme() { t->set_icon("decrement_hilite","TabContainer",make_icon( scroll_button_left_hl_png)); t->set_font("font","TabContainer", default_font ); + t->set_color("font_color_fg","TabContainer", control_font_color_hover ); - t->set_color("font_color_bg","TabContainer", control_font_color ); - t->set_constant("side_margin","TabContainer", 5 ); + t->set_color("font_color_bg","TabContainer", control_font_color_low ); + + t->set_constant("side_margin","TabContainer", 8 ); t->set_constant("top_margin","TabContainer", 24); - t->set_constant("label_valign_fg","TabContainer", 4); - t->set_constant("label_valign_bg","TabContainer", 5); - t->set_constant("hseparation","TabContainer", 2); + t->set_constant("label_valign_fg","TabContainer", 0); + t->set_constant("label_valign_bg","TabContainer", 2); + t->set_constant("hseparation","TabContainer", 4); + + + + // Tabs + + t->set_stylebox("tab_fg","Tabs", make_stylebox( tab_current_png,4,4,4,4,16,4,16,4) ); + t->set_stylebox("tab_bg","Tabs", make_stylebox( tab_behind_png,4,4,4,4,16,6,16,4) ); + t->set_stylebox("panel","Tabs", make_stylebox( tab_container_bg_png,4,4,4,4) ); - t->set_stylebox("tab_fg","Tabs", make_stylebox( tab_current_png,5,5,5,5,8,3,8,3) ); - t->set_stylebox("tab_bg","Tabs", make_stylebox( tab_behind_png,5,5,5,5,8,4,8,3) ); - t->set_stylebox("panel","Tabs", make_stylebox( tab_container_bg_png,3,3,3,3) ); t->set_font("font","Tabs", default_font ); + t->set_color("font_color_fg","Tabs", control_font_color_hover ); - t->set_color("font_color_bg","Tabs", control_font_color ); + t->set_color("font_color_bg","Tabs", control_font_color_low ); + t->set_constant("top_margin","Tabs", 24); - t->set_constant("label_valign_fg","Tabs", 4); - t->set_constant("label_valign_bg","Tabs", 5); - t->set_constant("hseparation","Tabs", 2); + t->set_constant("label_valign_fg","Tabs", 0); + t->set_constant("label_valign_bg","Tabs", 2); + t->set_constant("hseparation","Tabs", 4); + + + + // Separators t->set_stylebox("separator","HSeparator", make_stylebox( vseparator_png,3,3,3,3) ); - t->set_constant("separation","HSeparator", 7); t->set_stylebox("separator","VSeparator", make_stylebox( hseparator_png,3,3,3,3) ); - t->set_constant("separation","VSeparator", 7); t->set_icon("close","Icons", make_icon(icon_close_png)); t->set_font("source","Fonts", source_font); t->set_font("normal","Fonts", default_font ); t->set_font("large","Fonts", large_font ); + t->set_constant("separation","HSeparator", 4); + t->set_constant("separation","VSeparator", 4); + + // Dialogs - t->set_constant("margin","Dialogs",10); + t->set_constant("margin","Dialogs",8); t->set_constant("button_margin","Dialogs",32); + + + + // FileDialog t->set_icon("folder","FileDialog",make_icon(icon_folder_png)); + t->set_color("files_disabled","FileDialog",Color(0,0,0,0.7)); + + + // colorPicker + t->set_constant("value_height","ColorPicker", 23 ); t->set_constant("value_width","ColorPicker", 50); t->set_constant("color_width","ColorPicker", 100); - t->set_constant("label_width","ColorPicker", 15); + t->set_constant("label_width","ColorPicker", 20); t->set_constant("hseparator","ColorPicker", 4); - Ref<StyleBoxTexture> style_tt = make_stylebox( tooltip_bg_png,9,9,9,9,8,8,8,8); + + + // TooltipPanel + + Ref<StyleBoxTexture> style_tt = make_stylebox( tooltip_bg_png,4,4,4,4); for(int i=0;i<4;i++) style_tt->set_expand_margin_size((Margin)i,4); + t->set_stylebox("panel","TooltipPanel", style_tt ); + t->set_font("font","TooltipLabel", default_font ); + t->set_color("font_color","TooltipLabel", Color(0,0,0) ); t->set_color("font_color_shadow","TooltipLabel", Color(0,0,0,0.1) ); + t->set_constant("shadow_offset_x","TooltipLabel", 1 ); t->set_constant("shadow_offset_y","TooltipLabel", 1 ); + + + // RichTextLabel + + t->set_stylebox("focus","RichTextLabel", focus ); + t->set_font("default_font","RichTextLabel", default_font ); + t->set_color("default_color","RichTextLabel", control_font_color ); t->set_color("font_color_selected","RichTextLabel", font_color_selection ); t->set_color("selection_color","RichTextLabel", Color(0.1,0.1,1,0.8) ); + t->set_constant("line_separation","RichTextLabel", 1 ); - t->set_stylebox("focus","RichTextLabel", focus ); + + // Containers + + t->set_stylebox("bg","VSplitContainer", make_stylebox( vsplit_bg_png,1,1,1,1) ); + t->set_stylebox("bg","HSplitContainer", make_stylebox( hsplit_bg_png,1,1,1,1) ); + + t->set_icon("grabber","VSplitContainer",make_icon(vsplitter_png)); + t->set_icon("grabber","HSplitContainer",make_icon(hsplitter_png)); + t->set_constant("separation","HBoxContainer",4); t->set_constant("separation","VBoxContainer",4); - t->set_constant("margin","MarginContainer",15); - + t->set_constant("margin","MarginContainer",8); t->set_constant("separation","GridContainer",4); - - t->set_constant("separation","HSplitContainer",8); - t->set_constant("separation","VSplitContainer",8); + t->set_constant("separation","HSplitContainer",12); + t->set_constant("separation","VSplitContainer",12); t->set_constant("autohide","HSplitContainer",1); t->set_constant("autohide","VSplitContainer",1); - t->set_icon("grabber","VSplitContainer",make_icon(vsplitter_png)); - t->set_icon("grabber","HSplitContainer",make_icon(hsplitter_png)); - t->set_stylebox("bg","VSplitContainer", make_stylebox( vsplit_bg_png,1,1,1,1,1,1,1,1) ); - t->set_stylebox("bg","HSplitContainer", make_stylebox( hsplit_bg_png,1,1,1,1,1,1,1,1) ); - t->set_stylebox("normal","HButtonArray", make_stylebox( button_normal_png,2,2,2,2,3,3,3,3) ); - t->set_stylebox("selected","HButtonArray", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("hover","HButtonArray", make_stylebox( button_hover_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("focus","HButtonArray", make_stylebox( focus_png,5,5,5,5,3,3,3,3) ); + + // HButtonArray + + t->set_stylebox("normal","HButtonArray", make_stylebox( button_normal_png,4,4,4,4,0,4,22,4) ); + t->set_stylebox("selected","HButtonArray", make_stylebox( button_pressed_png,4,4,4,4,0,4,22,4) ); + t->set_stylebox("hover","HButtonArray", make_stylebox( button_hover_png,4,4,4,4) ); + t->set_font("font","HButtonArray", default_font); t->set_font("font_selected","HButtonArray", default_font); - t->set_color("font_color","HButtonArray", Color(1,1,1,1) ); - t->set_color("font_color_selected","HButtonArray", Color(0.7,0.7,0.7,1) ); - t->set_constant("icon_separator","HButtonArray", 2 ); - t->set_constant("button_separator","HButtonArray", 3 ); - - t->set_stylebox("normal","VButtonArray", make_stylebox( button_normal_png,2,2,2,2,3,3,3,3) ); - t->set_stylebox("selected","VButtonArray", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("hover","VButtonArray", make_stylebox( button_hover_png,5,5,5,5,3,3,3,3) ); - t->set_stylebox("focus","VButtonArray", make_stylebox( focus_png,5,5,5,5,3,3,3,3) ); + + t->set_color("font_color","HButtonArray", control_font_color_low ); + t->set_color("font_color_selected","HButtonArray", control_font_color_hover ); + + t->set_constant("icon_separator","HButtonArray", 4 ); + t->set_constant("button_separator","HButtonArray", 8 ); + + t->set_stylebox("focus","HButtonArray", focus ); + + + // VButtonArray + + t->set_stylebox("normal","VButtonArray", make_stylebox( button_normal_png,4,4,4,4,0,4,22,4) ); + t->set_stylebox("selected","VButtonArray", make_stylebox( button_pressed_png,4,4,4,4,0,4,22,4) ); + t->set_stylebox("hover","VButtonArray", make_stylebox( button_hover_png,4,4,4,4) ); + t->set_font("font","VButtonArray", default_font); t->set_font("font_selected","VButtonArray", default_font); - t->set_color("font_color","VButtonArray", Color(1,1,1,1) ); - t->set_color("font_color_selected","VButtonArray", Color(0.7,0.7,0.7,1) ); - t->set_constant("icon_separator","VButtonArray", 2 ); - t->set_constant("button_separator","VButtonArray", 3 ); - t->set_stylebox("border","ReferenceFrame", make_stylebox( reference_border_png,5,5,5,5,3,3,3,3) ); + t->set_color("font_color","VButtonArray", control_font_color_low ); + t->set_color("font_color_selected","VButtonArray", control_font_color_hover ); + + t->set_constant("icon_separator","VButtonArray", 4); + t->set_constant("button_separator","VButtonArray", 8); + + t->set_stylebox("focus","VButtonArray", focus ); + + + // ReferenceFrame Ref<StyleBoxTexture> ttnc = make_stylebox( full_panel_bg_png,8,8,8,8); ttnc->set_draw_center(false); + + t->set_stylebox("border","ReferenceFrame", make_stylebox( reference_border_png,4,4,4,4) ); t->set_stylebox("panelnc","Panel", ttnc ); t->set_stylebox("panelf","Panel", tc_sb ); - t->set_stylebox("panel","PanelContainer", tc_sb ); t->set_icon( "logo","Icons", make_icon(logo_png) ); + + + // Theme + Theme::set_default( t ); Theme::set_default_icon( make_icon(error_icon_png) ); Theme::set_default_style( make_stylebox( error_icon_png,2,2,2,2) ); @@ -626,8 +802,8 @@ void make_default_theme() { style->set_texture(texture); for(int i=0;i<4;i++) { - style->set_margin_size( Margin(),2); - style->set_default_margin( Margin(),2); + style->set_margin_size( Margin(),8); + style->set_default_margin( Margin(),8); } Ref<Font> f = make_default_font(); diff --git a/scene/resources/default_theme/dropdown.png b/scene/resources/default_theme/dropdown.png Binary files differindex 5279e72d24..72fc5d73a3 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 0daf85718f..1656fea188 100644 --- a/scene/resources/default_theme/focus.png +++ b/scene/resources/default_theme/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 b43469a8aa..771e50e2af 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/hscroll_bg.png b/scene/resources/default_theme/hscroll_bg.png Binary files differdeleted file mode 100644 index 9d6381f0c9..0000000000 --- a/scene/resources/default_theme/hscroll_bg.png +++ /dev/null diff --git a/scene/resources/default_theme/hscroll_bg_focus.png b/scene/resources/default_theme/hscroll_bg_focus.png Binary files differdeleted file mode 100644 index e81a867b87..0000000000 --- a/scene/resources/default_theme/hscroll_bg_focus.png +++ /dev/null diff --git a/scene/resources/default_theme/hscroll_grabber.png b/scene/resources/default_theme/hscroll_grabber.png Binary files differdeleted file mode 100644 index 9015038911..0000000000 --- a/scene/resources/default_theme/hscroll_grabber.png +++ /dev/null diff --git a/scene/resources/default_theme/hscroll_grabber_hl.png b/scene/resources/default_theme/hscroll_grabber_hl.png Binary files differdeleted file mode 100644 index 11c895e9e3..0000000000 --- a/scene/resources/default_theme/hscroll_grabber_hl.png +++ /dev/null diff --git a/scene/resources/default_theme/hslider_bg.png b/scene/resources/default_theme/hslider_bg.png Binary files differindex 2d6c336e18..963e4c8456 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 626709dd32..b72ec4d8f4 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 30b06089c5..0dc5f2b615 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/hslider_tick.png b/scene/resources/default_theme/hslider_tick.png Binary files differindex 3ba740355e..e8e18b5402 100644 --- a/scene/resources/default_theme/hslider_tick.png +++ b/scene/resources/default_theme/hslider_tick.png diff --git a/scene/resources/default_theme/hsplit_bg.png b/scene/resources/default_theme/hsplit_bg.png Binary files differindex 6147aac10d..34033289d0 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 cfd9ab7d93..4173dc02e7 100644 --- a/scene/resources/default_theme/hsplitter.png +++ b/scene/resources/default_theme/hsplitter.png diff --git a/scene/resources/default_theme/icon_folder.png b/scene/resources/default_theme/icon_folder.png Binary files differindex 9ec797a8a5..0abf60253a 100644 --- a/scene/resources/default_theme/icon_folder.png +++ b/scene/resources/default_theme/icon_folder.png diff --git a/scene/resources/default_theme/icon_play.png b/scene/resources/default_theme/icon_play.png Binary files differindex f04a5cd789..40bbce5f0d 100644 --- a/scene/resources/default_theme/icon_play.png +++ b/scene/resources/default_theme/icon_play.png diff --git a/scene/resources/default_theme/icon_stop.png b/scene/resources/default_theme/icon_stop.png Binary files differindex 5ae2851d57..b0fd5caa83 100644 --- a/scene/resources/default_theme/icon_stop.png +++ b/scene/resources/default_theme/icon_stop.png diff --git a/scene/resources/default_theme/line_edit.png b/scene/resources/default_theme/line_edit.png Binary files differindex 3d8b748dff..d0ce0b9d70 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_disabled.png b/scene/resources/default_theme/line_edit_disabled.png Binary files differindex 4507c36857..edb6a7d5fc 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/option_arrow.png b/scene/resources/default_theme/option_arrow.png Binary files differindex 4c04cbc6ad..b0ab74421a 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 6cb7c6f858..6250e34ff8 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_hover.png b/scene/resources/default_theme/option_button_hover.png Binary files differindex da0216e813..8962e8aef9 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 fb61d0b50f..dd47afcd41 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 116e6e2a3e..916da52f07 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 255269ee68..df08179aac 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 655b3eadf4..3afd0b13dd 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_checked.png b/scene/resources/default_theme/popup_checked.png Binary files differindex 7cd2cd45b0..d313db6820 100644 --- a/scene/resources/default_theme/popup_checked.png +++ b/scene/resources/default_theme/popup_checked.png diff --git a/scene/resources/default_theme/popup_window.png b/scene/resources/default_theme/popup_window.png Binary files differindex de903216d1..88fbb3bc83 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 5d290ce0fb..3016c52216 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 d446407f08..ee7c3315e4 100644 --- a/scene/resources/default_theme/progress_fill.png +++ b/scene/resources/default_theme/progress_fill.png diff --git a/scene/resources/default_theme/scroll_bg.png b/scene/resources/default_theme/scroll_bg.png Binary files differnew file mode 100644 index 0000000000..53797886cd --- /dev/null +++ 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 87de51d5ef..88b218f581 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 cfece0d5d0..90b1a48ac8 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 57bdb29ea1..8e60a96476 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 a5f497178a..1114a92381 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 7fc0748305..ee79c0aa56 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 9e643262b3..b83e24a954 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 3487213eba..251106b487 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 e263754f50..059b4b0f2b 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 differnew file mode 100644 index 0000000000..16beda1514 --- /dev/null +++ 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 differnew file mode 100644 index 0000000000..acfb7c835b --- /dev/null +++ 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 08e242c28c..074c7a4d80 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 c6e5ee285b..17ec977bd6 100644 --- a/scene/resources/default_theme/selection_oof.png +++ b/scene/resources/default_theme/selection_oof.png diff --git a/scene/resources/default_theme/submenu.png b/scene/resources/default_theme/submenu.png Binary files differindex 286300e25b..034912eb7a 100644 --- a/scene/resources/default_theme/submenu.png +++ b/scene/resources/default_theme/submenu.png diff --git a/scene/resources/default_theme/tab_behind.png b/scene/resources/default_theme/tab_behind.png Binary files differindex 953c76eabb..4997d9e441 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_container_bg.png b/scene/resources/default_theme/tab_container_bg.png Binary files differindex bfe117af39..5cfe85cfef 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 08f4faf829..f3cdd96fbf 100644 --- a/scene/resources/default_theme/tab_current.png +++ b/scene/resources/default_theme/tab_current.png diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h index a0f3dcd988..e9a6d3dad6 100644 --- a/scene/resources/default_theme/theme_data.h +++ b/scene/resources/default_theme/theme_data.h @@ -5,12 +5,12 @@ 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,0x98,0x0,0x74,0x0,0xf2,0x18,0x7e,0x84,0x12,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,0xdd,0x9,0x16,0x10,0x34,0x34,0x9c,0xae,0x6b,0x51,0x0,0x0,0x0,0x91,0x49,0x44,0x41,0x54,0x28,0xcf,0xb5,0x91,0xbd,0x9,0xc3,0x40,0xc,0x85,0xbf,0x5c,0x76,0xf1,0x95,0x1e,0x20,0x99,0xe7,0x46,0x50,0x77,0x95,0xba,0x1b,0x41,0xf3,0x24,0x7b,0x18,0x63,0xbc,0x80,0x21,0xe0,0xca,0x69,0x64,0x38,0x12,0xc7,0x89,0x8b,0x3c,0x10,0xe8,0xe7,0x7b,0xcd,0x13,0xfc,0x5d,0x2a,0x76,0x88,0x3d,0x79,0x73,0x1,0x6e,0x5f,0xf8,0x6b,0x2e,0xe9,0x1e,0x7c,0x58,0x80,0x69,0x7,0x9e,0x9c,0x61,0x35,0x74,0xc0,0x79,0x5d,0xbe,0x68,0xf1,0x5b,0x7,0x10,0x54,0x8c,0x5c,0xd2,0x8,0x44,0x60,0xde,0x30,0xcc,0x40,0xcc,0x25,0x8d,0x2a,0x46,0xc8,0x25,0xe1,0xa6,0x1,0x68,0x81,0xbe,0x82,0x7b,0xa0,0xcd,0x25,0xd,0xce,0xbc,0xa7,0xa5,0x62,0x8d,0x8a,0x3d,0xbc,0x9a,0xdd,0x24,0x2b,0x53,0x54,0xb1,0xf8,0x53,0xec,0x35,0x70,0xe4,0x47,0x1f,0xf5,0x4,0x90,0xda,0x3c,0x12,0x9e,0x52,0xc6,0x4e,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,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,0xde,0x9,0x1c,0xa,0x30,0xc,0x28,0x58,0xa2,0xa7,0x0,0x0,0x0,0x7c,0x49,0x44,0x41,0x54,0x28,0x91,0xa5,0xd1,0xcb,0xa,0x83,0x30,0x10,0x46,0xe1,0xaf,0x97,0x77,0xe9,0xb2,0x74,0xed,0xda,0xf7,0x5f,0x57,0x8,0x88,0x88,0x2f,0xe0,0xa2,0xb8,0x4a,0x37,0x51,0x52,0x49,0x2b,0xa1,0x3f,0xc,0x84,0x33,0x73,0x86,0x90,0x9c,0x42,0x8,0x6a,0x72,0xae,0x9a,0xfe,0x47,0x68,0x10,0xf,0xaa,0xc9,0x85,0x88,0xf9,0xc7,0xe2,0x39,0xcd,0x6c,0x42,0x8f,0xcb,0xa,0x77,0x89,0xa9,0xd7,0xe7,0xc2,0x84,0x1b,0x96,0x82,0xb0,0xa4,0xde,0x94,0xb,0x30,0xe2,0x8e,0x21,0x63,0x43,0x62,0xe3,0xa,0xf6,0xaf,0xd4,0xa1,0xc5,0x2b,0x55,0x9b,0xd8,0x96,0x6b,0xe1,0xa,0x1d,0x1e,0xd9,0xf9,0x23,0x25,0x1,0x9e,0x5f,0x78,0xfd,0xc7,0xbd,0x1,0x73,0x20,0x21,0xa9,0x4,0x80,0xe0,0x11,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,0x98,0x0,0x74,0x0,0xf2,0x18,0x7e,0x84,0x12,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,0xdd,0x9,0x16,0x10,0x35,0x5,0xd4,0x6b,0x5a,0x2a,0x0,0x0,0x0,0xa0,0x49,0x44,0x41,0x54,0x28,0xcf,0x95,0x92,0xbd,0xd,0xc2,0x40,0xc,0x46,0x1f,0x81,0x2,0xa,0x36,0xa0,0x86,0x16,0x6a,0x68,0x59,0xc5,0x23,0xa4,0x73,0x75,0x9d,0x47,0xc8,0x24,0x48,0xb4,0x2c,0x11,0x68,0x10,0x42,0x59,0x80,0x2,0x51,0x1d,0x4d,0x22,0x5,0x73,0x47,0xc4,0xd7,0x59,0xf2,0xf3,0xe7,0x3f,0x68,0x15,0xca,0x8a,0xbe,0x7c,0xdc,0x69,0xe4,0x92,0xb6,0x40,0x4,0xae,0x6a,0xd2,0x84,0xb2,0x42,0x4d,0x3e,0x80,0xc2,0x15,0x38,0x1,0x7,0xe0,0x12,0xca,0x6a,0xa1,0x26,0x5f,0x4e,0x45,0xc2,0x75,0xe,0xcc,0x5a,0x68,0xe9,0xa1,0x2,0xb2,0xad,0x4e,0x81,0xa3,0x87,0xfc,0xc,0x31,0x1,0x3f,0x81,0x8d,0x9a,0xd4,0xbf,0x1c,0xb2,0x1a,0x2,0x6e,0xc0,0x5a,0x4d,0xea,0xae,0xa5,0x49,0x26,0x31,0x2,0x2f,0x60,0xaf,0x26,0xe7,0xfe,0x7a,0x53,0xc0,0x3,0x18,0x3,0x2b,0x35,0xb9,0xfb,0x5b,0x78,0x60,0x37,0x74,0x38,0xfe,0x7d,0x8d,0x37,0xf2,0x54,0x41,0xdd,0x92,0x6e,0x8a,0x2e,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,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,0xde,0x9,0x1c,0xa,0x2e,0x1a,0x8,0xcd,0x28,0x29,0x0,0x0,0x0,0x7b,0x49,0x44,0x41,0x54,0x28,0x91,0x95,0xd1,0xb1,0xe,0x1,0x51,0x10,0x46,0xe1,0x6f,0x51,0x50,0x78,0x5,0x25,0xad,0x9e,0xd6,0x53,0x6f,0x4b,0xaf,0x45,0x6e,0x22,0x22,0x5e,0x40,0xa5,0x5a,0x8d,0x2b,0x32,0x76,0xb9,0x7b,0xba,0x99,0xc9,0x99,0x4c,0xfe,0xa9,0x52,0x4a,0xfa,0x30,0xa,0xf5,0xa,0xd,0xce,0xb8,0x95,0x8,0x5b,0xdc,0x31,0xc4,0x2,0xd7,0x28,0xc,0x5a,0x96,0x4c,0x31,0xc1,0x9,0xf3,0x12,0x1,0x2a,0x8c,0x51,0x47,0xa9,0x4b,0xc8,0xcc,0xb0,0x7f,0x9d,0x57,0x24,0x7c,0xf1,0x4f,0xb8,0x60,0x89,0x43,0x6e,0xc4,0x94,0x32,0xd,0x1e,0xd8,0xe0,0xf8,0x39,0x68,0x13,0x7e,0xc6,0x1a,0x85,0xb5,0x9e,0x8f,0xdb,0x75,0x9c,0xf8,0xe6,0x9,0x8,0x62,0x16,0x5f,0x9a,0xba,0xfd,0xff,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -25,27 +25,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,0x3e,0x0,0x34,0x0,0x44,0xb5,0x81,0x75,0x5d,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,0xdd,0x9,0x1b,0x15,0xd,0x2e,0x9b,0xe9,0x5,0xa7,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,0xec,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xd0,0xb1,0x6a,0xc2,0x50,0x0,0x85,0xe1,0xff,0x26,0x91,0x28,0x41,0x8a,0xb5,0x6,0xa3,0x90,0x21,0x6b,0x69,0xc1,0xa1,0x5d,0x3a,0xb9,0x38,0x76,0x28,0x94,0x2e,0x3e,0x96,0x8f,0xe0,0x22,0x85,0xe2,0xec,0xe2,0xe4,0x62,0x7,0xa1,0xd0,0xb5,0x43,0x21,0x55,0x4c,0x62,0xb4,0x41,0x6a,0x12,0xaa,0x2e,0xba,0xdf,0xe0,0xd2,0xa1,0xff,0xfe,0x9d,0xe1,0x8,0x0,0xdb,0x72,0x6e,0x81,0x16,0x70,0x8d,0x5c,0x6f,0xc0,0xe0,0x73,0xfa,0x31,0x16,0xb6,0xe5,0xdc,0x5b,0x95,0x7a,0xbb,0x71,0x79,0x43,0xad,0x52,0x97,0xd2,0x5f,0x9e,0xcb,0xe4,0xfd,0x95,0xa9,0xe7,0x76,0x85,0x6d,0x39,0x9d,0x87,0xd6,0x93,0xf9,0x13,0x6f,0x8,0xc2,0x85,0xd4,0x40,0xb9,0x74,0x4e,0x41,0xcf,0xf3,0x32,0xe8,0xcd,0x35,0xc0,0x5c,0x45,0x2b,0xa2,0xf5,0x1a,0xd9,0x82,0x70,0x41,0xd1,0x30,0x0,0x4c,0x5,0xc8,0x84,0x8f,0x1d,0x8d,0xc2,0x89,0xfd,0xf,0xfc,0x95,0x1,0x7f,0x19,0xf9,0x99,0xe1,0xc1,0xf8,0xea,0x59,0xb1,0x94,0x4b,0xd2,0xf8,0x4a,0xd3,0x54,0xa,0xba,0x21,0x85,0xc3,0x6f,0x8f,0x99,0xe7,0x92,0xa4,0x49,0x5f,0x0,0xdc,0x35,0x9a,0x8f,0xf3,0x60,0xd6,0x8c,0xd3,0xf8,0x42,0x66,0x40,0xcf,0xe9,0xbe,0x59,0xae,0xe,0x47,0x93,0xe1,0xb3,0x0,0xd8,0x6d,0x77,0x2a,0x90,0xcf,0xf0,0xc9,0x16,0xd8,0x8,0x45,0xfc,0xee,0x1,0x19,0x87,0x50,0x44,0x2,0xd,0x4,0xc3,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x13,0x3b,0x32,0x53,0xec,0x41,0x80,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,0xb5,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x93,0x3d,0xe,0x82,0x40,0x10,0x85,0xbf,0x95,0x1d,0x8b,0x85,0x84,0xe8,0x11,0xd8,0x4e,0x8f,0x60,0x8c,0x67,0x37,0x84,0x78,0x2,0xed,0xd6,0x23,0xd8,0x28,0x5b,0x38,0x31,0x58,0x8,0x96,0xb0,0x9,0x8d,0x85,0xd3,0xbd,0xcc,0xbc,0x9f,0x62,0x9e,0x1,0x2c,0xb0,0x4,0x4,0x30,0xa4,0x4d,0x7,0x28,0xf0,0x1c,0xc8,0x6b,0xa0,0x0,0xb2,0x44,0x81,0x17,0xf0,0x0,0x6e,0xb6,0x77,0x2e,0xf6,0xbb,0xc3,0xca,0x57,0x7e,0x23,0x22,0xa3,0x29,0x54,0xb5,0xb,0xd7,0x70,0xa9,0x9b,0x23,0xc0,0xdd,0xf6,0xb1,0x33,0x5f,0xf9,0x6d,0x8c,0x91,0x36,0xc6,0x51,0xeb,0xdc,0x39,0xe3,0x2b,0xbf,0xad,0x9b,0xe3,0x9,0x30,0x8b,0x61,0x21,0x22,0x93,0x64,0x80,0x36,0x46,0x44,0xe4,0x8b,0x17,0x23,0xb7,0x49,0xf3,0x17,0xf8,0x29,0x1,0x55,0x25,0x77,0x6e,0x92,0x90,0x3b,0x87,0xaa,0x7e,0xb1,0xe5,0x53,0x8c,0x57,0xb8,0x86,0xb3,0xaf,0xfc,0xa6,0x2c,0xcb,0xa4,0x57,0xe6,0xd3,0x87,0xce,0x0,0x8e,0x19,0x65,0x32,0xcc,0xac,0xf3,0x1b,0xb6,0xa2,0x3d,0xf4,0x28,0x24,0x4e,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,0x4e,0x0,0x41,0x0,0x56,0xed,0xd0,0x4e,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,0xdd,0x9,0x1b,0x15,0xb,0x2f,0xba,0xb4,0x92,0xb7,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,0x7b,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x92,0xbd,0x2f,0x44,0x41,0x14,0xc5,0x7f,0x77,0xbc,0xcd,0x5a,0x1f,0x11,0x11,0x62,0x49,0x56,0x96,0x52,0x45,0xa2,0x53,0x9,0x7a,0x1a,0xbd,0xce,0x1f,0x40,0x2b,0x3a,0xf1,0xf,0xe8,0xf4,0x1a,0x7a,0x12,0x95,0x4e,0x42,0xa5,0x44,0x6c,0xb2,0x88,0x8d,0x42,0x7c,0xbe,0x8f,0x99,0xab,0xd8,0xd9,0xf7,0x56,0x88,0x3c,0x37,0x99,0xc9,0xe4,0xdc,0x73,0xcf,0x9c,0x7b,0x67,0x44,0x55,0x19,0x1b,0x99,0x58,0x2,0xd6,0x80,0x5,0xf2,0xc5,0x31,0xb0,0x7b,0x7b,0x77,0x75,0x28,0x95,0xf2,0xf8,0x7a,0x79,0x70,0x74,0x67,0x6a,0x72,0x86,0x91,0xc1,0xd1,0x5c,0xd5,0x77,0x8d,0x3a,0x17,0x97,0x67,0xdc,0x37,0xea,0x1b,0x52,0x29,0x8f,0x5f,0x2f,0x2f,0xae,0x54,0x3f,0xc2,0x4f,0xde,0x3f,0xde,0x72,0x9,0x74,0x95,0xba,0x29,0x15,0x3b,0x39,0x38,0xda,0xbf,0x9,0x80,0xea,0xf3,0xcb,0x33,0x71,0x12,0x93,0x37,0xde,0xde,0x5f,0x89,0xa2,0x10,0xa0,0x6a,0x80,0x7f,0x15,0xb7,0xa2,0x55,0x13,0x0,0xa8,0x75,0x20,0x3e,0xa3,0xa0,0xfe,0x28,0x1e,0x53,0xf,0x48,0xba,0x91,0x92,0x2,0x0,0xab,0x16,0x54,0x9a,0xa0,0xb4,0x5d,0xa3,0xbf,0x5c,0xed,0x5a,0x1c,0xcd,0x4,0x12,0x67,0x1,0x83,0xc1,0x81,0x1a,0xcf,0xcb,0xce,0x88,0xc3,0x60,0x52,0x5,0xa7,0xc6,0x2b,0x79,0x1,0x67,0x6d,0xab,0xa4,0x99,0x48,0x2d,0xbb,0xd4,0x88,0xa3,0xad,0x4d,0xdc,0x77,0x7,0xd6,0x29,0xa2,0x9e,0x2c,0x20,0x2a,0x80,0x66,0xb3,0xf0,0xbb,0x8a,0x22,0x1e,0x54,0x3f,0xa0,0xa6,0x80,0xb5,0x18,0x1c,0x4e,0xf0,0xb6,0x5d,0x6a,0x38,0x73,0xd0,0x96,0xd3,0x8c,0xd1,0x6c,0xc1,0x25,0xde,0x2c,0xa0,0x69,0x23,0x3f,0x26,0x8e,0x6f,0xa3,0x8d,0x41,0x0,0xd4,0xa2,0x24,0xac,0x4,0xa6,0xf0,0x73,0xe2,0xbf,0xbd,0x82,0xc7,0x12,0x17,0x3,0xd4,0x3a,0xfa,0x7a,0xfb,0x3b,0xa3,0x38,0x9c,0xef,0x2a,0x75,0x63,0x8c,0x78,0xc6,0xdf,0x2b,0xb1,0x31,0xf,0x8d,0x3a,0x51,0x1c,0x6d,0x8b,0xaa,0x32,0x3b,0x3d,0xb7,0xf9,0xf8,0xf4,0xb0,0x1a,0xc6,0x61,0x25,0xcf,0x2f,0x2c,0x16,0x8a,0xb5,0xa1,0x81,0xe1,0xbd,0xd3,0xf3,0x93,0x2d,0x51,0x55,0x50,0xa,0x40,0xf,0xd0,0x91,0xf3,0x27,0x5b,0xe0,0x15,0x21,0xfe,0x2,0x54,0x16,0xb4,0xfe,0xee,0xb0,0x9,0x99,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x13,0x3b,0xf,0xb,0x84,0xd,0x91,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,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0xb1,0x4e,0xc3,0x40,0x10,0x84,0xe1,0xef,0xc2,0x4a,0x9c,0x90,0xb,0x6a,0x9f,0xe0,0x9,0x2,0xbc,0x58,0xc2,0xcb,0xc0,0x8b,0x85,0xa4,0xa6,0x41,0x4e,0x4d,0x41,0x71,0x91,0xe,0x99,0x2,0xd7,0x76,0xa4,0x34,0x14,0x6c,0xb9,0xda,0xf9,0x47,0x2b,0xcd,0x24,0xdc,0xe0,0x16,0x1d,0xae,0x90,0xcc,0xcf,0x88,0x6f,0x7c,0xe1,0x33,0x26,0xf1,0x23,0xee,0x90,0xcf,0x4,0x54,0x7c,0xe0,0x2d,0x26,0xe7,0xfb,0x87,0xf5,0xd3,0xba,0xf4,0x65,0x13,0x11,0xb3,0x80,0xd6,0xda,0x38,0x1c,0x87,0xd7,0xfd,0x61,0x97,0xf0,0x1e,0x8,0x5c,0x97,0xbe,0x6c,0x6b,0xad,0x6a,0xad,0xb3,0xf6,0x39,0xe7,0x54,0xfa,0xb2,0xdd,0x1f,0x76,0xcf,0x88,0xd5,0xb4,0x4f,0x11,0xb1,0x28,0x86,0x5a,0xab,0x88,0x60,0x7a,0x75,0x35,0x7f,0xbe,0x3c,0xff,0x80,0xbf,0x4,0x18,0x5b,0x6b,0x72,0xce,0x8b,0x82,0x9c,0xb3,0xd6,0x1a,0xbf,0x91,0x16,0x68,0x38,0xd,0xc7,0xe1,0xa5,0xf4,0x65,0xd3,0x75,0xdd,0x59,0x51,0xc6,0x9,0x2d,0xa1,0x77,0x41,0x99,0x92,0xb,0xeb,0xfc,0x3,0xd0,0xc5,0x44,0x36,0x1d,0x79,0x84,0xde,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,0x4e,0x0,0x41,0x0,0x56,0xed,0xd0,0x4e,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,0xdd,0x9,0x1b,0x15,0xb,0x19,0x75,0xe,0x7,0x2e,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,0x77,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x92,0x3d,0x4f,0x54,0x41,0x14,0x86,0x9f,0xb3,0x7b,0x5d,0x2f,0xa8,0xc4,0xaf,0x5,0x51,0x24,0xd9,0x82,0x46,0xb,0x12,0x1a,0xb,0x5a,0xc,0x95,0x5,0x7f,0xc1,0xce,0x1f,0x0,0xad,0xb1,0x33,0xfe,0x1,0x3b,0xff,0x82,0x85,0x95,0xb1,0xb6,0xb0,0x31,0xb1,0x80,0xc6,0x44,0x92,0x35,0x1a,0x40,0x4,0x34,0x7c,0x2c,0xf7,0xce,0xcc,0x4b,0x71,0x67,0x71,0x76,0x85,0xe4,0x72,0x92,0xb9,0x99,0xbc,0x73,0xde,0x8f,0x39,0x77,0x4c,0x12,0x77,0xc7,0xef,0x2f,0x1,0xcf,0x80,0xc7,0xd4,0xab,0xf,0xc0,0xeb,0x9f,0x5b,0xdf,0xdf,0xda,0x64,0x7b,0x6a,0xb9,0x7d,0x63,0xe2,0xd5,0xc3,0x99,0x59,0xee,0xdc,0xba,0x57,0x8b,0xbd,0xf1,0xfb,0x7,0xab,0x5f,0xbf,0xf0,0x6b,0x77,0x73,0xc5,0x26,0xdb,0x53,0xdf,0x16,0xe7,0x9f,0x74,0x7a,0x45,0x8f,0xa3,0xde,0x61,0x2d,0x81,0x91,0x7c,0x94,0xbc,0x95,0xf3,0xfe,0xe3,0xbb,0xf5,0xc,0xe8,0xfc,0x3d,0xf8,0x83,0x73,0x8e,0xba,0x75,0x78,0x74,0x40,0x51,0x1e,0x3,0x74,0x1a,0xc0,0x85,0xc8,0xfd,0xea,0x73,0x32,0x0,0x85,0x0,0x16,0x4f,0x4,0x8a,0x5b,0x8b,0x98,0x22,0x60,0xa7,0x1f,0x4e,0x9b,0x32,0x0,0x2f,0xf,0xb2,0xa,0xb4,0xc4,0x46,0x67,0x58,0x87,0x7e,0x8f,0x12,0x81,0x50,0xa1,0x86,0x2a,0x21,0x40,0xc9,0x1e,0x13,0x96,0x58,0x4b,0x36,0x28,0x10,0x82,0x1f,0xb4,0x4e,0x23,0xa7,0x41,0xd2,0x74,0x83,0x9,0x84,0x29,0x54,0xb0,0x81,0x45,0x7,0xd,0xf0,0xc,0x99,0xb0,0x8,0x2a,0xe,0xa8,0x4a,0xe0,0x3d,0x86,0xaa,0xc4,0x91,0x3c,0x3c,0xa,0x91,0x9c,0xe9,0x5f,0x47,0x25,0x20,0x3f,0xd4,0xc9,0x39,0x77,0x18,0xbe,0x46,0x25,0xd0,0x2d,0x5d,0x31,0xdd,0x6c,0x64,0xff,0x4f,0xfc,0xac,0xbf,0x10,0x31,0x1f,0x1c,0x40,0xb7,0x79,0xed,0xca,0x58,0x5e,0xba,0x62,0x21,0xbf,0x3c,0x82,0x35,0x2c,0x89,0x71,0xfe,0xf2,0xde,0xb1,0xbd,0xbb,0x49,0xe9,0xca,0x97,0x26,0x89,0xb9,0x7,0x8f,0x9e,0xef,0xec,0x6d,0x3f,0x2d,0x5c,0x31,0x5d,0xe7,0x15,0xb6,0xb2,0x56,0xf7,0xe6,0xf5,0xdb,0x6f,0x3e,0xaf,0x7d,0x7a,0x61,0x92,0x50,0xd0,0x25,0xe0,0x2a,0xd0,0xac,0xf9,0x92,0x3d,0xb0,0x6f,0xd,0x2b,0x4f,0x0,0xb1,0x79,0xab,0x16,0x83,0x7a,0xfa,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,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,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,0xde,0x9,0x14,0xe,0x27,0x37,0x5e,0x6d,0x4f,0x26,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,0xb5,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0x31,0x4e,0xc3,0x40,0x14,0x45,0xd1,0x33,0x61,0x24,0x10,0xa2,0x60,0x3a,0x32,0x23,0x58,0x41,0x80,0x8d,0x25,0x6c,0x6,0x36,0x16,0x92,0x9a,0x26,0x72,0x5a,0x53,0x50,0x38,0x52,0xd0,0x50,0x60,0x44,0x67,0x5b,0x4a,0x43,0xc1,0xab,0xdf,0xbd,0xbf,0x79,0x3f,0xe0,0x12,0xd7,0xb8,0xc2,0x19,0x82,0xe1,0x54,0x7c,0xe2,0x3,0xef,0xb1,0x87,0x1f,0x70,0x8b,0x8b,0x89,0x82,0xe,0x3b,0xbc,0xc6,0xfe,0xf2,0xdd,0xfd,0xe2,0x71,0x51,0x72,0x59,0xaa,0x23,0x82,0xa0,0x36,0xfb,0xe6,0x65,0xb3,0x5d,0x7,0xbc,0x45,0x44,0x9c,0x97,0x5c,0x56,0x5d,0xd7,0x69,0xdb,0x76,0x90,0x4f,0x29,0x85,0x92,0xcb,0x6a,0xb3,0x5d,0x3f,0x21,0xce,0x7e,0xbd,0x46,0x61,0xfa,0x4e,0xed,0x19,0xcc,0x6,0xdb,0x13,0xf2,0x2f,0xf8,0x4b,0x82,0x2a,0x90,0x52,0x1a,0x5,0x52,0x4a,0x3f,0x63,0xaf,0x7c,0xaf,0xf0,0x88,0x43,0xb3,0x6f,0x9e,0x4b,0x2e,0xcb,0xf9,0xcd,0x7c,0xd2,0x94,0x71,0xc0,0x31,0x20,0x3b,0xe1,0x99,0x82,0x13,0xdf,0xf9,0xb,0x7f,0x70,0x3b,0x69,0x4a,0x9d,0x12,0xc4,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,0x3e,0x0,0x34,0x0,0x44,0xb5,0x81,0x75,0x5d,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,0xdd,0x9,0x1b,0x15,0xd,0xa,0xa7,0xea,0xe1,0x76,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,0x53,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x93,0x4d,0x4a,0xc4,0x40,0x10,0x85,0xbf,0x72,0x12,0x93,0x19,0xfc,0x43,0x4,0x51,0x41,0x1c,0xf4,0xa,0xae,0xdd,0xe8,0x1,0xbc,0x82,0xbb,0x39,0x80,0x6e,0xc5,0x9d,0x78,0x1,0x77,0x5e,0xc1,0x3,0xcc,0xca,0xb5,0x57,0x10,0x84,0x1,0x11,0x51,0x5c,0x89,0x26,0x23,0xa9,0xe7,0xa2,0x3b,0x71,0x46,0x66,0x11,0x6b,0xd1,0x5d,0xa4,0xaa,0x5e,0xbf,0xf7,0xba,0x63,0x92,0xe8,0x6f,0xed,0x1d,0x3,0x3,0xe0,0x88,0x76,0x31,0x4,0xae,0x1f,0x9f,0x1e,0x6e,0x6d,0x67,0x73,0xf7,0x34,0x9b,0xcf,0xaf,0xba,0x59,0x8f,0x2c,0xcf,0x5a,0x4d,0x97,0x45,0xc9,0x57,0xf9,0x49,0x39,0x2e,0xce,0x12,0x60,0xb0,0xb4,0xb0,0x4c,0x37,0xef,0x61,0x66,0xad,0x0,0xb2,0x34,0x27,0x4d,0x53,0x5e,0xdf,0x8b,0x41,0x2,0xf4,0xbb,0x79,0xf,0x0,0x49,0xb4,0x8d,0x38,0xd3,0x4f,0x66,0xd,0xa,0x30,0x84,0x8,0x8c,0xea,0x7c,0x16,0xbf,0x4,0xa0,0x72,0xf,0x45,0xb,0x60,0x66,0x86,0x4,0x98,0x47,0x66,0x6,0x26,0x3c,0xd6,0x50,0x38,0xa4,0x1,0x70,0x55,0x1,0xc0,0x6b,0x90,0xc8,0x24,0xee,0x56,0xd3,0x2,0x54,0xf7,0x4c,0x2,0xc8,0xbd,0xf9,0xc0,0xa4,0x1a,0x9b,0x6,0x62,0x46,0x4f,0x60,0xe0,0x1e,0x7,0x4,0xb2,0xc6,0x3,0xec,0x17,0xa1,0xf1,0x20,0xf6,0x4c,0x7b,0xd0,0x48,0x30,0x64,0x8e,0x9,0xdc,0xc,0x53,0xf4,0x80,0x90,0xbb,0x81,0x85,0xe5,0x8f,0x4,0x39,0x8a,0xc6,0x58,0x64,0x80,0xbc,0xb9,0x5,0x88,0xb9,0xc0,0x9,0x7,0xd4,0xa5,0x20,0xa1,0xf2,0x46,0x73,0x9b,0x97,0xa0,0x3f,0x1e,0x8c,0x2a,0xaf,0xb6,0xeb,0xeb,0x69,0x1b,0xf1,0xed,0x8c,0x3a,0x2b,0x8b,0xab,0xb9,0x4c,0x87,0x9d,0xb9,0x84,0xff,0x44,0xf9,0x5d,0xe0,0x95,0x5f,0x9a,0x24,0xe,0xf6,0x8f,0xce,0x5f,0xde,0x9e,0x4f,0xca,0x71,0xb1,0xdd,0xea,0x5f,0x98,0xcf,0x47,0xeb,0x6b,0x1b,0x37,0x77,0xf7,0xc3,0xb,0x53,0x70,0x2f,0x5,0x16,0x80,0x4e,0x4b,0x2,0x15,0xf0,0x81,0xf1,0xfd,0x3,0xe7,0x4,0xa3,0xf4,0x4f,0x7,0x6b,0x83,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,0xc2,0x0,0xc2,0x0,0xcc,0x6a,0x6f,0xcc,0x71,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,0xde,0x9,0x12,0x0,0x7,0x31,0xd,0x7f,0xbc,0x67,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,0xc7,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0xc1,0x4a,0xc3,0x50,0x14,0x4,0xd0,0xf3,0x6a,0x1e,0x26,0x22,0xc1,0xb5,0x90,0xe4,0x7,0x44,0xd1,0xef,0x6a,0xfd,0x19,0xfd,0xae,0x96,0xfa,0x1,0x42,0xdb,0x7d,0x75,0x21,0xbc,0x96,0x57,0x89,0xb,0xb3,0x4e,0xb,0xdd,0xb8,0x70,0x96,0x97,0x3b,0x33,0xf7,0xc2,0x4c,0xc0,0x15,0x6e,0x70,0x8d,0xb,0x4,0xe3,0xe8,0xf1,0x8d,0x2f,0x7c,0x16,0x3,0xf9,0x1e,0xd,0xca,0x13,0x5,0x76,0xd8,0xe0,0xad,0x18,0x9c,0xdb,0xc7,0x87,0xa7,0xbb,0xb6,0xe9,0xa6,0x31,0xc6,0x51,0x81,0x9c,0x73,0xbf,0xde,0xac,0x5e,0x17,0xcb,0x79,0xc0,0x7b,0x81,0x2,0x97,0x6d,0xd3,0xcd,0x52,0x4a,0xb6,0x1f,0xdb,0x51,0xfb,0xaa,0xac,0x42,0xdb,0x74,0xb3,0xc5,0x72,0xfe,0x8c,0x62,0x32,0xcc,0x43,0x8c,0x51,0xda,0xa5,0x23,0xd7,0x93,0x76,0x49,0x8c,0x91,0xe1,0xd5,0xc9,0xf8,0xfa,0x71,0xfc,0xb,0xfc,0x25,0x81,0x3e,0xe7,0xac,0x2a,0xab,0xa3,0x84,0xaa,0xac,0xe4,0x9c,0xf9,0x8d,0xb4,0x2,0x7,0xec,0xd7,0x9b,0xd5,0x4b,0xdb,0x74,0xd3,0xba,0xae,0x4f,0x8a,0x32,0xf6,0x38,0x4,0xdc,0x3a,0xa3,0x4c,0xc1,0x99,0x75,0xfe,0x1,0x94,0xfc,0x44,0x1b,0xd0,0x15,0xb1,0x70,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,0x34,0x0,0x2e,0x0,0x39,0xc0,0x34,0x46,0xdb,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,0xdd,0x9,0x1b,0x12,0x7,0x16,0x4c,0x4b,0x43,0x36,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,0xd0,0x49,0x44,0x41,0x54,0x38,0xcb,0xa5,0x93,0xbf,0x6b,0x53,0x51,0x14,0xc7,0x3f,0xaf,0x7d,0xa4,0x31,0x49,0x93,0x26,0x69,0x5e,0x5e,0x4c,0x8a,0x15,0x41,0x84,0x80,0xb5,0xb5,0x2a,0x82,0xa2,0xa8,0x4b,0xc1,0x45,0xc1,0x5d,0xba,0x94,0xe,0x5,0x11,0x4,0x45,0x94,0x3a,0x29,0xe,0xae,0x1d,0x4,0xd1,0xc1,0x3f,0x40,0x7,0xd1,0x49,0x8c,0x14,0x5c,0x8a,0x38,0x38,0x44,0xc8,0x62,0x69,0x4d,0x43,0xa5,0xc5,0xa,0x49,0xee,0xbb,0x3f,0x1c,0x34,0x8f,0xbc,0xf4,0x5,0x44,0xf,0x1c,0xb8,0xf7,0x7e,0xcf,0xf9,0x9c,0xc3,0xe1,0x1e,0xcb,0x71,0x1c,0xfe,0xc7,0xec,0xde,0x87,0x46,0xa3,0xf1,0xd7,0xc9,0x8e,0xe3,0x4,0x1,0x83,0x26,0x72,0xb5,0x90,0x2b,0xcd,0x3,0xc7,0x7b,0x83,0xc7,0x8b,0x7,0xb8,0xbe,0x70,0xe3,0x47,0x3c,0x11,0xab,0x65,0xf3,0xe9,0x63,0x27,0xce,0x4e,0xaa,0x40,0x7,0x83,0x26,0x72,0xd7,0x1d,0xdd,0x7b,0xef,0xf0,0xc1,0x29,0x32,0xa9,0xdc,0xae,0x6a,0xe7,0x67,0xce,0xa0,0x94,0x4a,0xce,0x5d,0x9b,0x9d,0xf4,0x3c,0xef,0xe,0xb0,0x8,0x30,0xd0,0x15,0x33,0x7f,0xe4,0xd0,0x34,0xcd,0x76,0x93,0xda,0x6a,0x35,0xe0,0x7b,0xa2,0x31,0x32,0xce,0x8,0xf,0x1f,0x3d,0xe0,0xd4,0xd4,0x39,0x2c,0xcb,0x9a,0xb,0x9b,0x81,0xbb,0xbd,0xb3,0x85,0x52,0x6a,0x57,0xf5,0xa3,0x27,0x27,0xa8,0xbc,0xfa,0x80,0x3d,0x60,0xd3,0x6a,0x37,0x1,0xdc,0x8e,0xd6,0xdd,0x1,0x6d,0xd1,0x42,0x2a,0x8f,0x42,0xae,0xc8,0xcc,0x85,0x8b,0xa4,0x93,0x19,0x4a,0xf9,0x7d,0x94,0xf6,0x17,0x78,0x5d,0x79,0x49,0x3c,0x96,0xa0,0x2d,0x5a,0x1,0x78,0x0,0x60,0x8c,0xc1,0x18,0x43,0xed,0xeb,0x17,0x8a,0xe3,0x2e,0x97,0xaf,0x5c,0xa2,0x5c,0x2e,0xf3,0x79,0xa5,0x8a,0xa7,0x3c,0x5f,0xef,0xb,0x90,0x52,0x22,0xa5,0xc4,0xa0,0xb9,0xbd,0x78,0x93,0x74,0x36,0xc5,0xf4,0xe9,0x9,0x2a,0xef,0xdf,0x11,0x1b,0x8a,0xfb,0x7a,0x5f,0x80,0x36,0xa,0x6d,0x7e,0xcf,0x20,0x11,0x1f,0xe6,0xd9,0xe3,0xe7,0x88,0x96,0xe0,0x53,0x75,0xc5,0xd7,0x3a,0x7a,0xe8,0x47,0xd2,0x5a,0xfb,0xe7,0x68,0x24,0xca,0xf2,0xc7,0xb7,0xc,0x3d,0x8d,0x92,0x8c,0xa7,0x2,0x5a,0xbf,0xe,0xd6,0x84,0x14,0x68,0xad,0x7d,0x1f,0x4d,0xe7,0x79,0xb3,0xfc,0xc2,0x87,0x6b,0xad,0x11,0x52,0x0,0xac,0x85,0x1,0x96,0x36,0x36,0xd7,0x11,0x52,0xa0,0xb4,0x46,0xfd,0xa9,0x58,0xc8,0x8d,0xf9,0x77,0x21,0x5,0x1b,0x9b,0xeb,0x0,0x4b,0x9d,0x24,0xab,0x7b,0x99,0xdc,0x91,0xb1,0xfb,0x5b,0x3b,0xdf,0x67,0xa5,0x94,0xa1,0x1b,0x66,0xdb,0x76,0x23,0x3d,0x9c,0x7d,0x52,0xdf,0x5e,0xbd,0x15,0xa,0xa8,0x7f,0xab,0x47,0x80,0x44,0xef,0x70,0xbb,0xc7,0x4,0xfc,0x74,0xb,0xae,0x8,0x5,0xfc,0x8b,0xfd,0x2,0xb8,0xb3,0xcd,0xf1,0xa1,0x77,0xab,0xc4,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,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,0xde,0x9,0x12,0x0,0x36,0x36,0x55,0x46,0x2e,0x76,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,0xbd,0x49,0x44,0x41,0x54,0x38,0x8d,0x8d,0x93,0x4f,0x6b,0x13,0x51,0x14,0xc5,0x7f,0x93,0x99,0x84,0xa1,0xd2,0x8c,0x90,0x49,0xba,0xea,0xb6,0x1f,0xa0,0x8,0x76,0xa3,0xad,0x6d,0x53,0x4a,0x96,0x22,0x4a,0xb,0x2e,0x55,0xfc,0x6,0x36,0x74,0x2b,0x45,0xba,0xaf,0x71,0x61,0x71,0x95,0x42,0x37,0x52,0xdc,0x34,0x85,0x92,0xa2,0xb8,0xb7,0x4,0x4d,0xd5,0xb8,0xd2,0x85,0x98,0xcc,0x22,0x23,0x99,0xc9,0xcc,0xa4,0x6f,0xba,0xc8,0x4c,0x9b,0x92,0x97,0xd2,0xb,0x8f,0xb,0xef,0xbd,0x73,0xce,0xfd,0xab,0xd0,0x37,0x5,0x48,0x0,0x5a,0xe4,0xaf,0x32,0x1,0xf4,0x22,0x1f,0x2a,0x11,0x38,0x9,0x64,0x80,0x49,0x20,0x7d,0x5,0x89,0x0,0x6c,0xe0,0x37,0x60,0x1,0x41,0xac,0x98,0xd1,0x54,0x6d,0x6e,0x61,0x3e,0x5f,0x4e,0x26,0x93,0x52,0x64,0x36,0x97,0x65,0xad,0xf8,0x2,0xd7,0x75,0x99,0x99,0xb9,0xfd,0xd8,0x75,0xdd,0x43,0xe0,0x9f,0xa,0xa4,0x80,0xa9,0xa5,0xfc,0xf2,0xbe,0xe7,0x79,0xd8,0xb6,0x8d,0xe3,0x38,0x43,0xe7,0xd9,0xd3,0x27,0x8c,0xa7,0xc7,0x29,0x6d,0xbd,0x21,0x97,0x9d,0xb8,0xff,0xfd,0xc7,0xc9,0x2e,0xd0,0x4c,0x44,0x11,0x18,0x9a,0xa6,0xd1,0xed,0x76,0xa5,0xea,0x85,0x42,0x81,0xe9,0x5b,0xd3,0xec,0xbd,0xdf,0xa3,0x56,0xab,0x11,0x86,0x21,0x80,0x1,0x24,0xe2,0x5c,0x95,0x41,0x80,0xaa,0xaa,0x97,0x8,0x1e,0x3e,0x7a,0x40,0xe3,0xe7,0x2f,0xaa,0xd5,0x23,0x82,0x20,0x40,0x8,0x41,0x24,0xac,0x48,0x8b,0xb5,0xb2,0xba,0x42,0xa9,0xf4,0x1a,0xc3,0x30,0xb8,0x3b,0x77,0x87,0xb1,0x1b,0x63,0x54,0x2a,0x7,0x74,0x3a,0x9d,0xa1,0xbf,0x9a,0x8c,0x60,0xa7,0xbc,0xc3,0xe2,0xe2,0x3c,0x1b,0x1b,0x2f,0xe9,0x7a,0x1e,0xdf,0xbe,0xd6,0x39,0xfe,0x72,0x2c,0x4d,0x4f,0x1a,0x81,0x10,0x82,0x62,0x71,0x9d,0xf4,0x4d,0x3,0xd3,0xcc,0x50,0xd9,0x3f,0xc0,0xb2,0xac,0xeb,0x13,0x84,0x61,0x88,0xd5,0x6a,0xb1,0xf9,0x6a,0x13,0xdb,0xfe,0x4f,0xbd,0x5e,0x97,0x82,0x47,0x12,0x0,0x78,0x9e,0x8f,0xe3,0xb8,0x6c,0xbf,0xdd,0xa6,0xdd,0x6e,0x8f,0x24,0x88,0x6b,0x10,0xca,0x1e,0x1b,0x8d,0x6,0xa6,0x99,0x89,0xdb,0x76,0xa1,0xda,0x6f,0xde,0x79,0x2b,0x4,0xd0,0xee,0xf5,0x7a,0xe8,0xba,0x3e,0x94,0x4a,0xb3,0xd9,0xba,0x74,0xa7,0xeb,0x3a,0xbe,0xef,0x43,0x7f,0xa4,0x4f,0x15,0x40,0x5,0x26,0x52,0xa9,0x54,0xfe,0xde,0xec,0xc2,0xbb,0x51,0xa3,0x1c,0x5b,0x10,0x4,0x7c,0xfa,0xfc,0xf1,0xb9,0xe3,0x74,0x3e,0x0,0x7f,0x7,0x97,0xc9,0xe4,0xfa,0xcb,0xf4,0x7,0x68,0x1,0x7e,0x3c,0x81,0x83,0xeb,0xac,0xca,0xb1,0xe7,0x76,0xca,0xc0,0x3a,0x9f,0x1,0x62,0x9,0xad,0x4a,0x1e,0xbc,0xe7,0x4d,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -55,7 +55,7 @@ static const unsigned char close_png[]={ 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,0x73,0x0,0x29,0x0,0x7c,0x29,0x1e,0x61,0x18,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,0xdd,0x9,0x19,0x1,0x14,0x12,0x9e,0xa0,0x13,0x1f,0x0,0x0,0x1,0xbf,0x49,0x44,0x41,0x54,0x38,0xcb,0xcd,0x52,0x4d,0x8f,0xd2,0x50,0x14,0x3d,0x7d,0xaf,0xad,0xbc,0x9a,0xf6,0xd5,0x21,0x8,0x63,0x13,0x61,0xe1,0x8a,0xb5,0x23,0x6,0x8b,0x2b,0xd8,0xba,0x98,0x59,0xcd,0x2f,0x30,0xf3,0x3,0xf4,0x87,0x68,0x4c,0xf4,0x1f,0xe8,0x4f,0x30,0xb3,0xd3,0x8d,0xbb,0x59,0x98,0x8,0x21,0x10,0x9d,0x90,0x20,0x8f,0x41,0xd3,0x7,0x25,0xd8,0xf,0x5a,0x37,0x25,0x61,0x9a,0xea,0x56,0xcf,0xe6,0xdd,0x77,0xee,0xbd,0x27,0xb9,0xf7,0x5c,0xe0,0x5f,0x43,0x29,0xf8,0xab,0x59,0x1c,0xe5,0x72,0x5a,0xf6,0xc6,0x0,0xd2,0x1d,0x49,0x73,0xcd,0xb7,0xea,0xf5,0xfa,0x31,0x0,0x33,0x8,0x2,0x9,0x20,0xc8,0x78,0x9b,0x73,0x7e,0xbf,0x56,0xab,0xb9,0x52,0xca,0x9,0x80,0x5f,0x45,0x2,0x5a,0xa3,0xd1,0x38,0x69,0xb5,0x5a,0xaf,0x75,0x5d,0x3f,0x16,0x42,0x5c,0x24,0x49,0xf2,0x3,0x0,0xd3,0x34,0xed,0x51,0xaf,0xd7,0x7b,0x47,0x8,0x79,0x42,0x29,0x1d,0x49,0x29,0xbf,0x0,0x48,0xf2,0x2,0x34,0x8a,0xa2,0x1b,0x8a,0xa2,0x9c,0x10,0x42,0x2a,0x9c,0xf3,0xc7,0xcb,0xe5,0xf2,0x9b,0xaa,0xaa,0xf7,0x3a,0x9d,0xce,0xcb,0xf5,0x7a,0x5d,0x59,0xad,0x56,0xde,0x64,0x32,0x79,0x15,0xc7,0xf1,0xf7,0x9d,0x40,0x7e,0x7,0x9c,0x10,0xf2,0xb0,0xd9,0x6c,0xbe,0x31,0xc,0xa3,0xee,0xfb,0xbe,0x60,0x8c,0x29,0x9c,0xf3,0xdb,0xb3,0xd9,0xec,0xb2,0xdf,0xef,0x3f,0x4d,0xd3,0xf4,0x13,0x0,0x59,0x34,0x2,0x0,0x84,0x69,0x9a,0xfe,0xf4,0x3c,0xef,0xab,0x61,0x18,0x6d,0xd3,0x34,0xf,0x9,0x21,0x37,0x85,0x10,0xd3,0xf1,0x78,0xfc,0x3c,0x49,0x92,0x8f,0xfb,0xcd,0x0,0x40,0x8a,0xac,0x21,0x84,0xd0,0x52,0xa9,0x44,0x1,0x20,0x4d,0x53,0x10,0x42,0x88,0xaa,0xaa,0xb4,0xa8,0x36,0x4f,0xda,0xba,0xae,0xbb,0xae,0xeb,0xbe,0x60,0x8c,0xd5,0x16,0x8b,0xc5,0x34,0x8a,0xa2,0x95,0x65,0x59,0x87,0xa6,0x69,0x3e,0x90,0x52,0x7e,0xde,0x6e,0xb7,0xe2,0x8f,0x2e,0xd8,0xb6,0x7d,0xd4,0xed,0x76,0xdf,0xfa,0xbe,0x5f,0x99,0xcf,0xe7,0x97,0xa3,0xd1,0xe8,0x99,0xe7,0x79,0xef,0x2d,0xcb,0x3a,0x32,0xc,0xe3,0x6e,0xb9,0x5c,0xee,0x6d,0x36,0x9b,0xf,0x41,0x10,0x4c,0x77,0x4b,0xbc,0x36,0x82,0xe3,0x38,0xd,0x21,0x84,0x2a,0xa5,0xbc,0x1a,0xe,0x87,0x67,0x71,0x1c,0x9f,0x87,0x61,0x78,0x3e,0x18,0xc,0xce,0xc2,0x30,0xbc,0xa2,0x94,0xea,0x9c,0xf3,0x3b,0x7f,0xbb,0xca,0x3,0xc7,0x71,0x4e,0x19,0x63,0x6d,0x0,0x3c,0xe3,0x14,0x0,0x9c,0x31,0xd6,0xae,0x56,0xab,0xa7,0x0,0xe,0xa,0xdc,0xbb,0x26,0xa2,0xed,0x9d,0xf3,0x3e,0xd4,0x2c,0xa7,0xe0,0xbf,0xc2,0x6f,0x5f,0x7b,0xa6,0x3c,0x3f,0xa9,0x93,0x5b,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,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x14,0x11,0x4,0x37,0xf7,0xbe,0xdc,0xa,0x0,0x0,0x1,0x29,0x49,0x44,0x41,0x54,0x38,0x8d,0xa5,0xd3,0x4d,0x2b,0x45,0x61,0x10,0x7,0xf0,0xdf,0x71,0xaf,0x2c,0xa4,0x2e,0xd7,0xc2,0x95,0xb0,0xba,0x5b,0x1b,0x59,0x78,0xd9,0x5b,0x58,0xc8,0x57,0xb0,0xb2,0xb5,0xf0,0x41,0x2c,0x90,0x85,0xf2,0x1,0x94,0xb2,0xb2,0x56,0x4a,0x36,0x4a,0x36,0x36,0x3a,0x29,0x25,0xa5,0xbc,0x24,0x6f,0xb9,0x16,0xe6,0xea,0xe9,0x1c,0x56,0x77,0x6a,0x7a,0x3a,0xf3,0xfc,0xff,0xff,0x33,0x33,0xcf,0x4c,0xd6,0x6c,0x36,0x75,0x62,0x5d,0x1d,0xb1,0x51,0x2d,0x7c,0x67,0x49,0xec,0xa3,0x70,0xd7,0x1d,0xe7,0x27,0x5a,0xed,0x60,0xa5,0x5e,0xaf,0xa7,0xe4,0x7e,0x2c,0xa1,0xf,0xf,0x78,0x8b,0x78,0xd,0x93,0x98,0xc5,0x35,0x5e,0xdb,0xa4,0xb4,0x84,0x2a,0x16,0xb0,0x85,0xbd,0x0,0xf,0x84,0xcf,0x62,0x1f,0x1b,0x81,0xa9,0xfe,0x25,0x0,0x97,0x78,0xc6,0x20,0x36,0x31,0x1f,0xbe,0x1d,0xd9,0xbd,0x4,0xe6,0xd7,0xd2,0x12,0xbe,0xf0,0x84,0x53,0xcc,0x61,0x14,0x33,0x21,0x30,0x84,0x1c,0xcb,0x38,0xb,0xa1,0x92,0x0,0xbc,0xe3,0x1e,0x57,0x98,0x46,0x3,0xbd,0xb8,0xc1,0x1a,0x8e,0xa2,0x37,0xbf,0xf6,0xdf,0x33,0x56,0xc2,0x53,0x5c,0xe5,0x4f,0x60,0x21,0x83,0x9a,0x9f,0x86,0xad,0x47,0xda,0x37,0x51,0x56,0x3,0x53,0x38,0xc7,0xad,0x7f,0x5e,0xa1,0x1b,0x13,0xd8,0xd,0x42,0x8e,0xd5,0xf0,0x1c,0x23,0xd8,0x9,0x4c,0x7b,0x26,0x4a,0x83,0x34,0x1e,0xb1,0x3b,0xac,0xe0,0x24,0xe2,0x8f,0x21,0xdc,0x83,0xe1,0x94,0x90,0xa,0x7c,0xe2,0xc0,0x4f,0x23,0x73,0x5c,0x4,0x11,0x8e,0xb1,0x88,0x31,0x1c,0x6,0x16,0x64,0x85,0x65,0x6a,0x8f,0x72,0x2b,0x5,0x25,0x3f,0xcb,0x14,0x46,0xb9,0x58,0x42,0x4b,0x79,0x7,0xd2,0xc,0x4b,0xd6,0xf1,0x36,0x7e,0x3,0x2b,0x36,0x3d,0x6b,0xfa,0xe7,0xaf,0xa6,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -65,7 +65,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,0x73,0x0,0x29,0x0,0x7c,0x29,0x1e,0x61,0x18,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,0xdd,0x9,0x19,0x1,0x18,0x18,0xd2,0xc0,0xb5,0xd,0x0,0x0,0x0,0x8e,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x60,0x60,0x60,0xf8,0xf0,0xf6,0x33,0x33,0x3,0x1a,0x80,0x89,0x31,0x7e,0x78,0xfb,0x99,0xf9,0xdf,0xbf,0x7f,0x7a,0x28,0xb2,0xff,0x19,0x98,0x19,0x18,0x18,0x18,0x84,0xc4,0xf8,0xcf,0xb0,0xfc,0xfd,0xfb,0xcf,0xfe,0xcb,0xc7,0x6f,0x7b,0x19,0xb0,0x80,0x57,0xcf,0xde,0x75,0x33,0x31,0x31,0x32,0xde,0x87,0xf2,0xff,0xa0,0x2b,0x60,0x62,0x66,0xba,0xc4,0xc4,0xc8,0xc4,0xf8,0x94,0x4f,0x90,0x5b,0x8a,0x81,0x81,0x81,0x85,0x81,0x81,0xe1,0x2f,0x4c,0x92,0x9b,0x97,0x33,0x4e,0x44,0x5c,0x60,0x9,0x23,0xd4,0x41,0x6c,0xff,0xff,0xff,0x17,0xfe,0xf4,0xfe,0xeb,0x33,0xb8,0xa4,0x84,0xc0,0x62,0x74,0x57,0xb3,0xbd,0x7b,0xfd,0x49,0xee,0xcd,0x8b,0xf,0xa9,0xc,0xb8,0xc0,0x87,0xb7,0x9f,0x99,0xd0,0xc5,0x0,0x9d,0xb3,0x34,0xc7,0x2,0xa0,0x66,0xfc,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,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,0xde,0x9,0x14,0xd,0x1c,0x1b,0x52,0x41,0x72,0xa4,0x0,0x0,0x0,0x8b,0x49,0x44,0x41,0x54,0x18,0x95,0x6d,0x8e,0x31,0xe,0x2,0x21,0x10,0x45,0x3f,0xc3,0x66,0x1b,0x12,0x1a,0xa8,0x2c,0x3c,0x82,0x57,0xf0,0x26,0x76,0x9e,0xc6,0x63,0xec,0x5e,0xc3,0x1b,0x58,0x79,0x1,0x2b,0x2d,0x8,0x21,0x13,0x42,0x29,0x8c,0xcd,0x92,0x6c,0x88,0xd3,0xfd,0xff,0x7e,0x26,0xf,0x0,0xc0,0xcc,0x1a,0xc3,0xf5,0x4e,0x31,0xb3,0x6e,0xad,0x9d,0xf6,0x50,0x44,0x34,0x0,0x38,0xe7,0x1e,0x53,0xad,0xf5,0x5c,0x4a,0xb9,0x8f,0x1f,0x0,0x20,0x84,0x70,0x23,0xa5,0xd4,0x6b,0xcb,0xdf,0x71,0x40,0x44,0x4f,0x22,0xa2,0xb7,0xb5,0xf6,0x0,0x60,0x2,0x50,0x3b,0x34,0xc6,0x5c,0xbc,0xf7,0xab,0xda,0x84,0x66,0x11,0x71,0x39,0xe7,0xcf,0xe,0x2e,0xa3,0xf5,0x9c,0x52,0x3a,0xc6,0x18,0xaf,0xff,0x7c,0xfa,0x88,0xc6,0xee,0x7,0x3f,0xda,0x36,0xc7,0xfa,0xc,0x38,0x2c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -75,7 +75,7 @@ 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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x34,0x0,0x2e,0x0,0x39,0xc0,0x34,0x46,0xdb,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,0xdd,0x9,0x1b,0x12,0x3,0x2b,0x70,0x4f,0xca,0x23,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,0x41,0x49,0x44,0x41,0x54,0x38,0xcb,0xad,0x53,0x3b,0x6e,0xc2,0x50,0x10,0x9c,0xb5,0xcd,0x47,0xf,0x1b,0x9,0x21,0x71,0x1,0xce,0x90,0x1b,0xa4,0xd,0x17,0x40,0xe9,0x42,0x84,0x94,0x2a,0x5d,0x4,0x32,0x2d,0xe9,0xa8,0xd2,0xc4,0xe9,0x72,0x84,0xb4,0xa9,0x28,0x49,0xc5,0x1,0xb8,0x80,0x45,0x1a,0x40,0x18,0x23,0xfb,0x4d,0x9a,0x67,0xc9,0x21,0x18,0x85,0x28,0x23,0x8d,0xb6,0x9a,0x91,0x76,0x77,0x46,0x60,0x40,0x52,0x0,0x58,0x86,0xc8,0xcd,0xc,0x3a,0x37,0xb5,0x88,0x10,0x0,0x24,0x27,0x76,0x0,0x94,0xd,0x9d,0x3,0x33,0x6d,0x98,0x0,0xd8,0x1b,0x26,0x22,0x42,0xc9,0x89,0xab,0x93,0xbb,0xd7,0x60,0xb5,0x59,0x5d,0x26,0xc9,0xbe,0x89,0x23,0x70,0x9c,0xf2,0x67,0xdd,0xad,0xbf,0xdf,0x3f,0x5d,0xf7,0x0,0xec,0x0,0x24,0x20,0x69,0x93,0xac,0x8d,0x7b,0xc1,0xb4,0xdf,0x19,0x30,0x9c,0xf3,0xa8,0x18,0x0,0xc2,0x39,0x9b,0xfd,0xce,0x80,0xe3,0x5e,0x30,0x25,0x59,0x23,0x69,0x83,0x64,0x89,0x64,0xc3,0xef,0x4e,0xa2,0x34,0xa6,0x78,0x2d,0xb4,0x8b,0xc,0xbc,0x16,0xda,0x69,0x4c,0xf1,0xbb,0x93,0x88,0x64,0x83,0x64,0x29,0xdb,0xd3,0x21,0x59,0xb5,0x2b,0xc2,0x75,0x88,0x45,0x91,0xc1,0x3a,0xc4,0xc2,0xae,0x8,0x49,0x56,0xb3,0x3b,0x15,0x5d,0xfc,0x37,0xb0,0x70,0xe2,0x65,0x67,0x1b,0xfc,0x19,0xd6,0x41,0x48,0xce,0x81,0xfe,0x37,0x3,0x6d,0x52,0x15,0x9d,0xca,0x40,0x3e,0xb,0x22,0x12,0x99,0x54,0xea,0xcc,0x60,0xaf,0x94,0x3b,0x1b,0xf9,0xc3,0x65,0x1a,0xd3,0x2b,0x12,0xa7,0x31,0xbd,0x91,0x3f,0x5c,0x2a,0xe5,0xce,0x4c,0x9c,0x75,0x3e,0xca,0xea,0xf1,0xf6,0xe5,0x6d,0xbb,0xdd,0x5c,0x98,0x3f,0xff,0x80,0x88,0xec,0x94,0x72,0x3f,0x1e,0x9e,0x6f,0xae,0x0,0x6c,0x1,0x24,0x59,0x99,0x6c,0xb3,0xce,0x39,0x65,0xd2,0x22,0x92,0x4a,0x41,0x9d,0xad,0x13,0x87,0xfb,0x56,0xe7,0x2f,0x3a,0x44,0xa3,0xad,0xf6,0x7e,0xe,0x1,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,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,0xde,0x9,0xf,0x14,0x37,0x23,0x98,0xdc,0x7f,0x32,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,0x33,0x49,0x44,0x41,0x54,0x38,0x8d,0xad,0x53,0x3b,0x6e,0xc2,0x50,0x10,0x9c,0x85,0xe7,0x8,0x65,0xe5,0x2,0x71,0x4,0xce,0x90,0x1b,0xa4,0xcd,0x2d,0x9c,0x23,0xb8,0x40,0xb2,0x84,0xa9,0x38,0x44,0x8e,0x91,0x36,0x15,0x25,0x39,0x3,0xfd,0x2b,0x48,0x85,0x5e,0x8c,0x60,0xf3,0x26,0x5,0x7e,0x91,0x45,0x70,0x94,0xdf,0x48,0xa3,0xad,0x66,0xa4,0xdd,0x9d,0x11,0xb4,0x20,0x29,0x0,0x6,0x2d,0xd1,0x99,0x9,0xb1,0x33,0xa3,0x88,0x10,0x0,0xa4,0x23,0x76,0x0,0xae,0x5a,0xba,0x33,0xb3,0xd8,0xd2,0x0,0x1c,0x5a,0x9a,0x88,0x50,0x3a,0xe2,0xd1,0x72,0xb9,0x7c,0xd8,0xed,0x76,0xb7,0xc7,0xe3,0x71,0x82,0xb,0xc8,0xb2,0xec,0x25,0xcf,0xf3,0xa7,0xd9,0x6c,0x76,0xf,0x60,0xf,0xc0,0x40,0x72,0x48,0x52,0xeb,0xba,0x5e,0x15,0x45,0x41,0xef,0xfd,0x45,0x31,0x0,0x78,0xef,0x27,0x45,0x51,0xb0,0xae,0xeb,0x15,0x49,0x25,0x39,0x4,0xc9,0x8c,0xe4,0xb8,0x2c,0xcb,0xc6,0xcc,0x44,0x55,0xa7,0x7d,0x6,0xaa,0x3a,0x35,0x33,0x29,0xcb,0xb2,0x21,0x39,0x26,0x99,0xa5,0x3d,0x1d,0xc9,0x91,0x73,0x8e,0x21,0x84,0x4d,0x9f,0x41,0x8,0x61,0xe3,0x9c,0x23,0xc9,0x51,0xba,0x53,0xdf,0xc5,0xbf,0x83,0x41,0x57,0xf8,0x67,0x83,0x5f,0xa3,0xfb,0xe7,0x9f,0x22,0xfe,0x9b,0x41,0xc4,0x29,0x55,0xcd,0x57,0x19,0x48,0xf0,0xde,0x4f,0x44,0xa4,0xc1,0x29,0x95,0x31,0x19,0x1c,0x54,0x75,0x5d,0x55,0xd5,0xd6,0xcc,0xf2,0x3e,0xb1,0x99,0xe5,0x55,0x55,0x6d,0x55,0x75,0x8d,0x53,0x9c,0x63,0x37,0xca,0xd7,0x8b,0xc5,0xe2,0x31,0x84,0x70,0xd3,0xfe,0xf9,0x13,0x44,0x64,0xaf,0xaa,0xcf,0xf3,0xf9,0xfc,0xe,0xc0,0x2b,0x0,0x4b,0x65,0x1a,0xb6,0xeb,0xfc,0xa4,0x4c,0x51,0x44,0xde,0x24,0xb9,0x9f,0xd5,0xb9,0xef,0xbd,0xc9,0xe8,0xa3,0xce,0xef,0x1,0xe9,0xa5,0x7b,0x14,0xf7,0x5d,0x8c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -95,7 +95,7 @@ static const unsigned char font_normal_png[]={ 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,0x20,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0x73,0x7a,0x7a,0xf4,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x13,0x34,0x38,0xc1,0xd7,0xb6,0x4a,0x0,0x0,0x4,0x58,0x49,0x44,0x41,0x54,0x58,0xc3,0xbd,0x97,0xb1,0x72,0x1d,0x37,0xc,0x45,0xf,0xf6,0xad,0x9e,0xe4,0xc2,0x6d,0x92,0x36,0xfa,0x88,0x64,0x26,0x95,0x93,0x49,0x93,0xaf,0x76,0xe7,0x19,0xfb,0x23,0x5c,0xdb,0x6e,0x5d,0x59,0x4b,0xe2,0xa6,0x0,0x48,0x62,0x9f,0x14,0xa7,0x4a,0x76,0x46,0xab,0x5d,0x3e,0x92,0x0,0x81,0x7b,0x2f,0xb0,0xf6,0xd7,0x1f,0x7f,0x4a,0x12,0xee,0x1e,0x7f,0x12,0x92,0x0,0x40,0x2,0xbb,0x79,0x34,0x40,0xcc,0xf1,0xd3,0xa5,0x17,0xc6,0xc6,0x22,0x81,0x99,0xb1,0x6d,0xc6,0x66,0x1b,0xdb,0xb6,0x61,0x9b,0xb1,0xcb,0x45,0xf7,0x4e,0x6b,0x8d,0xd6,0x3a,0x5d,0x1d,0x77,0x27,0x7c,0xd0,0x79,0xf3,0x97,0x8c,0xbe,0xf4,0x9b,0xaa,0x71,0x40,0x86,0x19,0x6c,0x97,0x8d,0xcb,0x76,0x61,0xbf,0x5c,0xd8,0xf7,0x9d,0xcd,0x2e,0xec,0xbd,0x77,0x8e,0xde,0xf8,0xfa,0xf5,0x2b,0x9f,0xbe,0x7c,0xe6,0xff,0xb8,0x7e,0xfa,0xe1,0x47,0x5e,0xbf,0x7e,0xcd,0x9d,0x60,0xef,0x72,0x8e,0xd6,0xf8,0xf4,0xe5,0x33,0xbf,0xfd,0xf2,0x2b,0x8f,0x8f,0x8f,0xff,0xa9,0xf1,0x8f,0x1f,0x3f,0xf2,0xee,0xc3,0x7b,0x1e,0x5e,0x3d,0x70,0xd9,0x8c,0xdd,0x7b,0xa7,0xf7,0x6,0xc0,0xcf,0x8f,0x3f,0xf3,0xf6,0xed,0x5b,0xee,0xaf,0xd7,0xef,0x46,0x98,0xef,0xa4,0xdf,0xfe,0x21,0x23,0x6,0x7c,0x7b,0x7a,0xe2,0xcd,0xef,0x6f,0x78,0xf7,0xe1,0x3d,0xbd,0x77,0x7a,0x77,0x76,0x97,0xe3,0xde,0x1,0xf0,0xee,0x5c,0xef,0xee,0xf0,0x4,0xa1,0xfd,0xb,0xbe,0xce,0xde,0x9,0x1,0x4a,0x17,0x84,0x2d,0x8,0xe4,0xed,0xee,0xee,0xe,0xef,0xe,0x40,0xf7,0xc0,0xda,0xee,0xe,0x69,0x3f,0x6,0x7,0x3,0x10,0x92,0x4d,0x2f,0x6c,0x6c,0xaa,0x30,0x84,0x19,0x96,0xd6,0x83,0x21,0xc3,0xa8,0xc6,0x28,0x5e,0x9c,0x94,0x9,0x53,0xd8,0x0,0x90,0x83,0xb,0xf6,0xf0,0x56,0x33,0x2,0x41,0xc1,0x3c,0x96,0x7c,0xc6,0x21,0x67,0x84,0x53,0xe3,0x79,0x4,0x5c,0xc2,0xd3,0x57,0xa5,0x83,0x66,0x63,0x5d,0xc6,0xc2,0x85,0xc,0xbc,0xa7,0x3,0x69,0x67,0xa7,0xf0,0xbe,0xf7,0x8e,0x3c,0x23,0x60,0xb1,0x71,0xf2,0x91,0x69,0x37,0x9d,0x33,0x55,0x87,0xe2,0x74,0x9e,0xa7,0xc4,0xc,0xc9,0xc3,0xb7,0x5c,0x6b,0x8,0xdc,0xe8,0xe9,0xc0,0xb0,0xbb,0x3b,0x9a,0xe7,0xeb,0xde,0x11,0xa9,0x1,0x23,0xb7,0x99,0x6,0xf3,0x34,0x6e,0xb9,0x38,0xf3,0x6d,0x16,0xf3,0x57,0xe2,0xc,0xdc,0xb1,0x2,0x20,0x49,0x33,0x4d,0xdd,0x7d,0xc6,0x4f,0x88,0x3d,0x5e,0x98,0x11,0x70,0x1f,0xa7,0x67,0x49,0x60,0x79,0x5d,0x8e,0xc5,0x3c,0xf9,0xad,0xf0,0x45,0xd0,0x49,0xa3,0x6b,0x72,0xdc,0xfb,0x4c,0x41,0xc,0xec,0x2a,0x61,0xee,0xbd,0xcf,0xd0,0x4d,0xf0,0x94,0x3d,0xcc,0x86,0x43,0x76,0x92,0xe7,0xe9,0xd3,0x98,0x43,0x1a,0xb7,0x0,0x72,0x9d,0x33,0x53,0x30,0x22,0x50,0xe9,0xe5,0xdd,0x71,0x39,0x3,0xdf,0xc,0x5c,0x6b,0xa1,0x7a,0x5,0x67,0xcd,0x18,0x83,0x4a,0xcd,0x1f,0x2c,0x40,0xb1,0x4a,0x5,0xc8,0x3d,0x69,0x18,0xf3,0x14,0xb5,0x60,0x80,0xb0,0xf5,0x9e,0x11,0x17,0x15,0xeb,0x83,0xe3,0xb1,0x61,0x8c,0x2e,0x27,0xbd,0xa4,0x48,0x33,0x9,0xb1,0xc3,0x4d,0x7e,0xa4,0x95,0x82,0x8c,0xd2,0xae,0x49,0x9,0xe8,0xbd,0x2d,0xf4,0x9a,0x4d,0xc3,0xf6,0x82,0xfa,0xe8,0xe6,0x79,0xa2,0x1f,0x2f,0x79,0xd7,0x33,0x2d,0x6d,0xa9,0xba,0x52,0xb0,0x7c,0x47,0x3e,0xb7,0xeb,0x7d,0x9,0x91,0xb9,0x46,0x15,0xad,0xc9,0x40,0xaa,0x5a,0xc7,0x0,0x6,0x9e,0x69,0x9a,0x1c,0x37,0x9b,0xd8,0xb2,0xe1,0x98,0xac,0x44,0x20,0x34,0x67,0x57,0x71,0xb4,0xb5,0x96,0xd1,0x48,0x3d,0x73,0x8a,0x13,0x99,0xe7,0xb1,0xaf,0x59,0xee,0xbf,0xc2,0x2c,0x2f,0x98,0xcf,0x9b,0x19,0x79,0xa8,0x10,0xb6,0xa5,0x3,0xa4,0x10,0xd,0xc4,0x4e,0x16,0x14,0x8f,0x54,0xc2,0x37,0xc0,0x5f,0xe9,0xf9,0x42,0x91,0x50,0xa9,0xd,0xc3,0xa9,0x29,0x6c,0x40,0x6f,0xad,0x24,0xcf,0x93,0x86,0x39,0xb9,0xb5,0x50,0x42,0x95,0xda,0x16,0xda,0x5f,0x4a,0xcb,0xd,0x35,0x31,0x61,0xb2,0x53,0x7,0x34,0x22,0x91,0x72,0x70,0x2a,0x4f,0xad,0x15,0x29,0x9e,0x20,0xa4,0xb2,0x20,0x1d,0xb0,0x30,0xee,0xb5,0xec,0xd,0x8a,0xcd,0x32,0xa1,0x41,0x82,0x29,0x14,0xe6,0x2b,0x4d,0x13,0xc6,0xb2,0x94,0xf,0x9f,0xa5,0x5f,0x80,0x5c,0x11,0x81,0x95,0x82,0x86,0xcb,0x73,0x23,0xc7,0xb,0xfe,0xc5,0x59,0x5a,0xcf,0x2c,0xd3,0x39,0x3a,0xe3,0x79,0xe0,0xc9,0x7c,0x92,0xa2,0x95,0x62,0x24,0xc4,0xee,0x65,0xf3,0x0,0x61,0x24,0x4e,0xe7,0x5a,0xf6,0xbc,0x35,0xd1,0xb3,0xc6,0xaf,0x38,0x72,0x2,0x4b,0x46,0x23,0x80,0xdd,0x5a,0x2b,0x3a,0x48,0x54,0x43,0x7c,0x1,0xc4,0x5d,0x98,0x55,0x14,0x9c,0x99,0xbd,0x8,0x39,0xf5,0xf3,0xdc,0xbc,0xc,0x21,0xb3,0x97,0x23,0xd7,0x13,0x3,0x78,0xbc,0x47,0x39,0xce,0x69,0x47,0x6b,0xc1,0xcf,0x1b,0x10,0xa9,0x1e,0xca,0xce,0x32,0xf4,0x2c,0x45,0x5a,0xeb,0x46,0xfd,0x18,0x38,0x33,0xc1,0x51,0x31,0xc0,0x28,0x46,0x79,0x1d,0x29,0x44,0x27,0x2e,0xab,0x80,0xcd,0xc,0x73,0xc5,0xff,0xc5,0xce,0xe7,0x7d,0x60,0xa1,0xef,0xa9,0xbf,0x1,0xda,0x71,0x2c,0x91,0xf,0x16,0xac,0x8,0xf4,0xe3,0x0,0xf7,0x94,0xe1,0x1b,0xe3,0x83,0x92,0x36,0x30,0x62,0x8b,0x1,0x76,0x2b,0xba,0x2a,0x5,0x29,0x5b,0x8a,0x6c,0x99,0x8e,0xa9,0x84,0xe1,0xc4,0x1e,0xb9,0x60,0xea,0x80,0xcf,0x36,0xe6,0x4c,0x37,0x4b,0xb9,0x5d,0xd6,0xb4,0x1a,0x14,0xb7,0xa5,0x90,0x44,0xff,0x17,0xa7,0x5f,0xd5,0x74,0x48,0xb1,0x1f,0x6d,0x9,0x94,0x88,0x8e,0x68,0x84,0xee,0xa9,0x1d,0x93,0x5,0x21,0x28,0xb,0xf1,0xc2,0x66,0x63,0x39,0xde,0xe7,0x9,0xb,0xfa,0x23,0xd7,0xc9,0x51,0xb3,0x73,0x8f,0x69,0xe2,0xa9,0x1d,0x8c,0x12,0xe2,0x12,0x7b,0xad,0x74,0xab,0x1a,0x8e,0x1e,0xc0,0x17,0xb8,0x4c,0x21,0x32,0x83,0xb,0x56,0x2a,0xe5,0xed,0xfc,0xd1,0x94,0xf8,0x60,0x43,0xf4,0x88,0x96,0x54,0xaf,0xd7,0x1e,0xde,0x6c,0x91,0x82,0xa3,0x85,0x14,0x5b,0xa1,0x53,0x65,0xc0,0xc8,0xa7,0x8c,0xa,0x5e,0xcd,0xa2,0xb3,0xe8,0x36,0xfa,0xa0,0xf1,0x8d,0x99,0x81,0x9b,0xe,0x98,0xc5,0x8c,0x9d,0xcd,0xd8,0x2e,0xc6,0xf5,0xfe,0x9e,0xa7,0x6f,0xdf,0x6e,0x44,0xa6,0x56,0xb6,0xf5,0x7c,0xee,0x6,0x9e,0x2d,0x79,0xd6,0x31,0xd4,0xeb,0x68,0x8d,0xeb,0xc3,0x3d,0xdb,0x65,0x83,0xcd,0xd8,0x4d,0xf1,0xb9,0xfc,0xf0,0xea,0x15,0xd7,0xeb,0x15,0x97,0xcf,0x2e,0xb6,0x72,0xac,0x7c,0xa3,0x7c,0xff,0xfb,0xcc,0x5e,0x7e,0x37,0xb,0x35,0xdc,0xb6,0x8d,0xed,0x72,0x61,0x63,0xc3,0x30,0xfe,0x6,0x66,0xdc,0xf6,0xe9,0x76,0x8a,0xde,0xff,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,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,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,0xde,0x9,0x14,0xe,0x1c,0x26,0x8,0x6f,0x80,0xec,0x0,0x0,0x0,0xfb,0x49,0x44,0x41,0x54,0x58,0x85,0xed,0x97,0x31,0x6a,0x3,0x31,0x10,0x45,0x9f,0x66,0xa4,0xda,0x39,0x81,0xd,0x6e,0x16,0xdf,0xff,0x1a,0x29,0x72,0x2,0x83,0xdd,0x6,0x43,0x5c,0x6b,0x35,0x4a,0xe1,0x68,0x77,0x45,0x16,0xd2,0xac,0x36,0x8d,0x6,0x84,0x40,0xcd,0x7b,0xcc,0xa8,0x98,0xef,0x86,0xe1,0x92,0xf9,0xa9,0x9c,0x73,0x75,0x6f,0x5d,0xce,0xb9,0xea,0x6,0xf0,0x5,0xb8,0x76,0xb6,0x86,0xaf,0x9d,0x4a,0x20,0xa5,0x44,0x4a,0xa9,0xa9,0x80,0xaa,0xa2,0xaa,0xd3,0x9b,0x5f,0xc2,0xdf,0xe,0x7,0x4e,0xc7,0x33,0x66,0x23,0x66,0xb6,0xa9,0x80,0x88,0x20,0xe2,0xb9,0xdd,0xaf,0x7c,0x3d,0x9f,0xa8,0x2a,0x39,0xe7,0xb9,0x3,0x29,0x25,0x4e,0xc7,0x33,0x8f,0xc7,0x27,0x31,0xc6,0x4d,0xe1,0xa5,0x42,0x8,0x2f,0xc6,0xc7,0x3b,0x22,0xf2,0x12,0x5b,0xce,0xdc,0x6c,0x6c,0x6,0x7,0x88,0x31,0x62,0x36,0x56,0xff,0x4c,0x80,0x85,0xc0,0xb6,0x6d,0x5f,0x2b,0x33,0xab,0xfe,0x98,0x34,0x27,0xfe,0x51,0x5d,0xa0,0xb,0x74,0x81,0x2e,0xd0,0x5,0xba,0x40,0x17,0xe8,0x2,0x5d,0x40,0x60,0xde,0xd9,0xcb,0xa6,0xda,0x14,0x28,0x32,0xf1,0x0,0x64,0x99,0x52,0x44,0x3c,0x21,0x84,0x66,0xf0,0x10,0x2,0x22,0xfe,0x77,0x32,0x2a,0x89,0xe5,0x76,0xbf,0xee,0x12,0x4c,0x54,0x75,0xce,0x89,0xc3,0x70,0xc9,0x65,0x55,0xde,0x33,0x9a,0x95,0x91,0x4f,0x1d,0x0,0x50,0x55,0x44,0x64,0xb7,0x70,0xa,0xcc,0x2,0xce,0xb9,0x7f,0x89,0xe7,0xdf,0x5f,0xef,0xae,0xd,0xbd,0x13,0x36,0x6e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -114,58 +114,38 @@ static const unsigned char graph_port_png[]={ }; -static const unsigned char hscroll_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x30,0x1c,0x3c,0x99,0xa,0x1c,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,0x53,0x49,0x44,0x41,0x54,0x18,0xd3,0x7d,0x8f,0xc9,0xd,0x80,0x20,0x0,0xc0,0xca,0x21,0xe8,0x5f,0x12,0x89,0x84,0xfd,0x5c,0x48,0x26,0x34,0x3e,0x74,0x2,0xa2,0xe8,0x2,0x40,0xbf,0xed,0xa7,0xc2,0xbb,0xb0,0x3,0x1b,0x75,0x92,0xf0,0x2e,0x7c,0x46,0x9b,0xaa,0xcd,0x4f,0x46,0x3,0x8c,0x76,0xea,0x7,0x4a,0x29,0x5a,0x68,0x0,0x29,0x65,0x3f,0x30,0x83,0xed,0x6,0xe9,0xbc,0x8e,0xf6,0x45,0x79,0xb,0xc0,0x5c,0xb3,0xeb,0x12,0xef,0x1f,0xc6,0x6f,0x12,0x2,0xa,0xbd,0xc9,0x5d,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char hscroll_bg_focus_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x30,0x29,0x6a,0x2a,0xce,0x3f,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,0x53,0x49,0x44,0x41,0x54,0x18,0xd3,0x7d,0x8f,0xc9,0xd,0x80,0x20,0x0,0xc0,0xca,0x21,0xe8,0x5f,0x12,0x89,0x84,0xfd,0x5c,0x48,0x26,0x34,0x3e,0x74,0x2,0xa2,0xe8,0x2,0x40,0xbf,0xed,0xa7,0xc2,0xbb,0xb0,0x3,0x1b,0x75,0x92,0xf0,0x2e,0x7c,0x46,0x9b,0xaa,0xcd,0x4f,0x46,0x3,0x8c,0x76,0xea,0x7,0x4a,0x29,0x5a,0x68,0x0,0x29,0x65,0x3f,0x30,0x83,0xed,0x6,0xe9,0xbc,0x8e,0xf6,0x45,0x79,0xb,0xc0,0x5c,0xb3,0xeb,0x12,0xef,0x1f,0xc6,0x6f,0x12,0x2,0xa,0xbd,0xc9,0x5d,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char hscroll_grabber_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x2f,0x24,0xd9,0xc1,0xbc,0x1c,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,0x93,0x49,0x44,0x41,0x54,0x18,0xd3,0x85,0x8f,0xb1,0xa,0x82,0x50,0x18,0x46,0x8f,0xf9,0x73,0xad,0x74,0x68,0xa8,0x20,0x68,0x71,0x72,0x10,0x5a,0x5b,0x7a,0xfc,0x96,0xa6,0xa0,0x47,0x88,0xa0,0x92,0x1b,0x86,0x10,0x79,0xed,0xbf,0xda,0x10,0x4,0x2d,0x79,0x96,0x6f,0x3b,0x1f,0x27,0x58,0xcc,0x96,0x1d,0x7f,0x10,0x11,0x61,0x3a,0x99,0xb3,0x5e,0x6d,0x18,0x45,0x31,0x0,0x4f,0xf7,0x60,0x77,0xd8,0x62,0xef,0x5,0x2,0x90,0xa5,0x39,0xd7,0xdb,0x19,0xef,0x3d,0x0,0x61,0x18,0x92,0xa5,0x39,0x76,0x5f,0x20,0xaa,0x8a,0x6b,0x6a,0x5c,0x53,0x7f,0xb5,0xea,0x5f,0x9f,0x55,0x45,0x8c,0x18,0x4e,0x97,0x23,0x91,0x19,0xfe,0x7c,0xbb,0xa6,0xc0,0x88,0x61,0x10,0x8f,0x13,0xca,0xca,0xe2,0x5b,0xa5,0xa3,0xa5,0xa3,0xc5,0xb7,0x4a,0x59,0x59,0xe2,0x71,0x42,0xd0,0x57,0xd1,0xcb,0x1b,0xea,0x76,0x39,0x31,0xbf,0x4b,0x5d,0xcc,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char hscroll_grabber_hl_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x2e,0x38,0xd4,0xdb,0xd1,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,0x95,0x49,0x44,0x41,0x54,0x18,0xd3,0x85,0x8f,0x21,0xf,0x82,0x40,0x0,0x85,0x3f,0xe4,0x6e,0x27,0xca,0xa0,0x58,0x1c,0xc5,0x60,0x21,0x11,0x28,0x56,0x83,0xbf,0xda,0x60,0xb0,0xf8,0x23,0x9c,0xc5,0x9d,0xe0,0x70,0x34,0xc7,0xb1,0x3b,0xd0,0x80,0x73,0xb3,0xc8,0xf7,0xc2,0x4b,0xef,0xbd,0x3d,0x6f,0x95,0xac,0x5f,0xfc,0x41,0x48,0x29,0x59,0x2e,0x12,0xb6,0x9b,0x1d,0xc1,0x74,0xe,0x40,0x63,0x9e,0x1c,0x4e,0x7b,0x8a,0x87,0x46,0x0,0x64,0x69,0xce,0xed,0xae,0x71,0x5d,0x37,0xa4,0x7c,0x9f,0x2c,0xcd,0x29,0x8e,0x1a,0x61,0xad,0xc5,0x98,0x6,0xd3,0x36,0xdf,0x5a,0xe7,0x6,0xb7,0xd6,0x22,0x94,0x54,0x5c,0xae,0x67,0x2,0x35,0xfb,0xd9,0x6e,0x5a,0x8d,0x92,0x8a,0x49,0x14,0xc6,0x54,0x75,0x89,0xeb,0x2d,0xfd,0x47,0xae,0xb7,0x54,0x75,0x49,0x14,0xc6,0x78,0x63,0x2f,0x46,0x79,0x3,0x79,0x63,0x38,0x4a,0x58,0xf8,0x57,0x67,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - 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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0xda,0x3,0x15,0x11,0x5,0xc,0x36,0x33,0x39,0xbd,0x0,0x0,0x0,0x24,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x40,0x2,0xc5,0xb3,0x57,0x6d,0x66,0xc0,0x7,0xce,0xdd,0x79,0x88,0xa1,0x80,0x89,0x81,0x0,0x18,0x74,0xa,0x96,0xee,0x3f,0x89,0xa1,0x0,0x0,0x48,0xe6,0x7,0xe3,0x62,0xce,0xeb,0xba,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,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x16,0x2b,0x22,0x53,0xc7,0x74,0xf1,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,0xd1,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0x93,0x31,0x4a,0x4,0x41,0x14,0x44,0xdf,0xff,0xfd,0x77,0x86,0x41,0x57,0x10,0x19,0x99,0xc1,0x89,0xd,0x4d,0x4,0xf,0xe0,0x49,0xc4,0xcc,0x23,0x98,0xb8,0x18,0x9,0x5e,0xc0,0x4c,0x3c,0x8f,0x60,0x62,0x68,0xec,0xb2,0xa2,0x88,0x81,0x8b,0x83,0xd2,0xfd,0xdb,0xc8,0xd8,0xde,0x7c,0xb,0x2a,0xac,0x82,0x57,0x50,0xb0,0x96,0x0,0xf4,0xed,0x70,0x2,0x9c,0x1,0x47,0x85,0xb9,0x7b,0xe0,0x66,0xf1,0xf6,0x7c,0x27,0x7d,0x3b,0x5c,0x84,0x10,0x2e,0x45,0x4,0x45,0x8b,0xd2,0x8e,0x93,0x73,0x26,0xa5,0x34,0x93,0xbe,0x1d,0x16,0x4d,0xdd,0x74,0xaa,0x8a,0x4a,0x28,0x2b,0xc8,0x9,0x77,0x67,0xfc,0x1e,0x5f,0xc,0xe8,0xaa,0x49,0x8d,0xaa,0xae,0x40,0x6e,0x7f,0x5,0x9d,0x1,0x73,0x33,0xdb,0x13,0x74,0xa5,0xf1,0x54,0x1d,0x60,0x1e,0xa6,0x1b,0x5b,0xd,0x39,0x1f,0x57,0x93,0x1a,0x33,0x43,0x55,0xff,0xb5,0xbb,0xf3,0x35,0x2e,0x89,0x29,0x5e,0xb,0xc0,0xc1,0xfe,0xe1,0xd5,0xc7,0xe7,0xfb,0x69,0x8c,0x71,0xb7,0x8,0xc0,0xec,0x75,0x7b,0xba,0x73,0xfb,0xf8,0xf4,0x70,0x2e,0x0,0x9e,0xbc,0x2,0x36,0xa1,0x98,0xc3,0x81,0xa5,0x6,0xfd,0x59,0x3f,0x1,0x7e,0x1,0xa,0xde,0x42,0x4a,0x10,0xf4,0x3a,0xdc,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,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x14,0xf,0xc,0x8,0x9f,0xb9,0xf5,0x45,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,0x4d,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0x18,0x5,0x14,0x3,0x46,0x18,0x43,0x42,0x42,0x62,0x1a,0x3,0x3,0x43,0x26,0x91,0xfa,0xa6,0xbf,0x78,0xf1,0x22,0xb,0xdd,0x80,0xff,0xec,0xec,0x9c,0x44,0xe9,0xfe,0xf9,0xf3,0x3b,0xc3,0x8b,0x17,0x2f,0x18,0x19,0x18,0x18,0x18,0x98,0x88,0x76,0x2b,0xe,0x30,0xf0,0x6,0xb0,0x20,0xb1,0xa7,0xff,0xfc,0xf9,0x9d,0xe8,0x40,0xa4,0xd4,0xe2,0x51,0x80,0x4,0x0,0x2b,0x51,0x10,0x8d,0x9f,0x1f,0x30,0xd7,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,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x16,0x29,0x3a,0x72,0x9d,0x8e,0x25,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,0xd8,0x49,0x44,0x41,0x54,0x38,0xcb,0x7d,0x92,0xb1,0x6b,0x13,0x51,0x1c,0xc7,0x3f,0xaf,0x9,0x69,0xd2,0x33,0x26,0x2d,0x6d,0x48,0x8a,0x2d,0x94,0x82,0x48,0x43,0x3b,0x38,0x64,0xa,0x85,0x4e,0x3a,0x65,0x32,0xbb,0xab,0xb3,0x53,0x17,0x41,0x71,0xe8,0x1f,0x20,0x38,0x9,0xee,0x3a,0x39,0xb9,0xb8,0x9,0x82,0x83,0x83,0x42,0x87,0x82,0x83,0xb6,0x31,0xe1,0x25,0xc6,0xea,0xe5,0x72,0x97,0xcb,0xbd,0xfb,0x39,0x24,0x17,0x72,0xcd,0xe9,0x17,0x1e,0xf7,0xde,0xef,0xf7,0x7d,0x9f,0xdf,0xef,0xdd,0x7b,0x8a,0xa9,0x4a,0xa5,0x12,0x29,0xc9,0xdc,0x7,0x1e,0x0,0x35,0x92,0xf5,0x11,0x78,0x6e,0x94,0xff,0x52,0x6b,0xd,0x40,0x3a,0xca,0xa4,0x24,0xf3,0xa8,0xbc,0xbe,0xf9,0xf8,0xe0,0xe6,0x6d,0xd6,0xa,0x1b,0x89,0xbb,0xfb,0xbf,0xbb,0xb5,0xcf,0x67,0x9f,0x6a,0x9d,0xde,0x8f,0x6d,0xe0,0x9,0x80,0x8a,0x92,0x95,0x8d,0x1b,0xed,0xbb,0xf5,0x46,0xd9,0x71,0x1d,0xbc,0x91,0x9b,0x8,0xc8,0x2e,0xe7,0xb0,0x72,0x16,0x6f,0xdf,0xbf,0xe9,0xb4,0xbb,0x17,0x95,0x58,0x7,0x40,0xf9,0xd2,0xfe,0x85,0x31,0x86,0x7f,0xc9,0x1b,0xb9,0x8c,0x3,0x1f,0xa0,0x1c,0xc5,0xe6,0x1,0xf8,0x63,0x6f,0xae,0x29,0x99,0x7e,0x55,0xc,0x12,0x84,0x41,0x6c,0x1d,0x3,0x84,0x2,0x4a,0x42,0x44,0x81,0x42,0x81,0x80,0x10,0xa2,0x50,0x88,0x92,0x49,0x6c,0x6,0x4e,0x0,0x48,0x28,0x88,0x12,0x8,0x15,0x82,0xcc,0xec,0x82,0xa0,0x44,0x8,0x91,0x85,0x8e,0xe2,0x0,0x9,0xa7,0x5,0x26,0x46,0x99,0xab,0x96,0x34,0x4b,0x0,0xcc,0x27,0x25,0xf1,0x47,0x5e,0x8d,0xc6,0x0,0xbd,0x4b,0xcd,0xda,0xf5,0x75,0xfe,0xa7,0xfe,0x9f,0x5e,0x6c,0xbd,0x14,0x4d,0x1a,0x47,0xcd,0x43,0xdd,0xef,0x30,0x70,0x6d,0x26,0xa7,0x5d,0x1c,0x3,0xd7,0x46,0xf7,0x3b,0x34,0x8e,0x9a,0x87,0x5c,0xbd,0xa3,0xe9,0x53,0xbe,0x97,0x4e,0xa7,0x5f,0x6d,0x57,0x76,0xc8,0xa4,0x33,0xb1,0x4a,0x7e,0xe0,0x73,0xd1,0xfe,0x86,0x1f,0xf8,0x4d,0xa3,0xfc,0xd7,0xd1,0x53,0x4e,0x45,0x6,0xcb,0xb2,0x10,0x65,0x4e,0x9,0x95,0xed,0x8d,0xdc,0x3b,0x56,0x2e,0xcf,0x92,0x9a,0xf0,0x3,0x63,0x68,0xeb,0x73,0x46,0xe3,0xd1,0x43,0xa3,0xfc,0x17,0x0,0x8e,0xe3,0x2c,0x2,0xb4,0xd6,0xac,0x5c,0xcb,0x7e,0x30,0x81,0x64,0xfd,0xb1,0x57,0xcf,0x5b,0x5,0x0,0xda,0xdd,0x73,0x86,0xde,0xf0,0xc4,0x28,0xff,0xa9,0xd6,0x1a,0xcb,0xb2,0x16,0x1,0xd5,0x6a,0x95,0x5b,0x5b,0x7,0xac,0x14,0x96,0x29,0xac,0xe6,0xdf,0xf5,0xba,0xfd,0x6c,0x60,0x82,0xba,0xe3,0xe,0xb0,0x87,0xf6,0xc9,0xd6,0xce,0xe6,0x71,0xb1,0x58,0x9c,0x79,0x5a,0xad,0xd6,0xe2,0x2d,0xcc,0x6b,0x6f,0x77,0xff,0xf8,0xf4,0xeb,0x97,0xef,0x40,0x6a,0x6f,0x77,0xff,0x99,0x1d,0xfe,0x4c,0xf4,0xfd,0x5,0x7b,0xf0,0xd8,0x4,0x34,0x6f,0x3,0xa9,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,0x92,0x0,0x92,0x0,0x99,0x25,0xc1,0x88,0x71,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,0xde,0x9,0x12,0x0,0x2,0x21,0x6d,0xbf,0x58,0x46,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,0x4b,0x49,0x44,0x41,0x54,0x38,0x8d,0xa5,0x93,0x31,0x6b,0xc2,0x40,0x14,0xc7,0xff,0x77,0xbd,0x34,0x26,0x97,0x5a,0x2c,0x41,0xa,0x9d,0x6b,0x8,0x86,0x2e,0xe,0xfd,0x4,0x1d,0xb2,0xf8,0x29,0x3a,0x15,0xec,0x87,0xa9,0x63,0xfb,0x3d,0x9c,0x3b,0x76,0xd0,0x82,0x8,0xe1,0x14,0xdc,0x82,0x74,0xc8,0x50,0xc4,0xdc,0x5d,0x32,0xd8,0xe5,0x22,0xa1,0x60,0x95,0xfa,0x1f,0x1f,0xef,0xf7,0xe3,0xdd,0xe3,0x1d,0x70,0x62,0xc8,0xef,0x42,0x10,0x4,0x37,0x0,0x6,0x0,0x62,0x0,0x1d,0x53,0x9e,0x3,0x18,0x1,0x18,0xa,0x21,0xd2,0xbd,0x82,0x20,0x8,0x1e,0x1,0xbc,0x84,0x61,0xe4,0xb8,0x2e,0x87,0x65,0x9d,0x3,0x0,0xca,0xb2,0x40,0x9e,0x6f,0x90,0x24,0x33,0x9,0xe0,0x59,0x8,0xf1,0x56,0x31,0x67,0x75,0xb8,0xd5,0xba,0x7a,0xed,0x76,0xef,0x2c,0xcf,0x6b,0x82,0x31,0x6,0x42,0x8,0x8,0x21,0x60,0x8c,0xc1,0x71,0x5c,0xb4,0xdb,0xd7,0x96,0x52,0xb2,0xcf,0x39,0x4f,0xb3,0x2c,0x9b,0xec,0x26,0x30,0x63,0x2f,0x7a,0xbd,0x7b,0xc7,0xb6,0x1b,0x7f,0xbe,0x59,0x6b,0x85,0xf1,0xf8,0x43,0x2,0xb8,0x15,0x42,0xa4,0xd4,0xd4,0x7,0x61,0x18,0x1d,0x84,0x1,0xc0,0xb6,0x1b,0x8,0xc3,0xc8,0x31,0x7b,0x42,0x25,0x88,0x5d,0x97,0x1f,0x84,0xab,0x98,0xde,0xb8,0x2e,0xe8,0x54,0xb,0x3b,0x26,0xa6,0xb7,0x53,0x17,0xfc,0x3b,0x95,0x60,0x5e,0x96,0xc5,0xd1,0x90,0xe9,0x9d,0xd7,0x5,0xa3,0x3c,0xdf,0x1c,0x2d,0x30,0xbd,0xa3,0xba,0x60,0x98,0x24,0x33,0xa9,0xb5,0x3a,0x8,0x6b,0xad,0xaa,0x83,0x1a,0x2,0xe6,0x90,0xb2,0x2c,0x5b,0xfb,0xbe,0xff,0xa5,0x94,0xec,0x37,0x9b,0x97,0x60,0x8c,0xed,0x85,0x97,0xcb,0x5,0x94,0x92,0x4f,0x42,0x88,0xf7,0x9d,0xc0,0x48,0x26,0x9c,0xf3,0x74,0xb5,0x4a,0x1f,0x3c,0xef,0xc2,0xa2,0x94,0x82,0x52,0x8a,0xed,0x76,0x8b,0xa2,0xd0,0x58,0xaf,0xbf,0x31,0x9d,0x7e,0x4a,0x3,0xef,0x4e,0xf9,0xe4,0xcf,0x74,0x72,0x7e,0x0,0xd9,0x87,0x82,0x9b,0x21,0x12,0xa2,0x6e,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,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x16,0x2a,0x25,0xd4,0xb8,0xd0,0x13,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,0xd9,0x49,0x44,0x41,0x54,0x38,0xcb,0x7d,0x92,0x3d,0x6f,0x13,0x41,0x10,0x86,0x9f,0xbd,0xe0,0xf8,0xe3,0x8c,0x7c,0x12,0xc2,0x36,0x10,0x12,0xb9,0x40,0x41,0xb6,0x44,0x41,0xe1,0x2a,0x4a,0x43,0x81,0x52,0xd1,0x80,0xbb,0x48,0xb4,0xd4,0x54,0x69,0x90,0x40,0x14,0xf9,0x1,0x48,0x54,0x48,0xd4,0x40,0xc3,0xf,0x48,0x8d,0x94,0x82,0xd2,0x12,0x5,0x22,0x9,0x3e,0xd9,0x3e,0xc7,0x6,0xfc,0xb5,0xb9,0x3b,0xef,0x2e,0x85,0xed,0x70,0x8e,0x8f,0x8c,0xb4,0x5a,0xcd,0xcc,0xbb,0xcf,0x8c,0x76,0x46,0x30,0xb3,0x7c,0x3e,0xcf,0xaa,0x48,0x3f,0x5,0x9e,0x1,0x55,0xe2,0xed,0x10,0x78,0x1b,0x18,0xf9,0xde,0xf3,0x3c,0x0,0xae,0xcc,0x33,0xab,0x22,0xfd,0xe2,0x56,0x61,0xfd,0xe5,0xfd,0x72,0x95,0x6b,0xce,0xf5,0xd8,0xd7,0xdd,0xdf,0x9d,0xea,0xd7,0xfa,0x61,0xd5,0x6d,0x9f,0xac,0x3,0xaf,0x0,0xc4,0x3c,0xb9,0x56,0xd8,0x68,0x3e,0x7a,0x50,0x2b,0x8e,0xc6,0x43,0xa4,0x2f,0x63,0x1,0xe9,0x64,0x1a,0x3b,0x93,0xe5,0xf3,0xc1,0x87,0x56,0xa3,0x7d,0x7c,0x63,0xa1,0x3,0xa0,0xf8,0xab,0xdf,0x43,0x29,0xc5,0xff,0x4c,0xfa,0x92,0x60,0x12,0x0,0x14,0xe7,0xb1,0x28,0x80,0x20,0x94,0x91,0xa6,0xcc,0xec,0x16,0xb,0x90,0x89,0xe,0x17,0xfc,0x5,0x80,0x36,0x20,0xb4,0xc6,0x58,0x20,0x10,0xa0,0xc1,0xa0,0x11,0x8,0x8c,0x65,0xa6,0xb1,0x73,0x70,0x1c,0x40,0x19,0x10,0x6,0xd4,0x54,0x68,0x1,0x7a,0xd6,0x8d,0xa5,0xc,0xa,0xb3,0xd4,0xd1,0x2,0xc0,0x18,0x3d,0x2b,0x30,0x15,0xaa,0x48,0xb5,0x7f,0x3f,0x63,0x2e,0x3,0x44,0x93,0x26,0xf6,0x23,0x2f,0x46,0xad,0xa8,0xe3,0xf5,0x5a,0x68,0xad,0x2f,0x3d,0x9d,0x5e,0x2b,0x1e,0x50,0xdb,0xd9,0xdd,0x6e,0x9e,0xba,0xc,0xc6,0x7d,0xc,0x3a,0xf6,0xc,0xc6,0x7d,0x9a,0xa7,0x2e,0xb5,0x9d,0xdd,0x6d,0x2e,0xce,0x68,0xb6,0xca,0x8f,0x13,0x89,0xc4,0xc7,0xd2,0xda,0x1d,0x92,0x89,0xd5,0x85,0x4a,0x7e,0x18,0x70,0xdc,0xf8,0x8e,0x1f,0xfa,0x4f,0x2,0x23,0x3f,0xcd,0x57,0x79,0x65,0x2e,0xb0,0x6d,0x1b,0xc5,0xa4,0x2e,0xb4,0x35,0x90,0x67,0xe3,0x87,0xd9,0x4c,0xe,0xcb,0x9a,0xf2,0xc3,0x89,0xa2,0xd1,0x3c,0xe2,0x2c,0x90,0xcf,0x3,0x23,0xdf,0x1,0x8c,0x46,0xa3,0x65,0x80,0xe7,0x79,0xa4,0xec,0xe4,0x17,0xad,0x4c,0xca,0xf,0xe5,0x56,0xce,0x76,0xc0,0xc0,0xcf,0xf6,0x11,0x23,0x39,0xdc,0xf,0x8c,0x7c,0xed,0x79,0x1e,0xb6,0x6d,0x2f,0x3,0x2a,0x95,0xa,0x77,0x6f,0xdf,0x23,0x93,0x4b,0x72,0xd5,0xc9,0x1e,0x74,0x3b,0xbd,0xd4,0x44,0x85,0x5b,0x83,0x71,0x9f,0xfe,0xf0,0xcf,0xfe,0xcd,0x8d,0xc2,0x9e,0xe3,0x38,0xe7,0x1a,0xd7,0x75,0x97,0xc7,0x18,0xb5,0xcd,0x52,0x79,0xef,0xdb,0x8f,0xfa,0x9,0xb0,0xb2,0x59,0x2a,0xbf,0x19,0xe8,0x6e,0xac,0xee,0x2f,0x2,0xc9,0xee,0x56,0x52,0x6e,0x3f,0xf8,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,0x92,0x0,0x92,0x0,0x99,0x25,0xc1,0x88,0x71,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,0xde,0x9,0x12,0x0,0x2,0x1d,0x42,0xd0,0x24,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,0x1,0x30,0x49,0x44,0x41,0x54,0x38,0x8d,0xa5,0x93,0xb1,0x6a,0xc2,0x50,0x14,0x86,0xbf,0x63,0xe2,0x90,0xd0,0x2e,0xc1,0xad,0x8b,0xad,0x60,0x9e,0xc0,0xbe,0x41,0x7,0x33,0x38,0x7,0x1d,0xba,0x74,0x2a,0xe8,0xc3,0xe8,0x68,0xc1,0x49,0xc8,0xec,0x10,0x9f,0xa1,0x8,0xee,0x71,0xcf,0x52,0x4d,0x70,0x73,0x8a,0xb7,0x83,0x37,0x72,0x11,0xb4,0xa1,0xfe,0xe3,0xe5,0x7c,0xdf,0xbd,0x1c,0xfe,0xb,0x77,0x46,0x2e,0xf,0x7c,0xdf,0x7f,0x2,0x86,0x40,0x17,0x68,0xeb,0xe3,0xd,0xb0,0x4,0x26,0x49,0x92,0xa4,0x57,0x5,0xbe,0xef,0x7f,0x0,0xe3,0x30,0x1c,0x38,0x9e,0xd7,0x40,0xa4,0x6,0x80,0x52,0x47,0xf2,0x7c,0x47,0x14,0xcd,0xf,0xc0,0x28,0x49,0x92,0xaf,0x92,0xb1,0x4c,0xb8,0xd9,0x7c,0x9e,0xf6,0xfb,0xef,0x75,0xd7,0x7d,0xd4,0xb0,0x0,0x82,0x48,0xd,0xd7,0x7d,0xa0,0xd3,0x79,0xad,0x6f,0xb7,0x3f,0x3d,0xdb,0xb6,0xd2,0x2c,0xcb,0xd6,0x0,0x35,0xe3,0xd9,0xe3,0x20,0xe8,0x21,0x62,0x71,0x2d,0x22,0x16,0x41,0xd0,0x3,0x18,0x6b,0xe6,0x24,0x0,0x86,0x61,0x38,0x70,0x6e,0xc1,0xa6,0x24,0xc,0x7,0x8e,0xde,0xd3,0x59,0xd0,0xf5,0xbc,0xc6,0x9f,0x70,0x19,0x3d,0xdb,0x35,0x5,0xed,0x72,0x61,0x55,0xa2,0x67,0xdb,0xa6,0xe0,0xdf,0x29,0x5,0x1b,0xa5,0x8e,0x95,0x21,0x3d,0xbb,0x31,0x5,0xcb,0x3c,0xdf,0x55,0x16,0xe8,0xd9,0xa5,0x29,0x98,0x44,0xd1,0xfc,0xa0,0x54,0x51,0xe1,0xf6,0xa2,0x2c,0xd4,0xe4,0x2c,0xd0,0xf5,0x1c,0xc5,0xf1,0x82,0x5b,0x12,0xa5,0xa,0xe2,0x78,0x1,0xa7,0x36,0xa6,0x60,0x34,0x31,0xcb,0xb2,0xb5,0x6d,0x5b,0xe9,0x6a,0xf5,0xfd,0xd6,0x6a,0xbd,0xd4,0x1d,0xc7,0x41,0x44,0x34,0x78,0x24,0xcf,0xb7,0xcc,0x66,0xd3,0xc3,0x7e,0xbf,0xff,0x34,0xab,0x7c,0xf7,0x67,0xba,0x3b,0xbf,0x4d,0x78,0x75,0x34,0x1f,0x21,0x5d,0xa6,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; static const unsigned char hslider_tick_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x31,0xb6,0xde,0xf3,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x17,0x21,0x8,0xd7,0xb2,0xc8,0x2e,0x0,0x0,0x0,0x63,0x49,0x44,0x41,0x54,0x18,0xd3,0xbd,0x8f,0x21,0x12,0x40,0x50,0x14,0x0,0x97,0x4f,0xf2,0x83,0x22,0x71,0x9,0xc7,0x73,0x7,0x4d,0x76,0x3,0x7,0x70,0xb,0xa3,0xf8,0x81,0x88,0x31,0x23,0x31,0x9e,0x4a,0xa1,0x20,0xdb,0xb8,0x69,0x57,0x1,0xe4,0x59,0x96,0xb8,0x58,0x62,0xba,0x76,0xb2,0x1,0x44,0x84,0x9b,0x97,0x50,0x0,0xbe,0xa7,0x5,0x98,0x4d,0xd7,0xae,0xe,0xc0,0xa0,0x83,0x8a,0x5f,0x51,0x0,0x69,0x51,0xb2,0x1e,0x8a,0xbe,0xa9,0xaf,0xd2,0xfd,0x91,0x1e,0x2d,0x63,0x12,0x6e,0x73,0xfc,0xf9,0xf2,0x12,0x27,0xf1,0xc,0x27,0x85,0x5f,0x3c,0x99,0x1e,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,0x4,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x31,0xb6,0xde,0xf3,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,0xde,0x9,0xf,0x14,0x34,0x2e,0xcd,0x40,0x50,0x4c,0x0,0x0,0x0,0x65,0x49,0x44,0x41,0x54,0x18,0x95,0xbd,0x8f,0xb1,0x9,0x80,0x30,0x10,0x0,0x8f,0x44,0xb0,0x4a,0x61,0xa3,0x73,0x38,0x5e,0x76,0x70,0x80,0xc,0xe1,0x0,0x6e,0x21,0x36,0xc2,0xf7,0x16,0x62,0xa,0x41,0x78,0xc1,0x4a,0x1b,0xb5,0x50,0xb0,0xf4,0xca,0xab,0xee,0x2c,0x40,0x8,0xc1,0x1b,0x63,0x54,0x44,0x46,0x3,0xa0,0xaa,0x5c,0xbc,0x84,0x5,0x70,0xce,0x29,0x10,0x45,0x64,0x49,0x0,0xa6,0x34,0x6b,0xf9,0x15,0xb,0x50,0xd5,0xd,0xcb,0x6e,0x19,0xfa,0xee,0x2c,0x5d,0x1f,0xe9,0xc5,0x1a,0x7d,0xbe,0xcd,0xe5,0x2d,0x3e,0xe7,0xe,0xef,0x24,0x27,0x89,0xb7,0xa5,0x60,0x2,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; 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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x3b,0x0,0x36,0x0,0x38,0x27,0x56,0x13,0x54,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,0xc,0x1b,0x3,0x20,0x14,0x7b,0xdd,0x35,0x55,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,0x7d,0x49,0x44,0x41,0x54,0x18,0xd3,0x4d,0x8e,0x41,0xe,0x2,0x31,0xc,0x3,0xc7,0x65,0xbf,0x89,0xb8,0xf0,0x7f,0x9,0xa4,0xdd,0xa5,0xaa,0x53,0x73,0xa0,0x2,0x72,0x4b,0x3c,0xb1,0xad,0xfb,0xf5,0x96,0xc7,0xe3,0x89,0x4,0xae,0x89,0x3d,0xa8,0x2a,0x5c,0x45,0xef,0x2f,0xb6,0xfe,0xea,0xb8,0x4c,0x95,0xb1,0xeb,0x2b,0xce,0x32,0xe7,0xd9,0x69,0x21,0x90,0x40,0xc4,0xff,0x4,0x21,0x42,0x93,0x84,0x24,0x50,0x0,0x21,0x40,0x1f,0x82,0xd6,0x2e,0xb4,0xdf,0x8b,0x90,0x42,0xd6,0xaa,0x45,0x36,0x8,0x4,0x58,0xa2,0xbe,0x11,0xcb,0x5,0xb4,0xae,0x42,0x8b,0xfd,0x6f,0xb2,0xed,0xfb,0xce,0x71,0x9c,0x38,0xa6,0x66,0xc8,0xc,0xd3,0x66,0xd8,0x8c,0x31,0x78,0x3,0x89,0x16,0x57,0xf3,0xfa,0x1c,0xf,0x2c,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,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,0xde,0x9,0x14,0xd,0x13,0x21,0x13,0xd5,0xb7,0xd9,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,0x15,0x49,0x44,0x41,0x54,0x18,0x95,0x63,0x54,0x57,0xd7,0xfc,0xcf,0x80,0x7,0x30,0xe1,0x93,0x1c,0x3e,0xa,0x0,0x86,0x1b,0x1,0x86,0x56,0xb4,0xba,0xe,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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0xc,0x18,0xf,0x2b,0x9,0xe0,0x80,0xd6,0xcd,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,0x3c,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0x60,0x20,0x6,0x2c,0x9b,0x35,0xe7,0x7f,0x76,0x7c,0xd2,0x7f,0x6c,0x7c,0x26,0x6,0x6,0x6,0x86,0xa3,0x47,0x8f,0x31,0x5c,0xbe,0x79,0x1d,0xae,0x1,0x9d,0x4f,0x5,0x30,0xea,0x86,0x51,0x37,0x8c,0xba,0x61,0xd4,0xd,0xa3,0x6e,0x18,0x75,0xc3,0xa8,0x1b,0x6,0x8b,0x1b,0x0,0x64,0xbb,0x3b,0x50,0x70,0x4,0xe8,0x8b,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,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,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,0xde,0x9,0xf,0x14,0x34,0x17,0x92,0x45,0xd8,0x44,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,0x3c,0x49,0x44,0x41,0x54,0x48,0x89,0x63,0x60,0x20,0x6,0x2c,0x58,0xb0,0xe0,0x7f,0x6a,0x6a,0xea,0x7f,0x6c,0x7c,0x26,0x6,0x6,0x6,0x86,0xa3,0x47,0x8f,0x32,0x5c,0xbb,0x76,0xd,0xae,0x1,0x9d,0x4f,0x5,0x30,0xea,0x86,0x51,0x37,0x8c,0xba,0x61,0xd4,0xd,0xa3,0x6e,0x18,0x75,0xc3,0xa8,0x1b,0x6,0x8b,0x1b,0x0,0xa,0x48,0x3b,0xf0,0x67,0x1e,0xb,0x3a,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -175,27 +155,27 @@ static const unsigned char icon_close_png[]={ static const unsigned char icon_folder_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,0x73,0x0,0x29,0x0,0x7c,0x29,0x1e,0x61,0x18,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,0xdd,0x9,0x19,0x1,0x11,0x39,0x4f,0x6b,0x1e,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,0x1,0x3f,0x49,0x44,0x41,0x54,0x38,0xcb,0xc5,0x92,0x4d,0x4e,0x2,0x41,0x10,0x46,0x5f,0x55,0x37,0x3,0xe3,0x8,0x12,0x7e,0xa2,0x2e,0x3c,0xa,0x57,0xd0,0xa5,0x47,0xf0,0x22,0x7a,0xa,0xae,0xe0,0xce,0xa5,0x3b,0x4f,0xa0,0xb,0x3,0x6,0x43,0x42,0x58,0xa0,0x41,0x12,0xe2,0x68,0x10,0x86,0xe9,0x76,0x33,0x90,0xa8,0x18,0x99,0x95,0x95,0xf4,0xa2,0x53,0x5d,0xd5,0xef,0xfb,0xaa,0xe0,0xbf,0x43,0x6,0xbd,0x91,0xdf,0x94,0x8,0x4a,0x85,0xab,0xc3,0xa3,0xc6,0xf1,0x74,0x12,0x7,0x1b,0xd2,0xbe,0x5a,0x2f,0x27,0x0,0x32,0xec,0x3f,0x8f,0x5c,0xea,0xf6,0x1,0x1,0x3c,0xb0,0xcc,0x1e,0x15,0xc2,0xa8,0x78,0x21,0x22,0xb3,0xef,0xc5,0x22,0x32,0x6e,0x1c,0x54,0xdb,0x0,0xd6,0x18,0x1d,0xba,0xd4,0x35,0x1,0x3,0xc8,0xce,0x6e,0xe9,0xdc,0x7b,0x5f,0x0,0x10,0x91,0x79,0xd6,0xf8,0xb,0x35,0xf8,0x35,0x95,0x3c,0xd,0x5f,0x2e,0xe7,0x1f,0xc9,0x9,0xa0,0x51,0x39,0x3c,0x7b,0x8f,0x67,0xed,0xad,0xf5,0x8b,0xbc,0xaa,0x1a,0x1d,0x0,0xe,0x50,0x8f,0x8f,0x72,0xf8,0xe7,0xd4,0xe8,0x48,0x55,0xa5,0xf,0xd8,0x95,0xbe,0x3c,0xd,0xac,0xd5,0xae,0x8a,0xea,0x23,0xa0,0x59,0x79,0x5,0x58,0xe4,0x20,0xe8,0xaa,0x88,0xf4,0x0,0xac,0x35,0x9d,0x65,0x92,0xb6,0x32,0x33,0xb7,0x89,0x40,0x8d,0xde,0x69,0xad,0x59,0xe9,0x3,0xd8,0xc0,0xdc,0x24,0x8b,0xa4,0xb5,0xa6,0xd9,0x22,0x54,0xe5,0xd6,0xae,0x2f,0x46,0xef,0xbd,0x27,0xcc,0xb3,0x85,0xb5,0xe6,0x5e,0xc7,0x66,0xe3,0x78,0xcb,0xf3,0x73,0x66,0xb6,0x63,0xe5,0xbe,0x1a,0x19,0xe3,0xb1,0x40,0x9a,0x9d,0x3f,0xe6,0xcf,0xd2,0x58,0xf3,0x0,0x60,0xa7,0x93,0x58,0x5d,0xea,0x4e,0x45,0xa5,0x1b,0x46,0xc5,0xfa,0x2f,0xdb,0xf7,0x83,0xc0,0x18,0xbd,0x9e,0x4e,0x62,0x11,0x80,0xe9,0x24,0x36,0x19,0x52,0x21,0x87,0x8c,0xb4,0x5a,0x2f,0xa7,0x9f,0xdb,0x2b,0x65,0xf1,0xeb,0xc5,0x60,0x57,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,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,0xde,0x9,0xf,0x14,0x33,0x39,0x1,0xd2,0x43,0x4c,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,0x36,0x49,0x44,0x41,0x54,0x38,0x8d,0xc5,0x92,0xcd,0x4a,0xc3,0x40,0x14,0x85,0xbf,0x7b,0x67,0x12,0x48,0x3,0x12,0x62,0x45,0xfa,0x30,0x7d,0x5,0x5d,0xfa,0x8,0xbe,0x88,0x3e,0x45,0x5f,0xc1,0x9d,0x4b,0x77,0x3e,0x81,0x2e,0xa4,0x15,0xa5,0x10,0xb2,0xc8,0xa2,0x9b,0x41,0x2c,0x62,0x4c,0x66,0x5c,0x34,0x8a,0x3f,0x95,0x26,0x2b,0xf,0xc,0xcc,0x9d,0x3b,0xe7,0xce,0x39,0x87,0x81,0xff,0x86,0x14,0x45,0x11,0xb6,0x35,0xe2,0x38,0xbe,0x9c,0x4c,0x26,0x47,0xce,0xb9,0x78,0x4b,0x3b,0x64,0x59,0xf6,0x6,0x20,0x65,0x59,0x56,0xde,0xfb,0x43,0x40,0x80,0x0,0x34,0xdd,0xa5,0x28,0x49,0x92,0x73,0x11,0x79,0xf9,0x49,0x16,0x91,0xd5,0x78,0x3c,0x9e,0x1,0x58,0x63,0x4c,0xe9,0xbd,0x3f,0x0,0xc,0x20,0xa3,0xd1,0xe8,0x2c,0x84,0x10,0x1,0x88,0xc8,0x6b,0x37,0xf8,0x9b,0xea,0x10,0xc2,0xa7,0x2a,0xa9,0xaa,0xea,0xa2,0xae,0xeb,0x63,0x40,0xd3,0x34,0x3d,0x5d,0xaf,0xd7,0xb3,0xde,0xfe,0x45,0x9e,0xd4,0x18,0x53,0x0,0x1e,0xd0,0x10,0x42,0xda,0x97,0xc,0x78,0x55,0xad,0x54,0x44,0x96,0x80,0xfd,0xf0,0x37,0x64,0x80,0x31,0x66,0xa1,0xaa,0xfa,0x8,0x68,0x77,0xb8,0x7,0xd4,0x83,0x6,0x88,0xc8,0x3,0x80,0x31,0x66,0xde,0x34,0xcd,0x94,0x4d,0x98,0x7d,0x10,0xab,0xea,0xad,0xe6,0x79,0xbe,0x4,0x88,0xa2,0xe8,0xba,0xae,0xeb,0xe9,0x17,0x35,0x3b,0xa1,0xaa,0x37,0xf6,0x4b,0x71,0x7,0x24,0x7d,0xc9,0x0,0x79,0x9e,0xcf,0x2d,0x80,0x88,0x3c,0xf,0x79,0x99,0x4d,0xd8,0x1e,0xba,0xf4,0x55,0x75,0xd5,0xed,0xdb,0x6e,0xed,0x42,0x63,0xad,0xbd,0x7,0xb0,0xce,0x39,0x6d,0xdb,0xf6,0x44,0x55,0x17,0x49,0x92,0xec,0xff,0xf1,0xfb,0x7e,0x29,0x50,0xd5,0x2b,0xe7,0x9c,0x8,0x80,0x73,0xce,0x74,0x92,0xa2,0x1,0x36,0xda,0x2c,0xcb,0xda,0x77,0xe3,0x5,0x64,0xf1,0xba,0x53,0xe9,0x44,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; static const unsigned char icon_play_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,0x73,0x0,0x29,0x0,0x7c,0x29,0x1e,0x61,0x18,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,0xdd,0x9,0x19,0x3,0x35,0x2,0xc,0xc,0xc2,0xf6,0x0,0x0,0x0,0xb3,0x49,0x44,0x41,0x54,0x38,0xcb,0x63,0x60,0xa0,0x6,0xf8,0xf0,0xf6,0x33,0x33,0x12,0x9b,0x89,0x2c,0x43,0x1e,0xde,0x7e,0xfe,0xff,0xd9,0xc3,0xd7,0xa7,0xde,0xbd,0xfa,0x68,0x46,0x8a,0x41,0x28,0x8a,0x7e,0xff,0xfa,0x63,0xfc,0xf9,0xe3,0xb7,0x93,0xcf,0x1e,0xbe,0x3e,0xf9,0xef,0xef,0x3f,0x13,0x62,0xc,0x62,0xc2,0xc6,0xff,0xfd,0xeb,0x8f,0x9,0xb1,0x6,0x31,0xe1,0x33,0x98,0x18,0x83,0x98,0x88,0xf1,0x22,0x3e,0x83,0x18,0x91,0x3,0x91,0x88,0x30,0xfb,0xc7,0xc0,0xc0,0xc0,0xc4,0xca,0xc6,0x72,0x82,0x9d,0x93,0xad,0x8a,0x99,0x99,0xe9,0x10,0x13,0xa5,0x49,0x80,0x85,0x48,0x75,0x30,0x9b,0xcf,0x70,0x70,0xb2,0xe5,0xa,0x89,0xf1,0x9f,0xfa,0xf0,0xf6,0x33,0x93,0x80,0x30,0xef,0x3f,0x26,0x22,0x34,0x32,0xb0,0xb2,0xb1,0x9c,0xe1,0xe5,0xe7,0x32,0x97,0x92,0x17,0x35,0x67,0x62,0x66,0x3a,0xc3,0xc0,0xc0,0xc0,0x20,0x20,0xcc,0xfb,0xf,0x5f,0x20,0x12,0xd4,0x88,0x2b,0x16,0x88,0xd6,0x48,0xb5,0xa4,0x4c,0xbd,0xcc,0x44,0x2e,0x0,0x0,0x8c,0xcd,0x82,0xb2,0x7b,0xf9,0xcd,0xd,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,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,0xde,0x9,0xf,0x14,0x33,0x2d,0x1b,0x8,0x97,0x31,0x0,0x0,0x0,0xb4,0x49,0x44,0x41,0x54,0x38,0x8d,0xad,0x93,0xbd,0xe,0xc2,0x20,0x14,0x46,0x3f,0xb9,0x12,0x16,0x6,0x12,0x36,0x5e,0xc3,0xc6,0x3e,0x95,0x2f,0xe0,0xe3,0x39,0xd9,0xa6,0x2f,0xc1,0xc2,0x46,0xc2,0xc0,0xd6,0x94,0xba,0xb4,0x49,0xad,0x69,0x40,0xf4,0x4c,0x24,0x7c,0xf7,0x70,0xf9,0x3,0xfe,0x41,0x8,0x81,0x36,0x63,0x56,0x25,0xb1,0xd6,0xce,0xce,0xb9,0xde,0x7b,0x7f,0xfd,0x46,0xf4,0x16,0x1a,0xc7,0xf1,0x12,0x63,0xec,0x9c,0x73,0xdd,0x34,0x4d,0x4d,0x89,0x68,0x3f,0xc9,0x16,0x51,0x53,0x2a,0x3a,0xb2,0x17,0x8b,0x72,0xfb,0xcc,0x8a,0x4e,0x6b,0xd2,0x5a,0x3b,0x67,0x64,0x0,0x90,0x0,0x30,0xce,0xf9,0x53,0x8,0x71,0x27,0xa2,0x47,0xdd,0x95,0x6d,0x38,0x17,0xe6,0xd6,0x95,0x7,0x21,0xc4,0x4d,0x6b,0xdd,0x87,0x10,0x98,0x52,0x2a,0xe5,0x3a,0x48,0x0,0xc0,0x39,0x1f,0xa4,0x94,0xad,0x31,0xa6,0x25,0xa2,0x1,0x0,0x94,0x52,0x9,0x38,0x3e,0xc4,0x6c,0xe1,0xca,0x5e,0x50,0x5c,0xf8,0x41,0xed,0x53,0xc6,0x12,0xfe,0xfd,0x33,0xd5,0xf2,0x2,0x84,0xae,0x82,0xae,0xa4,0x17,0x47,0xe1,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; static const unsigned char icon_stop_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,0x73,0x0,0x29,0x0,0x7c,0x29,0x1e,0x61,0x18,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,0xdd,0x9,0x19,0x3,0x35,0x39,0xbd,0x7,0x2b,0xd2,0x0,0x0,0x0,0x34,0x49,0x44,0x41,0x54,0x38,0xcb,0x63,0x60,0xa0,0x6,0xf8,0xf0,0xf6,0x33,0x33,0xb9,0x7a,0x18,0x61,0x2,0xf,0x6f,0x3f,0xff,0x4f,0x8a,0x1,0xf2,0xaa,0x92,0x8c,0xc,0xc,0xc,0xc,0x4c,0x94,0xba,0x7e,0xd4,0x80,0x51,0x3,0x6,0x87,0x1,0x14,0x67,0x26,0x8a,0x1,0x0,0x2a,0xbb,0xf,0x64,0x53,0x81,0x8c,0xd3,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,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,0xde,0x9,0xf,0x14,0x33,0x24,0x62,0xd4,0x2f,0x95,0x0,0x0,0x0,0x39,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0xa0,0x6,0xf8,0xf0,0xe1,0x3,0x33,0xb9,0x7a,0x18,0x61,0x2,0xf,0x1f,0x3e,0xfc,0x4f,0x8a,0x1,0xf2,0xf2,0xf2,0x8c,0xc,0xc,0xc,0xc,0x4c,0xa4,0xda,0x8c,0xe,0x46,0xd,0x18,0x35,0x60,0x70,0x18,0xc0,0xc0,0xc0,0x40,0x59,0x66,0xa2,0x18,0x0,0x0,0x2a,0xc7,0xf,0x64,0xd5,0xe,0x11,0x85,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; 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,0x3e,0x0,0x34,0x0,0x44,0xb5,0x81,0x75,0x5d,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,0xdd,0x9,0x1b,0x15,0x15,0x14,0xdf,0xfe,0x44,0x4c,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,0xc0,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xd0,0x2d,0x8e,0x2,0x41,0x10,0x86,0xe1,0xb7,0x7f,0x66,0x4,0x20,0xd6,0xb0,0x21,0x60,0x20,0x70,0x1,0x34,0x8a,0x5b,0xac,0x26,0x5c,0x62,0x4f,0xc0,0x11,0x30,0x4,0xcd,0x29,0x40,0xa1,0xb9,0x0,0x9,0x6a,0x12,0x2,0x6,0x1,0x23,0x9a,0xa9,0x2e,0xcc,0x1e,0x60,0x3a,0xeb,0x8,0xaf,0xff,0x9e,0x4a,0xca,0xa8,0x2a,0x83,0xde,0x68,0x5,0xfc,0x0,0x4d,0xea,0xf5,0x0,0x36,0xa7,0xe2,0x38,0x37,0xfd,0xee,0x70,0xeb,0xbc,0x9f,0x7a,0xef,0x48,0xa9,0xaa,0x4,0xa9,0xaa,0x9d,0xe9,0x77,0x87,0xd2,0x68,0x36,0xac,0x73,0xe,0x6b,0xea,0x21,0x51,0x5,0x11,0xa1,0x7c,0x94,0xd1,0x3,0x36,0xf3,0x79,0xd2,0x75,0x6b,0x1c,0xd6,0x3b,0xa0,0xb4,0x96,0x7f,0xf6,0x1,0xde,0x6,0x28,0xa2,0x4a,0xf2,0xf0,0x6f,0x53,0x58,0x60,0x19,0x42,0x20,0x5,0x89,0x2a,0x84,0x10,0x0,0x96,0x46,0x55,0x99,0x8c,0xa7,0x8b,0xeb,0xed,0x3c,0x7b,0x86,0xe7,0x77,0x1d,0x20,0xcb,0xb3,0x4b,0xfb,0xab,0xb3,0xde,0x1f,0x76,0xbf,0x46,0x55,0x41,0xc9,0x81,0x56,0xc2,0x4f,0x22,0x70,0xc7,0x10,0x5e,0xb5,0x47,0x48,0x5e,0x61,0x62,0xef,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,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x27,0x0,0x27,0x0,0x27,0x12,0xaa,0xad,0x65,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,0xde,0x9,0x11,0x16,0x1e,0x2f,0x66,0x6e,0x58,0x30,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,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0x3b,0x4e,0x3,0x41,0x10,0x84,0xe1,0x6f,0x4c,0x4b,0x1e,0x56,0x1b,0x10,0xef,0x8,0x4e,0xc0,0xe3,0x6c,0x9c,0x84,0xb3,0x19,0x3b,0x26,0x41,0xeb,0x98,0x0,0xd9,0x63,0x69,0x90,0x9,0xd8,0x78,0x17,0xc9,0x9,0x1,0x15,0xb6,0xba,0xfe,0xee,0xa0,0x2a,0xa1,0xc3,0xd,0x7a,0x5c,0x21,0x99,0xd7,0x19,0x5f,0xf8,0xc4,0x47,0x4c,0xe6,0x47,0xdc,0x22,0xff,0x12,0x50,0xf1,0x8e,0xd7,0x98,0x2e,0xdf,0x3d,0xdc,0x3f,0xbd,0x94,0xa1,0x74,0x11,0x31,0xeb,0x6e,0xad,0x19,0xf7,0xe3,0x61,0xbb,0xdb,0x3c,0xe3,0x2d,0x10,0x58,0x97,0xa1,0x74,0xb5,0x56,0xb5,0xd6,0x59,0x40,0xce,0x59,0x19,0x4a,0xb7,0xdd,0x6d,0xd6,0x88,0xd5,0x34,0x4f,0x11,0xb1,0x68,0x86,0x5a,0xab,0xe9,0xcb,0x4,0xab,0xf9,0xf5,0x65,0xfd,0x3,0xfe,0x12,0xe0,0xdc,0x5a,0x93,0x73,0x5e,0x34,0xe4,0x9c,0xb5,0xd6,0xf8,0x89,0xb4,0x40,0xc3,0x69,0xdc,0x8f,0xc7,0x32,0x94,0xeb,0xbe,0xef,0x67,0x1,0x53,0x94,0x8f,0x38,0xa1,0x25,0xc,0x2e,0x28,0x53,0x72,0x61,0x9d,0xbf,0x1,0x2c,0xf1,0x42,0x3f,0xf1,0x88,0x6f,0x8a,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,0x3e,0x0,0x34,0x0,0x44,0xb5,0x81,0x75,0x5d,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,0xdd,0x9,0x1b,0x15,0x1d,0x13,0x89,0x43,0x5b,0xe7,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,0xc0,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xce,0x2f,0x4e,0x3,0x41,0x14,0xc7,0xf1,0xef,0x9b,0x37,0xb3,0x5b,0x1c,0x8,0x12,0xb2,0xaa,0xc9,0x1e,0xa0,0xad,0x45,0x91,0xe0,0xb8,0x8,0x47,0xe0,0xc,0x48,0x24,0xc7,0x58,0x83,0x23,0x41,0xd5,0xb6,0x17,0x68,0x52,0xd5,0x34,0x59,0x1,0xaa,0x90,0xd9,0xf9,0x83,0xe1,0x0,0x33,0xc1,0x11,0xbe,0xfe,0xf7,0x79,0x4f,0x0,0xe6,0x5d,0xff,0x0,0xdc,0x2,0x33,0xca,0xfa,0x2,0x5e,0xf7,0x87,0xdd,0xa3,0xcc,0xbb,0xfe,0x49,0xad,0x5d,0x59,0xab,0xd4,0x14,0x42,0x24,0x86,0xb0,0xb1,0xc0,0xa2,0x6d,0x1b,0x54,0x15,0x23,0x65,0x48,0xca,0x11,0xd5,0xc8,0x29,0x84,0x85,0x5,0x8c,0xb3,0x4d,0xd5,0x75,0x23,0x8a,0xb1,0xa,0x9c,0x8c,0xe1,0x97,0xfd,0x3,0x7f,0x6,0x18,0x53,0x8e,0xd5,0xc3,0x9f,0xcd,0x68,0x80,0xc1,0x7b,0x4f,0xd,0x92,0x72,0xc4,0x7b,0xf,0x30,0x8,0xc0,0xf5,0xf2,0xe6,0x7e,0xfc,0x38,0xde,0x4d,0x7e,0xba,0x28,0x1,0x5c,0xe3,0xde,0x2f,0xcf,0xaf,0x5e,0xd6,0xdb,0xb7,0x67,0x1,0xc8,0x29,0x3b,0xe0,0xc,0x90,0xc2,0x27,0x32,0xf0,0x29,0x46,0xa6,0x6f,0xea,0x47,0x3d,0x8f,0x5e,0xa4,0x39,0x87,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,0x27,0x0,0x27,0x0,0x27,0x12,0xaa,0xad,0x65,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,0xde,0x9,0x11,0x16,0x1e,0x28,0xf8,0xa,0xcd,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,0xb8,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x93,0x31,0xa,0xc2,0x50,0x10,0x44,0xdf,0x97,0x8d,0x59,0x24,0x8d,0xa4,0xcb,0x7,0x4f,0xa0,0x78,0x22,0x4f,0xe7,0x89,0x42,0x72,0x2,0x21,0x29,0x4,0x5b,0x59,0x75,0x31,0x16,0x89,0xa5,0x49,0xc0,0xc6,0xc2,0xe9,0x67,0x66,0x67,0x99,0x9,0x40,0xa,0xac,0x0,0x5,0x16,0xcc,0xc3,0x13,0x30,0xe0,0x2a,0x3,0x79,0x3,0xe4,0x40,0x2,0x84,0x9,0x72,0x7,0x3c,0x80,0xb,0x70,0x92,0xc1,0x39,0xdf,0x6d,0xf7,0x87,0x58,0xc4,0xa5,0x88,0x8c,0xa,0xb8,0x7b,0xd7,0xb4,0xcd,0xbd,0xaa,0xcb,0x23,0x70,0x96,0xe1,0xec,0x24,0x16,0x31,0x35,0x33,0xcc,0x6c,0xd4,0x5e,0x55,0x43,0x2c,0x62,0x5a,0xd5,0x65,0x2,0x2c,0xde,0x99,0x83,0x88,0x4c,0x92,0x1,0xcc,0xc,0x11,0x81,0x21,0xea,0xdc,0xa7,0x7d,0xc4,0x5f,0xe0,0x97,0x4,0x3a,0x77,0x47,0x55,0x27,0x9,0xaa,0x8a,0xbb,0x43,0x5f,0x69,0x84,0x7e,0x18,0x8f,0xa6,0x6d,0x6e,0xb1,0x88,0xcb,0x2c,0xcb,0x66,0x55,0x99,0x7e,0xf,0xcf,0x0,0xac,0xf9,0x62,0x4c,0x81,0x2f,0xe7,0xfc,0x2,0xba,0x32,0x42,0x24,0xee,0x6e,0x22,0x60,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -210,12 +190,12 @@ 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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x89,0x0,0x76,0x0,0x95,0x95,0xac,0x1a,0xb5,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,0xdd,0x9,0x1b,0x15,0x35,0x3,0xc9,0xa9,0xe5,0x29,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,0xc7,0x49,0x44,0x41,0x54,0x38,0xcb,0x63,0x60,0x18,0x9e,0xc0,0xdb,0x3e,0x88,0x81,0x87,0x41,0x58,0x82,0x9f,0x47,0xf0,0x3f,0xf,0x83,0xb0,0x84,0xb7,0x7d,0x10,0x69,0x6,0xf0,0x30,0x8,0xb3,0x28,0xcb,0xaa,0xfd,0x5f,0x39,0x6b,0xf3,0x7f,0x65,0x59,0xb5,0xff,0x3c,0xc,0xc2,0x2c,0x24,0x19,0xa0,0x2c,0xab,0xf6,0x7f,0xf9,0xf4,0xd,0xff,0x4f,0x1f,0xba,0xf8,0x7f,0xf9,0xf4,0xd,0xff,0x95,0x65,0xd5,0xfe,0xe3,0x52,0xcb,0x88,0x4d,0x70,0x5e,0xef,0x8a,0xff,0xba,0xa6,0x9a,0x70,0xfe,0xe5,0xd3,0xd7,0x19,0x92,0x8a,0x23,0x18,0x89,0x36,0x80,0x87,0x41,0x98,0x7,0x5d,0xec,0xb,0xc3,0xdb,0x2f,0x44,0x7b,0x41,0x52,0x54,0xe6,0x3f,0x3,0x3,0x3,0x1c,0x43,0xf9,0xc4,0x7b,0x61,0x4e,0xf7,0xb2,0xff,0xfa,0xe6,0xda,0x70,0xfe,0xc5,0x93,0x57,0x19,0x52,0x4a,0xa3,0x18,0x49,0x89,0x5,0x89,0xd,0x8b,0x76,0xfe,0x3f,0x7d,0xe8,0xe2,0xff,0xd,0x8b,0x76,0xfe,0xe7,0x61,0x10,0x96,0xc0,0xa5,0x96,0x9,0x9b,0xe0,0x4f,0x86,0x4f,0x3c,0xaa,0xac,0x6e,0x1c,0xcf,0x1f,0xbf,0x64,0x50,0x65,0x75,0xe3,0xf8,0xc9,0xf0,0x89,0x87,0x61,0x14,0xe0,0x4,0x0,0x59,0x95,0x3d,0x5c,0xd0,0x53,0x81,0xde,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,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,0xde,0x9,0x14,0xd,0x1c,0x2e,0x4,0xf2,0xb6,0x87,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,0x61,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0xbc,0x7b,0xf7,0x2e,0x3,0x25,0x80,0x89,0x22,0xdd,0xb4,0x36,0x40,0x82,0x81,0x81,0xe1,0x3f,0x94,0x26,0xd9,0x0,0x16,0x6,0x6,0x86,0xe7,0x50,0xf6,0x73,0x28,0x9f,0x24,0x3,0x7e,0x13,0xe0,0x13,0x34,0x80,0x68,0x80,0xcb,0x69,0xbc,0x94,0x1a,0xf0,0x19,0x8b,0x18,0x23,0x36,0x85,0x34,0x8b,0x46,0x49,0x2,0x7c,0x82,0x6,0xf0,0x30,0x30,0x30,0x70,0x40,0xd9,0x1c,0x50,0x3e,0x56,0x80,0x2b,0xc,0xee,0x40,0x69,0x46,0x34,0x3e,0xd1,0x2e,0x20,0x1a,0xc,0xbc,0x1,0x0,0x1e,0x2d,0xa,0xcc,0x68,0x85,0xc9,0x5b,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,0x89,0x0,0x76,0x0,0x95,0x95,0xac,0x1a,0xb5,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,0xdd,0x9,0x1b,0x15,0x32,0xf,0x8f,0x5e,0x3f,0xc5,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,0x9,0x49,0x44,0x41,0x54,0x48,0xc7,0xbd,0x95,0xb1,0x6b,0x14,0x51,0x10,0xc6,0x7f,0xb3,0x2e,0x77,0xb7,0xa7,0xa8,0x88,0x84,0x90,0x2a,0x90,0xbf,0x40,0xb4,0x53,0xc4,0xc2,0xc2,0x26,0x29,0x52,0x58,0xa,0x36,0x16,0xfe,0x49,0x96,0x76,0x76,0x12,0x1b,0x2b,0x2b,0xb,0x11,0x82,0x8d,0x60,0x23,0x28,0x21,0xe6,0xc8,0x9d,0x60,0x23,0x49,0xf6,0xf6,0xbd,0x19,0x8b,0x7d,0xbb,0xf7,0xf6,0x6e,0xf,0xf6,0x2e,0xe0,0xc0,0xb2,0x8f,0xb7,0xf3,0x66,0xbe,0xf9,0xe6,0x9b,0xb7,0x2,0xb0,0xbd,0xb5,0xf3,0x0,0xd8,0x5,0xee,0xd2,0xc1,0xf2,0x22,0xe7,0x92,0x76,0x8,0xbc,0x1b,0x4d,0x8e,0x3f,0xca,0xf6,0xd6,0xce,0xd3,0x7e,0x6f,0xf0,0x22,0xeb,0xf,0xe9,0xf,0xfa,0x9d,0x4e,0x1f,0x9d,0xfc,0xe4,0xf9,0xfe,0xcb,0xb5,0xb3,0x8f,0x26,0xbf,0x38,0xfc,0xfa,0x89,0xc9,0x9f,0xd3,0x57,0x29,0xb0,0x77,0xfd,0xda,0xd,0xb2,0xc1,0x10,0x11,0xe9,0x1c,0x44,0xbd,0xe7,0xc7,0xf1,0xf7,0xb5,0x0,0x64,0xd9,0x55,0xee,0xdf,0x79,0xc4,0xdb,0xf,0x6f,0xf6,0x52,0x60,0x33,0x1b,0xc,0x1,0x30,0xb3,0xce,0x41,0xa,0x5f,0xac,0xe4,0x1f,0xdb,0xd9,0xd9,0x5f,0xf2,0x69,0xe,0xb0,0x99,0xb6,0x25,0x36,0x40,0x30,0x8c,0x92,0x91,0x6a,0x1d,0xf3,0xe3,0xbc,0xbb,0x94,0x8,0xbc,0x2b,0x0,0x48,0x1,0xbc,0x6a,0x19,0x5c,0x4a,0x30,0x22,0x82,0x19,0x20,0x1a,0x98,0x11,0x10,0x43,0x23,0xa0,0xae,0x70,0x78,0x2d,0xbf,0x27,0x32,0x43,0xae,0x61,0x59,0xed,0x69,0x54,0x5b,0x12,0x72,0xd4,0x55,0x56,0x0,0xd4,0x7c,0xb9,0xaf,0x15,0x88,0xe0,0x13,0xde,0x12,0x1d,0xa8,0x2b,0x50,0x87,0x9a,0x5f,0x48,0x52,0x6b,0xa4,0x6d,0xf,0xc0,0x57,0x48,0x6c,0x6,0xc0,0x54,0x67,0xf1,0xe3,0x83,0xd2,0x4,0x12,0x9b,0x73,0xe,0xf5,0xda,0xe6,0x4e,0x9b,0x32,0xe2,0xf6,0x5,0xdc,0x11,0x3,0x81,0x4a,0xc4,0xc0,0xa4,0xd6,0x0,0x32,0x43,0xb0,0xa8,0x81,0x2,0xe7,0xb5,0x99,0x38,0xa1,0xee,0x41,0x2b,0x98,0x64,0x81,0x8f,0xa0,0x81,0xba,0x5,0x82,0x89,0x22,0x6,0x2a,0x82,0x58,0xd0,0x0,0xe5,0x5a,0xa5,0xc9,0x80,0xa9,0x7,0xc,0x1f,0xb1,0x97,0x98,0x34,0xf6,0x92,0x88,0x3,0x35,0x23,0x9,0x88,0x34,0x14,0x17,0xa6,0x40,0x31,0xb,0xea,0xf,0xc,0x60,0x5a,0x4f,0x1,0x84,0xb5,0x35,0xa7,0xc0,0x99,0x6b,0x52,0x6b,0x42,0x7c,0xaa,0x6a,0x79,0xcd,0x44,0xf5,0x5d,0xa9,0xbd,0xca,0x16,0xf8,0x19,0x6f,0x5d,0x27,0xdb,0x7b,0x87,0x7a,0xbf,0x9c,0xef,0x65,0x82,0x98,0xbb,0xeb,0x52,0x60,0xec,0xd5,0x6f,0x88,0xac,0x90,0x1d,0x70,0xae,0xc0,0xd7,0xe3,0xd2,0xe2,0xb0,0x2c,0x96,0x55,0x5,0x14,0x0,0xe3,0x4,0x38,0xc8,0x8b,0xb,0xcc,0xac,0xf3,0x53,0xb6,0xc0,0x7,0x82,0x57,0x7f,0x9c,0x9b,0x72,0x32,0x3e,0x2,0x38,0x10,0x80,0x87,0xf7,0x1e,0x3f,0x3b,0xfd,0x3d,0x7a,0x92,0x4f,0x2f,0x36,0xfe,0xc7,0xdf,0xb0,0x97,0xf6,0xc6,0xb7,0x6e,0xde,0x7e,0xff,0xe5,0xdb,0xe7,0xd7,0xe5,0x1d,0xa3,0x96,0x2,0xd9,0xfc,0xa0,0x2c,0xb3,0x75,0xff,0x1,0x73,0x33,0x78,0x9e,0x5c,0x49,0xdc,0x3f,0x60,0x6c,0x40,0xa3,0x6f,0xcc,0xee,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,0x20,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x77,0x0,0x7d,0x59,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x5a,0x0,0x5a,0x0,0x5a,0x61,0x75,0x7f,0x99,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,0xde,0x9,0x10,0x16,0x18,0x29,0x61,0xeb,0x3d,0xe6,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,0xc9,0x49,0x44,0x41,0x54,0x48,0x89,0xed,0x95,0xb1,0xaa,0xc2,0x40,0x10,0x45,0xcf,0x86,0x11,0x46,0x4c,0x61,0xb1,0x55,0xb6,0x4f,0xa5,0xbc,0xff,0xff,0x87,0xd7,0x88,0x56,0xf6,0xb1,0x4a,0x61,0xa1,0x30,0xe0,0x10,0x2d,0x76,0x53,0x3f,0xf1,0x11,0xd3,0x64,0x60,0x58,0xd8,0x62,0xee,0xb9,0x53,0xdc,0x9,0x80,0x0,0xab,0xf2,0x86,0xd2,0x53,0xd6,0xb3,0xb4,0x3,0x8f,0x51,0x7c,0xb,0x6c,0x80,0xea,0x4b,0x0,0x3,0x70,0x7,0xae,0x42,0x76,0xbe,0xd9,0xef,0x7e,0xb6,0xa9,0x49,0xad,0x88,0x4c,0xaa,0xee,0xee,0x74,0x97,0xee,0x7c,0x3c,0x1d,0x0,0x6e,0x42,0x76,0x5d,0xa5,0x26,0xb5,0x66,0x86,0x99,0xfd,0x39,0x24,0xc6,0x48,0xdf,0xf7,0x1f,0x1,0xa8,0x2a,0xa9,0x49,0xed,0xf1,0x74,0xf8,0x5,0xaa,0xaa,0xfc,0x7,0x11,0x79,0x4b,0xfc,0xbf,0x65,0x66,0x94,0x2d,0x7,0xc8,0xee,0x67,0xad,0x5,0x60,0x1,0x58,0x0,0x46,0x80,0xa7,0xbb,0xa3,0xaa,0x93,0xb,0xaa,0x2a,0xee,0xe,0x39,0x92,0x11,0x72,0x2e,0xf,0xdd,0xa5,0x3b,0xa7,0x26,0xb5,0x75,0x5d,0xbf,0x35,0x28,0xc6,0xf8,0x11,0xc0,0x18,0xc5,0xa3,0x6e,0x0,0xd6,0xcc,0x78,0x8c,0x2,0x33,0x9f,0xe3,0x17,0x68,0xff,0x45,0x43,0x59,0xe8,0x6b,0xa8,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -225,27 +205,27 @@ static const unsigned char option_button_focus_png[]={ 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,0x89,0x0,0x76,0x0,0x95,0x95,0xac,0x1a,0xb5,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,0xdd,0x9,0x1b,0x15,0x30,0x2f,0x86,0x6,0x7d,0x8f,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,0x3,0x49,0x44,0x41,0x54,0x48,0xc7,0xbd,0x95,0x31,0x68,0x14,0x41,0x14,0x86,0xbf,0x99,0xbb,0xa8,0x18,0x4b,0x89,0x78,0xc1,0xe0,0xa1,0xad,0x55,0x10,0xb,0x8b,0x54,0xa9,0xac,0xc4,0xc2,0xde,0xee,0x5a,0x41,0x4b,0xc5,0xc6,0x42,0x6c,0xc4,0xe2,0xb0,0xd1,0xd2,0x52,0x4,0xbb,0x58,0x59,0xa7,0xb1,0x12,0x11,0x63,0x38,0xf1,0x34,0x41,0x50,0x48,0x24,0xb9,0x9d,0x37,0xef,0x59,0xec,0xec,0xde,0xde,0x65,0x23,0x97,0x13,0x6e,0x61,0x60,0xf9,0xe7,0x9f,0xf9,0xff,0xf7,0xcf,0x1b,0xc6,0x99,0x19,0xed,0xc5,0x8b,0xd7,0x81,0xe,0xb0,0xca,0x6c,0xbe,0x35,0xa0,0xbb,0xd9,0xff,0xfc,0xca,0x9d,0x6f,0x5d,0xb8,0xd3,0x5a,0x38,0xf7,0x68,0xf9,0xd2,0x15,0x5a,0xb,0x8b,0x13,0xad,0x7e,0xf6,0xf2,0x9,0xf7,0x6e,0x3f,0x9c,0x5a,0xfd,0xc7,0x56,0x9f,0x37,0x6b,0xaf,0xe9,0x6f,0x7f,0xbd,0xdb,0x4,0x3a,0x57,0x97,0x57,0xd8,0x1b,0xec,0xf1,0xe9,0xcb,0xc7,0x89,0x37,0xd1,0x18,0xd9,0xd8,0xdc,0x98,0xca,0xc0,0xfc,0xfc,0x49,0x6e,0x5c,0xbb,0xc9,0xd3,0x17,0x8f,0x3b,0x4d,0xa0,0xfd,0x7b,0xe7,0x17,0x12,0xe4,0x48,0x9b,0x84,0x28,0x98,0xda,0x54,0x6,0x76,0x77,0xfe,0xb0,0x3f,0xc8,0x0,0xda,0x1e,0x38,0xb2,0x38,0x80,0x44,0xf9,0xaf,0x26,0x90,0x2c,0x0,0xd0,0x4,0x50,0x8d,0xe0,0xd2,0x8c,0x41,0x51,0x97,0xfb,0x7,0x26,0x99,0x10,0x55,0x1,0xf0,0x15,0x9e,0xa6,0xdf,0x2,0xab,0x86,0xe4,0x61,0x44,0xa7,0x34,0x10,0x2d,0x82,0xb9,0x7c,0xb5,0xaf,0xd8,0xac,0x4b,0xd8,0x8a,0x1e,0x10,0xd4,0xe4,0x80,0x48,0xd9,0x23,0x75,0x18,0x40,0x2c,0x34,0x6c,0x68,0x40,0xa2,0x2,0xe,0x8f,0x41,0x74,0x89,0x6c,0xb9,0xa9,0x6a,0x35,0x15,0x4c,0x44,0xd0,0xa8,0x39,0xa6,0x89,0xe7,0x2b,0xbc,0x84,0xe1,0x2d,0x55,0x3f,0x2c,0x5d,0xa3,0x1b,0x35,0xa0,0x2a,0x80,0x2b,0xe3,0x2b,0xaa,0x2c,0x96,0x88,0xab,0xc1,0x62,0x20,0x84,0x38,0x82,0x45,0xa3,0x3c,0x83,0x52,0x2e,0xa6,0x39,0xc6,0xd2,0x4d,0xc4,0x94,0x80,0xe1,0x2d,0x7,0xd4,0x81,0xb7,0x5c,0xb1,0x34,0x54,0x83,0x49,0x88,0x79,0xef,0x54,0x79,0x76,0x90,0x37,0xd4,0x74,0xa8,0x59,0x11,0x8,0x9a,0x9a,0xa9,0x59,0xdc,0x69,0x43,0xf3,0x74,0xcd,0xa3,0x68,0x59,0x1,0x80,0xd5,0x60,0x41,0x84,0xa0,0x61,0x94,0x87,0x27,0x8e,0xf1,0x74,0x24,0xd4,0x34,0xaf,0x39,0x77,0xec,0x8,0xa,0xa6,0x52,0x31,0x7d,0x28,0x26,0x22,0xa8,0xc4,0xfa,0xbc,0x6b,0xba,0xbd,0x3c,0x8,0x57,0xf9,0x4f,0x6,0x7a,0x59,0x18,0x2c,0x35,0x1a,0x73,0x87,0x76,0x7c,0x1d,0x26,0x92,0x95,0xd7,0x70,0x9a,0x2f,0xc4,0xc,0xa0,0xe7,0x81,0xee,0xb7,0xed,0x1e,0x41,0x32,0x8c,0x38,0xd1,0x0,0x8,0x41,0x50,0xa6,0x1b,0x99,0xc,0x78,0xff,0x61,0x1d,0xa0,0xeb,0xcc,0x8c,0x95,0xcb,0xab,0xf7,0xb7,0x7e,0x7e,0xbf,0x35,0xc8,0xf6,0x97,0x66,0xf1,0x14,0x1e,0x3f,0x76,0xa2,0x77,0xe6,0xf4,0xd9,0xe7,0xef,0xd6,0xdf,0x3e,0x70,0x66,0x86,0x99,0xcd,0x1,0xa7,0x80,0xc6,0x8c,0x9e,0xe3,0x8,0xec,0x7a,0xef,0xc3,0x5f,0x3e,0xcd,0x47,0x5a,0x1d,0xdb,0x7d,0x47,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,0x6,0x0,0x0,0x0,0x77,0x0,0x7d,0x59,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x4b,0x0,0x49,0x0,0x4e,0x38,0x4f,0x8,0xff,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,0xde,0x9,0x10,0x16,0x17,0x13,0x20,0x7f,0xf8,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,0x0,0xd8,0x49,0x44,0x41,0x54,0x48,0x89,0xed,0xd5,0xb1,0x4e,0x2,0x51,0x10,0x85,0xe1,0xef,0xe2,0x46,0x8c,0x31,0x91,0x64,0xab,0xdd,0xe5,0xfa,0x4,0xa8,0x2f,0x26,0xbe,0x8c,0xbe,0x18,0x42,0x4d,0x73,0x59,0x68,0x97,0xc4,0x42,0x12,0xc,0x16,0x40,0x67,0x14,0x49,0x56,0x1a,0x4e,0x39,0x99,0x9c,0xf9,0x27,0x93,0x9c,0x9,0xb8,0x46,0xf,0x37,0xb8,0x40,0xd0,0xae,0x36,0xf8,0xc4,0x3b,0x9a,0x6c,0x37,0xfc,0x1,0x11,0x57,0xff,0x4,0xf0,0x81,0x84,0xb7,0xcc,0x76,0xf3,0xbb,0xfb,0xc1,0xe3,0xa0,0x2a,0xab,0xa7,0xd8,0x8f,0xad,0x2,0xa4,0x59,0xda,0xd4,0xf3,0xfa,0x75,0x3c,0x19,0x5,0x4c,0x33,0x64,0xe8,0x56,0x65,0x35,0xcc,0xf3,0xdc,0x7c,0xb1,0xf8,0xd5,0xa4,0x2c,0x8a,0x83,0xfa,0xbe,0x53,0x9e,0xe7,0x1,0xc3,0xf1,0x64,0xf4,0x8c,0xac,0xb3,0xab,0x87,0xd8,0x8f,0x9a,0x66,0x79,0x94,0xe9,0x5f,0xd4,0x34,0x4b,0xb1,0x1f,0xd9,0x9d,0xba,0xf3,0x73,0x7b,0xfb,0x3a,0x3,0x9c,0x1,0xce,0x0,0x7b,0x80,0x4d,0x9a,0x25,0xbd,0xde,0x6d,0xeb,0x3,0xbb,0xdd,0x4b,0x69,0x96,0xd8,0x46,0xb2,0xc,0x6b,0xac,0xea,0x79,0xfd,0x82,0x83,0xa3,0xb8,0x2c,0x8a,0xa3,0x0,0xf6,0x51,0x8c,0x15,0xd6,0x1,0xa5,0x13,0x3e,0xa3,0xe0,0xc4,0xef,0xf8,0xb,0x70,0x57,0x43,0xed,0x5d,0x76,0xf,0x70,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,0x10,0x8,0x6,0x0,0x0,0x0,0x77,0x0,0x7d,0x59,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x89,0x0,0x76,0x0,0x95,0x95,0xac,0x1a,0xb5,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,0xdd,0x9,0x1b,0x15,0x2d,0xd,0xac,0xa,0x50,0x77,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,0xfb,0x49,0x44,0x41,0x54,0x48,0xc7,0xbd,0x95,0xbd,0x6b,0x14,0x51,0x14,0xc5,0x7f,0x77,0x76,0x4c,0x11,0x2d,0xfc,0x8a,0xdf,0x6,0x52,0xd8,0xc4,0x42,0x48,0xa1,0xad,0x8d,0x8d,0x8d,0xf8,0x27,0x68,0xb7,0x9d,0x8d,0x82,0x95,0xd8,0xfa,0xf,0x2c,0x58,0x28,0x76,0x76,0x29,0x45,0x4,0x4b,0xb,0x1b,0x2b,0x9,0x4,0x89,0xb0,0x44,0xa2,0x46,0xe2,0x7,0x59,0x48,0xe6,0xdd,0xfb,0xae,0xc5,0xcc,0x6c,0x66,0x77,0x26,0xeb,0x66,0x85,0x1d,0x78,0x30,0x73,0xde,0x79,0xf7,0x9e,0x7b,0xee,0x1d,0x9e,0xb8,0x3b,0xe7,0x4e,0x5d,0xbc,0xd,0xb4,0x81,0x1b,0x4c,0xe7,0x79,0x3,0x74,0x36,0x36,0xd7,0x97,0xe5,0xec,0xdc,0x85,0xfb,0x73,0xc7,0x4e,0x3f,0xb9,0x7c,0xe9,0xa,0x67,0x4e,0x9c,0x1f,0xeb,0xf4,0xcb,0x57,0xcf,0xb9,0x77,0xe7,0xe1,0xc4,0xd9,0x37,0xbe,0x7f,0xe1,0xed,0xbb,0xd7,0x6c,0xfe,0xfc,0xf6,0x20,0x5,0xda,0x4b,0x8b,0x57,0xd9,0xc9,0x76,0x58,0x5b,0x5f,0x1d,0x3b,0x48,0x34,0x63,0xad,0xfb,0x69,0x22,0x1,0xb3,0xb3,0x87,0xb9,0x79,0xfd,0x16,0x2f,0x96,0x9f,0xb6,0x53,0x60,0xe1,0x4f,0xef,0x37,0xaa,0x7a,0xa0,0x20,0xc1,0x2,0xee,0x3e,0x91,0x80,0x5e,0x6f,0x9b,0xdd,0x6c,0x17,0x60,0x21,0x1,0xe,0x9c,0x1c,0x40,0x4d,0xff,0x6b,0x8,0x34,0x4,0x0,0x52,0x0,0x8f,0x11,0xa4,0xd8,0x71,0x28,0xeb,0x92,0x11,0x98,0x6,0xc5,0x62,0x4,0x20,0xa9,0xf0,0x62,0xf1,0x5a,0x62,0xb1,0x62,0x52,0x2,0x3,0x79,0xfa,0x2,0xcc,0xd,0x5c,0x72,0x50,0x2a,0x32,0x9b,0x1c,0x2e,0x30,0x33,0x25,0xba,0xd5,0x92,0xf4,0x67,0xa4,0x9,0x3,0xb0,0x52,0x89,0x57,0x4,0xc4,0x8,0x8,0x82,0xe7,0x42,0x0,0xaf,0xbc,0x97,0x55,0x57,0x31,0x55,0x25,0x5a,0xfc,0x27,0xf,0xc9,0x13,0x49,0xa5,0x74,0x37,0x19,0x14,0x10,0xa3,0xd,0x96,0x5e,0xa8,0x2f,0x91,0x28,0x75,0x4c,0x2d,0xa0,0x6a,0x3,0x98,0x27,0xf4,0x7b,0x20,0x4d,0x26,0x26,0x35,0x3f,0x4a,0x7,0x1c,0xf1,0x1c,0x70,0x1,0x71,0x29,0xeb,0xe8,0x47,0x1b,0xc6,0x54,0xb5,0x10,0xee,0xfd,0xbe,0xe3,0x90,0x14,0xbc,0x58,0xcb,0x29,0x44,0x77,0x12,0x2f,0x8b,0x92,0x8a,0x3,0x66,0x8,0x9e,0xbb,0x56,0x4,0x18,0x18,0x85,0x6,0x4c,0x55,0x51,0xd7,0x1a,0x2f,0xe,0xf1,0xac,0xea,0x44,0xb9,0x1f,0xf7,0xa2,0xe5,0x2,0x8a,0x61,0xc2,0x87,0x3c,0x6b,0xf2,0x51,0xf6,0x7e,0xc3,0x58,0xb4,0x60,0x14,0xaf,0x36,0xc8,0x32,0xf8,0x99,0x2,0xdd,0xa0,0xd9,0x7c,0x2b,0x49,0xf7,0x9d,0xf8,0x26,0x4c,0x35,0x60,0x45,0xdb,0x46,0xf1,0xf6,0x3d,0x6f,0x1,0xa0,0x9b,0x0,0x9d,0xcd,0xad,0xaf,0xa8,0x5,0x9c,0x38,0xd6,0x2a,0x5b,0xe0,0xd8,0x44,0x2b,0x68,0xc6,0xea,0xe7,0x8f,0x0,0x1d,0x71,0x77,0x96,0x16,0xaf,0x3d,0xda,0xfa,0xf5,0xe3,0x6e,0xa6,0xd9,0xfc,0x34,0xae,0xc2,0x99,0x74,0xa6,0x7b,0xfc,0xe8,0xc9,0x67,0x1f,0x56,0xde,0x3f,0x16,0x77,0xc7,0xa3,0x1f,0x2,0x8e,0x0,0xad,0x29,0x5d,0xc7,0x6,0x6c,0x27,0xad,0x24,0xfc,0x5,0xbc,0xa8,0x41,0xe0,0x6f,0x35,0x49,0x88,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,0x6,0x0,0x0,0x0,0x77,0x0,0x7d,0x59,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x10,0x16,0x11,0x12,0x1,0x22,0x6f,0x8b,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,0xd5,0x49,0x44,0x41,0x54,0x48,0x89,0xed,0x95,0xb1,0x6e,0xc2,0x50,0xc,0x45,0xcf,0xa3,0x96,0x6a,0x55,0x19,0x3a,0xbc,0xe9,0x3d,0xc1,0x17,0xa4,0xed,0x8f,0x91,0xfe,0xc,0xfc,0x18,0x85,0x99,0x5,0x85,0x29,0x3,0x43,0x7,0x47,0x72,0x95,0xe,0x24,0x6b,0x8b,0x40,0x81,0x25,0x77,0xb4,0x2c,0xdf,0x63,0x59,0xba,0xe,0xc0,0xb,0xf0,0xa,0x14,0xc0,0x13,0x10,0x18,0x57,0x1d,0xf0,0x3,0x7c,0x3,0x27,0xe9,0xcd,0xdf,0x81,0x39,0xa0,0x77,0x2,0x30,0xe0,0x0,0x7c,0x9,0xe7,0xcd,0x17,0x6f,0xe5,0x47,0x99,0x53,0x5e,0x8a,0xc8,0xa8,0x0,0xee,0xde,0xd5,0xc7,0x7a,0xbd,0xdd,0x6d,0x2,0xb0,0x17,0x40,0x80,0xe7,0x9c,0x72,0x65,0x66,0x98,0xd9,0xbf,0x43,0x62,0x8c,0x34,0x4d,0x73,0x15,0x80,0xaa,0x86,0x9c,0x72,0xb5,0xdd,0x6d,0x3e,0x1,0x99,0xf5,0xf5,0x20,0x22,0x17,0x99,0xdf,0x2a,0x33,0x43,0x44,0xa0,0x3f,0xf5,0xec,0xef,0xf6,0xf1,0x35,0x1,0x4c,0x0,0x13,0xc0,0x0,0xd0,0xb9,0x3b,0xaa,0x3a,0xba,0xa1,0xaa,0xe2,0xee,0x70,0x8e,0x64,0x4,0x70,0xa0,0xad,0x8f,0xf5,0x2a,0xa7,0xbc,0x2c,0x8a,0xe2,0xa2,0x28,0x8e,0x31,0x5e,0x5,0x30,0x44,0x31,0xd0,0x2,0x1e,0x80,0xc4,0x3,0x9f,0x51,0xe0,0xc1,0xef,0xf8,0x17,0x29,0x4,0x47,0x72,0x2c,0x4,0x5,0x25,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,0x89,0x0,0x76,0x0,0x95,0x95,0xac,0x1a,0xb5,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,0xdd,0x9,0x1b,0x15,0x31,0x33,0x8b,0x1c,0x10,0x81,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,0x8,0x49,0x44,0x41,0x54,0x48,0xc7,0xbd,0x95,0xbf,0x8a,0x14,0x41,0x10,0xc6,0x7f,0x35,0x37,0xee,0x3f,0xf,0x15,0x31,0xba,0xe0,0xb8,0xe3,0x9e,0x40,0x30,0x13,0xc4,0x40,0x1f,0x40,0xdf,0x40,0xb3,0x35,0xd7,0x54,0x4c,0x7d,0x81,0xcd,0xcc,0x8d,0x34,0x17,0x8c,0x45,0x10,0x13,0xc1,0x44,0x50,0x86,0xf3,0x96,0xbb,0x15,0x4c,0x8e,0xe3,0x66,0xa7,0xbb,0xca,0x60,0x7a,0x66,0x7b,0x6e,0x67,0x61,0x76,0xf,0x6c,0x68,0xa6,0xe9,0xa9,0xae,0xfa,0xea,0xab,0xaf,0xba,0x5,0x60,0x6f,0xe7,0xe0,0x11,0x30,0x6,0x1e,0xd2,0x61,0xe4,0x45,0xce,0x25,0xc7,0x7,0x60,0x32,0x9d,0x1d,0xbe,0x93,0xbd,0x9d,0x83,0xe7,0xfd,0xde,0xe0,0xf5,0xb0,0x3f,0xa2,0x3f,0xe8,0x77,0x3a,0x9d,0x1d,0xfd,0xe2,0xc9,0xe3,0x67,0x1b,0x47,0x9f,0xce,0x7e,0xf3,0xe5,0xdb,0x27,0x66,0x7f,0x8f,0x5f,0xa4,0xc0,0xf8,0xda,0xf6,0x75,0x86,0x83,0x11,0x22,0xd2,0xd9,0x89,0x7a,0xcf,0xcf,0xc3,0x1f,0x1b,0x1,0x18,0xe,0xaf,0x72,0xf7,0xf6,0x7d,0xde,0x7f,0x7c,0x3b,0x4e,0x81,0xfd,0xe1,0x60,0x4,0x80,0x99,0x75,0x76,0x52,0xf8,0x62,0x2d,0xfb,0x78,0x9c,0x9d,0x9d,0x92,0xcf,0x73,0x80,0xfd,0xb4,0x2d,0xb0,0x1,0x82,0x61,0x94,0x8c,0x54,0xeb,0x98,0x1f,0xe7,0xdd,0xa5,0x44,0xe0,0x5d,0x1,0x40,0xa,0xe0,0x55,0x4b,0xe7,0x52,0x82,0x11,0x11,0xcc,0x0,0xd1,0xc0,0x8c,0x80,0x18,0x1a,0x1,0x75,0x85,0xc3,0x6b,0xf9,0x3f,0x91,0x5,0x72,0xd,0xcb,0x6a,0x4f,0xa3,0xdc,0x92,0x10,0xa3,0xce,0xb2,0x2,0xa0,0xe6,0xcb,0x7d,0xad,0x40,0x4,0x9b,0xf0,0x95,0xe8,0x40,0x9d,0x81,0x3a,0xd4,0xfc,0x52,0x90,0x5a,0x23,0x6d,0x7b,0x0,0xbe,0x42,0x62,0xb,0x0,0xa6,0xba,0xf0,0x1f,0x1f,0x94,0x26,0x90,0x78,0x38,0xe7,0x50,0xaf,0x6d,0xe6,0xb4,0x29,0x23,0x2e,0x5f,0xc0,0x1d,0x31,0x10,0xa8,0x44,0xc,0x4c,0x6a,0xd,0x20,0xb,0x4,0xcb,0x1a,0x28,0x70,0x5e,0x9b,0x81,0x13,0xea,0x1a,0xb4,0x82,0x49,0x96,0xf8,0x8,0x1a,0xa8,0x4b,0x20,0x98,0x28,0x62,0xa0,0x22,0x88,0x5,0xd,0x50,0xae,0x55,0x9a,0xc,0x98,0x7a,0xc0,0xf0,0x11,0x7b,0x89,0x49,0x63,0x2f,0x89,0x38,0x50,0x33,0x92,0x80,0x48,0x43,0x72,0xa1,0xb,0x14,0xb3,0xa0,0xfe,0xc0,0x0,0xa6,0x75,0x17,0x40,0x58,0x5b,0xb3,0xb,0x9c,0xb9,0x26,0xb5,0x26,0xc4,0xa7,0xaa,0x92,0xd7,0x4c,0x54,0xff,0x95,0xda,0xaa,0x2c,0x81,0x5f,0xf0,0xd6,0xb5,0xb3,0xbd,0x77,0xa8,0xf7,0xab,0xf9,0x5e,0x25,0x88,0xb,0x77,0x5d,0xa,0x64,0x5e,0xfd,0xae,0xc8,0x1a,0xd1,0x1,0xe7,0xa,0x7c,0xdd,0x2e,0x2d,0x6,0xab,0x7c,0x59,0x95,0x40,0x1,0x90,0x25,0xc0,0x24,0x2f,0xce,0x31,0xb3,0xce,0xb3,0x2c,0x81,0xf,0x4,0xaf,0x3f,0x9d,0x9b,0x73,0x74,0x92,0x1,0x4c,0x4,0xe0,0xde,0x9d,0x7,0x2f,0x8f,0xff,0x4c,0x9f,0xe6,0xf3,0xf3,0xdd,0xff,0xf1,0x1a,0xf6,0xd2,0x5e,0x76,0xf3,0xc6,0xad,0x37,0x5f,0xbf,0x7f,0x7e,0x55,0xde,0x31,0x6a,0x57,0x80,0x6d,0x60,0xab,0x8b,0x83,0x4d,0xdf,0x80,0xb,0xda,0x3c,0x4d,0xb6,0x92,0xe2,0x1f,0x29,0x56,0x40,0xcc,0x4c,0xed,0x94,0xcb,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,0x6,0x0,0x0,0x0,0x77,0x0,0x7d,0x59,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x2f,0x0,0x2d,0x0,0x31,0xdb,0x99,0xd6,0x23,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,0xde,0x9,0x10,0x16,0x15,0x22,0x43,0x97,0x9a,0x23,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,0xd2,0x49,0x44,0x41,0x54,0x48,0x89,0xed,0xd5,0x31,0x4e,0xc3,0x50,0x10,0x84,0xe1,0xef,0x5,0x4b,0x20,0x44,0xc1,0xeb,0x6c,0x3f,0xc1,0x9,0x2,0x5c,0x2c,0xe1,0x32,0x70,0xb1,0x90,0xd4,0x34,0xc8,0x9,0x9d,0x29,0x28,0x1c,0x29,0xc8,0x14,0x76,0x44,0x7,0x51,0x90,0x93,0x26,0x53,0xaf,0x76,0xfe,0xd5,0x4a,0x33,0x1,0x97,0xb8,0xc6,0x15,0xce,0x10,0xc,0xab,0x16,0x5f,0xf8,0xc4,0x47,0xd6,0x9b,0xdf,0xe3,0x6,0x17,0x7,0x2,0x68,0xf0,0x86,0x97,0x4c,0x77,0xf9,0xed,0xdd,0xf8,0x61,0x9c,0xca,0x34,0xd1,0xe,0xc,0x10,0xb4,0xd5,0xb2,0x7a,0x9e,0x2f,0x66,0x1,0xaf,0x19,0x32,0x9c,0xa7,0x32,0x4d,0x9b,0xa6,0x51,0xd7,0xf5,0x9f,0x3b,0x8a,0xbc,0xb0,0x7a,0x5f,0xed,0xe5,0x1f,0x63,0xc,0xa9,0x4c,0xd3,0xf9,0x62,0xf6,0x88,0x6c,0xf4,0xc3,0x65,0x27,0xf3,0xff,0xaa,0xae,0xeb,0xee,0x9,0xfd,0xab,0x47,0xbf,0x4e,0x1f,0x40,0x27,0x80,0x13,0xc0,0x9,0x60,0xb,0xd0,0xa,0xc4,0x18,0x7,0x37,0x8c,0x31,0x6e,0xc3,0xbe,0xa5,0x4b,0xc1,0xd,0xd6,0xd5,0xb2,0x7a,0x4a,0x65,0x9a,0x14,0x79,0xb1,0x53,0x14,0x17,0x79,0xb1,0x1f,0x41,0x1f,0xc5,0x58,0x63,0x13,0x50,0x3a,0x62,0x19,0x5,0x47,0xae,0xe3,0x6f,0x22,0x6d,0x3e,0xb3,0x5c,0x94,0xd4,0xe,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,0x6,0x0,0x0,0x0,0xc4,0xf,0xbe,0x8b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x41,0x0,0x3c,0x0,0x44,0xc0,0x10,0x53,0xfb,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,0xdd,0x9,0x1b,0x17,0xb,0xf,0x82,0x5e,0x66,0x11,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,0x16,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x74,0x77,0xf6,0xff,0xcf,0x80,0x7,0x30,0x31,0x10,0x0,0xc3,0x43,0x1,0x0,0xea,0x61,0x1,0xe8,0x68,0xbf,0x2f,0x36,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,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,0xde,0x9,0x10,0x10,0x25,0xd,0x33,0x8d,0xed,0x3b,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,0x15,0x49,0x44,0x41,0x54,0x18,0x95,0x63,0x54,0x57,0xd7,0xfc,0xcf,0x80,0x7,0x30,0xe1,0x93,0x1c,0x3e,0xa,0x0,0x86,0x1b,0x1,0x86,0x56,0xb4,0xba,0xe,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,0x20,0x8,0x6,0x0,0x0,0x0,0x1b,0x89,0xf8,0xcc,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x30,0x0,0x27,0x0,0x35,0x33,0xd3,0x97,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,0xdd,0x9,0x1b,0x11,0x1c,0x2f,0xb8,0x3e,0xbe,0xfd,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,0xea,0x49,0x44,0x41,0x54,0x48,0xc7,0xed,0x95,0xb1,0x6e,0xd4,0x40,0x10,0x86,0xbf,0xf1,0x39,0x77,0xb9,0x2,0x21,0x90,0x2,0x42,0x40,0x83,0x94,0x74,0x44,0x22,0xaf,0x40,0xcf,0x1b,0xa0,0xbc,0x4,0x75,0x8a,0x20,0xa8,0x78,0xb,0x3a,0xe8,0xe8,0x79,0x6,0xa,0xca,0x48,0x34,0x10,0x25,0x87,0x93,0xb,0xc7,0x9,0x2e,0x17,0xef,0xce,0x50,0x78,0x7d,0x59,0xaf,0x7c,0x76,0x91,0x16,0x4b,0xeb,0xd9,0xb5,0x67,0xfe,0xf9,0x67,0xfe,0xd5,0x2e,0xdc,0xf0,0x91,0xc8,0x66,0xc0,0x20,0x58,0x59,0xe3,0x6f,0x80,0x2,0x3e,0x58,0x93,0xe0,0x3c,0x0,0x36,0x9e,0x3c,0xda,0xfe,0xb4,0x58,0x2e,0x9e,0x77,0x1,0x8c,0x47,0xe3,0xcf,0xdf,0x7e,0x1c,0xbd,0x0,0x4a,0xc0,0xd7,0xc1,0xc3,0x7b,0x77,0x1f,0x1c,0x3e,0xbc,0xff,0xf8,0xd5,0xd3,0xed,0x67,0xdc,0xbe,0x75,0xa7,0x35,0x7a,0x36,0xbf,0xe0,0xeb,0xd1,0x17,0x8e,0x27,0xdf,0xdf,0xfd,0x9c,0x9e,0x1c,0x0,0x57,0x79,0xa0,0xbc,0x91,0x65,0xd9,0xfe,0xee,0xce,0x1e,0xf3,0xbf,0xbf,0x39,0x9f,0x15,0xad,0x0,0xa3,0xe1,0x26,0xbb,0x3b,0x7b,0x9c,0x14,0xc7,0xfb,0xc0,0x6b,0xc0,0xd5,0x0,0xb9,0x88,0x6c,0x4d,0x67,0xe7,0x78,0x75,0x6b,0xb,0xb8,0x5c,0x2e,0x28,0xcb,0x12,0x11,0xd9,0x2,0x72,0x20,0xcb,0xa3,0x1e,0xe0,0xb4,0xac,0xda,0x64,0x49,0x8b,0xed,0x1a,0xc4,0x69,0x59,0x4f,0x7,0x31,0x80,0x0,0x98,0x1a,0x82,0x60,0x71,0x44,0x4,0x20,0x8,0x66,0xd6,0x50,0x30,0x6f,0xfa,0x59,0x78,0x87,0xd4,0x96,0x52,0xd1,0x14,0x3a,0x1,0xb0,0x1a,0xc6,0x56,0x19,0xab,0x2f,0x1a,0x25,0x91,0x2e,0x80,0xc0,0x40,0xd2,0xc0,0x6b,0x46,0x9d,0xc,0x30,0xad,0x32,0x98,0x36,0xb2,0x9,0xf1,0x5a,0x3b,0x18,0x90,0x96,0xd0,0xac,0xbc,0x4d,0xdd,0x6,0x80,0x5a,0xc8,0x69,0x96,0xa8,0x17,0xd6,0x42,0x5f,0x13,0xab,0xdc,0xb2,0x72,0x6b,0xba,0x9b,0xf5,0x30,0xa8,0x6a,0x97,0x88,0xb2,0x44,0xf2,0xb2,0x5a,0xf5,0xc8,0xa8,0x2b,0xd7,0xb4,0x76,0x8b,0xfe,0xad,0x97,0x51,0x5a,0xa8,0x77,0xd4,0x91,0x0,0x68,0xa3,0x3,0x12,0x26,0x26,0xd1,0x6e,0xe8,0x4,0x48,0x1c,0x2c,0x99,0x58,0x9f,0x8c,0xd6,0xd6,0xe6,0x9e,0x27,0xbb,0xe9,0xa1,0xfa,0x1f,0xa0,0x2,0xb0,0x4a,0x0,0x2b,0xbc,0xba,0xde,0x0,0xaf,0xe,0x33,0x2b,0x6a,0x55,0x6b,0x0,0xef,0xbc,0xfb,0x50,0x4c,0x4f,0xe9,0x2,0xf1,0xea,0x28,0xa6,0xa7,0x38,0xe7,0x3e,0xd6,0xb7,0x53,0x1e,0x36,0xbf,0x3b,0xbb,0x98,0xbc,0xc5,0x18,0xce,0xff,0xcc,0x5f,0x66,0x59,0xb6,0xd9,0x6,0xa0,0xaa,0x97,0xde,0xfb,0xf7,0x67,0xbf,0x26,0x6f,0x0,0x7,0xe8,0xea,0x5a,0x3,0xc6,0x61,0x8c,0xc2,0x6,0x93,0xe4,0x60,0xb7,0x10,0xb4,0x4,0x16,0x61,0x94,0xf1,0xdd,0x98,0x3,0xc3,0x60,0x7,0x2d,0x7,0x90,0x5,0xda,0xe,0xb8,0xa,0xd6,0x4b,0x94,0x29,0x8b,0x46,0x7c,0x6b,0xc7,0xfb,0x5b,0x23,0x20,0x5,0xec,0x1f,0x7b,0x45,0xf9,0x5f,0xa9,0x9f,0xe1,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,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,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xd,0xd7,0x0,0x0,0xd,0xd7,0x1,0x42,0x28,0x9b,0x78,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xde,0x9,0x14,0xe,0x21,0x3,0x29,0x83,0x1c,0x15,0x0,0x0,0x0,0xc1,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0x3d,0x4b,0xc3,0x60,0x14,0xc5,0xf1,0x5f,0xea,0x85,0xda,0xe0,0xe0,0x56,0x92,0x87,0xba,0x48,0x37,0x5f,0x3e,0x9b,0x9f,0xc4,0xcf,0x56,0xdb,0xd9,0x45,0xd2,0xd0,0xcd,0x41,0x34,0x85,0x47,0xe2,0x60,0xe6,0xa4,0xd0,0xc5,0xc1,0x3b,0x5e,0xee,0xf9,0x1f,0x2e,0x9c,0x53,0xa0,0xc4,0x35,0xae,0x70,0x81,0xc2,0xf8,0xf4,0xf8,0xc6,0x7,0xde,0x63,0x10,0x3f,0x60,0x85,0xcb,0x13,0x1,0x1d,0xde,0xf0,0x12,0x83,0xf3,0xcd,0xfd,0xdd,0xe3,0x73,0xaa,0xd3,0x22,0x22,0x46,0x1,0x39,0xe7,0xbe,0xd9,0x37,0x5f,0xdb,0xdd,0xe6,0x9,0xaf,0x81,0xc0,0x3c,0xd5,0xa9,0xec,0xba,0x4e,0x7b,0x68,0x47,0xed,0xab,0x65,0x55,0xa4,0x3a,0x95,0xdb,0xdd,0x66,0x8e,0x98,0xd,0xfb,0x22,0x22,0x26,0xc5,0xd0,0x1e,0x5a,0x11,0xc1,0xf0,0xea,0x6c,0xfc,0x7c,0x7a,0xfe,0x1,0x7f,0x9,0xd0,0xe7,0x9c,0x55,0xcb,0x6a,0x52,0x50,0x2d,0x2b,0x39,0x67,0x7e,0x23,0x2d,0x90,0x71,0x6c,0xf6,0xcd,0x67,0xaa,0xd3,0x62,0x7d,0xbb,0x3e,0x29,0xca,0x38,0x22,0x17,0xa8,0x9d,0x51,0xa6,0xc2,0x99,0x75,0xfe,0x1,0x7d,0xe1,0x44,0x88,0x9a,0x7d,0x74,0x9f,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -255,7 +235,7 @@ static const unsigned char popup_bg_disabled_png[]={ 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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0xd9,0xb,0x17,0x6,0xe,0x15,0xb4,0x28,0xc,0xa7,0x0,0x0,0x0,0x4a,0x49,0x44,0x41,0x54,0x18,0xd3,0x85,0x8c,0xbb,0xd,0xc0,0x20,0x14,0x3,0xef,0xa1,0xcc,0x91,0x2a,0xb,0xb0,0xff,0xe,0xb0,0x0,0x4d,0xb2,0x88,0xd3,0xe4,0x21,0x44,0xf8,0xd8,0x95,0x7d,0xd2,0x99,0x10,0xab,0x4,0x36,0x39,0x66,0x20,0x97,0x47,0x53,0x83,0xc3,0x78,0x9d,0x16,0x7c,0x8c,0x60,0x35,0xf8,0xd9,0x43,0x0,0x13,0xa2,0xb5,0xb4,0x10,0x0,0x7d,0x4d,0xe5,0x96,0xf8,0xf7,0x5,0x67,0x99,0x30,0x2b,0xcf,0xbf,0xba,0xe0,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,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x10,0x16,0x5,0xf,0x4c,0x8a,0xd4,0x7,0x0,0x0,0x0,0x43,0x49,0x44,0x41,0x54,0x18,0x95,0x7d,0xcc,0xc9,0xd,0x0,0x20,0xc,0x3,0xc1,0xd,0xa2,0x18,0xe8,0xbf,0x98,0xd0,0x8d,0xf9,0x10,0x84,0xb8,0xe2,0x57,0x3c,0x92,0x4d,0x88,0xdf,0xa5,0xaf,0x2,0xf9,0x5,0xcd,0x9b,0x9e,0xb,0x81,0xa5,0x16,0x4b,0xf1,0xdc,0x70,0x2e,0x44,0xb9,0x23,0x80,0x9,0xb1,0xae,0xac,0x8,0x80,0x46,0xdc,0x5d,0xe2,0x4c,0x7,0x5d,0x41,0x30,0x13,0xdf,0x10,0x9e,0xf0,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -270,17 +250,17 @@ static const unsigned char popup_unchecked_png[]={ 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,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x94,0x0,0x80,0x0,0xa0,0xea,0x26,0x82,0xc7,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,0xdd,0x9,0x1b,0x14,0x21,0x38,0x57,0xce,0xb1,0x6f,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,0x9c,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0x3f,0x6b,0x14,0x51,0x14,0xc5,0x7f,0x77,0x76,0x92,0xac,0xa2,0x1,0x6d,0x8c,0x89,0x89,0x60,0x29,0x58,0x88,0xdf,0xc0,0x4f,0x20,0x76,0x56,0x96,0x36,0xb6,0x5a,0xa8,0xa5,0x5a,0x68,0x15,0xb0,0xb1,0xb4,0xb2,0x13,0x21,0xbd,0xdf,0x40,0x2c,0x4,0x5b,0x31,0x31,0x71,0x25,0x26,0x9a,0x7f,0x24,0x3b,0x7f,0xde,0xb1,0x78,0xef,0xcd,0xce,0x6c,0x26,0x89,0x41,0xc1,0x66,0x7,0x6,0x86,0xd9,0x7b,0xcf,0x3b,0xe7,0xdc,0x33,0x33,0xfb,0xe0,0x7f,0x1f,0x56,0x3b,0x93,0x99,0xa9,0xd9,0x9b,0x66,0x76,0xc7,0xcc,0xae,0xb7,0x15,0x4b,0x7a,0x27,0xe9,0xe5,0x72,0x6f,0xe9,0xd,0xe0,0x0,0x19,0x90,0x0,0x9d,0x99,0xa9,0xd9,0xfb,0xd3,0xe7,0x66,0x1e,0x3f,0x79,0xf0,0x9c,0x13,0x93,0xdd,0xd6,0xd5,0x76,0x37,0xf7,0x78,0xf8,0xf4,0x1e,0x2b,0xdf,0x97,0x1f,0x2d,0xf7,0x96,0x9e,0x1,0xa5,0x1,0x29,0x30,0x71,0xe1,0xfc,0xdc,0xa7,0x57,0x2f,0x5e,0xcf,0x15,0x85,0xa3,0xc8,0x8a,0x56,0x80,0x74,0x3c,0x25,0x4d,0x13,0x6e,0xdf,0xbd,0xb5,0xf8,0xf5,0xdb,0xe2,0x65,0xa0,0x9f,0x2,0x1d,0xa0,0x6b,0x66,0x73,0xbb,0xdb,0x7d,0x30,0x79,0x45,0xa,0xfc,0x2a,0xad,0x22,0xeb,0xe7,0x64,0x7d,0x30,0xb3,0x39,0xa0,0xb,0x14,0x11,0x60,0x1c,0xa0,0x94,0xf3,0xfd,0xc8,0x77,0xb9,0xe0,0xe,0xa0,0xfa,0x7d,0x7f,0x8c,0x3,0x9d,0x34,0x78,0x30,0x6,0x20,0xe7,0x90,0xc,0x4c,0x18,0x86,0x10,0x26,0xab,0xb5,0x89,0x1a,0xa9,0x31,0x20,0x49,0xe3,0x4,0x3c,0x80,0x10,0x2,0x9,0x33,0x2f,0xc3,0xc5,0x26,0xf3,0x4,0x6a,0x1c,0x12,0xc0,0xd2,0x1,0x49,0x70,0x72,0x55,0x85,0xac,0xba,0xf0,0xd7,0xa2,0x69,0x4a,0xb0,0x26,0x6d,0xcc,0xd9,0x9,0x45,0x44,0x85,0x15,0x4d,0x35,0x2f,0x5c,0x1d,0xc4,0x8,0x23,0xac,0x8e,0xd2,0xb9,0x7d,0x39,0x33,0xc9,0x8b,0x50,0xd4,0xaf,0xe6,0x68,0x87,0x19,0xc,0xa,0xbc,0x68,0xd5,0x9a,0x5c,0x5d,0x6f,0x3b,0x80,0x6b,0x38,0x4e,0x3,0x8a,0x96,0xf5,0x87,0x0,0x9c,0x73,0x21,0x32,0xd1,0x79,0x43,0x3e,0x0,0x61,0xac,0x60,0x76,0x88,0x4,0x27,0x55,0x44,0xe5,0x6f,0x54,0x14,0x22,0x90,0xb3,0x23,0x19,0xc,0xa2,0xab,0x7d,0x6a,0x2c,0x46,0xf2,0x60,0x6,0x16,0x72,0x2b,0x53,0xa8,0xb5,0xca,0x84,0x6,0x68,0xab,0x89,0xa5,0x42,0x80,0x86,0x56,0x72,0x54,0x13,0x39,0xc2,0xc4,0x32,0xac,0x58,0xcb,0xc3,0x70,0xfa,0xe,0xf5,0x40,0xf2,0xf6,0xa9,0xf1,0x1a,0x6a,0x36,0xe,0x1,0xe,0x31,0x50,0x1c,0x56,0x20,0x3b,0x48,0x80,0xe4,0x47,0x79,0x44,0x12,0x5d,0x23,0x79,0x98,0x2,0x3,0x6b,0x8c,0xf2,0x60,0x0,0x85,0xc,0x48,0x10,0x1e,0x67,0xa2,0xac,0xe0,0xab,0xd9,0x21,0x12,0xb2,0xac,0xef,0x1f,0xf4,0x8e,0xa1,0xd2,0x50,0x47,0x50,0x8a,0xa4,0xe3,0x9b,0x5c,0xa9,0xd6,0xd7,0xfa,0x24,0x70,0x76,0x76,0xfa,0xe2,0xe7,0xe3,0x7c,0xf,0x96,0x56,0xbe,0x5c,0x2,0xd6,0x2a,0x6,0x45,0x5e,0x72,0xf5,0xca,0xb5,0x3f,0x6a,0xfe,0xf0,0xf1,0x7d,0xbb,0x84,0x8d,0xcd,0x5f,0xc7,0xfe,0x32,0x25,0x7f,0xfb,0x69,0x1b,0x1,0x8c,0x0,0x46,0x0,0x23,0x80,0x11,0xc0,0x8,0x60,0x4,0xf0,0xef,0x0,0x14,0x1,0x14,0xf6,0x84,0x3f,0x5c,0x71,0x74,0x97,0x2b,0x7c,0x6d,0x4,0x89,0xc,0x5c,0x9e,0x67,0xb,0xab,0xeb,0x3d,0xe,0x3,0x71,0x5,0xac,0xae,0xf7,0xc8,0xf3,0x6c,0x21,0xfe,0xfd,0x4c,0x81,0x12,0x28,0xd6,0x36,0x56,0xe7,0x5,0x27,0xb7,0x76,0xb6,0x6e,0x24,0x49,0x32,0xd1,0xa,0xe0,0x5c,0x3f,0x2f,0xf2,0xb7,0xeb,0x1b,0xab,0xf3,0x40,0x11,0x37,0x9e,0x5d,0xe0,0x14,0x70,0x26,0x9c,0xa7,0xc3,0x96,0x6e,0xd8,0x1f,0x7,0x64,0xc0,0x16,0xf0,0x33,0x9c,0xdb,0x91,0xc1,0x5e,0xf8,0x81,0x50,0x34,0x16,0xf6,0x93,0x56,0x33,0xac,0x4,0x72,0x60,0x27,0xd4,0xee,0x45,0x6,0x49,0x90,0x32,0x1e,0xd8,0x4c,0x84,0xe6,0x64,0x8,0xc0,0x5,0x90,0x7e,0x68,0xce,0x80,0xe2,0x37,0x5,0x81,0x51,0xea,0x99,0x8b,0xa0,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,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xc2,0x0,0xc2,0x0,0xcc,0x6a,0x6f,0xcc,0x71,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,0xde,0x9,0x12,0x0,0x3,0x34,0x19,0x79,0x8d,0xec,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,0x64,0x49,0x44,0x41,0x54,0x58,0x85,0xed,0x97,0x3f,0x4e,0x2,0x41,0x14,0xc6,0x7f,0x33,0x2c,0x7f,0x62,0x34,0x84,0x92,0x25,0xf1,0x0,0x1e,0xc3,0xb,0x48,0xec,0xf4,0x2,0xd4,0x34,0x56,0x96,0x56,0x36,0xc4,0x92,0x13,0xd0,0x19,0xd,0xbd,0xc7,0xf0,0x0,0x26,0x2c,0x8d,0x81,0x10,0x35,0x61,0x99,0x61,0xc7,0x82,0x37,0x48,0x8,0xd1,0xcd,0x4a,0x42,0x33,0x2f,0x79,0xc9,0x4e,0xe6,0xfb,0x7e,0xf3,0xcd,0x6c,0xf5,0xe0,0xd0,0xa5,0x36,0x5a,0xc7,0x71,0x7c,0xa9,0x94,0xea,0x28,0xa5,0xce,0x77,0x89,0x9d,0x73,0x2f,0xce,0xb9,0x7e,0x92,0x24,0x8f,0x40,0x6,0x38,0x5,0x68,0xa0,0x14,0xc7,0xf1,0x4d,0xb3,0xd9,0xbc,0xeb,0xf5,0xfa,0xbf,0x9e,0xd8,0xed,0x76,0x18,0x8f,0xc7,0xb7,0x49,0x92,0xdc,0x3,0x4b,0x5,0x44,0x40,0xb5,0xd5,0x6a,0xbd,0xe,0x6,0xcf,0xa7,0x79,0x62,0x5f,0x5d,0x5d,0xbc,0x8d,0x46,0xa3,0x33,0x20,0xd5,0x40,0x9,0xa8,0x29,0xa5,0x72,0x99,0x1,0x44,0x5b,0x3,0x4a,0x1e,0x50,0xc9,0x6b,0xde,0xa8,0x8a,0x7,0x68,0xa0,0x5c,0x0,0x50,0x6,0xb4,0x46,0xfe,0x40,0x1,0x80,0x6,0x94,0x7,0x14,0x2d,0x55,0xe4,0xe4,0xb5,0xd9,0xc7,0xf8,0x57,0x5,0x40,0x0,0x4,0xc0,0x9e,0x0,0xd1,0xe6,0xe2,0xfa,0xba,0x5d,0x1c,0x60,0xad,0xa5,0x5e,0x6f,0xe4,0x32,0xcd,0x66,0xd3,0xf5,0xf7,0xe1,0xdf,0x20,0x0,0x2,0x20,0x0,0x2,0x20,0x0,0x2,0x20,0x0,0xf6,0x7,0x70,0x1e,0xe0,0x0,0x9c,0x73,0xef,0xb9,0x9d,0x3f,0x5a,0xe7,0x13,0x64,0xc6,0x98,0xa1,0x31,0xe9,0x9f,0x66,0x63,0x52,0x8c,0x31,0x43,0x56,0x83,0x27,0x11,0xb0,0x4,0xec,0x64,0x32,0x79,0x0,0x8e,0xa2,0x28,0x6a,0x6b,0xad,0xab,0xbb,0xcc,0x59,0x96,0xa5,0xd6,0xda,0x27,0xd1,0x5a,0x64,0xf0,0xac,0x1,0xc7,0x40,0x43,0xfa,0x84,0xd5,0x48,0xb7,0xfd,0x3e,0x19,0xb0,0x0,0x3e,0x80,0xa9,0xf4,0xa7,0x4f,0x30,0x97,0xd,0x44,0x54,0x66,0x35,0x4f,0xfa,0x81,0xcc,0x89,0xce,0x0,0x5f,0xa2,0x9d,0xfb,0x4,0x5a,0xae,0x52,0x91,0x34,0x55,0x31,0xeb,0x2d,0x40,0x26,0x90,0x54,0xcc,0xb,0xc0,0x7e,0x3,0xa,0x34,0x6f,0x6c,0x6b,0x15,0x5c,0x54,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,0x30,0x0,0x2d,0x0,0x31,0x39,0x29,0xd6,0x70,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,0xdd,0x9,0x17,0xe,0x26,0xb,0xfc,0x38,0xdf,0xa0,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,0xb2,0x49,0x44,0x41,0x54,0x38,0xcb,0x6d,0x92,0xbd,0x8e,0x13,0x51,0xc,0x85,0x3f,0x7b,0xa6,0x49,0x93,0x49,0xa,0x2a,0x9a,0x28,0x4a,0xc7,0xdf,0x2,0xed,0x2a,0x35,0x25,0x1d,0x88,0xdd,0x17,0x98,0x82,0x7,0x48,0x8f,0xc4,0x23,0xa4,0xdc,0x86,0x20,0xb6,0xa3,0xe4,0x25,0xb2,0x12,0x7f,0x55,0x14,0xa5,0xa2,0xa2,0x1,0x69,0xa5,0x14,0x7b,0x6d,0x53,0xcc,0xdc,0xd9,0x4c,0x58,0x4b,0x6e,0xae,0xcf,0xb1,0x8f,0x8f,0xaf,0x4c,0xa6,0x33,0x72,0xa8,0xf3,0x2,0xa8,0x81,0xe7,0xc0,0x7d,0xfa,0xf1,0xb,0x58,0x3,0xcb,0xed,0x6e,0xf3,0x25,0x3f,0xca,0x64,0x3a,0x43,0x9d,0xa,0x78,0x2f,0x22,0xb5,0x8a,0xa0,0x85,0x40,0x8,0x22,0x2,0x40,0x44,0x80,0x4,0x6e,0x81,0x47,0x10,0x11,0x4b,0x60,0xb1,0xdd,0x6d,0xfe,0x96,0xea,0x0,0xbc,0x53,0x91,0xba,0x28,0xb5,0x21,0x22,0x20,0x74,0xd,0xda,0x59,0xa8,0x6,0x2a,0x81,0x25,0xaf,0x3d,0xc2,0x80,0xb7,0x32,0x9d,0xcc,0x5e,0x89,0xc8,0xa7,0xb2,0x54,0x4,0x6d,0xa0,0x22,0xa8,0x8,0xd1,0x51,0xc9,0x93,0x1b,0x45,0x38,0x29,0x39,0x11,0xf1,0xba,0x4,0x6a,0x2d,0xa4,0x47,0x16,0x11,0x10,0xa1,0x3f,0x9f,0x6e,0x1d,0x41,0xd1,0x22,0xb0,0x14,0x75,0x9,0x9c,0xe8,0x11,0x39,0xa7,0xb6,0x2b,0x78,0x44,0xcf,0xcd,0x88,0x40,0x51,0xc,0x3f,0x29,0x81,0xea,0x98,0x78,0xa8,0xe2,0x70,0xfa,0x1d,0x51,0x95,0xdd,0x9,0xf,0xa5,0xe7,0x6c,0x95,0x21,0xde,0x5b,0x25,0x0,0x6b,0x55,0x95,0x59,0x7a,0x1c,0x37,0x41,0x6f,0xaf,0x10,0xa,0xe2,0x1d,0xd9,0x23,0xba,0x5a,0x79,0xa8,0xc7,0xdb,0xdd,0x44,0x1a,0xa7,0xb3,0xf8,0x68,0xef,0x11,0x21,0x78,0x78,0x6f,0x7,0x5,0xae,0x1b,0x67,0xb3,0x3c,0xef,0xce,0x45,0x34,0x1f,0x2a,0x1b,0x17,0xf8,0x2d,0xae,0xc1,0x5c,0x2b,0xb0,0x8e,0x68,0x7e,0x58,0xbe,0x75,0x97,0x78,0xd7,0x30,0xe7,0x21,0xe,0x58,0x2b,0xb0,0x4c,0x66,0x7d,0x62,0x6,0xb4,0x79,0x57,0x2d,0x99,0x1,0x2c,0xb5,0x1a,0xe,0x2f,0x87,0x55,0x75,0x61,0x77,0x34,0x31,0x77,0xcc,0xfd,0xff,0x77,0x33,0x86,0x55,0x75,0xb1,0xdd,0x6d,0x2e,0x55,0x80,0xf9,0xfc,0x74,0x31,0x1a,0x8f,0x57,0x37,0x29,0x91,0xcc,0x30,0xf7,0xde,0x64,0xda,0x66,0xc9,0x8c,0x9b,0x94,0x18,0x8d,0xc7,0xab,0xf9,0xfc,0x74,0x1,0x20,0x4f,0x1f,0x3f,0x83,0x8,0xae,0xbe,0x5d,0x8d,0xce,0xde,0x9c,0xbf,0xfc,0xf1,0xfd,0xe7,0xd9,0x7e,0xbf,0x7f,0x62,0x66,0xf7,0xe,0xdd,0x2e,0x8a,0xe2,0xf7,0x60,0x30,0xf8,0xfa,0xf0,0xd1,0x83,0xd5,0xea,0xe3,0x87,0xcf,0xc0,0x1f,0x80,0x7f,0x8a,0x82,0x28,0xc9,0xa8,0xf,0x19,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x27,0x0,0x27,0x0,0x27,0x12,0xaa,0xad,0x65,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,0xde,0x9,0x11,0x16,0x16,0x1b,0x8f,0x3,0x26,0x8d,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,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0x3b,0x4e,0x3,0x41,0x10,0x84,0xe1,0x6f,0x4c,0x4b,0x1e,0xaf,0x36,0x20,0xde,0x11,0x9c,0x80,0xc7,0xd9,0x38,0x9,0x67,0x33,0x76,0x4c,0x82,0xd6,0x31,0x1,0x82,0xb1,0x34,0xc8,0x4,0x6c,0xbc,0x6b,0xc9,0x9,0x1,0x1d,0xb6,0xba,0xfe,0x52,0x4b,0x55,0x9,0x1d,0xae,0xd1,0xe3,0xa,0xc9,0xfc,0x9c,0xf0,0x8d,0xf,0xbc,0xc7,0x24,0x7e,0xc0,0xd,0xf2,0x99,0x80,0x8a,0x37,0xbc,0xc4,0xe4,0x7c,0x7b,0x7f,0xf7,0xf8,0x5c,0x86,0xb2,0x89,0x88,0x59,0x40,0x6b,0xed,0x34,0x1e,0xc6,0xaf,0xdd,0x7e,0xfb,0x84,0xd7,0x40,0x60,0x5d,0x86,0xd2,0xd5,0x5a,0xd5,0x5a,0x67,0xed,0x73,0xce,0xa9,0xc,0xa5,0xdb,0xed,0xb7,0x6b,0xc4,0x6a,0xda,0xa7,0x88,0x58,0x14,0x43,0xad,0x55,0x44,0x30,0xbd,0xba,0x9a,0x3f,0x5f,0x9e,0x7f,0xc0,0x5f,0x2,0x9c,0x5a,0x6b,0x72,0xce,0x8b,0x82,0x9c,0xb3,0xd6,0x1a,0xbf,0x91,0x16,0x68,0x38,0x8e,0x87,0xf1,0xb3,0xc,0x65,0xd3,0xf7,0xfd,0x59,0x51,0xc6,0x11,0x2d,0x61,0x70,0x41,0x99,0x92,0xb,0xeb,0xfc,0x3,0x18,0xa7,0x44,0x3f,0xdc,0xad,0xd9,0x96,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,0xaf,0x0,0x9a,0x0,0xec,0x52,0xc,0x20,0x4d,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,0xdd,0x9,0x17,0xe,0x28,0x33,0x4a,0xb9,0x4a,0xb0,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,0x9a,0x49,0x44,0x41,0x54,0x38,0xcb,0x75,0x93,0x4b,0x88,0x5c,0x45,0x14,0x86,0xbf,0x53,0x75,0x6b,0xa6,0x67,0x92,0xee,0x76,0x32,0xce,0x18,0x8c,0xc3,0xb4,0x4,0x62,0x30,0xf,0x41,0x41,0x8c,0xae,0x5d,0xb8,0x8,0x98,0x8c,0x90,0x85,0x44,0x70,0x2d,0x66,0xab,0xb,0x97,0x6e,0xdc,0xeb,0x5a,0x48,0x16,0x32,0x90,0xc9,0x80,0x2e,0x7c,0x80,0xd9,0x9,0x1a,0xc8,0x42,0xe3,0xa0,0x84,0x3c,0xe6,0x21,0x61,0x3a,0x9d,0x89,0xf6,0xed,0x3b,0xf7,0xd9,0x55,0xc7,0x45,0xdf,0x91,0x9e,0x80,0x3f,0x14,0x75,0xaa,0xea,0xd4,0x7f,0xfe,0xf3,0x53,0x25,0xaa,0xca,0x1e,0x3a,0xb3,0x67,0x3e,0xd1,0xe1,0xc4,0x7,0x61,0x18,0xcd,0x11,0x22,0xcb,0x38,0xcc,0xd0,0x9b,0x68,0xd8,0x93,0xa8,0xfc,0xa2,0x7b,0xb8,0xf9,0xe9,0xde,0xb6,0x0,0x74,0x9e,0x7e,0x75,0xc1,0x57,0xee,0xdb,0x93,0xc7,0x5f,0x3b,0x71,0xfe,0x9d,0xf3,0x2c,0x2e,0x1e,0xa5,0xd5,0x3a,0x44,0x91,0x7,0x0,0x26,0x1b,0x86,0x38,0x7e,0xcc,0xc6,0xc6,0x5d,0xae,0x5d,0xbd,0xc6,0xef,0x7f,0xfe,0xbc,0x66,0x5d,0xf5,0xd6,0xf6,0x7c,0x7b,0x4b,0x0,0x16,0xda,0x6f,0xfc,0x7a,0x61,0xe9,0xfd,0xd3,0xe7,0xce,0x5d,0xa4,0xbf,0xe3,0x49,0x63,0xc8,0xe3,0xb0,0x4f,0x40,0xa3,0x65,0x98,0x6e,0x41,0x7b,0xd6,0xb2,0xba,0x7a,0x85,0xe5,0x95,0x2f,0x7f,0xd3,0xe2,0xc0,0x4b,0xb6,0x33,0x73,0xe6,0xf3,0x53,0xc7,0x5e,0x3f,0x7b,0xf1,0xbd,0x4b,0x3c,0xdc,0x8,0xf4,0xbb,0x4a,0xdc,0xf3,0x94,0xb9,0xee,0x1b,0x69,0x3f,0x50,0xa6,0x90,0xa5,0xca,0xa9,0x97,0x4f,0x73,0xff,0xf6,0x9d,0x67,0x76,0xe2,0x3b,0x73,0xb6,0xed,0x8e,0x7e,0xf5,0xe1,0xa5,0x8f,0x27,0x7d,0x32,0x43,0xfc,0x48,0x49,0xfe,0xf1,0xa8,0x7,0xef,0x41,0xbd,0x12,0xbc,0xd6,0x31,0x14,0x59,0x40,0xbd,0x40,0x80,0x17,0x4e,0x2e,0x70,0xfd,0xc7,0x1f,0x8e,0x47,0xa1,0x72,0xcd,0xe6,0x81,0x23,0xf4,0x1f,0x4,0xe2,0xee,0x10,0x4,0x74,0xdc,0x20,0xf6,0xaf,0xe3,0x2c,0x60,0x5d,0x44,0xfb,0xd9,0x23,0x84,0xca,0x35,0x23,0x51,0x2b,0x45,0x1a,0x28,0xd3,0x40,0x59,0x84,0x3a,0x5b,0x41,0x64,0x3f,0x81,0xea,0x88,0x42,0xa0,0x4c,0x3,0x45,0x1a,0x10,0xb5,0x12,0x1,0x64,0x3,0x25,0x4f,0x3c,0x55,0x1e,0x46,0x89,0x22,0xf5,0x85,0xb1,0xda,0x2,0x68,0x0,0x11,0xf2,0xc4,0xe3,0x6,0xa3,0xb3,0x48,0x82,0x21,0x1f,0x78,0x8a,0x44,0xa8,0x32,0x5f,0xb,0xd5,0x7a,0xaa,0x9,0x64,0xac,0x2f,0x2,0x45,0x2,0x6e,0xe0,0x91,0x60,0xf8,0x4f,0x41,0xb1,0x5b,0x2b,0x18,0xc3,0x93,0x5e,0xec,0xa1,0xd8,0x5,0xbb,0xa7,0x0,0x51,0xcd,0x13,0x2f,0xc5,0x0,0xca,0x2c,0x8c,0xa,0xcb,0xff,0x98,0xa8,0xa3,0xd8,0x1a,0x30,0xd3,0x1e,0x44,0x35,0xc2,0x56,0xc9,0x76,0x6f,0xb3,0x79,0xb0,0xec,0x10,0xca,0x80,0xd7,0xb1,0x47,0x3a,0xde,0x42,0x4d,0x63,0x5,0xbc,0x13,0xb6,0x7b,0x9b,0x60,0xab,0xc4,0xe0,0x76,0x97,0x6f,0xdc,0x5a,0xc5,0xb6,0x2d,0x38,0x4b,0x28,0x95,0x2a,0xb,0x54,0xd9,0xa8,0xa5,0x2a,0xaf,0xe3,0x2c,0x10,0x4a,0x5,0x67,0xb1,0x6d,0xcb,0x8d,0x5b,0xab,0xe0,0x76,0x97,0x6d,0xbf,0xf8,0xeb,0xba,0x33,0x13,0x17,0xd4,0x4f,0x1e,0x9a,0x9f,0x7f,0x11,0x9,0x82,0x15,0xc1,0x88,0x60,0xc4,0x60,0x8c,0xc1,0x46,0x6,0x37,0x61,0xb1,0x53,0x11,0xd1,0x53,0x8e,0xb5,0xf5,0xaf,0xb9,0xf7,0xe8,0xfb,0xbb,0xeb,0xf1,0x4f,0x6f,0x5b,0x80,0xc5,0xce,0x73,0xbf,0x6c,0x3d,0x58,0x7b,0xf3,0x61,0x77,0xa3,0xdd,0x68,0xce,0x60,0xa7,0xe,0x62,0xa7,0xa6,0x89,0x1a,0x16,0xd3,0xb0,0x68,0x23,0xa2,0xb0,0x29,0x8f,0xcb,0x7b,0xdc,0xfc,0xe3,0x32,0xeb,0x7f,0x7f,0xb7,0xd9,0x3a,0x3c,0x7c,0xb7,0xbb,0xb3,0xb5,0x25,0xb5,0x57,0x53,0x4b,0x4b,0x4b,0xcf,0xdf,0xbe,0xb9,0xf3,0x51,0xdc,0x93,0xb3,0x54,0x93,0x2d,0x42,0x64,0x9e,0xf8,0xce,0x1,0x57,0xc4,0xad,0x39,0xfd,0xe6,0xd8,0x2b,0xb3,0x9f,0xad,0xac,0xac,0xdc,0x7,0xb2,0x7f,0x1,0x90,0xaf,0x58,0x10,0xf8,0xc7,0xe,0xbe,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,0x26,0x0,0x26,0x0,0x26,0x59,0xf,0xde,0x74,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,0xde,0x9,0x14,0x15,0x1e,0x28,0xcd,0x92,0x83,0xf8,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,0x82,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd0,0x21,0xe,0xc3,0x30,0xc,0x5,0xd0,0xbf,0xc9,0x2c,0x3f,0xb4,0xbd,0xca,0x60,0x6e,0xd0,0xb3,0xe6,0x6,0x81,0x3b,0x4b,0x59,0x64,0x87,0x39,0xd2,0xc8,0x40,0xe7,0x4a,0x93,0xc6,0x6,0xfa,0xe1,0xb3,0xfd,0x81,0x81,0x2b,0xb7,0x8,0xa5,0x94,0x87,0xaa,0x56,0x33,0x5b,0x8e,0x4e,0x72,0xcf,0x39,0x6f,0xad,0xb5,0xe7,0xd1,0x25,0x16,0xa8,0x6a,0xed,0xbd,0x27,0x77,0xff,0xf0,0x39,0x67,0x2,0x50,0x1,0xac,0x5f,0xb,0xcc,0x6c,0x89,0xc7,0x0,0xe0,0xee,0xc9,0xcc,0x52,0xf4,0xfb,0x69,0xf3,0xc7,0xfc,0x61,0x1,0xc9,0x5d,0x44,0x46,0x74,0x11,0x19,0x24,0xf7,0x93,0x47,0xc8,0x39,0x6f,0x0,0x6a,0x7c,0x18,0xc9,0xf1,0x9e,0x5d,0x9,0x79,0x1,0x2e,0x56,0x2e,0xc3,0x70,0xd9,0xde,0xde,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -289,53 +269,68 @@ 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,0x8,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xc4,0xf,0xbe,0x8b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x26,0x0,0x26,0x0,0x26,0x59,0xf,0xde,0x74,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,0xde,0x9,0x14,0x17,0x37,0x2c,0x8d,0x3d,0xc,0x64,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,0x3f,0x49,0x44,0x41,0x54,0x18,0x95,0xad,0x8e,0x31,0xa,0x0,0x20,0xc,0x3,0xaf,0xda,0x47,0xf4,0xe5,0xf6,0xb3,0x4a,0x5d,0x1c,0x54,0x50,0x17,0xf,0x42,0x96,0x24,0x44,0xcc,0x8c,0x1b,0x69,0x78,0x1,0x62,0x53,0x1,0x90,0xb1,0x10,0xb5,0xb6,0xa5,0xa9,0x9a,0x1,0x24,0xf1,0xe0,0x5f,0xc0,0x55,0x33,0xb3,0x0,0x9f,0x4f,0x1e,0xe9,0xf,0x1d,0xb,0x68,0x95,0x6b,0x4f,0xeb,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x11,0x20,0xd,0xba,0x4e,0x71,0x52,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,0x8d,0x49,0x44,0x41,0x54,0x38,0xcb,0x9d,0x93,0xcf,0x4a,0x5b,0x41,0x14,0xc6,0x7f,0x13,0xae,0x12,0x11,0xb,0x66,0x93,0x40,0x56,0xd2,0x7,0x28,0x5d,0x74,0xa3,0x48,0x4b,0x9f,0xc2,0x75,0xa0,0x8f,0x21,0x6e,0x4,0x11,0x5c,0x64,0x2b,0x5,0xd7,0x7d,0x8a,0xd2,0xae,0xbb,0x28,0x7d,0x80,0xe2,0xaa,0xa0,0x88,0x51,0x6a,0xee,0x9c,0x33,0x73,0xe7,0x8f,0x8b,0xa4,0xf7,0xde,0x68,0x5a,0x8b,0x7,0x86,0x19,0x66,0xbe,0xef,0x3b,0x33,0xe7,0x3b,0x63,0x80,0x3c,0xec,0xf,0x78,0x4e,0xfc,0xba,0xbc,0xa0,0x18,0xf6,0x7,0xbc,0xdc,0xda,0xe2,0xfd,0xdb,0x77,0xbc,0xd8,0xd8,0x0,0xc,0xe4,0xc,0xe6,0x1,0x3a,0x3,0xc6,0x0,0x99,0xdf,0x77,0x77,0x7c,0xfe,0xfa,0x5,0x80,0x2,0x60,0x77,0x7b,0x7,0x80,0xeb,0xab,0xeb,0x3f,0xc8,0xd6,0xcc,0xa3,0xbd,0x95,0xee,0x2a,0xbb,0xdb,0x3b,0xfc,0x3c,0x3f,0x9f,0x9,0xf4,0x36,0x37,0xb9,0x99,0x4c,0xf0,0xde,0x35,0xd9,0xf3,0x22,0xbd,0xe1,0x1b,0x4c,0x7,0x7a,0xbd,0x5e,0x73,0x83,0x18,0x13,0x29,0x26,0x52,0x4a,0x2d,0xc6,0x92,0x27,0x0,0xe4,0x4c,0x8a,0x89,0x18,0x53,0x23,0x10,0x42,0x45,0x88,0x91,0x14,0xe3,0x52,0x6e,0x3b,0xc,0x10,0x62,0x24,0x84,0xaa,0x11,0x70,0xea,0xa8,0xbc,0xc7,0x7b,0xcf,0xde,0x87,0xd1,0x3f,0x5,0x3e,0x7d,0x3c,0x3,0x63,0x70,0xea,0x1a,0x1,0x75,0x8a,0x73,0xe,0xef,0xfd,0x93,0xd6,0x39,0xef,0xc9,0x73,0xe,0x40,0x7,0xc0,0x8a,0x45,0x44,0x10,0x11,0x4e,0x4f,0xc6,0x7f,0x25,0x9f,0x9e,0x8c,0x6b,0x9c,0x15,0xdb,0x8,0xc8,0xd4,0x22,0x62,0x51,0x55,0x44,0x85,0xf1,0xe1,0xd1,0x23,0xf2,0xf8,0xf0,0x8,0x51,0x99,0x61,0xc4,0x22,0xd3,0x96,0x80,0x55,0x41,0xd5,0xa1,0x4e,0xeb,0x71,0xbc,0x7f,0x50,0x93,0x8f,0xf7,0xf,0x16,0xce,0x54,0x1d,0x56,0x65,0x56,0xd4,0x61,0x7f,0x90,0xdf,0xbc,0x7a,0x8d,0xaa,0x10,0xaa,0xb0,0x58,0xee,0x65,0x36,0x2,0xc5,0x4a,0x41,0xb7,0xbb,0xc6,0xb7,0x1f,0xdf,0xe7,0x45,0x14,0xc5,0x57,0x9e,0x18,0x22,0xff,0xe3,0x63,0xca,0x9,0xb2,0x69,0x5c,0x10,0xef,0x8,0x55,0xd5,0x34,0xd2,0x13,0xd1,0x49,0x89,0x38,0x4f,0x54,0x0,0x5c,0x5c,0x5d,0xb2,0xde,0x5d,0x23,0xb7,0xd3,0xe7,0x25,0x1d,0x54,0x2f,0xd,0xe5,0xed,0xa4,0x16,0x18,0x4d,0xcb,0xf2,0x6c,0x5a,0x96,0xcf,0xf9,0xd1,0xa3,0x7b,0xce,0xd7,0xea,0xb0,0xa,0xcf,0xbd,0x5b,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x1f,0x9,0x3d,0x3c,0xb0,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,0xa3,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x93,0x31,0xa,0x2,0x31,0x10,0x45,0x7f,0xc2,0x14,0x3,0x6,0xab,0xad,0x32,0x57,0x50,0xbc,0x87,0x88,0x97,0x11,0xf1,0xc,0x22,0x1e,0x33,0x5b,0xa5,0xb1,0x59,0xa7,0x18,0x58,0x5b,0x89,0x9b,0x95,0x88,0xa0,0xbf,0x4c,0xfe,0xfb,0xf9,0x3,0x13,0xb7,0x5e,0x6d,0x58,0xa2,0xc,0x44,0xe4,0xd0,0x20,0x33,0x1b,0x53,0x9f,0x16,0x24,0x51,0xee,0xaa,0xa,0x55,0x6d,0xe1,0xc1,0xcc,0x4e,0xa2,0xc,0x9e,0x88,0x9a,0x61,0x0,0x50,0x55,0x10,0x11,0x7c,0x33,0x59,0xe8,0xf7,0x1,0x54,0x1e,0x5c,0xae,0xe7,0x59,0xe0,0x78,0x38,0x7d,0xb7,0xc1,0x4b,0x40,0xf9,0xc2,0xbb,0xbb,0xc9,0x6,0x53,0xc6,0x5a,0x70,0x75,0x84,0x67,0x60,0xae,0x95,0xdb,0x6d,0xf7,0x63,0xce,0xb9,0x6a,0x98,0x53,0xd7,0x75,0x7f,0xb0,0x7,0xde,0xcc,0xc0,0xcc,0xcd,0x20,0x33,0xc3,0xcc,0x40,0xa9,0x4f,0x4b,0x89,0x72,0xb,0x21,0x7c,0xf2,0x9d,0xe5,0x1,0xd1,0x91,0x38,0x2b,0x1d,0x55,0xcb,0xf6,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x11,0x1f,0x1f,0x11,0x29,0x2a,0x26,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,0x84,0x49,0x44,0x41,0x54,0x38,0xcb,0x9d,0x93,0xcf,0x4a,0x6b,0x31,0x10,0x87,0xbf,0x94,0xfa,0x7,0xa1,0x82,0xdd,0xea,0xc2,0x9d,0xfa,0x16,0x45,0x10,0x1f,0xc0,0xbd,0xa0,0x2f,0x71,0x71,0x23,0x72,0x17,0x82,0xb8,0x70,0xd1,0xb5,0xa,0xee,0x7d,0x0,0xf1,0x41,0xd4,0x9d,0xe0,0x15,0x17,0x52,0x2f,0x9c,0x43,0x32,0x49,0xce,0x49,0x72,0x17,0xad,0x4d,0x6b,0x7b,0x55,0x1c,0x8,0x9,0x99,0xf9,0x7d,0x33,0xc9,0x24,0xa,0x48,0xab,0xcb,0x2b,0xfc,0xc4,0x1e,0x9f,0xff,0xd0,0x5c,0x5d,0x5e,0x61,0x63,0x6d,0x9d,0xed,0xad,0x2d,0x16,0x5b,0x2d,0x40,0x41,0x4a,0xa0,0x3e,0x44,0x27,0x40,0x29,0x20,0x51,0x94,0x25,0x37,0xb7,0xb7,0x0,0x34,0x1,0x36,0x3b,0x1d,0x0,0x7a,0xaf,0xbd,0xf7,0xc8,0x91,0x99,0x89,0xbd,0x99,0xf9,0x59,0x36,0x3b,0x1d,0xee,0x1e,0xee,0xfb,0x80,0xf6,0xd2,0x12,0x7f,0xdf,0xde,0xf0,0xde,0xe5,0xec,0x69,0x5c,0x9e,0xf5,0xa,0xd5,0x80,0x76,0xbb,0x9d,0x2b,0x8,0x21,0x12,0x43,0x24,0xc6,0x38,0xa2,0x98,0x72,0x4,0x80,0x94,0x88,0x21,0x12,0x42,0xcc,0x80,0xba,0xae,0xa8,0x43,0x20,0x86,0x30,0x55,0x3b,0x6a,0xa,0xa8,0x43,0xa0,0xae,0xab,0xc,0x70,0xd6,0x51,0x79,0x8f,0x77,0x8e,0x9d,0xbd,0xdd,0x4f,0x1,0xd7,0x97,0x57,0xa0,0x14,0xce,0xba,0xc,0xb0,0xce,0xe2,0xac,0xc5,0x7b,0xff,0x65,0xeb,0x9c,0xf7,0x24,0xc0,0xce,0xcf,0x1,0xd0,0x0,0x30,0x62,0x30,0x46,0x30,0xc6,0x70,0x7e,0xd6,0xfd,0xaf,0xf8,0xfc,0xac,0x8b,0x31,0x83,0x58,0x31,0x19,0x20,0xa5,0x46,0x8c,0x46,0xa4,0xef,0xe8,0x1e,0x9f,0x4c,0x88,0xbb,0xc7,0x27,0x18,0x31,0x88,0x48,0x3f,0xb6,0xd4,0x19,0xa0,0xc5,0x20,0x62,0x11,0x2b,0xc3,0x71,0x7a,0x78,0x34,0x14,0x9f,0x1e,0x1e,0x8d,0xf9,0x44,0x2c,0x7a,0x50,0x41,0x13,0x40,0x6b,0x83,0x38,0x4b,0x55,0x55,0x63,0xd7,0xfd,0xfb,0xd7,0xc1,0x64,0x1b,0x81,0x30,0x13,0x41,0x37,0x32,0x40,0xb4,0xe0,0xbc,0x23,0xd4,0x35,0xdf,0xe9,0x63,0x8c,0x11,0x92,0xca,0x0,0xe3,0x2c,0x95,0xf7,0xf9,0x21,0x7d,0x61,0x8d,0x10,0x9,0x83,0x44,0x4d,0x80,0xa7,0x97,0x67,0x5a,0xb,0xb,0xa4,0xd1,0xf4,0x69,0xca,0xb,0x1a,0x2e,0x15,0x65,0xef,0x75,0x8,0xd8,0x2f,0xca,0xe2,0xa2,0x28,0x8b,0x9f,0xfc,0xe8,0xfd,0x7f,0xcd,0x23,0xeb,0x93,0x35,0xff,0xc7,0x89,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x1a,0x0,0xaf,0x18,0x62,0x86,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,0x9c,0x49,0x44,0x41,0x54,0x38,0x8d,0xc5,0x93,0x41,0xa,0x2,0x31,0xc,0x45,0x7f,0x87,0x6,0x21,0x5,0xe7,0x6,0x2e,0x9a,0x63,0x88,0x78,0x30,0x11,0x4,0xf1,0x98,0x9d,0x4b,0x48,0xa3,0x90,0x85,0x6e,0xb5,0xce,0x8c,0xad,0xa,0xfe,0x65,0xd2,0xf7,0xf3,0x53,0x88,0xdb,0xac,0xb7,0xb,0x89,0x72,0x21,0x22,0x87,0x6,0x99,0xd9,0x2d,0xd,0x69,0xe9,0x25,0xca,0x55,0x55,0x91,0x55,0x5b,0x78,0x4,0x66,0x27,0x51,0xce,0x1d,0x11,0x35,0xc3,0x0,0x90,0x55,0x41,0x44,0xe8,0x9a,0xc9,0x42,0xff,0x37,0xf0,0x65,0xe1,0x78,0x3a,0xcc,0x2,0xfb,0xdd,0x73,0xff,0xf7,0x2b,0x94,0x13,0xde,0xf5,0x46,0x13,0x8c,0x3d,0x9c,0x32,0x9e,0x5c,0xe1,0x11,0x98,0x4b,0xf5,0xf2,0x89,0x35,0x53,0xab,0x12,0xd4,0xea,0x7b,0x3,0x33,0x43,0x60,0x6e,0x6,0x3,0x33,0xcc,0xc,0x3e,0xd,0x89,0x25,0x4a,0xee,0xfb,0xfe,0x93,0x73,0x5e,0xdd,0x1,0xb6,0x6d,0x35,0xa4,0xf0,0x42,0xdf,0x17,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x30,0x0,0x2d,0x0,0x31,0x39,0x29,0xd6,0x70,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,0xdd,0x9,0x17,0xe,0x16,0x1f,0x39,0xa4,0x3d,0x2e,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,0x47,0x49,0x44,0x41,0x54,0x38,0xcb,0x5d,0x93,0x51,0x4b,0x54,0x51,0x10,0xc7,0x7f,0x77,0x77,0x75,0x33,0xd7,0x5d,0x64,0xa3,0x56,0x83,0x50,0xb1,0xd0,0xd2,0x90,0xa,0xa1,0x97,0x9e,0xfb,0x8,0xe1,0x37,0xd8,0x87,0x90,0x1e,0x12,0xd3,0xd5,0xc2,0x82,0x88,0x5e,0x3,0x3f,0x41,0xdf,0xa1,0xcf,0x10,0x18,0x91,0x41,0x11,0xa2,0x66,0x65,0xab,0xbb,0xa6,0x5e,0x77,0xb5,0xbb,0x7b,0x66,0xa6,0x87,0x7b,0xf7,0xb6,0x3a,0x70,0x38,0x87,0x73,0x66,0xe6,0x3f,0xf3,0x9f,0xf3,0xf7,0x68,0xb3,0xa1,0x81,0xe1,0xfb,0x40,0x11,0xb8,0xd,0x5c,0xe6,0xb4,0xfd,0x2,0x56,0x80,0xe5,0xf5,0xcd,0xb5,0x77,0xad,0x4b,0x2f,0xa,0xcc,0x1,0x2f,0xb,0x85,0xfe,0xe2,0xd8,0xe8,0x38,0xbd,0xb9,0x5e,0x3a,0xd3,0x69,0x54,0xc,0x80,0x44,0xd2,0xa3,0x11,0x4,0xec,0x1f,0xee,0xf3,0xf9,0xcb,0x2a,0xe5,0xf2,0xf6,0x32,0xf0,0x64,0x7d,0x73,0xed,0x30,0x15,0x25,0x7a,0x31,0x71,0xf3,0x56,0x71,0xf0,0xca,0x35,0x2a,0x95,0xa,0x1b,0x7b,0x5b,0x4,0x41,0xf3,0x14,0x7c,0x3a,0xdd,0xc1,0xb9,0xae,0x2e,0xee,0xde,0xb9,0xc7,0xc6,0xd6,0xb7,0xe2,0xc7,0x4f,0x1f,0x4,0x78,0x98,0x1c,0x1a,0x18,0x9e,0xea,0x2b,0xf4,0xbf,0xba,0x3a,0x38,0xc2,0x8f,0xef,0x3f,0x39,0xae,0x1f,0xd3,0x14,0x87,0x61,0x98,0x81,0x99,0x1,0x86,0x6b,0xa,0x27,0x7f,0x4f,0xf0,0xf,0x7c,0xfa,0xfa,0xfa,0xa9,0xd5,0xfd,0xc9,0x8e,0x8e,0xce,0xaf,0x9,0xa0,0x78,0x7d,0x64,0x8c,0xdd,0x72,0x95,0xa0,0x11,0x20,0x26,0xa8,0x2a,0x2a,0x8a,0x9a,0x30,0x53,0x9a,0xe6,0xf1,0xfc,0x74,0x78,0x2f,0x4a,0xd0,0x8,0xd8,0x2d,0x57,0xb9,0x31,0x3a,0xe,0x50,0x4c,0x0,0xe3,0x22,0x42,0xad,0x5e,0x43,0x4d,0x50,0x15,0x54,0x4,0x35,0x65,0xb6,0xf4,0x88,0xa8,0xc,0x44,0x25,0x7a,0x57,0x6a,0xf5,0x23,0x44,0x4,0x60,0x22,0x5,0xe4,0x9c,0x38,0xd4,0x4,0xc2,0x6a,0xc1,0x33,0xe6,0x17,0x67,0xb0,0xe8,0xc,0x1e,0xa6,0x82,0xb5,0x78,0x37,0xc3,0x89,0x3,0xc8,0xa5,0x0,0xc4,0x35,0x11,0x15,0x3c,0xb,0xe3,0x17,0x96,0x66,0x23,0xe7,0x10,0x1d,0x40,0x55,0x63,0x42,0x2d,0x8a,0x1,0x48,0x1,0x34,0x9d,0x43,0x55,0xf0,0xa2,0x47,0x33,0x8b,0xcf,0x21,0x66,0xd8,0x42,0xbb,0x35,0x9d,0xb,0x47,0xc,0xe0,0x9c,0x43,0x4d,0x11,0x15,0x4c,0x95,0x67,0xa5,0xe7,0x58,0xdc,0x8f,0x61,0x18,0xaa,0x82,0xa9,0xc4,0xbb,0x6b,0x4b,0x70,0xe8,0x9c,0x43,0x45,0x30,0x8b,0x88,0x32,0x61,0x71,0x6e,0x9,0x33,0x8b,0x97,0xaa,0x22,0xaa,0xa8,0xa,0xa2,0xda,0x4a,0x50,0x4b,0x0,0xab,0xce,0x35,0x51,0x5c,0xec,0xa0,0x12,0xee,0xb,0x73,0x4f,0x23,0xfc,0xb0,0x82,0xd6,0x14,0x14,0x87,0xb,0x39,0x58,0xf1,0x86,0x6,0x86,0xa7,0x72,0xb9,0xdc,0xdb,0x8b,0xf9,0x4b,0xf8,0xbe,0x8f,0x47,0x22,0xfa,0xe0,0x6d,0x8c,0x79,0x5e,0x4c,0xa6,0xa1,0x64,0xb3,0x59,0x76,0xaa,0x65,0x7c,0xdf,0x7f,0x90,0xdc,0x3f,0xf8,0xb3,0x7a,0xbe,0xab,0xfb,0x42,0x3a,0x9d,0x9e,0xcc,0x74,0x67,0x68,0x48,0x23,0xea,0x33,0x42,0x8e,0x26,0x61,0x9e,0xe0,0x25,0x3d,0x7a,0x32,0x3d,0xd4,0x4f,0xea,0xec,0xed,0x55,0xdf,0xac,0x6f,0xae,0xbd,0x6e,0x69,0xa1,0xf4,0xbb,0xbc,0x9d,0xec,0xc9,0x64,0x8b,0xf9,0x7c,0x1e,0x2f,0x91,0xf8,0xaf,0xb4,0xb6,0x69,0x98,0x2a,0x3b,0x95,0x1d,0x8e,0x6a,0xfe,0x32,0x50,0x6a,0xf7,0x39,0x2b,0xe7,0x49,0xa0,0x70,0x46,0xce,0x65,0xe0,0xfd,0x59,0x39,0xff,0x3,0xf4,0x94,0x88,0x15,0xb6,0xb0,0x66,0x34,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x39,0xdb,0x30,0xb9,0x4d,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,0xbb,0x49,0x44,0x41,0x54,0x38,0x8d,0xad,0x93,0x3d,0xe,0x82,0x40,0x10,0x85,0x1f,0x64,0x8a,0x49,0x24,0x56,0x54,0x3b,0x57,0xd0,0x78,0xf,0x63,0x3c,0x8e,0xbf,0x7,0x50,0x44,0x8e,0x9,0x15,0x8d,0xd,0x4e,0x31,0xc9,0x5a,0x61,0xa1,0x22,0x2c,0xfa,0x92,0xa9,0x36,0xdf,0xb7,0x6f,0x93,0x9d,0x68,0x3e,0x5b,0xb0,0x38,0x69,0x88,0x28,0x42,0x40,0xcc,0xcc,0x97,0x55,0x39,0x21,0x71,0x72,0x57,0x55,0xa8,0x6a,0x8,0xf,0x66,0x8e,0xc4,0x49,0x13,0x13,0x51,0x30,0xc,0x0,0xaa,0xa,0x22,0x42,0x1c,0x4c,0xbe,0xa4,0x57,0x90,0x17,0x19,0xf2,0x22,0xeb,0x3c,0xa7,0x6f,0xf0,0xe5,0x7a,0x86,0xf7,0x7e,0x5c,0x83,0x2c,0x3f,0xf5,0x95,0xeb,0x6e,0xd0,0xc2,0x7d,0xb7,0x77,0xa,0x86,0x80,0x6d,0x3e,0x3e,0x61,0xb7,0x39,0xfc,0x26,0x68,0x25,0xde,0xfb,0xe7,0x4,0xb,0x0,0x60,0xbf,0x3d,0xf6,0xa,0xa2,0xd5,0x72,0xed,0xeb,0xba,0x1e,0xd2,0xf6,0x2d,0x69,0x9a,0xfe,0xe1,0x27,0x9a,0x19,0x98,0x39,0x18,0x64,0x66,0x98,0x19,0xa8,0xac,0xca,0xa9,0x38,0xb9,0x25,0x49,0x32,0x66,0x9d,0xe5,0x1,0x80,0xd0,0x51,0x2e,0x9,0x63,0x6e,0xe0,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x30,0x0,0x2d,0x0,0x31,0x39,0x29,0xd6,0x70,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,0xdd,0x9,0x17,0xe,0x16,0x30,0x92,0x75,0x0,0x77,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,0x5a,0x49,0x44,0x41,0x54,0x38,0xcb,0x5d,0x93,0x5d,0x4b,0x94,0x51,0x10,0xc7,0x7f,0xcf,0xb3,0x5b,0xbe,0x90,0xee,0x9a,0xa1,0xd5,0x96,0x18,0x44,0x96,0xac,0xf8,0x6,0x46,0x75,0x13,0x74,0xd3,0x47,0x8,0xaf,0x25,0xd8,0xc4,0xb,0x8d,0x2e,0xa,0xaf,0xca,0x30,0xa9,0xee,0x2,0x3f,0x41,0xdf,0xa1,0x2f,0x10,0x51,0xa0,0x10,0x8a,0x28,0x44,0xf8,0xd2,0xd2,0xea,0x52,0xeb,0xfa,0xa8,0xed,0xee,0x73,0x66,0xa6,0x8b,0x67,0x5d,0x57,0x7,0xe,0x7,0xe6,0xcc,0xfc,0x67,0xe6,0x3f,0xe7,0xef,0x51,0x67,0xbd,0x3d,0xe9,0x87,0x40,0x6,0x18,0x6,0x52,0x9c,0xb4,0x2c,0xb0,0x0,0xcc,0xaf,0xac,0x2d,0x7f,0x3a,0x72,0x7a,0xd5,0xc4,0x4,0x30,0x7b,0xb5,0xab,0x3b,0x33,0xd4,0x3f,0x44,0x5b,0xa2,0x8d,0xb3,0xd,0xd,0xa8,0x1a,0x0,0xbe,0xef,0x51,0x29,0x97,0x29,0x14,0xb,0x2c,0x7e,0x5f,0x64,0x6b,0x73,0x7d,0x1e,0x78,0xbe,0xb2,0xb6,0x5c,0x8c,0x57,0x81,0x66,0xee,0xdc,0xbe,0x97,0xb9,0x7e,0xed,0x26,0xdb,0xdb,0x79,0xfe,0xee,0x6c,0x50,0x2a,0x85,0x27,0xca,0x37,0x36,0x9e,0xa1,0xa9,0xb9,0x99,0xfb,0x77,0x1f,0xf0,0xe3,0xd2,0x6a,0xe6,0xcb,0xd7,0xcf,0x2,0x4c,0xc4,0x7a,0x7b,0xd2,0xa3,0x5d,0x5d,0xdd,0x73,0xb7,0x6e,0xa4,0xd9,0xf8,0xb9,0xc5,0xc1,0xfe,0x1,0xa1,0xb,0x31,0x14,0x33,0xc3,0xcc,0x0,0xc3,0x85,0x8e,0xc3,0x7f,0x87,0x14,0xb,0x7b,0xa4,0xae,0xa4,0x8,0xf6,0xf7,0x46,0x1a,0xce,0x36,0xac,0xfa,0x40,0x66,0xa0,0x6f,0x90,0x5c,0x36,0x4f,0xa9,0x5c,0x42,0x4c,0x50,0x55,0x54,0x14,0x35,0x61,0x7c,0x6a,0x8c,0x27,0x93,0x63,0x91,0x5f,0x94,0x52,0xb9,0x44,0x2e,0x9b,0x67,0xb0,0x7f,0x18,0x20,0xe3,0x3,0x7d,0x22,0x42,0x10,0x4,0xa8,0xa,0x2a,0x82,0xba,0x8,0x64,0x62,0xea,0x31,0x98,0x81,0x19,0x4e,0xa4,0xfa,0xae,0x4,0xc1,0x1e,0x22,0x2,0x30,0x10,0x7,0x12,0xa1,0x38,0xc4,0x1c,0x44,0xdd,0x82,0x67,0x4c,0x3e,0x1b,0xaf,0xb5,0xf,0x1e,0xa6,0xe,0x39,0xe2,0xdd,0x8c,0x50,0x1c,0x40,0x22,0xe,0x20,0x61,0x5,0x51,0xc1,0xd3,0x28,0xfc,0xe9,0x8b,0x9,0x22,0xfe,0xa3,0xea,0x0,0xaa,0x5a,0x23,0xd4,0xaa,0x39,0x0,0x71,0x80,0x8a,0x73,0x88,0x8,0x3e,0xa0,0x80,0x99,0xe1,0x55,0x3,0xa3,0x9a,0xd1,0x8,0xf5,0x56,0x71,0x2e,0x5a,0x31,0x80,0xb,0x43,0xd4,0x4,0xa7,0xe,0x53,0x61,0x6e,0xe6,0xfd,0xf1,0x6,0xcc,0x50,0x33,0x54,0x1d,0xa6,0xae,0x76,0xbb,0x30,0xac,0x1,0x14,0x43,0xe7,0x50,0x11,0xcc,0x4,0xad,0x9e,0xd9,0x57,0xef,0xa0,0x6e,0x8d,0xaa,0x8a,0xa8,0xa2,0x2a,0x88,0x2a,0x61,0xd4,0xc1,0xbe,0xf,0x2c,0xb9,0xb0,0x82,0x10,0xe2,0x44,0x10,0x71,0x88,0x8b,0xee,0xd7,0x2f,0xdf,0x60,0x44,0x20,0x22,0xe,0xd1,0x68,0x54,0x21,0xc4,0x45,0x1c,0x2c,0x78,0xbd,0x3d,0xe9,0xd1,0xf3,0xed,0xed,0x1f,0x2f,0x77,0xa4,0xd8,0xdd,0x2d,0xe0,0x11,0xab,0x7e,0xf0,0x3a,0xc6,0x3c,0xaf,0x46,0xa6,0x21,0x24,0x93,0x6d,0x64,0x73,0x5b,0x14,0xa,0x85,0x47,0xb1,0xfc,0x9f,0x9d,0xa5,0x73,0xcd,0x2d,0x17,0x1a,0x9b,0x9b,0x46,0x5a,0x5b,0x12,0x94,0x5d,0x29,0x9a,0x53,0xc,0x43,0x11,0x34,0x1a,0xc5,0x13,0xbc,0x98,0x47,0xa2,0x35,0x49,0x70,0x18,0xb0,0xbd,0x9d,0xfb,0xb0,0xb2,0xb6,0xfc,0xf6,0x48,0xb,0xd3,0x9b,0x9b,0xeb,0xb1,0x64,0xa2,0x2d,0xd3,0xd1,0xd9,0x89,0xef,0xfb,0xc7,0x4a,0xab,0xdb,0x86,0xaa,0x92,0xfd,0xfd,0x8b,0xdd,0x62,0x61,0x1e,0x98,0xae,0x8f,0x39,0x2d,0xe7,0x11,0xe0,0xe2,0x29,0x39,0xe7,0x80,0x6f,0xa7,0xe5,0xfc,0x1f,0xa8,0xd,0x8b,0xe8,0xd0,0x6f,0x71,0x8b,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x35,0xd2,0x86,0xf5,0x66,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,0xc3,0x49,0x44,0x41,0x54,0x38,0x8d,0x9d,0x93,0x4d,0xa,0x83,0x30,0x10,0x85,0x5f,0xc4,0xa1,0x10,0xa1,0xde,0xa0,0xb,0x73,0x8c,0x52,0x7a,0x2d,0xa9,0x68,0x5d,0xb4,0xf6,0xef,0x8c,0xf1,0x12,0xc5,0xb4,0x30,0x8b,0xe9,0x4e,0x8a,0x68,0x34,0xbe,0x6d,0x78,0xdf,0xbc,0x99,0x47,0xd4,0x61,0x7f,0xdc,0x98,0xcc,0x7c,0x88,0x48,0x21,0x40,0xcc,0x2c,0xb6,0xb5,0xdb,0xd8,0x64,0xe6,0xeb,0x9c,0x43,0xe7,0x5c,0x88,0x1f,0x89,0xd6,0xca,0x64,0xe6,0x1d,0x11,0x51,0xb0,0x19,0x0,0x3a,0xe7,0x40,0x44,0x88,0x82,0x9d,0x3,0xcd,0x2,0xaa,0xba,0x40,0x55,0x17,0x93,0xef,0xb1,0xcf,0x5c,0x9e,0x4f,0x10,0x11,0xef,0x80,0x49,0x40,0x51,0xe6,0x10,0x11,0x88,0x8,0x94,0x9a,0x2e,0x68,0x14,0x50,0x94,0x39,0x0,0xf4,0x80,0xe0,0x4,0x43,0x93,0xf,0x32,0x7a,0xc4,0xe6,0xf2,0xe8,0xa7,0xcf,0xa5,0x98,0x6c,0xe1,0x76,0x7d,0x2e,0x5a,0xc1,0x5b,0xe3,0xbd,0x79,0x1,0xf0,0xaf,0xe0,0xad,0xf1,0x1f,0xb2,0x2a,0xc1,0x12,0x45,0xcc,0x8c,0x44,0xeb,0x60,0x63,0xa2,0x35,0x98,0x19,0xb1,0x6d,0xad,0x36,0x99,0xe9,0xd2,0x34,0x5d,0xf3,0x9d,0x77,0x3f,0xd3,0x69,0x5f,0xde,0x59,0x55,0x4f,0x95,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x30,0x0,0x2d,0x0,0x31,0x39,0x29,0xd6,0x70,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,0xdd,0x9,0x17,0xe,0x16,0x14,0xae,0x76,0xe4,0xa6,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,0x43,0x49,0x44,0x41,0x54,0x38,0xcb,0x5d,0x93,0xdf,0x4a,0x54,0x51,0x14,0x87,0xbf,0x73,0x46,0x9d,0xcc,0xd1,0x41,0x26,0x6a,0x34,0x8,0x15,0xb,0x2d,0xd,0xa9,0x10,0xba,0xe9,0xba,0x47,0x8,0xdf,0x60,0x2e,0xa2,0x82,0x90,0xb4,0x29,0x85,0x84,0x88,0x6e,0x3,0x9f,0xa0,0x77,0xe8,0x19,0x2,0x23,0x32,0x28,0x42,0xd4,0xac,0x6c,0x74,0xc6,0xd4,0xe3,0x8c,0x36,0x33,0x7b,0xad,0xd5,0xc5,0x3e,0xf3,0x27,0x37,0x1c,0x38,0xac,0xb3,0xd7,0xf7,0xfb,0xad,0xb5,0xce,0xa,0x68,0x3b,0x23,0x43,0xa3,0x77,0x81,0x1c,0x70,0x13,0xb8,0xc8,0xff,0xe7,0x17,0xb0,0x2,0x2c,0xaf,0x6f,0xae,0xbd,0x6b,0x4,0x83,0x38,0x31,0xd,0xbc,0xcc,0x66,0x7,0x73,0x13,0xe3,0x93,0xf4,0xa7,0xfb,0xe9,0x4a,0x26,0x51,0x31,0x0,0xc2,0x44,0x40,0xad,0x5a,0x65,0xff,0x70,0x9f,0xcf,0x5f,0x56,0x29,0x14,0xb6,0x97,0x81,0xb9,0xf5,0xcd,0xb5,0xc3,0x8e,0x18,0xb4,0x34,0x75,0xfd,0x46,0x6e,0xf8,0xd2,0x15,0x8a,0xc5,0x22,0x1b,0x7b,0x5b,0x54,0xab,0xf5,0xff,0xe4,0x93,0xc9,0x4e,0xce,0x74,0x77,0x73,0xfb,0xd6,0x1d,0x36,0xb6,0xbe,0xe5,0x3e,0x7e,0xfa,0x20,0xc0,0xfd,0xc4,0xc8,0xd0,0xe8,0xcc,0x40,0x76,0xf0,0xd5,0xe5,0xe1,0x31,0x7e,0x7c,0xff,0xc9,0x71,0xe5,0x98,0xba,0x38,0xc,0xc3,0xc,0xcc,0xc,0x30,0x5c,0x5d,0x38,0xf9,0x7b,0x42,0x74,0x10,0x31,0x30,0x30,0x48,0xb9,0x12,0x4d,0x77,0x76,0x76,0x7d,0xd,0x81,0xdc,0xd5,0xb1,0x9,0x76,0xb,0x25,0xaa,0xb5,0x2a,0x62,0x82,0xaa,0x32,0xfb,0xf4,0x21,0xb3,0xf9,0x7,0xa8,0x9,0xa2,0xe2,0xe3,0xa2,0x54,0x6b,0x55,0x76,0xb,0x25,0xae,0x8d,0x4f,0x2,0xe4,0x42,0x60,0x52,0x44,0x28,0x57,0xca,0xa8,0x9,0xaa,0x82,0x8a,0x80,0x1,0x66,0x3c,0xc9,0x3f,0x42,0xd5,0x43,0x34,0x86,0x97,0x2b,0x47,0x88,0x8,0xc0,0x54,0x8,0xa4,0x9d,0xb8,0xe6,0x47,0x15,0x45,0x4d,0x30,0x53,0x5f,0x2,0xc6,0xdc,0xf3,0xc7,0x98,0xc6,0xf0,0x58,0xc4,0x89,0x3,0x48,0x87,0x0,0xe2,0xea,0x5e,0x41,0x62,0x25,0x55,0x6f,0x0,0xc3,0xcc,0x3f,0xf3,0xb,0xb3,0x5e,0x40,0x5,0x31,0x45,0x9c,0x6f,0x72,0x7,0x40,0xdd,0x39,0x54,0x85,0x0,0xef,0xbc,0x61,0xdf,0x9a,0xb3,0xf6,0xef,0xa2,0xd2,0x9c,0x4a,0xdd,0xb9,0x16,0xc0,0x39,0x87,0x9a,0x82,0x19,0x41,0x7c,0xbd,0x95,0xee,0x79,0x8b,0xf9,0xa5,0xa6,0x40,0x10,0xe7,0x34,0x0,0x87,0xce,0xb9,0xb4,0x8a,0x10,0x4,0x86,0x35,0x0,0xd6,0x2,0x2c,0xe4,0x5f,0xd0,0xe2,0x79,0x44,0xc,0x28,0x87,0xc0,0xaa,0x73,0x75,0x14,0x87,0xc4,0x35,0xaa,0xa8,0xaf,0x1d,0xe3,0xd9,0xfc,0xa2,0x8f,0xb5,0x4d,0x41,0x71,0x38,0xdf,0x83,0x95,0x60,0x64,0x68,0x74,0x26,0x9d,0x4e,0xbf,0x3d,0x9f,0xb9,0x40,0x14,0x45,0x4,0x84,0xf1,0xf,0xde,0x2e,0x18,0x40,0xec,0xc8,0x50,0xfa,0xfa,0xfa,0xd8,0x29,0x15,0x88,0xa2,0xe8,0x5e,0x62,0xff,0xe0,0xcf,0xea,0xd9,0xee,0x9e,0x73,0xc9,0x64,0x72,0x3a,0xd5,0x93,0xa2,0x26,0x35,0x54,0x5,0x53,0xef,0x40,0x31,0xdf,0xd0,0x40,0x8,0x12,0x1,0xbd,0xa9,0x5e,0x2a,0x27,0x15,0xf6,0xf6,0x4a,0x6f,0xd6,0x37,0xd7,0x5e,0x37,0x76,0x21,0xff,0xbb,0xb0,0x9d,0xe8,0x4d,0xf5,0xe5,0x32,0x99,0xc,0x41,0x18,0xb6,0x36,0x8d,0x56,0xf9,0xa6,0xca,0x4e,0x71,0x87,0xa3,0x72,0xb4,0xc,0xe4,0xdb,0xef,0x9c,0x5e,0xe7,0x69,0x20,0x7b,0x6a,0x9d,0xb,0xc0,0xfb,0xd3,0xeb,0xfc,0xf,0xed,0x2d,0x85,0x24,0xfc,0x1,0xe2,0x46,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x31,0xd5,0xeb,0x31,0x7f,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,0xbb,0x49,0x44,0x41,0x54,0x38,0x8d,0xad,0x93,0x3d,0xe,0x82,0x40,0x10,0x85,0x1f,0x64,0x8a,0x49,0x24,0x56,0x54,0x3b,0x57,0xd0,0x78,0xf,0x63,0x3c,0x8e,0xbf,0x7,0x50,0x44,0x8e,0x9,0x15,0x8d,0xd,0x4e,0x31,0x61,0xad,0xb0,0x30,0x82,0x2c,0xf1,0x25,0x9b,0x6c,0xf1,0xbe,0x97,0x37,0x99,0xdd,0x68,0xb9,0x58,0xb1,0x38,0x69,0x88,0x28,0x42,0x80,0xcc,0xcc,0x97,0x55,0x39,0x23,0x71,0xf2,0x54,0x55,0xa8,0x6a,0x8,0xf,0x66,0x8e,0xc4,0x49,0x13,0x13,0x51,0x30,0xc,0x0,0xaa,0xa,0x22,0x42,0x1c,0x4c,0x7e,0xa8,0x37,0x20,0x2f,0x32,0xe4,0x45,0x36,0x3d,0x0,0x0,0xbc,0xf7,0xb8,0xdd,0xaf,0xd3,0x2,0xda,0xb6,0x7d,0xdf,0x87,0x42,0x7e,0x36,0xe8,0x4e,0x96,0x5f,0xbe,0x7a,0x68,0x8,0x1e,0xa3,0xd1,0x5b,0x38,0xec,0x4e,0xd3,0x1b,0x1c,0xf7,0xe7,0xf0,0x6,0xdd,0xec,0x43,0x30,0x0,0x44,0x9b,0xf5,0xd6,0xd7,0x75,0x3d,0x68,0xea,0x53,0x9a,0xa6,0x7f,0x78,0x89,0x66,0x6,0x66,0xe,0x6,0x99,0x19,0x66,0x6,0x2a,0xab,0x72,0x2e,0x4e,0x1e,0x49,0x92,0x4c,0xf9,0xce,0xf2,0x2,0x3d,0xd2,0x54,0x2c,0x85,0x2c,0xaa,0x56,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x30,0x0,0x2d,0x0,0x31,0x39,0x29,0xd6,0x70,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,0xdd,0x9,0x17,0xe,0x17,0x3,0x34,0xbe,0x50,0x20,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,0x58,0x49,0x44,0x41,0x54,0x38,0xcb,0x5d,0x93,0x5d,0x4b,0x54,0x51,0x14,0x86,0x9f,0x73,0xc6,0x1c,0x1d,0xd2,0xd1,0xc,0xad,0x2c,0x31,0x88,0x2c,0x51,0xfc,0x2,0xa3,0x8f,0x8b,0xa0,0x9b,0x7e,0x42,0x78,0x5d,0xd1,0x20,0x46,0x49,0x4,0x81,0x57,0x91,0x7d,0x49,0x5d,0x5,0xfe,0x82,0xfe,0x43,0x7f,0x20,0xa2,0x40,0x21,0x14,0x51,0x88,0xf0,0xa3,0xa1,0xd1,0xa1,0xc6,0xf1,0xa8,0xcd,0xcc,0xd9,0x6b,0xad,0x2e,0xce,0xcc,0x38,0xba,0x6f,0x36,0xac,0xbd,0xde,0xf7,0x5d,0x6b,0xed,0xf5,0x7a,0xd4,0x9c,0xde,0x9e,0xbe,0xdb,0x40,0xa,0x18,0x1,0x3a,0x39,0x7c,0xd2,0xc0,0x1c,0x30,0xbb,0xb4,0xb2,0xf8,0xa9,0x12,0xf4,0xca,0xc0,0x24,0xf0,0xea,0x5c,0x57,0x77,0x6a,0x78,0x60,0x98,0xd6,0x64,0x2b,0xf5,0xf1,0x38,0xaa,0x6,0x80,0xef,0x7b,0x94,0x8a,0x45,0x72,0xf9,0x1c,0xf3,0xdf,0xe7,0xd9,0x58,0x5f,0x9d,0x5,0x9e,0x2d,0xad,0x2c,0xe6,0xeb,0xca,0x44,0x2f,0xae,0x5e,0xb9,0x9e,0xba,0x70,0xfe,0x12,0x9b,0x9b,0x59,0xfe,0x6e,0xad,0x51,0x28,0x84,0x87,0xe4,0x1b,0x1a,0x8e,0xd1,0x98,0x48,0x70,0xf3,0xda,0x2d,0x7e,0x9c,0x5e,0x4e,0x7d,0xf9,0xfa,0x59,0x80,0x89,0x58,0x6f,0x4f,0xdf,0x58,0x57,0x57,0xf7,0x9b,0xcb,0x17,0xfb,0x58,0xfb,0xb9,0xc1,0xde,0xee,0x1e,0xa1,0xb,0x31,0x14,0x33,0xc3,0xcc,0x0,0xc3,0x85,0x8e,0xfd,0x7f,0xfb,0xe4,0x73,0x3b,0x74,0x9e,0xed,0x24,0xd8,0xdd,0x19,0x8d,0xd7,0xc7,0x97,0x7d,0x20,0x35,0xd8,0x3f,0x44,0x26,0x9d,0xa5,0x50,0x2c,0x20,0x26,0xa8,0x2a,0xe3,0x8f,0xef,0x31,0x3e,0x79,0x17,0x35,0x41,0x54,0xa2,0xb8,0x28,0x85,0x62,0x81,0x4c,0x3a,0xcb,0xd0,0xc0,0x8,0x40,0xca,0x7,0xfa,0x45,0x84,0x20,0x8,0x50,0x15,0x54,0x4,0x75,0x2,0x66,0x60,0xc6,0xc4,0xe4,0x7d,0x54,0x4,0x27,0x52,0x7e,0x57,0x82,0x60,0x7,0x11,0x1,0x18,0xf4,0x81,0x64,0x28,0xe,0x31,0x17,0x29,0x89,0x20,0xe6,0x30,0xab,0xb4,0xa0,0x3c,0x7c,0xf2,0x0,0x53,0x87,0x68,0x25,0xcf,0x11,0x8a,0x3,0x48,0xfa,0x0,0x12,0x96,0x10,0x8d,0x94,0x45,0xa2,0x16,0xa2,0xce,0xad,0x3a,0x87,0x47,0x4f,0xc7,0x51,0x55,0x54,0x5,0x31,0x45,0xc2,0x12,0x0,0x75,0x0,0x25,0xe7,0x10,0x11,0x7c,0x40,0x1,0x4,0x30,0xc3,0xaa,0x7f,0x6d,0x98,0x81,0x8b,0xca,0xa6,0x82,0xa9,0x12,0xb8,0x30,0x44,0x4d,0x50,0x33,0xbc,0x28,0x3d,0x52,0x2e,0x2f,0x8a,0x2,0x6f,0xa7,0xdf,0xe3,0x41,0x35,0xe6,0xc2,0xb0,0x4a,0x90,0xf,0x9d,0x4b,0xaa,0x8,0x9e,0x67,0x58,0xd,0x1,0x65,0xc0,0xeb,0xe9,0x77,0x54,0xcb,0x29,0x53,0x84,0x51,0x5,0xbb,0x75,0xc0,0x82,0xb,0x4b,0x37,0x84,0x10,0xc4,0x8b,0x54,0x8c,0x88,0xc0,0x33,0x5e,0x3e,0x9f,0xa9,0xc5,0x45,0x77,0xcc,0x70,0xd1,0xc,0xe6,0xbc,0xde,0x9e,0xbe,0xb1,0x13,0x6d,0x6d,0x1f,0xcf,0xb4,0x77,0xb2,0xbd,0x9d,0xc3,0x23,0x56,0x5e,0xf0,0x5a,0x41,0x2f,0x62,0x5,0xc,0xa1,0xa5,0xa5,0x95,0x74,0x66,0x83,0x5c,0x2e,0x77,0x27,0x96,0xfd,0xb3,0xb5,0x70,0x3c,0xd1,0x74,0xb2,0x21,0xd1,0x38,0xda,0xdc,0x94,0xa4,0xe8,0xa,0xa8,0x3a,0x4c,0xc,0x43,0x11,0x34,0x1a,0xa8,0x27,0x78,0x31,0x8f,0x64,0x73,0xb,0xc1,0x7e,0xc0,0xe6,0x66,0xe6,0xc3,0xd2,0xca,0xe2,0x4c,0xc5,0xb,0x53,0xeb,0xeb,0xab,0xb1,0x96,0x64,0x6b,0xaa,0xbd,0xa3,0x3,0xdf,0xf7,0xf,0x9c,0xc6,0x41,0xfb,0xaa,0x4a,0xfa,0xf7,0x2f,0xb6,0xf3,0xb9,0x59,0x60,0xaa,0x36,0xe7,0xa8,0x9d,0x47,0x81,0x53,0x47,0xec,0x9c,0x1,0xbe,0x1d,0xb5,0xf3,0x7f,0xe9,0x95,0x7b,0x78,0x8a,0x5f,0xe7,0x67,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x2c,0xb6,0xed,0x5d,0xa6,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,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xa5,0x93,0x4d,0xa,0xc2,0x30,0x10,0x85,0x5f,0xa5,0x83,0x90,0x82,0xbd,0x81,0x8b,0xe4,0x18,0x22,0x5e,0x4b,0xad,0xad,0xdd,0x68,0xfd,0xbb,0x62,0x7a,0x9,0x69,0x14,0x6,0x32,0xae,0x4,0x91,0xb6,0x92,0xf8,0x56,0xb3,0x98,0xef,0xe3,0x2d,0x66,0x92,0xe5,0x62,0x35,0x35,0xda,0x3c,0x88,0x28,0x41,0x40,0x98,0x59,0x6c,0x6b,0x67,0xa9,0xd1,0xe6,0xe9,0x9c,0x43,0xe7,0x5c,0x8,0x8f,0x4c,0xa9,0xc4,0x68,0x73,0x9f,0x10,0x51,0x30,0xc,0x0,0x9d,0x73,0x20,0x22,0x4c,0x82,0xc9,0xaf,0xc,0xa,0xaa,0xba,0x40,0x55,0x17,0xf1,0x2,0x11,0x81,0x88,0xa0,0xdc,0x6f,0xe3,0x4,0xde,0x7b,0x88,0x8,0xbc,0xf7,0xd8,0x55,0x9b,0x70,0xc1,0x67,0xb,0x11,0x41,0x51,0xae,0x7b,0x77,0xd2,0x31,0xb8,0x6f,0x8e,0x12,0x0,0x40,0x73,0xb8,0xc4,0xb,0x4e,0xc7,0x6b,0x7c,0x83,0x73,0x73,0x1b,0x84,0x47,0x5,0xbf,0xc0,0x77,0xfe,0xbf,0x44,0x66,0x46,0xa6,0x54,0x30,0x98,0x29,0x5,0x66,0x46,0x6a,0x5b,0xab,0x8c,0x36,0x5d,0x9e,0xe7,0x31,0xef,0x3c,0x7f,0x1,0x85,0xa9,0x5c,0xe7,0x16,0x3f,0x9a,0xd3,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x11,0x1f,0x28,0xa9,0x94,0x8f,0x29,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,0x86,0x49,0x44,0x41,0x54,0x38,0xcb,0x9d,0x93,0x4d,0x4a,0x9c,0x41,0x10,0x86,0x9f,0xfe,0x66,0x14,0x25,0x28,0x38,0x9b,0x19,0x98,0x95,0xe4,0xe,0x9,0x28,0x62,0xc8,0x15,0xb2,0x71,0x21,0xc,0x82,0xb,0x17,0x5e,0x41,0xb2,0xcd,0x35,0x2,0x6e,0x73,0x85,0x10,0x97,0x1e,0x42,0x5c,0x9,0x8a,0x38,0x9,0x51,0xfb,0xaf,0xba,0xba,0x5d,0x38,0x33,0xfd,0xe9,0x28,0x82,0xb5,0xe9,0xa6,0xba,0xde,0xa7,0xba,0xab,0xaa,0xcd,0xb0,0x3f,0xf8,0x4,0x9c,0xf2,0x3e,0xfb,0x6c,0x86,0xfd,0x41,0xf9,0xb8,0xbe,0xce,0xd7,0xed,0x2f,0xac,0xae,0xac,0x0,0x6,0x4a,0x1,0xf3,0x2c,0xb4,0x0,0xc6,0x0,0x85,0xff,0xb7,0xb7,0xfc,0x3e,0xf9,0xc3,0xd9,0xf9,0x39,0x5d,0x80,0xad,0x8d,0x4d,0x0,0x6e,0xae,0x6f,0xa6,0x91,0xad,0x95,0x39,0xdf,0xc2,0xd2,0x22,0x5b,0x1b,0x9b,0x15,0xd0,0x5b,0x5b,0xe3,0xef,0x78,0x4c,0x8c,0xa1,0x66,0x2f,0x4f,0xe5,0x55,0x6f,0x30,0xd,0xf4,0x7a,0x3d,0x80,0x47,0x80,0x6a,0x26,0x6b,0x26,0xe7,0xdc,0x52,0xbc,0xf0,0x4,0x80,0x52,0xc8,0x9a,0x51,0xcd,0x15,0x90,0x92,0x90,0x54,0xc9,0xaa,0x4f,0xb4,0xdf,0x46,0xbb,0x0,0xfc,0xfa,0x79,0x3c,0xf3,0x19,0x20,0xa9,0x92,0x92,0x0,0xd0,0x0,0x4,0x1f,0x90,0x18,0x89,0x31,0x22,0x22,0x88,0xc8,0x4c,0x3c,0x5,0x4d,0xfd,0x31,0x46,0x24,0x46,0x82,0xf,0x15,0xe0,0x83,0x27,0x84,0x40,0x98,0x1c,0xec,0xec,0xef,0xcd,0xbd,0x60,0x67,0x7f,0x8f,0xe0,0x27,0x31,0x21,0xe0,0x83,0xaf,0x0,0xeb,0x2c,0xce,0x39,0x9c,0x73,0x8c,0xe,0xf,0x5e,0x6d,0xfa,0xe8,0xf0,0x60,0x16,0x67,0x9d,0xad,0x35,0x70,0x77,0x16,0xe7,0x2c,0x22,0xe9,0xcd,0xc9,0xf1,0xde,0xa3,0x9a,0xe8,0x74,0x3a,0x15,0x60,0xbd,0xc3,0xfb,0x80,0x24,0xe1,0xc7,0xd1,0x77,0xda,0x5d,0x7b,0xbe,0x7f,0xec,0xda,0x2,0x4d,0xb7,0xdb,0x2,0x58,0x87,0x8f,0x81,0xd4,0xbe,0x81,0x79,0xa5,0x8d,0x80,0xe6,0xc,0xb6,0xa9,0x0,0xef,0x3c,0x51,0x22,0x9a,0xf4,0xe5,0x19,0x68,0x9b,0x81,0x5c,0x32,0x14,0xd3,0xaa,0x41,0xc,0x24,0x91,0x3a,0x48,0x6f,0x58,0x93,0x33,0x3a,0x49,0xd4,0x5,0xb8,0xbc,0xbe,0xe2,0xc3,0xd2,0x32,0xa5,0x9d,0xbe,0xcc,0x67,0xae,0x5b,0xc3,0xfd,0xbf,0x71,0xad,0xcf,0xb0,0x3f,0x78,0xd7,0x5f,0xbe,0xb8,0xba,0xe4,0x1,0xf0,0xd2,0xea,0x35,0xc0,0x6a,0x26,0xd2,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x26,0x56,0x38,0xb4,0xb8,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,0x9a,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x93,0x31,0xa,0xc3,0x30,0xc,0x45,0xbf,0x83,0x6,0x41,0x4d,0x27,0x4f,0xd6,0x15,0x5a,0x7a,0x8f,0x52,0x7a,0xaf,0x10,0x72,0x4c,0x67,0xf2,0xd2,0x25,0xd5,0x20,0x48,0xd7,0x92,0xba,0xa1,0x76,0x29,0xf4,0xaf,0xe2,0x3d,0x81,0xd0,0x77,0xc7,0xc3,0x89,0x25,0xca,0x4c,0x44,0xe,0x15,0x31,0xb3,0x25,0x4d,0x69,0x47,0x12,0xe5,0xae,0xaa,0x50,0xd5,0x1a,0x1e,0xcc,0xec,0x24,0xca,0xdc,0x11,0x51,0x35,0xc,0x0,0xaa,0xa,0x22,0x42,0x57,0x4d,0xae,0xf2,0x5b,0xc1,0x30,0xf6,0x18,0xc6,0xbe,0x4d,0xf0,0xc,0x6e,0x49,0x8a,0x82,0x12,0xf0,0x4e,0xf2,0x22,0xd8,0xda,0x56,0x9a,0x7d,0x7d,0x44,0x77,0x39,0x5f,0x97,0x9c,0x73,0x13,0x1c,0x42,0xf8,0xf7,0x3f,0xf8,0x48,0x60,0x66,0x60,0xe6,0x6a,0x90,0x99,0x61,0x66,0xa0,0x34,0xa5,0xbd,0x44,0xb9,0x79,0xef,0x5b,0xea,0x2c,0xf,0x4,0x76,0x39,0xf7,0xc5,0x49,0xf5,0x9f,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x11,0x20,0x2,0x2a,0xf1,0x6c,0xc3,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,0x86,0x49,0x44,0x41,0x54,0x38,0xcb,0x9d,0x93,0xbf,0x4e,0x1b,0x41,0x10,0x87,0xbf,0xbd,0x9c,0x51,0x64,0xc9,0x91,0x70,0x6b,0x17,0xee,0x20,0x2f,0x40,0x5a,0xb,0x9,0xa5,0x4b,0x43,0x81,0x64,0x51,0x50,0x50,0xf0,0x14,0x88,0x3a,0xf,0x82,0x94,0x36,0x1d,0xf2,0x13,0xe4,0x9,0x12,0x3a,0xa4,0x80,0x28,0x90,0x89,0x14,0xeb,0xf6,0xff,0xec,0x52,0x18,0xb3,0x67,0xc,0x42,0x62,0x9a,0x5b,0x8d,0x7e,0xbf,0x6f,0x76,0x76,0xe6,0xd4,0x68,0x30,0xdc,0x1,0x7e,0xf1,0xbe,0xf8,0xa2,0x46,0x83,0x61,0xfe,0xbc,0xb5,0xcd,0xd7,0xbd,0x3d,0x3e,0xf5,0x7a,0x80,0x82,0x9c,0x41,0x3d,0x93,0x66,0x40,0x29,0x20,0xf3,0x7f,0x3e,0xe7,0x62,0x3a,0xe5,0xf7,0xe5,0x1f,0x6a,0x80,0xdd,0xf1,0x18,0x80,0xd9,0xdd,0x6c,0xa9,0x6c,0x7d,0x59,0xcb,0x75,0x3e,0x6e,0xb0,0x3b,0x1e,0x17,0x40,0x7f,0x73,0x93,0x7f,0xf7,0xf7,0x78,0xef,0x4a,0xf5,0xbc,0x6a,0x2f,0x7e,0x85,0xaa,0xa0,0xdf,0xef,0x3,0x2c,0x0,0x22,0x89,0x24,0x89,0x94,0x52,0xcb,0xf1,0x42,0xb,0x0,0x39,0x93,0x24,0x21,0x92,0xa,0x20,0xc6,0x40,0x14,0x21,0x89,0xac,0x78,0xbf,0x4d,0xe,0x0,0xf8,0x79,0xfe,0xe3,0x29,0xa7,0x80,0x28,0x42,0x8c,0x1,0x80,0xa,0xc0,0x59,0x47,0xf0,0x1e,0xef,0x1c,0xc1,0x7,0x82,0xf,0x4f,0xe6,0x25,0x68,0x99,0x5f,0x68,0x3c,0xce,0xba,0x2,0xb0,0xce,0xe2,0xac,0xc5,0x79,0x8f,0xb3,0x96,0xfd,0xa3,0xc3,0xb5,0xe,0xf6,0x8f,0xe,0x57,0x34,0xd6,0xd9,0x2,0xd0,0x46,0xa3,0xb5,0x41,0x6b,0xcd,0xe4,0xe4,0xf8,0xd5,0xa1,0x4f,0x4e,0x8e,0xd1,0xfa,0x51,0x6b,0x74,0x79,0x3,0x33,0x6f,0x30,0xba,0xc1,0x87,0xf0,0xe6,0xe6,0x18,0x63,0x90,0x18,0xa9,0xeb,0xf,0x5,0xd0,0x18,0x8d,0x31,0x16,0x1f,0x3d,0xdf,0x4f,0xcf,0x68,0x4f,0xed,0xf9,0x19,0x40,0xa2,0x50,0x75,0xea,0x16,0xa0,0xd1,0x18,0x67,0x9,0xed,0x1b,0xa8,0x57,0xc6,0x8,0x48,0x27,0x41,0x53,0xb5,0x5a,0x68,0xc,0xce,0x3b,0x24,0xc6,0x97,0x77,0xa0,0x1d,0x8a,0xc5,0xbe,0x64,0x55,0x0,0xda,0x59,0x82,0xf7,0x65,0x91,0xde,0x88,0x4a,0x12,0xf2,0x58,0xa8,0x6,0xf8,0x7b,0x7b,0x43,0xaf,0xdb,0x25,0xb7,0xcb,0xe7,0xf5,0xca,0xe5,0xa8,0x98,0xcf,0xee,0xca,0xfb,0x8c,0x6,0xc3,0x77,0xfd,0xcb,0x57,0x37,0xd7,0x3c,0x0,0xb0,0x7,0xe9,0xba,0xfd,0xb,0xce,0x5b,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,0x59,0x0,0x59,0x0,0x59,0xbd,0x9a,0xea,0xaa,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,0xde,0x9,0x11,0x13,0x19,0x21,0xc8,0x5c,0x21,0x1b,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,0x9a,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x93,0x51,0xa,0xc2,0x30,0xc,0x86,0xff,0x8d,0x6,0x21,0x5,0x7b,0x3,0x1f,0x9a,0x63,0x88,0x78,0x30,0x11,0x6,0x63,0xc7,0xec,0x2e,0x21,0x8d,0x42,0x1e,0xf4,0x75,0xcc,0x6e,0xd8,0x89,0xe0,0xff,0x98,0xf2,0x7d,0x29,0x21,0x69,0x4e,0xc7,0xf3,0x4e,0xa2,0xdc,0x89,0xa8,0x41,0x45,0xcc,0xec,0x99,0xc6,0xb4,0x77,0x12,0xe5,0xa1,0xaa,0xc8,0xaa,0x35,0x3c,0x3c,0x73,0x23,0x51,0x6e,0x2d,0x11,0x55,0xc3,0x0,0x90,0x55,0x41,0x44,0x68,0xab,0xc9,0x59,0x7e,0x2b,0xe8,0x87,0xe,0xfd,0xd0,0x6d,0x13,0x4c,0xc1,0x35,0x49,0x51,0x50,0x2,0x96,0x24,0x6f,0x82,0xb5,0x6e,0xa5,0xb7,0xaf,0x87,0xe8,0xe6,0x85,0xeb,0x65,0xf9,0x7,0xa5,0xfc,0xf9,0x1e,0x7c,0x24,0x30,0x33,0x78,0xe6,0x6a,0xd0,0x33,0xc3,0xcc,0xe0,0xd2,0x98,0x58,0xa2,0xe4,0x10,0xc2,0x96,0x73,0x3e,0xbc,0x0,0x5f,0x36,0x36,0x12,0x78,0xeb,0xb3,0xc5,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,0x8,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xc4,0xf,0xbe,0x8b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x26,0x0,0x26,0x0,0x26,0x59,0xf,0xde,0x74,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,0xde,0x9,0x14,0x17,0x25,0x29,0x85,0xa3,0x88,0x38,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,0x72,0x49,0x44,0x41,0x54,0x18,0x95,0x7d,0xcd,0xb1,0x9,0xc3,0x30,0x0,0x44,0xd1,0x17,0x21,0x91,0x42,0x10,0xdc,0x4,0x34,0x80,0x77,0xc8,0x4,0x6e,0x32,0xb0,0x1b,0xf,0xe2,0x26,0x4d,0x6a,0x37,0xc2,0x5d,0x40,0x45,0x1a,0x1b,0x4c,0x20,0xfe,0xe5,0xbf,0x3b,0xee,0x52,0x4a,0x71,0x46,0x8c,0x31,0x1a,0x86,0x67,0x87,0x19,0x7b,0x7b,0x41,0x3f,0x4d,0xe3,0x1a,0x36,0x31,0xa3,0x3b,0xc,0x6f,0x78,0x41,0x6c,0xad,0x39,0x2c,0x77,0xae,0xb8,0xb7,0xd6,0x84,0x94,0xd2,0xdf,0xff,0x94,0x92,0x90,0x73,0x86,0xf7,0x4f,0xf6,0xc1,0x92,0x73,0x16,0x6a,0xad,0xf0,0xd8,0xe4,0xce,0x8a,0x7e,0xcb,0xce,0xf9,0x2,0x99,0xd9,0x19,0x5e,0xac,0x65,0x2e,0x22,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,0x8,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xc4,0xf,0xbe,0x8b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x26,0x0,0x26,0x0,0x26,0x59,0xf,0xde,0x74,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,0xde,0x9,0x14,0x17,0x25,0x15,0xaa,0xcc,0xf4,0xbf,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,0x86,0x49,0x44,0x41,0x54,0x18,0x95,0x7d,0x8e,0xb1,0xa,0x83,0x30,0x18,0x84,0xbf,0x36,0x81,0x6e,0xe5,0xf,0xad,0x6e,0xe,0x11,0x97,0x2e,0xfa,0xae,0x6e,0x7d,0x29,0xa1,0xce,0xa5,0xae,0x5,0x7,0x83,0x53,0xb,0xf9,0xa1,0x4b,0x94,0xe,0xe2,0x8d,0x77,0xdf,0x71,0x77,0x68,0xdb,0x3b,0x7b,0xb2,0x0,0xc3,0xf0,0xba,0x86,0x30,0x75,0x40,0x91,0xfc,0x51,0xc4,0x55,0xde,0x97,0xb3,0x5,0x8,0x61,0xea,0xea,0xba,0xb9,0x18,0x63,0x1,0x50,0x8d,0xe7,0xbe,0x7f,0x3c,0x81,0xdc,0xa6,0x46,0xb1,0x84,0x0,0xc6,0xd8,0x13,0x90,0x1,0x1c,0x77,0xf,0xfc,0x1,0xa3,0x6a,0xfc,0x2e,0xa6,0x6a,0xfc,0x0,0xef,0xf5,0xa4,0x88,0xab,0xd2,0x66,0x96,0x98,0x20,0xe2,0x6e,0x2b,0xe0,0x7d,0x39,0x3,0xf9,0xd6,0xc4,0xf,0x70,0x6e,0x25,0xf5,0x5c,0xbc,0xd7,0xd3,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,0x4e,0x0,0x41,0x0,0x56,0xed,0xd0,0x4e,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,0xdd,0x9,0x1b,0x13,0x25,0x36,0xd1,0x55,0x4f,0xe9,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,0x76,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x92,0xb1,0x6e,0x13,0x41,0x10,0x86,0xbf,0x59,0xd9,0xb2,0x4c,0x68,0x63,0xc2,0x21,0x39,0xb2,0x29,0xa9,0x52,0xb8,0x4b,0x93,0x2,0xa5,0xe,0xd,0x3d,0x1d,0xf,0x0,0x2d,0xa2,0xe5,0x5,0xdc,0xa5,0x4f,0x3,0x35,0xca,0x23,0xa4,0x48,0x95,0x32,0x41,0x58,0xf2,0x81,0x9d,0x22,0x42,0x22,0x36,0xf6,0xed,0xce,0x50,0x9c,0xef,0x6e,0x2f,0x2e,0x38,0x46,0x5a,0x8d,0x76,0x77,0xfe,0x4f,0xb3,0xff,0xac,0x98,0x19,0xfb,0xcf,0x9e,0x9f,0x0,0x6f,0x81,0x97,0x34,0x8b,0x73,0x60,0xfc,0x7d,0x7a,0xfd,0x45,0xfa,0xc9,0xf0,0xdd,0xd3,0x5e,0xf2,0xe9,0xe0,0xc5,0x88,0x64,0x2f,0x69,0xa4,0x4e,0x7f,0xa6,0x5c,0x5e,0x5d,0xf0,0x63,0x9e,0xbe,0x97,0x7e,0x32,0xbc,0x79,0x75,0xfc,0x7a,0xb0,0x5c,0x2d,0x59,0x2e,0xef,0x1b,0x1,0xba,0xdd,0x1d,0xba,0x9d,0x2e,0x9f,0xbf,0x9e,0x7d,0x6b,0x1,0x83,0x5f,0xf7,0x77,0xf8,0xb5,0xa7,0x69,0x2c,0x16,0xbf,0x59,0xfb,0x3f,0x0,0x3,0x7,0xfc,0x97,0xb8,0x88,0x42,0xd3,0x2,0x50,0x55,0x70,0x80,0x92,0xe7,0x22,0x14,0x10,0x1,0xb1,0xea,0x4e,0xeb,0xa0,0x16,0x40,0x50,0x8f,0x98,0x60,0x0,0x59,0x1d,0x62,0x6a,0x88,0x48,0xbe,0x9,0xd1,0xb9,0x59,0xd4,0x81,0x19,0x98,0x61,0xb6,0x29,0xd6,0xaa,0x48,0x44,0xca,0xe2,0x22,0x97,0xc0,0xb2,0x83,0x50,0xa1,0x63,0xc1,0x43,0x71,0x21,0x54,0xd5,0x6d,0x80,0x38,0x87,0x15,0x17,0xb1,0x1f,0x51,0x16,0x1c,0xe6,0xb4,0xf2,0xa7,0x0,0x18,0x8a,0x7a,0x45,0x1c,0x18,0x20,0x9a,0x67,0x7c,0xdd,0x50,0x71,0x5a,0x3d,0x2f,0x6,0x68,0xc8,0xdb,0xd4,0x0,0x52,0x98,0xf,0x28,0x8a,0xc3,0x95,0xe6,0x59,0x6c,0xa2,0x58,0xfc,0x84,0x8d,0xf5,0xe5,0x98,0x14,0x5c,0x3e,0xa,0xbf,0x51,0x9b,0x2a,0x82,0x43,0x6a,0x33,0xce,0x1,0x93,0x2c,0x64,0x7d,0xe7,0x5a,0xb5,0x31,0x11,0xc2,0xd6,0xe7,0xb1,0xa8,0x40,0xd5,0x3,0x4c,0x1c,0x30,0x4e,0x67,0x53,0x7c,0xc8,0x36,0xd4,0x7f,0x2f,0x1f,0x32,0xd2,0xd9,0x14,0x60,0x2c,0x66,0xc6,0xe1,0xe8,0xe8,0xc3,0xfc,0x76,0xf6,0x66,0x95,0xad,0xfa,0x4d,0xbe,0x71,0xa7,0xdd,0x99,0xf4,0x76,0x9f,0x9c,0x3e,0x6a,0x3f,0xfe,0xf8,0x17,0xda,0x44,0xc8,0x77,0x97,0xc9,0xd6,0x18,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,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,0xde,0x9,0x11,0x12,0x2a,0x16,0x85,0x48,0x8b,0x13,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,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x93,0x31,0xa,0xc2,0x50,0x10,0x44,0xdf,0x97,0xbf,0x8a,0x3f,0x45,0xd0,0x52,0xbb,0xfc,0x63,0x88,0x88,0xa7,0xd0,0x23,0x9a,0x63,0x84,0x90,0x63,0x24,0x9d,0x9d,0x60,0x95,0x2f,0xb2,0x21,0x5a,0x18,0xb4,0x52,0x3,0x69,0x2c,0x9c,0x6e,0x8b,0x99,0xd9,0x59,0x76,0xc,0x30,0x6,0xa6,0xc0,0x4,0x18,0xd1,0xf,0x2d,0x70,0x5,0x2e,0xb6,0x23,0x2f,0x81,0x19,0x20,0x3d,0x5,0x14,0x38,0x3,0x47,0xdb,0x39,0xcf,0xd7,0xab,0xcd,0xc2,0x27,0xfe,0x20,0x22,0xe6,0x23,0x53,0xf5,0x56,0x56,0xe5,0x3e,0x2f,0x32,0x3,0x9c,0x6c,0xb7,0xb6,0xf5,0x89,0x4f,0x43,0x8,0xd4,0x21,0x7c,0xb4,0x8e,0x9c,0x33,0x3e,0xf1,0x69,0x5e,0x64,0x5b,0x60,0xf4,0xcc,0x2c,0x22,0x5f,0xc9,0x0,0x75,0x8,0x88,0xbc,0x92,0xf6,0x3d,0xda,0x5b,0xfc,0x5,0x7e,0x4a,0x40,0x55,0x89,0x9c,0xfb,0x4a,0x88,0x9c,0x43,0x55,0x9f,0xb3,0xe5,0x51,0x8c,0xa6,0xac,0xca,0x9d,0x4f,0xfc,0x21,0x8e,0xe3,0x5e,0xaf,0xc,0x34,0x40,0x6b,0x80,0x98,0x1,0x65,0x32,0xc,0xac,0xf3,0x1d,0x55,0xc6,0x3e,0x2,0xe2,0x2e,0xc9,0xc8,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,0x4e,0x0,0x41,0x0,0x56,0xed,0xd0,0x4e,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,0xdd,0x9,0x1b,0x13,0x1d,0x6,0xe0,0x13,0xc3,0xbe,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,0x6a,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x92,0xcf,0x2e,0x3,0x51,0x14,0xc6,0xbf,0xd3,0x4e,0x6a,0x4a,0x48,0xd1,0x96,0x52,0x4d,0xba,0xb0,0x61,0x21,0xb1,0xb1,0xb0,0x25,0x56,0x16,0x5e,0xc1,0xce,0x3,0xb0,0x15,0x3b,0xf1,0x2,0x76,0x5e,0xc1,0xc2,0x4a,0xac,0x3d,0x80,0x85,0x95,0x84,0xa4,0x42,0x94,0x52,0x24,0xfd,0x63,0xfe,0xdc,0xcf,0xe2,0xce,0x9d,0xce,0xb4,0x8d,0x8c,0x93,0x4c,0x4e,0x72,0xee,0x77,0x7e,0xf7,0x3b,0x67,0xae,0x90,0xc4,0x5c,0x71,0x61,0x7,0xc0,0x1e,0x80,0x4d,0x24,0x8b,0x2b,0x0,0xa7,0xcf,0xaf,0x8f,0xe7,0x52,0x2a,0x94,0xf7,0xb,0x93,0x33,0x27,0xcb,0x8b,0x2b,0x98,0x9d,0x9e,0x4f,0xd4,0xfd,0xf2,0xfe,0x84,0xdb,0xbb,0x1b,0xbc,0x35,0xeb,0x7,0x52,0x2a,0x94,0xef,0xb7,0xd6,0xb7,0xab,0x5d,0xa7,0x8b,0x4e,0xb7,0x9d,0x8,0x90,0xb5,0x47,0x61,0x67,0x6c,0x5c,0x5e,0x5f,0x3c,0x58,0x0,0xaa,0xdf,0xad,0x2f,0x78,0x9e,0x87,0xa4,0xd1,0xee,0xb4,0xe0,0xb8,0x3f,0x0,0x50,0x4d,0x1,0xf8,0x57,0xb3,0x9,0xd3,0x63,0x1,0x80,0x52,0xa,0x10,0x0,0x84,0xce,0x26,0x8,0x5d,0x10,0xf6,0xce,0x18,0x7,0x5,0x0,0x1f,0x22,0xa2,0xcf,0x54,0x1f,0x4,0x4,0x28,0x11,0x60,0x8c,0x1e,0x0,0x48,0x80,0xec,0x59,0x60,0x54,0x14,0xbd,0xd6,0x64,0x19,0x74,0x10,0x86,0x48,0x0,0x33,0x3a,0x3,0x64,0x7c,0x9c,0x38,0x40,0x85,0x8d,0xc,0x18,0xc6,0xb9,0xc4,0x4c,0x98,0x42,0xcf,0x4c,0x30,0x82,0xa,0x67,0x27,0x22,0x3b,0x53,0x3a,0xf,0x82,0xfa,0x1,0x4a,0xe9,0x1a,0xb5,0xc6,0xec,0x51,0x81,0x90,0x80,0xca,0xfe,0x25,0xca,0xc0,0xe,0x44,0x3b,0x8,0x94,0x14,0xad,0x50,0xa6,0x8b,0xda,0x82,0xc,0xf9,0xb,0x35,0xd7,0x77,0x2b,0xe9,0x94,0x15,0xbf,0x81,0x1c,0xf2,0x7c,0x18,0x4a,0x7c,0xe5,0x1,0x40,0x2d,0x3d,0x3e,0x36,0x61,0xbb,0x9e,0xb3,0x61,0x8f,0x64,0x21,0x29,0x33,0xe4,0xdf,0x9f,0xef,0x7b,0x68,0x34,0xeb,0x70,0x3d,0xf7,0x58,0x48,0x62,0x75,0x69,0xed,0xf0,0xe3,0xb3,0xb1,0xeb,0x78,0x4e,0x25,0xc9,0x33,0xce,0x58,0x99,0xda,0x54,0x2e,0x7f,0x96,0xcf,0x15,0x8f,0x7e,0x1,0x52,0xd8,0xb3,0xdb,0x19,0xc1,0x3b,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,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x15,0x32,0x22,0x9b,0x14,0x96,0x1f,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,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0xb1,0x4e,0xc3,0x40,0x10,0x84,0xe1,0xef,0xc2,0x4a,0x9c,0x90,0xb,0x6a,0x9f,0xe0,0x9,0x2,0xbc,0x58,0xc2,0xcb,0xc0,0x8b,0x85,0xa4,0xa6,0x41,0x4e,0x4d,0x41,0x71,0x91,0xe,0x99,0x2,0xd7,0x76,0xa4,0x34,0x14,0x6c,0xb9,0xda,0xf9,0x47,0x2b,0xcd,0x24,0xdc,0xe0,0x16,0x1d,0xae,0x90,0xcc,0xcf,0x88,0x6f,0x7c,0xe1,0x33,0x26,0xf1,0x23,0xee,0x90,0xcf,0x4,0x54,0x7c,0xe0,0x2d,0x26,0xe7,0xfb,0x87,0xf5,0xd3,0xba,0xf4,0x65,0x13,0x11,0xb3,0x80,0xd6,0xda,0x38,0x1c,0x87,0xd7,0xfd,0x61,0x97,0xf0,0x1e,0x8,0x5c,0x97,0xbe,0x6c,0x6b,0xad,0x6a,0xad,0xb3,0xf6,0x39,0xe7,0x54,0xfa,0xb2,0xdd,0x1f,0x76,0xcf,0x88,0xd5,0xb4,0x4f,0x11,0xb1,0x28,0x86,0x5a,0xab,0x88,0x60,0x7a,0x75,0x35,0x7f,0xbe,0x3c,0xff,0x80,0xbf,0x4,0x18,0x5b,0x6b,0x72,0xce,0x8b,0x82,0x9c,0xb3,0xd6,0x1a,0xbf,0x91,0x16,0x68,0x38,0xd,0xc7,0xe1,0xa5,0xf4,0x65,0xd3,0x75,0xdd,0x59,0x51,0xc6,0x9,0x2d,0xa1,0x77,0x41,0x99,0x92,0xb,0xeb,0xfc,0x3,0xd0,0xc5,0x44,0x36,0x1d,0x79,0x84,0xde,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -345,7 +340,7 @@ static const unsigned char spinbox_updown_png[]={ 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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x4,0x1b,0x16,0x1b,0x32,0xbf,0xff,0x75,0xca,0x0,0x0,0x0,0x3a,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x80,0x82,0x73,0x2f,0x5e,0xdd,0x3b,0xf7,0xe2,0xd5,0x3d,0x6,0x34,0xc0,0x84,0x2e,0x80,0xae,0x8,0x43,0x1,0xba,0x22,0xac,0xa,0x90,0x15,0xe1,0x54,0x40,0xd0,0x4,0x23,0x9,0x31,0x25,0x9c,0xa,0x60,0x92,0x58,0x15,0x20,0x4b,0x32,0x30,0x30,0x30,0x0,0x0,0x56,0x5a,0x13,0xb,0xf,0x58,0x99,0x10,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,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x14,0x12,0x38,0x2b,0x92,0xa,0x47,0xe3,0x0,0x0,0x0,0x3a,0x49,0x44,0x41,0x54,0x18,0x95,0x63,0x60,0x80,0x82,0x3b,0x77,0xee,0xdc,0xbb,0x73,0xe7,0xce,0x3d,0x6,0x34,0xc0,0x84,0x2e,0x80,0xae,0x8,0x43,0x1,0xba,0x22,0xac,0xa,0x90,0x15,0xe1,0x54,0x40,0xd0,0x4,0x15,0x15,0x15,0x25,0x9c,0xa,0x60,0x92,0x58,0x15,0x20,0x4b,0x32,0x30,0x30,0x30,0x0,0x0,0x2c,0x62,0x12,0xf3,0xa8,0xc4,0xd,0xa6,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -355,27 +350,27 @@ static const unsigned char tab_png[]={ 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,0x4f,0x0,0x42,0x0,0x57,0xa5,0xf1,0xe9,0x1e,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,0xdd,0x9,0x1b,0x10,0x25,0x6,0xf5,0xca,0xc1,0x1c,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,0x30,0x49,0x44,0x41,0x54,0x38,0xcb,0xa5,0x90,0x31,0x4e,0xc3,0x40,0x14,0x44,0xdf,0x97,0x82,0x2,0x45,0x64,0xc7,0xc8,0x29,0x28,0x90,0x2c,0x51,0xd0,0xd1,0xd3,0x50,0x71,0x0,0x8e,0xc1,0x1,0xe0,0x10,0x5c,0x80,0x63,0x70,0x0,0x2a,0x1a,0x7a,0x3a,0xa,0x4,0x12,0x5,0x45,0x24,0x14,0x4b,0xa0,0x4,0xb,0xb1,0x43,0xb1,0xbb,0x5e,0x3b,0x69,0x42,0xf8,0xc5,0xea,0xef,0xff,0x3b,0xb3,0x33,0x63,0x92,0xd8,0xcd,0x27,0x6c,0x52,0xef,0xf5,0x14,0x2b,0xb2,0x92,0x7c,0x34,0xe6,0x60,0xff,0x90,0x49,0xbe,0xb7,0x16,0x70,0x5a,0xbf,0xf1,0xf4,0xfa,0x48,0xfd,0x31,0xf3,0x4,0xc0,0x19,0x70,0xe,0x9c,0xae,0xf9,0xf9,0x2d,0x70,0xd,0xdc,0x58,0x91,0x95,0x17,0xf9,0x68,0x7c,0xb5,0xa1,0x82,0x4b,0x2b,0xb2,0xf2,0xf9,0xf8,0xe8,0xa4,0x6a,0xbe,0x1b,0xbe,0x9a,0xc5,0x5a,0x4,0xdb,0xc3,0x1d,0x86,0x5b,0x43,0xee,0x1f,0xee,0x5e,0x6,0x40,0x55,0x7f,0xce,0xfe,0x14,0xde,0xa2,0x99,0xb3,0x68,0xe6,0x0,0xd5,0x0,0x40,0xa,0x87,0x1,0x18,0x26,0x21,0x0,0x33,0x8f,0x90,0x30,0x40,0x66,0x80,0x40,0x69,0x37,0x0,0x70,0xee,0xc7,0x63,0x5,0x58,0x20,0x8c,0xf7,0xe5,0x56,0x2d,0x67,0x22,0x0,0xe1,0xc2,0xd2,0xd4,0xc3,0xf5,0xaa,0xdd,0x59,0x10,0x9b,0x14,0x4,0x64,0x64,0x8e,0x52,0xfb,0x70,0x14,0x6d,0xa,0xa4,0x8e,0x5,0xe1,0xda,0xdf,0xbd,0x5,0xd1,0xa5,0xf0,0xbd,0x9f,0xe1,0x40,0x96,0xbc,0x78,0x5,0xd2,0x8a,0x74,0x61,0xc9,0x6f,0x0,0x28,0xe2,0x14,0x67,0x51,0x81,0x53,0xfb,0xd0,0x5c,0x90,0xb1,0xca,0xe8,0x49,0xcc,0xfc,0xaa,0x1b,0xa2,0x70,0xed,0x40,0xf1,0x8c,0x69,0x75,0x23,0xf,0xbd,0x94,0x56,0x3d,0x5,0xcb,0xd1,0x99,0xd4,0xb1,0xd0,0xc9,0x43,0xe9,0xa1,0x15,0x59,0x29,0xfe,0x51,0xbf,0xb4,0x87,0x9c,0x22,0x50,0x2e,0x97,0xaa,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x13,0x3a,0x0,0x82,0x20,0x21,0x41,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,0x92,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x8f,0x3b,0xe,0xc2,0x30,0x10,0x5,0xc7,0x89,0xa5,0x80,0x45,0x81,0xb,0x6f,0x7,0x27,0xe0,0x73,0x36,0x4e,0xc2,0xd9,0xf8,0xd4,0x34,0x74,0xa1,0x30,0x5,0x12,0x34,0xab,0xa5,0x31,0xad,0x83,0x4,0x65,0xa6,0x7c,0xda,0x37,0x4f,0xb,0x3f,0xe2,0x80,0x0,0xcc,0x81,0x19,0xd0,0x96,0xac,0x86,0x1,0xa,0x3c,0x80,0xbb,0x2f,0xe5,0xd,0xb0,0x0,0x26,0x5f,0xa,0x5e,0xc0,0x15,0x38,0xfa,0xb2,0xbc,0x5c,0xaf,0xb6,0x7b,0x49,0x32,0x35,0xb5,0xaa,0xc0,0xb5,0xce,0xfa,0x5b,0xff,0x3c,0x9d,0xf,0x3b,0xe0,0xe2,0x1,0xf,0x74,0x92,0x24,0xa8,0x2a,0x39,0xe7,0xea,0x7c,0x8c,0xd1,0x49,0x92,0x0,0x74,0x80,0x6f,0x3e,0x62,0x53,0x1b,0x2c,0x3,0xe4,0x9c,0x31,0x35,0x28,0xaf,0x36,0xf5,0xf3,0x61,0x46,0xc1,0x28,0xf8,0x8b,0xe0,0xd,0xec,0x2e,0x27,0x7c,0x4,0xc2,0x7d,0x9a,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,0x20,0x8,0x6,0x0,0x0,0x0,0x1b,0x89,0xf8,0xcc,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x10,0x1b,0x28,0x68,0xd9,0xd7,0xae,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,0xf3,0x49,0x44,0x41,0x54,0x48,0xc7,0xcd,0x95,0xbf,0x6e,0xd4,0x40,0x10,0xc6,0x7f,0x63,0xfb,0xfe,0x8,0x44,0x4,0x97,0x44,0xd0,0x50,0x20,0xa,0xd2,0x10,0xf2,0x4,0xe4,0x29,0x28,0x52,0xf1,0x24,0x5c,0x3,0x2f,0x42,0x1b,0xde,0x82,0x37,0x40,0x54,0x14,0x88,0x2,0x9,0xe,0x2e,0x98,0x88,0xd3,0x29,0x77,0x67,0xef,0xc,0x45,0x76,0xcd,0xda,0xb1,0x7d,0xa0,0x34,0x8c,0xb4,0xb2,0xc7,0x9e,0xef,0x9b,0x6f,0x67,0xd6,0x1e,0x1,0xc4,0xaf,0x4,0x48,0xfd,0x12,0x2e,0x2d,0x5c,0x2d,0xba,0x3a,0xbf,0x14,0xb0,0xcc,0x7,0xa5,0xc0,0x10,0x18,0x1,0x83,0x88,0x24,0x26,0x8,0xe0,0x2,0x58,0x3,0x1b,0xc0,0x65,0x3e,0xf3,0x10,0xb8,0xf1,0xe0,0xfe,0xc3,0x37,0xab,0xf5,0xfa,0x69,0x4,0x6c,0x9a,0x8d,0x47,0xa3,0xb7,0x9f,0x3e,0x7f,0x7c,0xe6,0xfd,0x75,0x16,0xb2,0xef,0x4f,0xee,0x4d,0x6f,0xef,0x4c,0x8e,0x1f,0x3f,0x7a,0xc2,0xce,0xad,0x3b,0xad,0xe8,0x5f,0x8b,0x9f,0xf2,0xfe,0xc3,0xbb,0xe3,0xfd,0xc9,0x72,0x3a,0xcf,0x67,0x53,0xa0,0xc,0xa,0x6,0x69,0x9a,0x9e,0x1c,0x1e,0x1c,0xb1,0x58,0x2e,0xf8,0x71,0x7e,0xd6,0x4a,0x30,0x1a,0x8e,0x39,0x3c,0x38,0xe2,0xeb,0xf7,0x2f,0x27,0xc0,0x2b,0x60,0x15,0x6a,0x90,0x89,0xc8,0x6e,0x7e,0x9e,0xe3,0xb4,0xa4,0xcb,0x56,0xeb,0xb,0x8a,0xa2,0x40,0x44,0x76,0xbd,0xf2,0x24,0x8b,0x8b,0x55,0xb8,0xa2,0xb6,0x79,0x6b,0xb4,0x22,0xc4,0xc4,0x8f,0x6b,0x4,0x98,0x55,0x20,0x5a,0x88,0x1a,0x26,0x80,0x64,0xb5,0x40,0xf3,0xa1,0x22,0xe1,0x41,0xbb,0x1f,0x59,0x76,0x25,0x93,0x59,0x15,0x28,0x1e,0x68,0xaa,0x51,0x5e,0xe9,0x21,0x8,0xe0,0x0,0x44,0xeb,0x55,0xd8,0xaa,0x40,0x15,0x11,0xf9,0x93,0xb1,0x92,0xae,0x95,0xa2,0x9a,0x9a,0x26,0x41,0x50,0x61,0xe2,0xb7,0xe0,0x13,0x5a,0x75,0x43,0xbf,0x2,0xd,0x12,0xd5,0xea,0xca,0xbd,0x6f,0xb2,0x85,0x20,0x74,0x41,0x9a,0x5d,0xe9,0xf0,0x5b,0xb6,0xa0,0x98,0x49,0x24,0xd9,0x53,0x45,0xbe,0x88,0xf5,0x15,0x11,0x10,0x5,0xd,0x5d,0xa8,0xd7,0x2,0x51,0x4c,0xb7,0xb5,0x51,0x62,0x44,0x4b,0xed,0xac,0x4f,0x1,0x5a,0xaf,0x54,0xe8,0x58,0xd2,0x7d,0xb0,0xdb,0x4f,0x22,0x1d,0x3f,0x34,0xfe,0xb2,0xb,0xff,0x62,0x9,0xd7,0xb4,0xff,0x83,0xc0,0xfa,0xcb,0xd4,0x69,0x6,0xd8,0x75,0x9,0x2a,0x5,0xa5,0x99,0xcd,0x9d,0x73,0x5b,0x51,0xce,0x39,0xcc,0x6c,0xe,0x94,0x80,0x26,0xfe,0xb8,0x14,0x65,0x59,0x9e,0xce,0xf3,0x19,0x7d,0x24,0xce,0x39,0xe6,0xf9,0x8c,0xb2,0x2c,0x4f,0xfd,0x84,0x52,0xf1,0x67,0x61,0x8,0xdc,0xdc,0x9b,0xdc,0x7d,0x99,0x26,0xe9,0xf3,0x24,0x49,0xc6,0x6d,0x4,0xaa,0xba,0x72,0xea,0x5e,0x9f,0xe5,0xdf,0x5e,0x0,0x4b,0x60,0x13,0xf,0xd5,0x81,0x9f,0x8d,0xc3,0x2d,0xb3,0x71,0xe3,0x67,0x63,0x1,0x38,0xe9,0x99,0xce,0x6d,0x23,0x42,0xfd,0xba,0x32,0x9d,0xe3,0xcf,0xc7,0x1a,0x59,0x9b,0x5f,0x83,0xc5,0xef,0x7e,0x3,0xcb,0x7b,0xfd,0x30,0x11,0x50,0x3,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xd,0xd7,0x0,0x0,0xd,0xd7,0x1,0x42,0x28,0x9b,0x78,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xde,0x9,0x10,0x13,0x37,0x38,0x1f,0x8c,0xe7,0x92,0x0,0x0,0x0,0xba,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0xd3,0x3b,0x4e,0x3,0x41,0x10,0x84,0xe1,0x6f,0x4c,0x4b,0x1e,0xaf,0x36,0x20,0xde,0x11,0x9c,0x80,0xc7,0xd9,0x38,0x9,0x67,0x33,0x76,0x4c,0x82,0xd6,0x31,0x1,0x82,0xb1,0x34,0xc8,0x4,0x6c,0xbc,0x6b,0xc9,0x9,0x1,0x1d,0xb6,0xba,0xfe,0x52,0x4b,0x55,0x9,0x1d,0xae,0xd1,0xe3,0xa,0xc9,0xfc,0x9c,0xf0,0x8d,0xf,0xbc,0xc7,0x24,0x7e,0xc0,0xd,0xf2,0x99,0x80,0x8a,0x37,0xbc,0xc4,0xe4,0x7c,0x7b,0x7f,0xf7,0xf8,0x5c,0x86,0xb2,0x89,0x88,0x59,0x40,0x6b,0xed,0x34,0x1e,0xc6,0xaf,0xdd,0x7e,0xfb,0x84,0xd7,0x40,0x60,0x5d,0x86,0xd2,0xd5,0x5a,0xd5,0x5a,0x67,0xed,0x73,0xce,0xa9,0xc,0xa5,0xdb,0xed,0xb7,0x6b,0xc4,0x6a,0xda,0xa7,0x88,0x58,0x14,0x43,0xad,0x55,0x44,0x30,0xbd,0xba,0x9a,0x3f,0x5f,0x9e,0x7f,0xc0,0x5f,0x2,0x9c,0x5a,0x6b,0x72,0xce,0x8b,0x82,0x9c,0xb3,0xd6,0x1a,0xbf,0x91,0x16,0x68,0x38,0x8e,0x87,0xf1,0xb3,0xc,0x65,0xd3,0xf7,0xfd,0x59,0x51,0xc6,0x11,0x2d,0x61,0x70,0x41,0x99,0x92,0xb,0xeb,0xfc,0x3,0x18,0xa7,0x44,0x3f,0xdc,0xad,0xd9,0x96,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,0x4f,0x0,0x42,0x0,0x57,0xa5,0xf1,0xe9,0x1e,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,0xdd,0x9,0x1b,0x10,0x28,0x1b,0x23,0x62,0xd3,0x88,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,0x38,0xcb,0xa5,0x92,0x31,0x4a,0x3,0x51,0x14,0x45,0xcf,0x1b,0x82,0x4,0x5b,0x65,0x24,0x24,0x44,0x52,0xd9,0x9,0xae,0xc0,0xca,0xca,0x2a,0xcb,0x70,0x1,0xba,0x8,0x37,0xe0,0x32,0x52,0x59,0x59,0xb9,0x2,0xc1,0xce,0x46,0x11,0x2,0x41,0x31,0x85,0xc5,0x24,0x41,0x98,0x77,0x2d,0xfe,0x9f,0x9f,0x2f,0x93,0x62,0xc0,0xc7,0x14,0x7f,0xe6,0xde,0x77,0xdf,0xbd,0x6f,0xbe,0x49,0x62,0x74,0x74,0x3c,0x5,0xae,0x80,0xb,0xba,0xd5,0x3,0x70,0x37,0xff,0x78,0x9f,0xd9,0xb0,0x1c,0x5f,0x97,0x7,0x83,0xdb,0xd3,0x93,0x33,0x6,0x87,0xa3,0x4e,0xdd,0x8b,0xaf,0x39,0xcf,0x2f,0x4f,0x7c,0x2e,0x17,0x37,0x36,0x2c,0xc7,0xaf,0x97,0xe7,0xd3,0xc9,0xe6,0x67,0xc3,0x6a,0xb3,0xea,0x24,0xb0,0xdf,0xdf,0xa7,0xbf,0xd7,0xe7,0xfe,0x71,0xf6,0xd6,0x3,0x26,0xcb,0xef,0xe5,0xe,0x9a,0x10,0x6,0x80,0x21,0x88,0x67,0x80,0x6a,0x5d,0x51,0xad,0x2b,0x80,0x49,0xf,0xc0,0x25,0x70,0x41,0x11,0xe8,0xe6,0x42,0x10,0xdf,0x41,0x2e,0xc,0xa1,0xc2,0x0,0x81,0x3,0x45,0x10,0xc,0x2,0x75,0x1d,0xf4,0xeb,0x30,0x48,0x8a,0xa3,0xea,0xdc,0xf,0xa1,0x31,0x62,0x8a,0x58,0xaf,0x81,0x3d,0xb2,0x4c,0x89,0xd3,0xaa,0x84,0xd9,0x36,0x50,0x74,0xe0,0x1,0x25,0x24,0xc1,0x2c,0xe6,0xce,0x1d,0x4,0x6b,0x16,0x53,0x48,0x79,0x4,0x3c,0x4d,0xf,0x3c,0x6d,0x6d,0xc7,0xf5,0x35,0x2b,0x95,0x43,0xe8,0x55,0x26,0x20,0x6f,0x59,0xf,0x13,0xe3,0xd9,0x9a,0xbf,0x12,0xfb,0xd4,0x7c,0x8b,0x2,0x72,0x25,0xa2,0x79,0xb4,0xd1,0x56,0xc,0x22,0x66,0x1,0x52,0x2e,0x20,0xc7,0x5,0x96,0x86,0x2a,0x3e,0xf1,0x1e,0x28,0x53,0x92,0x12,0x77,0x1b,0xc1,0x95,0x5d,0x9e,0xb4,0xf3,0xd4,0xe8,0x59,0x66,0x23,0x2c,0xf0,0x8f,0x3,0xc7,0x91,0xda,0x37,0x71,0xd7,0xb1,0x71,0xd1,0x38,0x28,0x12,0x6e,0x74,0x2f,0xcb,0xfe,0xd0,0xb0,0x1c,0x8b,0x7f,0xd4,0x2f,0xdd,0x10,0xa9,0xd4,0xe9,0xbe,0xe5,0x86,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x13,0x39,0x1d,0xca,0xb,0x1e,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,0x8e,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x8f,0x3d,0xe,0xc2,0x30,0x18,0x43,0x5f,0x8a,0xa5,0x86,0x88,0x81,0xb9,0x11,0x9c,0x80,0x9f,0xb3,0x71,0x12,0xce,0x56,0xda,0x99,0x5,0x95,0x99,0x1,0xa9,0xdf,0x10,0x54,0x96,0xcc,0x29,0x23,0x43,0x3d,0x5a,0xf6,0xb3,0xec,0x80,0x0,0x6c,0x81,0xd,0xb0,0x2,0x1c,0x65,0x4d,0xc0,0x7,0x78,0x3,0x2f,0xe5,0xf2,0x9,0xd8,0x1,0xfe,0x47,0x80,0x1,0xf,0xe0,0xa6,0xbc,0xbc,0x3f,0x1e,0xce,0xd7,0xd8,0xc4,0xb5,0xa4,0x22,0x20,0xa5,0x34,0xd,0xcf,0x61,0xec,0xfa,0xf6,0x2,0xdc,0x5,0x8,0xa8,0x63,0x13,0x83,0x99,0x61,0x66,0xc5,0x79,0xef,0xbd,0x8b,0x4d,0xc,0x5d,0xdf,0xd6,0x80,0xaa,0xec,0x3b,0x49,0xb3,0x65,0x0,0x33,0x43,0x12,0xe4,0xab,0x55,0x39,0x3e,0xaf,0x5,0xb0,0x0,0xfe,0x3,0xf0,0x5,0xd9,0x71,0x24,0x5d,0x58,0x1b,0x63,0x82,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,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,0xdd,0x9,0x17,0x5,0xb,0x18,0x54,0xf9,0x2b,0x70,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,0x6,0xd4,0x49,0x44,0x41,0x54,0x68,0xde,0xed,0x98,0x5d,0x8c,0x55,0x67,0x15,0x86,0x9f,0xf5,0xed,0xbd,0xcf,0xef,0x9c,0x33,0xce,0x3f,0xc3,0x88,0x14,0xa1,0x88,0x5a,0x63,0x8d,0xe5,0xce,0x26,0x6a,0x1a,0xef,0x1a,0xb5,0xa,0x5c,0x18,0xf4,0xc2,0x68,0x6c,0x2a,0xc4,0xc4,0x14,0xe4,0xaa,0x29,0x51,0xd3,0xb,0xb5,0x4d,0x40,0xaa,0x16,0x2f,0x8c,0x97,0xd4,0x68,0x62,0x62,0xac,0x26,0x46,0x6d,0xc7,0x26,0x25,0x1,0x2b,0x43,0xab,0x29,0xc8,0xcc,0x0,0x33,0x40,0x99,0x99,0xce,0xdf,0x39,0x67,0xe6,0xec,0x6f,0x2d,0x2f,0xf6,0x3e,0x87,0x19,0x60,0x60,0xfe,0xee,0x9c,0x95,0xec,0xe4,0x64,0xef,0x9c,0x6f,0x7f,0xfb,0x5d,0xef,0xfb,0xae,0xb5,0x3e,0xd8,0x88,0x8d,0xd8,0x88,0x8d,0xf8,0x3f,0xe,0x59,0xea,0x41,0x67,0x67,0x57,0x6b,0x47,0x5b,0xd7,0xd1,0x6c,0x36,0xfb,0x94,0x13,0x9,0x40,0xb0,0x35,0xbc,0xc8,0x1,0x5e,0x3d,0xd5,0x5a,0x15,0xef,0x3d,0x22,0xe9,0xab,0xcd,0xd6,0xe9,0x4b,0x24,0x5d,0xce,0x10,0xc0,0x4,0xf,0x5c,0xc0,0x78,0x1e,0xb3,0x5f,0xfd,0x77,0xe8,0x62,0x6d,0xd9,0x0,0x74,0x77,0x76,0xb7,0xf7,0xf4,0x6c,0x7e,0xe3,0xa1,0xf,0x7f,0x7c,0x7b,0xdf,0xa6,0x2d,0x1a,0x4,0x81,0x53,0x5d,0xe3,0xfe,0x9c,0xa0,0xbe,0xce,0xb5,0x9b,0xd7,0x38,0x37,0x70,0x86,0xb8,0x3e,0x7f,0xb,0x84,0x75,0x8,0x4b,0x3f,0x46,0x53,0x40,0xcd,0x14,0x33,0xc3,0xab,0xa2,0x5e,0x7f,0xaf,0x6a,0xfb,0x2e,0xd,0x5f,0xac,0xde,0xfe,0xbf,0xf0,0x6e,0x8b,0xb5,0xb5,0x75,0xbc,0xf0,0x91,0x5d,0x1f,0xdb,0x5e,0x88,0xca,0xb3,0x3,0x3,0x3,0x45,0x1f,0x2b,0x26,0xc6,0x6a,0x29,0x20,0x92,0x24,0x3a,0xc,0x43,0x36,0xf7,0x6e,0x66,0xd7,0xce,0x87,0x18,0x78,0xeb,0x2c,0xe2,0x1c,0xd6,0xdc,0xfa,0x1a,0x69,0x6c,0xa,0x6,0x4e,0x4,0x35,0x43,0x10,0x10,0xd1,0x30,0x90,0x99,0x18,0x1e,0x37,0xf4,0x49,0xe0,0x27,0xcb,0x2,0x20,0x8a,0xb2,0xfb,0x3b,0xca,0x5d,0x7a,0xe1,0x9d,0xb,0xc5,0x42,0xb1,0x8,0xd9,0xf5,0x4b,0xd3,0x95,0x2b,0x57,0xf8,0xe0,0xf6,0x6d,0xb8,0x20,0x24,0x10,0x41,0x4d,0xd7,0x85,0x9,0x66,0x1,0x90,0x80,0x80,0x25,0x74,0x55,0x55,0x67,0x4a,0x29,0x8,0x2,0xf3,0x5e,0xbf,0xbb,0x6c,0x0,0x4c,0xd5,0x2a,0x95,0xaa,0x73,0xa1,0x43,0x53,0x2a,0xb1,0x26,0x7,0x90,0x26,0x13,0x5c,0x20,0xd4,0xaa,0x35,0x7c,0xec,0x9,0x73,0x11,0xe2,0xa5,0x9,0x80,0x99,0x21,0x69,0x6,0x4d,0x93,0xf7,0x3a,0xe7,0x70,0xce,0x61,0x66,0xcd,0x2b,0x11,0x39,0xcd,0xfb,0x89,0x8f,0x24,0x60,0x3a,0xe7,0x70,0x12,0x60,0xd,0x60,0x1d,0x22,0xc9,0xd6,0x7b,0xef,0xb6,0xb3,0xbb,0x3,0x80,0x89,0x6a,0x8c,0xaa,0xa2,0xea,0xd3,0xcd,0xaf,0x3e,0x4b,0x6a,0x1e,0x2c,0x59,0xc3,0xcc,0x50,0xef,0x31,0x8c,0x40,0x1c,0x38,0x43,0x24,0x91,0x42,0x80,0xc3,0x7b,0x4f,0x4b,0xa1,0x40,0xa9,0x54,0x42,0x44,0x98,0x9d,0x9d,0x65,0x6a,0x7a,0x8a,0x28,0x8a,0x28,0x16,0x8a,0x4,0x41,0xd8,0x4,0x6a,0x72,0xf2,0x3d,0xf2,0xf9,0x2,0xb9,0x6c,0x86,0x58,0xd,0x11,0xa8,0x54,0x66,0xa9,0x56,0x6b,0x38,0x9,0x20,0x0,0xf5,0xda,0x10,0x99,0x2c,0x1b,0x80,0x84,0x3e,0xb6,0x8,0x75,0xf5,0xa9,0xf,0xac,0x82,0xf6,0x41,0x10,0x34,0x7f,0xab,0x6a,0x6a,0x54,0x86,0x10,0x20,0x2,0x92,0x28,0x16,0x55,0x25,0x9f,0x2f,0x72,0xe3,0xdd,0x1b,0xfc,0xe3,0x8d,0xd7,0x1,0xe3,0xfd,0xbd,0x5b,0xd8,0xfa,0x81,0xad,0x4c,0x4f,0x4d,0x33,0x3c,0xf4,0x36,0x95,0x6a,0x25,0x65,0x89,0xf2,0xe0,0xf6,0xf,0x31,0x38,0x3c,0xc8,0xf8,0xf8,0x18,0x61,0x18,0x52,0xaf,0x7b,0x7a,0x37,0x6d,0xa2,0xad,0xad,0x8d,0x7a,0xbd,0x9e,0xac,0x9b,0xae,0x7f,0xaf,0xea,0xb4,0x64,0xd6,0x14,0x8f,0x99,0x7,0x31,0xca,0xad,0x65,0x5a,0xcb,0xad,0x2b,0xbe,0xda,0xda,0xde,0x87,0xb,0x4,0xc3,0x63,0x28,0x8a,0x4f,0x19,0x91,0x50,0xdf,0x89,0x43,0x24,0xf9,0x5d,0xc8,0x17,0x18,0xbd,0x36,0xc2,0x93,0xdf,0xfe,0x56,0xd3,0xc5,0x8f,0xbf,0x78,0x8c,0xab,0x23,0x57,0xd9,0xd4,0xbb,0x89,0x53,0xbf,0x3d,0xc5,0x9b,0xe7,0xdf,0xe4,0xf4,0x99,0xd3,0x9c,0x3b,0x7f,0x8e,0x72,0x6b,0x89,0x67,0x9e,0x7d,0x86,0xc1,0xcb,0x83,0xbc,0xda,0xff,0x2a,0x6f,0xfd,0x7b,0x80,0x2f,0x7c,0xf1,0xf3,0xcc,0xcc,0xcc,0x90,0xcd,0x64,0x52,0xf1,0xb9,0x44,0x7b,0x4b,0x30,0x38,0x5c,0xc2,0x51,0x1a,0xe5,0x3,0x1f,0x18,0xaa,0x31,0x97,0xaf,0xe,0xae,0xd8,0x5,0x4,0x41,0x55,0x29,0x16,0x5b,0x88,0xc2,0x8,0xcc,0xa3,0xaa,0xc4,0xea,0x53,0x11,0x3,0xde,0x40,0x84,0x28,0x8a,0x18,0x1a,0x1e,0xe4,0xc0,0x77,0xe,0x70,0xf0,0xe0,0x41,0xbe,0xf4,0xc4,0x1e,0xa6,0xa7,0xa6,0x78,0xe9,0xe4,0x2f,0x78,0xe1,0xd8,0xf3,0x1c,0x39,0x74,0x84,0x47,0x3e,0xf9,0x8,0x47,0x9f,0x3d,0xca,0xc4,0xc4,0x4,0xce,0x39,0xe6,0xe7,0xe6,0xd9,0xdc,0xbb,0x99,0xf3,0xe7,0x6,0xf8,0xf9,0xcf,0x5e,0x22,0x97,0xcf,0x31,0x3e,0x36,0x41,0x14,0x45,0x78,0x6b,0x10,0xdf,0xb8,0x17,0x71,0xc3,0xa5,0x68,0xab,0xaa,0x49,0xc6,0xcc,0x23,0xe,0xba,0xba,0x7a,0x56,0x45,0x7f,0x71,0xc2,0x5c,0xad,0x86,0xf7,0x9a,0x96,0xc3,0x86,0xc1,0xa5,0x89,0x71,0x49,0xf6,0xe7,0xe7,0xe7,0x68,0x29,0xb5,0xb0,0x77,0xef,0x1e,0x8e,0x1f,0xfb,0x29,0xff,0x3a,0xfb,0x4f,0xa,0xc5,0x22,0x87,0x9e,0x3e,0xcc,0x89,0x17,0x8f,0xb3,0x63,0xc7,0xe,0x26,0xa7,0x26,0xc9,0x44,0x11,0xf9,0x7c,0x9e,0xa1,0xa1,0x61,0xe6,0xe6,0xe7,0x10,0xc0,0xb9,0x80,0x28,0xc,0x29,0x95,0x5a,0x78,0xed,0xaf,0xfd,0x74,0x75,0x77,0x50,0xad,0xd5,0x8,0xc4,0x11,0x37,0x4c,0x73,0x25,0x0,0x58,0x43,0x2,0x9a,0x6c,0x56,0x81,0x5a,0xad,0xb2,0xea,0x7a,0xad,0x3e,0xad,0x24,0x22,0xa9,0x7,0xf8,0xe6,0x8b,0x9a,0xd,0x8c,0x2a,0xb9,0x5c,0x8e,0x28,0x13,0x31,0x72,0x75,0x84,0xee,0x9e,0x1e,0x9c,0x73,0x54,0xab,0x35,0xf2,0x85,0x3c,0x85,0x62,0x91,0xd9,0xd9,0xa,0x7b,0xf6,0xed,0x23,0x8e,0x63,0xce,0x9c,0x39,0xc3,0x89,0x63,0x27,0xf0,0xde,0xf3,0xf0,0x27,0x1e,0x66,0xff,0xd7,0xbe,0x4a,0x5f,0x5f,0x1f,0xaf,0xfc,0xe1,0xcf,0x4,0x41,0x98,0x76,0x83,0xd6,0x64,0x80,0xac,0x18,0x0,0x55,0xcc,0x14,0x4d,0xaf,0xd9,0x4a,0x6d,0x55,0xc5,0x4f,0x4d,0xc9,0x65,0xf3,0x38,0xe7,0x10,0x24,0x59,0x53,0xd,0x93,0x85,0x8a,0x33,0x32,0x99,0xc,0xa3,0xa3,0xa3,0x5c,0xb9,0x7c,0x85,0xc7,0x3e,0xf7,0x18,0x27,0x4f,0x9e,0x24,0x74,0x21,0x87,0x8e,0x3c,0xcd,0xf5,0xeb,0x37,0x18,0x1e,0x1e,0xa2,0xbd,0xbd,0x8d,0xaf,0x3c,0x75,0x80,0x9b,0xef,0xde,0x24,0xf6,0x31,0x81,0xb,0x70,0xce,0xf1,0xf2,0xa9,0xdf,0xf0,0xdc,0xf,0x9f,0x23,0x9b,0xc9,0x52,0x2e,0x97,0xa9,0x54,0x2a,0xcd,0x8a,0x73,0xbf,0x8,0x97,0xe2,0xae,0xa9,0xc7,0xab,0xc7,0xa9,0xc3,0x89,0xd0,0xdd,0xd9,0x85,0x89,0xac,0xa0,0x1f,0x48,0xda,0xbf,0x20,0x70,0x4c,0x4f,0x4f,0x13,0xc7,0x1e,0x91,0x64,0x1e,0xb0,0x86,0x7,0xdc,0xe6,0x17,0xad,0xad,0xad,0x7c,0xff,0xe8,0xf,0x78,0xf9,0x77,0xa7,0xf8,0x7b,0xff,0xdf,0x98,0x18,0x1b,0xe7,0x53,0x8f,0x3e,0xca,0x37,0xbe,0xfe,0x4d,0xcc,0x1b,0xed,0xed,0xed,0xe4,0xb2,0x39,0x72,0xb9,0x1c,0xd5,0x6a,0x15,0xe7,0x1c,0x3d,0x3d,0x3d,0x89,0x87,0x64,0x32,0x64,0x32,0xd9,0x66,0xc9,0x36,0x6b,0x34,0x45,0xf7,0xde,0xf3,0x5d,0x99,0xb1,0x6b,0xe7,0x47,0x6d,0xe7,0xb6,0x5d,0xdc,0x18,0xbb,0x41,0x26,0xca,0x60,0x6a,0xcc,0xc5,0xb5,0x55,0xf5,0x42,0x66,0x46,0x36,0xca,0x25,0x5a,0x47,0x98,0xaf,0xcf,0xd3,0xd3,0xd9,0xcd,0x7f,0x2e,0xbd,0x4d,0x6b,0xa9,0x8c,0xda,0xad,0x21,0xc3,0x39,0xa1,0x5e,0x8f,0xe9,0xec,0xec,0x64,0xf7,0xee,0xdd,0xb4,0xb4,0xb4,0xd0,0xdf,0xff,0x1a,0x23,0x23,0xa3,0x44,0x99,0x88,0xbe,0xbe,0x3e,0x46,0x47,0x46,0x51,0x4d,0xe4,0x99,0xc,0x6d,0x1d,0x78,0xaf,0x8c,0xdd,0x1c,0x6f,0x66,0xdd,0x50,0x4c,0xd,0x53,0xf0,0x16,0x83,0x41,0xa5,0x56,0xe5,0xe2,0xa5,0x77,0x64,0xd9,0xc,0x50,0x8b,0x11,0x34,0x69,0x2f,0xc5,0xc8,0x65,0xb2,0xf7,0xac,0xa7,0xf7,0x82,0x58,0x55,0x13,0x56,0x25,0x8e,0x80,0x27,0x4e,0x8d,0xd6,0x50,0xbd,0x55,0xa1,0xbc,0x1a,0x4e,0x2,0xa6,0xa7,0x66,0x78,0xe5,0x8f,0x7f,0x6a,0x4a,0x23,0x70,0x21,0xbe,0xae,0x8c,0x5e,0xbd,0x4e,0x1c,0xfb,0x45,0xd4,0x9e,0x18,0x9f,0x4c,0xd,0x75,0x21,0xe5,0xd,0x4b,0x8b,0xee,0x2d,0x51,0xaf,0x48,0x2,0xe0,0x4d,0xf1,0xb1,0xe1,0x5c,0x82,0xe6,0x7a,0xc,0xdd,0x22,0x92,0x7e,0xb4,0x2d,0xd8,0xd2,0x9d,0xc3,0x50,0xbd,0x5e,0x4f,0x3c,0x43,0x84,0x7a,0xbd,0xbe,0xe0,0xfe,0xfc,0x1d,0x4b,0xc7,0x71,0xdc,0x64,0x5a,0xca,0xf9,0x45,0x13,0xb6,0xe9,0xaa,0x3c,0x0,0x53,0x53,0xf1,0x96,0x78,0x80,0xb1,0x46,0x0,0xec,0x96,0xce,0xbd,0x25,0x8d,0x90,0x60,0x69,0xb3,0xe3,0xb1,0xbb,0x30,0x4b,0xbd,0x5f,0x11,0xbe,0xd6,0x4,0x21,0x61,0x16,0x8d,0x2e,0x56,0x34,0x99,0x15,0x96,0x30,0xc4,0x70,0xc9,0x9,0x56,0x9c,0x9a,0x99,0x5b,0xaf,0xf3,0x8a,0x46,0x96,0x4c,0x9b,0xd,0x40,0x5a,0x61,0x6c,0x71,0x3d,0xbc,0x9d,0x14,0xf7,0x99,0x96,0xc5,0x1a,0x7e,0x2b,0x69,0xa2,0x52,0x6,0x34,0x86,0x38,0xc3,0x2c,0x61,0xdc,0xb5,0x65,0x3,0xe0,0x55,0x7f,0x5d,0xa9,0xcc,0xec,0x2f,0x97,0xca,0xb3,0xd3,0xd3,0x93,0xc5,0xb5,0xce,0xeb,0xb,0xa9,0x50,0x2a,0x95,0x99,0x9d,0x9d,0x21,0x70,0x82,0xf7,0x7e,0xb1,0x44,0xed,0x4e,0xd6,0xdc,0x47,0xc2,0xc9,0xa3,0x14,0x43,0x5d,0x30,0xe,0xa7,0x8c,0x30,0x60,0x26,0xf6,0xbe,0x24,0x22,0x3f,0x5e,0x76,0x15,0xd8,0xb1,0xed,0xc1,0x8e,0x42,0xb1,0x78,0xb6,0xa5,0x50,0xda,0x52,0x2c,0x16,0x54,0xd5,0xdc,0x7a,0x7c,0x7e,0xd2,0xbe,0xce,0x31,0xf6,0xde,0x38,0x4e,0x58,0xdf,0x13,0xa1,0xc6,0x51,0x98,0xa5,0x16,0xa8,0x4a,0xec,0x3d,0xf5,0xf9,0x79,0x4a,0xe5,0xf2,0x5f,0xa2,0x5c,0xee,0xf1,0xd3,0xa7,0x5f,0xaf,0x2c,0xfb,0x4c,0xf0,0xcb,0x4f,0xec,0xed,0x1c,0x19,0x19,0xf9,0xd1,0xd8,0xd8,0xf8,0x7e,0xc0,0x9,0xeb,0x61,0x3,0x86,0xf7,0xbe,0x39,0xce,0xb2,0x8e,0xfa,0xb2,0x5,0x5e,0xd0,0xb0,0x91,0x28,0x8a,0x86,0x1e,0x78,0x60,0xeb,0x2f,0x3f,0xf3,0xd9,0x4f,0x1f,0x3f,0xfc,0xbd,0xc3,0x93,0x1b,0x47,0xc0,0x1b,0xb1,0x11,0x1b,0xb1,0x11,0x1b,0xb1,0x38,0xfe,0x7,0x2f,0xf4,0xda,0xd3,0xbb,0x47,0x75,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,0x40,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0xa2,0x9d,0x7e,0x84,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x26,0x0,0x26,0x0,0x26,0x59,0xf,0xde,0x74,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,0xde,0x9,0x14,0x17,0x2,0x16,0xe9,0x0,0x17,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,0x2,0x45,0x49,0x44,0x41,0x54,0x68,0x81,0xed,0x99,0x5f,0x4f,0xd3,0x50,0x18,0x87,0x9f,0xb3,0x96,0xb5,0xcc,0x3a,0xa6,0xac,0x6d,0xa,0x91,0x84,0x5b,0x8d,0x7e,0x21,0x60,0x2c,0x5c,0x1a,0x63,0xe2,0x27,0x31,0x31,0xc6,0x4b,0x32,0xa7,0x7e,0x20,0x84,0x6b,0x6f,0xc,0x90,0x6d,0x32,0xca,0x6c,0xb0,0x24,0x75,0xc7,0x8b,0xba,0xb9,0x35,0xdd,0x84,0xec,0xe0,0x26,0xed,0x73,0xd7,0xf7,0xed,0xce,0x7b,0x7e,0xbf,0xbe,0x67,0x7f,0xde,0x41,0x4e,0x4e,0xa6,0x11,0x89,0xeb,0x12,0x50,0x1,0x2c,0x40,0x4b,0xc9,0xff,0xaf,0x48,0xe0,0x27,0x10,0x0,0x3e,0x70,0x39,0x48,0xe8,0x89,0x1b,0x2b,0xc0,0x33,0xe0,0x11,0x60,0x72,0xb7,0xc,0x8,0x81,0xaf,0xc0,0x67,0xa6,0x18,0x60,0x1,0x1b,0x4f,0x1e,0x3f,0x7d,0x6d,0x57,0xed,0x65,0x40,0x48,0x64,0xfc,0x72,0x95,0x8,0x10,0x8,0x74,0x5d,0x67,0x69,0x49,0x47,0xd3,0x92,0xdb,0x50,0x4b,0x14,0x45,0xf2,0xf8,0xe4,0xf8,0xc7,0xe1,0xd1,0xc1,0x2b,0xe0,0xcb,0x68,0x2e,0x59,0x59,0x7,0xc,0xbb,0x6a,0x97,0xce,0xba,0x67,0x4,0x41,0x80,0xec,0xf7,0x91,0x8a,0x1d,0x10,0x8,0x44,0xa1,0x80,0x51,0x2c,0x52,0x2a,0xdd,0xa3,0x58,0x2c,0x2a,0x5d,0x3f,0x89,0x69,0x9a,0x62,0x7d,0x6d,0xbd,0x74,0x78,0x74,0x60,0x90,0xd0,0x9c,0x66,0xbd,0x0,0x8,0x82,0xef,0x54,0x2a,0xf,0x70,0x6c,0x7,0xa1,0xf8,0x24,0x48,0x24,0xed,0x4e,0x1b,0xdf,0x3f,0xc7,0x30,0x4c,0xa5,0x6b,0xa7,0x11,0x86,0x21,0x96,0x65,0x41,0xca,0x91,0x4e,0xed,0x3d,0x29,0x25,0xb2,0x2f,0x71,0x1d,0x97,0x30,0xc,0x39,0x6d,0x9d,0x2a,0xdd,0x90,0xe7,0x7a,0xb8,0x8e,0xcb,0x79,0xb7,0xab,0xbc,0xbb,0x6e,0x4a,0x61,0x52,0x62,0x70,0xf6,0x55,0x8b,0x87,0xdf,0x6b,0x4a,0xe6,0x2e,0x1e,0xa6,0x18,0x90,0x15,0x32,0x6f,0xc0,0xed,0x7e,0xfe,0xcc,0x80,0x65,0x59,0xd4,0xf7,0x6a,0x63,0xb1,0xc6,0x7e,0x93,0x20,0x8,0x78,0xf1,0xf2,0xf9,0x58,0xfc,0xed,0x9b,0x77,0xa9,0xb1,0xeb,0xb0,0xb0,0x6,0xc,0xc4,0x7f,0x78,0xff,0x9,0x80,0x9d,0xdd,0x2d,0xea,0x7b,0xb5,0xa1,0xb0,0x34,0x81,0xd7,0x15,0x3d,0xca,0xc2,0x1a,0x0,0xd0,0x6c,0x7c,0xa4,0xd7,0xeb,0x1,0xb1,0x11,0x3b,0xbb,0x5b,0xc3,0xdc,0xe8,0x13,0x1f,0x8,0x4f,0x8b,0xfd,0x8d,0x85,0x36,0x60,0x1a,0xaa,0x3a,0x60,0xa1,0xdf,0x4,0x6b,0xf5,0x6d,0xca,0xe5,0x32,0xe5,0x72,0x79,0xec,0xe9,0xab,0x24,0x69,0x80,0x9,0xac,0xdc,0x4a,0xa5,0x1b,0xd2,0xd8,0x6f,0x2,0xb1,0x9,0xb5,0xfa,0xf6,0x58,0x6c,0x6,0x56,0x88,0x35,0xe,0x49,0x1e,0x81,0x10,0xb8,0x98,0xb5,0x8a,0xa,0x82,0x20,0x98,0xd8,0xd2,0x33,0xb4,0xff,0x5,0xb1,0xc6,0x21,0xb,0x7d,0x4,0xfe,0x5,0xb9,0x1,0xf3,0xde,0xc0,0xbc,0x99,0x68,0x80,0x88,0xa7,0x16,0x78,0xae,0xa7,0xbc,0xa8,0xe7,0x7a,0xc3,0xa1,0xc8,0xbc,0x49,0xfd,0x1e,0x20,0x84,0x40,0x14,0x4,0xad,0x76,0xb,0xc7,0x76,0xd8,0xdc,0xd8,0x54,0x5a,0x54,0x22,0x69,0xb5,0x5b,0x88,0x82,0x98,0xbb,0x9,0x69,0x6,0x48,0x0,0xcb,0xba,0x8f,0xef,0xfb,0xb7,0xf2,0x9b,0xfd,0xcf,0x44,0xc8,0x40,0xd3,0x34,0xa5,0x6b,0xa7,0x61,0x9a,0x26,0x51,0x14,0x41,0xca,0x70,0x2f,0x69,0x40,0x4,0x5c,0x75,0xbe,0x75,0x2e,0xed,0xaa,0xbd,0xbc,0xfa,0x70,0xf5,0x4e,0xcd,0x4,0x81,0x2b,0x62,0x8d,0xa3,0x5b,0x19,0x63,0x8d,0x6c,0x4c,0x85,0x4f,0x6,0x89,0xcc,0xff,0x2f,0x90,0x93,0x93,0x93,0x6d,0x7e,0x1,0x6b,0xe,0xc1,0xdb,0xd6,0xe0,0xc4,0xba,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,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,0xdd,0x9,0x17,0x5,0xb,0x2,0xa9,0x9b,0xd2,0xa,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,0x6,0xd6,0x49,0x44,0x41,0x54,0x68,0xde,0xed,0x98,0x5d,0x8c,0x5d,0x55,0x15,0xc7,0x7f,0x6b,0x9d,0x73,0x3f,0x66,0xe6,0xce,0x74,0x7a,0x67,0x86,0x34,0xb6,0xb5,0x2d,0x23,0x6d,0xd1,0xe8,0x60,0x6a,0xa9,0x50,0x3e,0xd4,0x18,0xe3,0xb,0x49,0x1f,0x68,0xc5,0x7,0xe3,0x77,0x20,0x1,0x63,0x1a,0x51,0xf1,0x85,0xc4,0x68,0x22,0x98,0x9a,0xbe,0x88,0xa,0x8d,0x40,0xf4,0xa1,0x32,0xb5,0x4a,0xa8,0x81,0x4,0xc4,0x92,0x34,0xb1,0x26,0x90,0x48,0xa1,0xcd,0x50,0x4b,0x9,0x76,0xda,0x32,0xd5,0x69,0x99,0x99,0x76,0xee,0xbd,0xe7,0x63,0xef,0xe5,0xc3,0x39,0x77,0xa6,0xa5,0x33,0x30,0x77,0x66,0xde,0x9c,0x95,0xec,0x87,0xc9,0xb9,0xe7,0xcc,0xde,0x6b,0xfd,0xff,0xff,0xf5,0x5f,0x1b,0x96,0x62,0x29,0x96,0x62,0x29,0xfe,0x8f,0x43,0x66,0x7b,0x70,0xed,0x9a,0xfe,0x32,0x22,0x5f,0x45,0xd8,0x9,0x7c,0x44,0x8c,0xc0,0x0,0x91,0xfc,0x15,0xb3,0x45,0xdd,0x81,0x77,0x1e,0xf5,0x55,0xba,0x8b,0xeb,0x50,0x3a,0x0,0xcb,0x1f,0xce,0xff,0xff,0x38,0x6a,0xee,0x52,0xed,0xc2,0x23,0x27,0x46,0x8e,0x3e,0x68,0x9c,0x1b,0x9f,0x73,0x2,0xd6,0x7d,0xb8,0xbf,0x4d,0x55,0x9e,0xd2,0x40,0xef,0x8,0x54,0x11,0x11,0x44,0x14,0x0,0x15,0x99,0xda,0xda,0x62,0x65,0xc0,0xb9,0x94,0x36,0xeb,0xe7,0x2b,0x5f,0x7a,0x80,0x9b,0x6f,0xda,0x4a,0x67,0xe7,0x82,0xce,0xd,0x92,0xd5,0x67,0x72,0x12,0x7f,0xf0,0xd0,0xf3,0xba,0x77,0xf0,0xd7,0x27,0x5f,0x7f,0xeb,0x1f,0x37,0x3a,0x46,0x2e,0xbc,0xf7,0xa7,0xe1,0x8c,0xef,0xab,0xdc,0xa7,0x81,0xde,0x11,0x6,0xc1,0x4,0x48,0x45,0x40,0x9b,0x87,0x47,0x40,0x10,0x24,0x4f,0xc4,0x42,0xa,0x6f,0x1e,0x54,0x8d,0xb4,0xd6,0xcb,0x97,0xef,0xba,0x9f,0x4d,0x9f,0xd8,0xca,0xab,0x87,0xc6,0x68,0xd4,0xd3,0x45,0x41,0x56,0xb1,0xa8,0xfa,0xd9,0x9b,0xbe,0x70,0x9,0xa7,0xfd,0xf5,0xdf,0x4d,0xfc,0xe2,0xf8,0xb9,0x91,0xaf,0xcf,0x29,0x1,0xc0,0xce,0x20,0x8,0xc,0x93,0x4e,0x51,0x11,0x55,0xcd,0x2a,0x9e,0xa3,0x20,0x43,0xc4,0xc2,0x71,0x60,0x18,0x41,0x41,0xa9,0xc8,0x6a,0xb6,0x6c,0xbe,0x9d,0xd7,0xfe,0x3e,0x4a,0xb1,0x58,0xa2,0xa3,0x23,0x5c,0x14,0x6c,0x79,0x6f,0x1c,0x7e,0xe9,0x3f,0x95,0xdb,0x3f,0xf3,0x79,0x3f,0xb8,0xef,0xb7,0x5f,0x3,0xe6,0x9c,0x80,0x15,0x8a,0x8,0x2a,0xf9,0x61,0xa7,0x17,0x48,0x4e,0x3,0x8f,0xf7,0x86,0xf7,0x1e,0x11,0x41,0x73,0xaa,0x98,0x19,0x66,0x36,0xf5,0xfb,0xe6,0x73,0x11,0x99,0x86,0x75,0x33,0x6f,0x2a,0x88,0x82,0x4f,0x3,0x48,0x20,0x8d,0x3c,0x81,0xa,0x8e,0xc5,0xd1,0x17,0x11,0xc1,0x25,0xe0,0x62,0x54,0x5c,0x69,0xc6,0x8f,0x86,0xb3,0xa0,0x47,0xc8,0x37,0xad,0x81,0xa2,0x28,0x48,0x93,0x2,0x92,0xef,0x5d,0xe9,0x5e,0xd6,0x45,0xb9,0xdc,0x86,0x73,0x29,0xef,0x8e,0xbd,0x8b,0xf3,0x9e,0x72,0xb1,0x44,0xa9,0x54,0xe6,0xd2,0xc5,0x8b,0x78,0xef,0x59,0xbe,0x7c,0x39,0x8d,0x7a,0x9d,0x38,0x8d,0x91,0x8c,0x49,0xd3,0x8,0xf0,0x10,0xa8,0x91,0x9a,0x90,0x46,0xe0,0x12,0xc3,0x7,0x1e,0xb0,0x5,0x61,0xcb,0x2e,0x4f,0x40,0x6c,0xa4,0x11,0x98,0x89,0xcc,0x39,0x1,0x57,0xf0,0xdd,0x32,0x5,0x10,0x11,0x44,0x73,0x21,0x54,0x45,0x9,0x78,0xed,0xf5,0xa3,0x5c,0x18,0x1f,0x25,0x20,0x64,0x60,0x60,0x0,0x45,0x19,0x1d,0x3d,0xcf,0xf8,0xf8,0x18,0xab,0x57,0xad,0x21,0xc,0x4b,0x1c,0x3b,0x76,0x94,0xde,0xde,0x6b,0xe8,0x68,0xef,0x98,0xbd,0x9,0x18,0xb8,0x18,0x5c,0x6c,0xb8,0x20,0x43,0x90,0x79,0x9b,0x1f,0xc3,0x2c,0xef,0x54,0x59,0xcd,0xf0,0x89,0xc7,0x45,0xb3,0x77,0x2d,0x9d,0x5,0x3b,0x20,0x82,0xa0,0x48,0x4e,0x83,0xa6,0xe,0xa8,0x4,0x34,0xea,0x11,0xc5,0xb6,0x2,0x7f,0x3d,0xf8,0x3c,0x66,0x46,0x2d,0x9a,0xe4,0xba,0xf5,0xfd,0x24,0x49,0xc2,0xf6,0x1d,0xdb,0x39,0xf0,0xdc,0x1,0x96,0x75,0x77,0x31,0x31,0x3e,0xce,0xfe,0x3f,0xef,0xe7,0x96,0x5b,0xb6,0x92,0xa6,0x29,0x41,0x10,0x5c,0x45,0xa9,0x26,0x6d,0xe2,0x8,0x92,0xd8,0xe7,0xcb,0x8,0xca,0x9,0x41,0x21,0x21,0x28,0xb6,0xb8,0xca,0x9,0x9e,0x94,0xa4,0x6e,0xa4,0xb1,0x91,0x44,0x9e,0x38,0x9a,0xbd,0x6b,0x87,0xef,0xdb,0x9e,0x5,0xb0,0x26,0xec,0xd,0x8,0x48,0x5d,0x4a,0x7b,0x47,0x3b,0x8f,0xee,0xf9,0xd,0x67,0x4f,0x9f,0x65,0xcb,0xa7,0x3e,0xcd,0xad,0xb7,0xdd,0xca,0x1f,0x6,0x9f,0x62,0xeb,0xcd,0x5b,0x11,0x84,0x2d,0x37,0x6e,0x61,0xc7,0x5d,0xdb,0xf9,0xd9,0x4f,0x1f,0xa2,0xda,0x53,0xa5,0xb3,0xb3,0x13,0xc3,0x32,0xd,0xbd,0x5c,0x7,0xac,0xd9,0xb2,0x84,0x24,0x6,0x8b,0x3d,0x5e,0x1c,0x22,0x1,0xa7,0x4f,0x9e,0x41,0x35,0xc4,0xcc,0xb7,0x24,0xfd,0x86,0x51,0x69,0xeb,0xa6,0xbd,0x6d,0x19,0x3e,0x75,0x58,0x6c,0xd9,0xb7,0x69,0x31,0x1,0xe4,0x82,0x97,0x55,0xe9,0x32,0xb0,0x78,0x18,0xf8,0xe4,0x0,0xd5,0x6a,0xf,0xf,0x7c,0xff,0x47,0x44,0x51,0xc4,0x9e,0x47,0xf7,0xf0,0xed,0xbb,0xbf,0xc5,0xdd,0xf7,0xdc,0xc3,0x8b,0x2f,0xbc,0xc8,0xd9,0x77,0xce,0xb2,0x6d,0xdb,0x36,0x9e,0x78,0xfc,0xc9,0x4c,0x28,0xcd,0xa3,0x3a,0x5,0xac,0x2b,0xc5,0x46,0xb3,0xea,0xa4,0x11,0x44,0xb1,0x47,0xd5,0xf0,0x96,0xf0,0xa1,0xbe,0x8f,0xe6,0x87,0x97,0x16,0xd9,0x2f,0xc4,0x71,0x83,0x5a,0x2d,0x22,0x50,0x25,0x8a,0x1d,0x49,0x3,0xcc,0xb,0xad,0x88,0x60,0x5e,0x7c,0x3,0xf1,0x19,0x15,0xb0,0xcc,0xc,0x9,0x74,0xb4,0xb7,0x33,0x31,0x31,0x4e,0xea,0x52,0xfa,0xfa,0xfa,0x38,0x75,0x6a,0x98,0x7a,0x3d,0x62,0x79,0x77,0x37,0x95,0x4a,0x85,0xc3,0x87,0xf,0x23,0xa6,0xdc,0xff,0x83,0xef,0x91,0x24,0x31,0x61,0x18,0x62,0x36,0xbb,0xb4,0x99,0x81,0x6b,0x80,0x8f,0x3c,0x29,0x1e,0x1,0xce,0x25,0xff,0x42,0x9,0xb0,0x16,0x3b,0x82,0x89,0x51,0xf0,0x15,0x42,0xab,0xe0,0xc4,0xe1,0xa2,0x4c,0x3,0x5a,0xa6,0xc0,0xd5,0x66,0x71,0x7a,0xf3,0xc3,0xc3,0xc3,0xf4,0xf5,0xf6,0xb1,0x6a,0xf5,0x4a,0xf6,0xfe,0x7e,0x2f,0xdd,0x3d,0x55,0x36,0x6c,0x5c,0xcf,0x1f,0x7,0xf7,0x51,0x6e,0x2b,0x53,0x2a,0x96,0xf8,0xf1,0x83,0x3f,0xe1,0xe9,0x3,0x7f,0xa2,0x5a,0xad,0x52,0xab,0xd5,0x50,0xd5,0x99,0x77,0x61,0xd9,0x8a,0x1a,0xe0,0x22,0x48,0xbd,0xa1,0x2a,0x44,0xb5,0x2,0x22,0x8a,0xb5,0x64,0xb9,0x33,0x5e,0x59,0x41,0xd0,0x82,0xc7,0x0,0x1f,0x43,0x5c,0xcf,0xa9,0xdc,0x72,0x2,0x2c,0xef,0xdd,0x32,0xbd,0x89,0x20,0x8,0x38,0xfe,0xc6,0x71,0x6,0x7,0xf7,0xf1,0xd8,0x9e,0xc7,0xb8,0x73,0xfb,0x9d,0x6c,0xda,0xb4,0x89,0x93,0x27,0x4e,0xf2,0xcc,0xd3,0xcf,0xf0,0x9d,0xef,0xde,0xcb,0xc6,0x8d,0x1b,0x19,0x1f,0x1f,0x67,0xf7,0xae,0xdd,0xec,0xda,0xbd,0x8b,0x72,0xb9,0x3c,0xe5,0x7,0x66,0x3a,0xbf,0x9a,0x10,0x37,0x20,0x8e,0x3d,0x8a,0x61,0xe6,0xe8,0xad,0xae,0xc1,0xcc,0xb5,0x6c,0xb6,0x4,0xa1,0x51,0xaf,0x51,0xaf,0x37,0x50,0xd,0x89,0x23,0x4f,0xd4,0xb8,0xe2,0x8,0x1f,0x3c,0xb,0xf4,0xaf,0xbb,0xce,0xda,0xcb,0x6d,0x20,0x10,0x48,0x88,0x28,0x59,0x37,0x60,0xda,0xec,0xa8,0xc2,0x86,0x8d,0x1b,0x18,0xb8,0xe1,0x6,0x4e,0xf,0xf,0xf3,0xf2,0xcb,0xaf,0x10,0xc7,0x31,0x5d,0x5d,0x5d,0x94,0xca,0x25,0x46,0xff,0x3b,0x8a,0xf7,0x9e,0xb5,0xeb,0xd6,0x72,0x6e,0xe4,0x1c,0x51,0x14,0x5d,0x7d,0x78,0xf,0x61,0x11,0x26,0x4f,0x5c,0xcf,0xbd,0x3b,0x9e,0xe4,0x8d,0x57,0xde,0x24,0xc,0x4b,0xa8,0x28,0xa3,0xd1,0x71,0x54,0xa,0x2d,0xf,0x5,0x66,0x9e,0xf6,0x42,0x2f,0xed,0x41,0x2f,0x8e,0x94,0xb8,0x51,0xe3,0xe3,0x9b,0xd7,0xf3,0xcb,0xfd,0xdf,0xe0,0xc8,0xf9,0x27,0xa4,0x5,0x4,0x64,0x82,0xe2,0x71,0x28,0x3a,0x95,0xa9,0x69,0x97,0xa7,0xbc,0x79,0xe2,0x2d,0x8e,0x1d,0x1d,0xa2,0x58,0x2c,0xe6,0x4e,0x4f,0x98,0xbc,0x54,0xa3,0x36,0x59,0xcf,0x7c,0xbe,0x4,0xbc,0x73,0x66,0x84,0x24,0x49,0x66,0x46,0xbf,0xcf,0x16,0x40,0x52,0x87,0x38,0xf2,0x39,0x54,0x1d,0xcb,0xf5,0x63,0xf3,0x9b,0x88,0x4,0x7c,0xea,0x88,0x72,0xe3,0x95,0x46,0x46,0xdc,0x98,0xdd,0x7,0x84,0xb3,0x67,0x32,0x37,0x15,0xc1,0xf4,0xdf,0x22,0x99,0x2a,0x9b,0x81,0xf7,0x1e,0x6f,0x9e,0x62,0xb1,0x84,0xf7,0x6e,0x8a,0xab,0xce,0xb9,0xcb,0xbe,0x61,0xc4,0x71,0xfc,0xbe,0x29,0x36,0x33,0xf0,0x99,0x8,0x92,0x1a,0x2a,0xd9,0xfb,0xce,0x26,0x17,0x60,0x81,0x9b,0x25,0xf3,0x58,0xea,0x71,0x8d,0xac,0xd5,0xce,0x3d,0x1,0x66,0x66,0x78,0x41,0x4,0x33,0x9d,0x72,0x65,0x5e,0xb3,0x4e,0x4b,0xd3,0xd7,0x1b,0x24,0xce,0xcd,0x7f,0x26,0xb2,0xbc,0x3,0x18,0x44,0x89,0xc7,0xc5,0x46,0x6c,0x96,0x2b,0xbf,0x2e,0x74,0x14,0x42,0xc8,0xac,0x70,0x23,0x6,0x6f,0x32,0xf7,0x59,0xc0,0x60,0xc4,0xbc,0xad,0x10,0x15,0xc,0x13,0xc3,0x63,0x28,0x6a,0x86,0x21,0x99,0xa0,0x88,0x65,0xad,0x6d,0xa6,0x3b,0x8b,0x19,0xcc,0xce,0x7b,0x9f,0x49,0x3e,0xb3,0x8b,0x1,0x41,0x4c,0x94,0x34,0xc0,0x84,0x24,0xb2,0xcb,0x66,0x86,0xf9,0xd,0x45,0x42,0x66,0x38,0x3c,0x1e,0xf3,0x42,0x9c,0x3a,0x6f,0x12,0xe9,0xdc,0x7d,0x80,0xc8,0xee,0xd4,0xb9,0x9f,0x17,0x54,0x2f,0x9a,0x59,0xc5,0x83,0x88,0x39,0x9c,0x29,0x88,0xe5,0xc3,0x91,0x7d,0xf0,0x1e,0x6d,0xf6,0x73,0x34,0x29,0xe6,0x52,0xf0,0xed,0x67,0x18,0x3a,0x75,0x88,0xb5,0xd7,0xdc,0xc6,0xe8,0x99,0x61,0x92,0x34,0x61,0x41,0xb7,0x2e,0xd9,0xd5,0x15,0x61,0x10,0xb0,0x62,0xd5,0xf5,0xf5,0x63,0xa7,0x9f,0x6d,0xab,0xdb,0xc8,0xde,0x39,0x27,0xa0,0xda,0xd3,0xf3,0x48,0x12,0x45,0x5f,0xbc,0x38,0x31,0xf1,0xb9,0x42,0xb1,0x48,0x18,0x4,0x90,0xcf,0x2,0x59,0x51,0x33,0x78,0x2d,0xc6,0xa5,0x85,0x79,0x8,0x2a,0x17,0x38,0x32,0xf2,0x2b,0x5c,0xb5,0xc8,0xca,0x95,0x9b,0x29,0x51,0xc9,0x4,0x72,0x9e,0x9f,0x55,0xc0,0x14,0x62,0x9b,0xb4,0xa1,0xb1,0x67,0xdb,0x86,0x2e,0x3c,0x7e,0x7e,0x2c,0x19,0xda,0xd9,0xd2,0x9d,0xe0,0xc3,0xf,0x3d,0xbc,0xec,0xe0,0xdf,0x5e,0xba,0xef,0xed,0xb7,0xff,0xfd,0xcd,0x24,0x49,0xd6,0x34,0x49,0x39,0x13,0xaa,0x17,0x9a,0x5,0x13,0x23,0x4d,0x12,0xa8,0xf5,0x50,0x4e,0xae,0x25,0xf0,0x5d,0xb,0xbc,0x13,0x3,0x10,0x73,0xc1,0x24,0x85,0xce,0xb1,0xbf,0x14,0x7a,0x46,0x7e,0xf8,0xcf,0x23,0xaf,0xe,0x2d,0x5d,0x1,0x2f,0xc5,0x52,0x2c,0xc5,0x52,0x2c,0xc5,0x95,0xf1,0x3f,0x3d,0xec,0x5e,0x6b,0xe4,0x4d,0x1e,0xfb,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,0x6,0x0,0x0,0x0,0xa2,0x9d,0x7e,0x84,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x26,0x0,0x26,0x0,0x26,0x59,0xf,0xde,0x74,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,0xde,0x9,0x14,0x17,0x2,0x12,0xee,0x6d,0xd3,0x79,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,0xa7,0x49,0x44,0x41,0x54,0x68,0x81,0xed,0x99,0x4d,0x4f,0x13,0x51,0x14,0x86,0x9f,0x99,0x4e,0x6c,0x4b,0xc6,0x52,0xc5,0xb6,0x49,0x1b,0x5d,0xb1,0xf4,0x63,0x69,0x28,0x89,0xfc,0x7,0x63,0x42,0x8,0xff,0x40,0x11,0xc4,0x8d,0x51,0x2,0xb,0x5,0x56,0x86,0x8f,0xb8,0x51,0xff,0x0,0x69,0x20,0x24,0x6,0x24,0xfc,0x1,0x68,0x58,0x82,0x11,0x77,0x6e,0xc,0x24,0x2d,0x6,0x3a,0x49,0xad,0xd3,0x32,0xe5,0xba,0x18,0xdb,0x94,0x71,0x2,0xb1,0xb9,0x63,0x23,0x9d,0x67,0xd5,0xde,0x73,0xe6,0xcc,0x7b,0xde,0xe9,0x9d,0xcc,0x9c,0x82,0x8f,0x4f,0x5b,0xa3,0x38,0xbe,0x77,0x0,0x51,0x40,0x7,0x2,0x2e,0xf1,0xff,0x15,0x1,0x54,0x81,0x22,0x50,0x0,0x4a,0xb5,0x80,0xe6,0x48,0x8c,0x2,0xb7,0x81,0xeb,0x40,0x88,0x8b,0x65,0x80,0x9,0x7c,0x3,0x76,0x38,0xc3,0x0,0x1d,0xb8,0x71,0xeb,0xe6,0x9d,0xd9,0x54,0x32,0x15,0xd6,0x34,0xcd,0x53,0x3,0xaa,0x55,0x8b,0xe3,0x63,0xb,0xcb,0xb2,0x10,0x8,0x5b,0xa6,0x4c,0x14,0x50,0xec,0x6b,0x28,0xe,0xbe,0x1f,0xfc,0xfc,0xbc,0xfb,0x69,0x14,0xf8,0xda,0x98,0xe2,0x34,0x40,0x3,0x82,0xa9,0x64,0xaa,0xc3,0x34,0x4d,0x4c,0xd3,0x94,0xac,0xe8,0x34,0x95,0x4a,0x85,0x52,0xe9,0x7,0xe5,0x4a,0x5,0x71,0x72,0x62,0x9b,0x20,0x11,0x5,0x5,0x45,0x55,0xd1,0x75,0x5d,0x89,0x5d,0x8b,0x75,0x0,0x41,0x1c,0x3d,0x3b,0xd,0x0,0x50,0x34,0x4d,0xf3,0xbc,0x79,0x80,0x6a,0xb5,0x4a,0xb9,0x52,0x26,0x1a,0xbd,0x42,0x3c,0x16,0xaf,0x5d,0x2d,0x69,0x8,0x4,0xf9,0x83,0x3c,0x85,0xc2,0x11,0x5d,0x57,0xbb,0xc0,0x65,0x4b,0xbb,0x19,0xf0,0xcf,0x10,0x8,0xc4,0x89,0x20,0x11,0x4f,0x60,0x9a,0x26,0xf7,0x1f,0xf4,0x4b,0xad,0xbf,0xbc,0x94,0x21,0x11,0x4f,0x70,0x74,0x78,0x88,0x10,0xee,0xbf,0x2e,0x55,0xea,0x19,0x9b,0xa0,0xb6,0xf7,0x65,0x37,0xf,0xbf,0x6b,0xa,0xce,0xdc,0x5a,0x2d,0x37,0xa0,0xd5,0xf8,0x6,0x34,0x73,0x90,0xae,0xeb,0x8c,0x4f,0x8c,0xb1,0xb6,0xbe,0xca,0xda,0xfa,0x2a,0xe3,0x13,0x63,0xe8,0xba,0xe,0x40,0x76,0x6b,0x83,0xe7,0x2f,0x9e,0xd5,0x73,0xb3,0x5b,0x1b,0x72,0x94,0x7a,0x44,0x53,0x6,0x8c,0x3e,0x1d,0x1,0x60,0xa0,0x7f,0x90,0x81,0xfe,0x41,0x54,0x35,0x50,0x5f,0x3,0x48,0xf7,0xa6,0xe9,0xee,0xee,0x96,0xa3,0xd0,0x63,0x9a,0x32,0x20,0xdd,0x9b,0x66,0x7e,0xee,0xd,0x86,0x61,0x60,0x18,0x6,0x73,0xb3,0xf3,0xf4,0xa4,0x7b,0xea,0xf1,0x77,0x6f,0xdf,0xf3,0x64,0x74,0x58,0x9a,0x48,0x2f,0xf1,0xe4,0x1e,0xb0,0xba,0xf2,0x91,0x50,0x38,0x4c,0x5f,0xdf,0x3d,0x2f,0xca,0x4b,0xa5,0x29,0x3,0x36,0x37,0x36,0x79,0x3c,0x3c,0x44,0x24,0x12,0x21,0x12,0x89,0x30,0x3c,0x32,0x44,0x76,0x33,0x7b,0x2a,0x67,0xe6,0xf5,0xc,0x8f,0x86,0x1e,0x4a,0x11,0xe9,0x25,0x4e,0x3,0x42,0x40,0xe7,0x79,0x7,0xcd,0xce,0xcc,0xa3,0xaa,0xa,0x99,0xc5,0x5,0x32,0x8b,0xb,0xf5,0xb5,0x46,0x76,0x77,0xbf,0xb0,0xbd,0xbd,0x23,0x4b,0xa7,0x2c,0x3a,0xb1,0x7b,0xac,0xe3,0x7c,0x12,0x34,0x1,0xe3,0xbc,0x2a,0xc5,0x62,0x91,0x57,0x2f,0xa7,0x5c,0x63,0x3d,0x77,0x7b,0xeb,0x9f,0xa7,0x26,0xa7,0x99,0x9a,0x9c,0xfe,0x6b,0x95,0x1e,0x62,0x60,0xf7,0x58,0xc7,0x7f,0xe,0x68,0xb5,0x80,0x56,0xe3,0x1b,0xd0,0x6a,0x1,0x8a,0x3d,0xb5,0x60,0x79,0x29,0x23,0xbd,0xf6,0xf2,0x52,0xa6,0x71,0x28,0xe2,0x4a,0x4b,0x5f,0x87,0xed,0x81,0x85,0x42,0x2e,0x9f,0x23,0x1e,0x8b,0xb3,0xb6,0xf2,0x41,0x6a,0xfd,0x60,0x30,0x48,0x2e,0x9f,0x43,0x51,0x15,0x14,0xc5,0xdd,0x4,0x37,0x3,0x84,0x65,0x59,0x84,0x42,0x21,0xcf,0x87,0x22,0x81,0x40,0x80,0xe0,0xa5,0x20,0x85,0x42,0xc1,0x7e,0x67,0xf7,0x6c,0x22,0x74,0xb9,0xb6,0xf4,0xc7,0x9,0x9c,0x6,0x58,0x40,0x79,0x6f,0x7f,0xaf,0x94,0x4a,0xa6,0xc2,0xba,0xae,0x5f,0xa8,0x99,0x20,0x50,0xc6,0xee,0xb1,0x31,0xe5,0x14,0x49,0xda,0x63,0x2a,0xbc,0x5f,0xb,0xb4,0xfd,0xff,0x2,0x3e,0x3e,0x3e,0xed,0xcd,0x2f,0xbd,0x80,0xe4,0x2f,0x1f,0x1c,0x6a,0x6c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -385,12 +380,12 @@ static const unsigned char tool_button_pressed_png[]={ 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,0x20,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0x73,0x7a,0x7a,0xf4,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0xda,0xc,0x3,0x2,0x34,0x35,0x46,0x29,0x34,0xbc,0x0,0x0,0x3,0xda,0x49,0x44,0x41,0x54,0x58,0xc3,0xc5,0x97,0x3d,0x8e,0x65,0x49,0x11,0x85,0xbf,0x73,0x22,0xdf,0xeb,0x1e,0x69,0x24,0xd8,0x5,0x5e,0x2f,0x60,0xc,0xec,0xf1,0x86,0x2d,0x20,0xd8,0x7,0x62,0x1f,0x20,0xb6,0x0,0x1e,0x12,0xe,0x1a,0x1,0xfe,0xb4,0xc7,0xe,0x0,0xb,0x83,0x11,0x53,0xf7,0xde,0x88,0xc0,0xc8,0xbc,0xd5,0xd5,0xa5,0x87,0xd4,0xf,0xaa,0x20,0xa5,0x54,0x4a,0xf7,0x27,0xe3,0xc4,0x89,0x13,0x11,0x99,0x2,0x78,0xf7,0xee,0x9d,0x98,0x43,0x4f,0xe6,0x6b,0x8c,0x7e,0x32,0x79,0xff,0xfe,0x7d,0x6b,0x19,0x17,0x10,0xc0,0x0,0xbc,0xe6,0x6b,0x8c,0x5a,0xf3,0x0,0x12,0xe8,0xb1,0x5e,0x4,0xf0,0x6,0x78,0xbb,0xd6,0xf1,0xa,0x2c,0xf4,0x32,0xfc,0x0,0x7c,0xb7,0xd6,0xe3,0x34,0x34,0x96,0xf1,0xef,0x1,0x9f,0x3,0xd7,0xc5,0x82,0x5e,0xd0,0x78,0x1,0x1b,0xf0,0x8f,0xf5,0x2c,0x81,0x3c,0x1,0x78,0x79,0xfe,0x39,0xf0,0xfd,0x5,0x26,0x5e,0x18,0x40,0x2e,0xcf,0x59,0xeb,0x3f,0x1,0x9d,0x21,0xf0,0x62,0xe1,0xa,0xbc,0xfd,0xe5,0x2f,0x7e,0xfe,0xdb,0xd7,0x10,0xc0,0x4f,0x7e,0xfa,0xb3,0x2f,0x97,0x8d,0x53,0x6b,0x7a,0x1a,0xeb,0x93,0x89,0xd8,0x73,0xe3,0xd7,0xbf,0xf9,0xd5,0x8b,0x1a,0xff,0xd1,0x57,0x3f,0x3e,0xb5,0xf6,0x51,0x68,0xc7,0xb3,0xef,0x4,0x68,0xdf,0x77,0x46,0x4,0x5f,0xfc,0xf0,0x7,0xb7,0x14,0x5c,0x4f,0x53,0x69,0xad,0xcf,0xd3,0xd8,0x4f,0xb3,0xe9,0x4f,0x5f,0xff,0x99,0x7d,0xdf,0xb9,0x95,0xe2,0xe3,0x16,0xda,0xe3,0x38,0x3e,0x4,0xe7,0x83,0x60,0x6e,0x1,0xe8,0xe7,0xe0,0xd7,0x7c,0xfa,0x3e,0x34,0xe6,0x9e,0xb7,0xc6,0x6d,0x0,0xdb,0x3,0x97,0x88,0x99,0x9f,0x41,0x76,0x29,0xe5,0x2e,0x72,0x2,0x68,0xa9,0xb2,0xdd,0x8a,0xec,0xce,0x20,0x40,0x15,0x9,0x39,0xbd,0xb7,0xd4,0xb4,0x3b,0xa1,0x43,0xc5,0x25,0x22,0x8e,0xed,0xe1,0xd3,0x1,0x6c,0xc7,0xe,0x36,0x96,0xaa,0x6b,0x19,0x2d,0x25,0xfa,0xc0,0x42,0xa8,0x9a,0x52,0xa3,0x82,0x99,0x36,0xda,0x3,0xa1,0x6a,0x67,0x74,0xaa,0x3a,0x4e,0x66,0xec,0xd8,0x8e,0xfd,0xe,0x6,0x8e,0x83,0xeb,0x30,0xe5,0xae,0x80,0xea,0x8c,0x52,0x64,0x9d,0x4c,0x24,0xcc,0xe7,0xa5,0xa9,0x81,0xb6,0xb2,0x8a,0xa3,0xed,0xab,0xd4,0xb9,0xd4,0x96,0x2b,0x24,0xd7,0xe1,0xfb,0x42,0xb0,0xef,0x3b,0xb2,0x71,0xa9,0x1a,0x6a,0x44,0xd6,0x51,0x7a,0x64,0xc2,0x50,0xd,0x55,0x76,0x5f,0xaa,0x50,0x24,0x47,0x49,0x57,0x55,0xe7,0xd2,0xc5,0x6e,0xe3,0x2a,0x5,0x48,0xf6,0x29,0xc2,0x4f,0x7,0x70,0x19,0x46,0x76,0x1b,0xba,0xa1,0xc2,0x93,0xfa,0x82,0xca,0x19,0x86,0xbc,0x54,0x35,0x76,0x37,0x28,0x3c,0xc5,0x17,0x55,0x60,0x2b,0x96,0xf7,0x65,0xfb,0x32,0xee,0x4,0x90,0xc7,0x6,0x36,0x40,0x57,0xd0,0x91,0x53,0xd1,0xcb,0xbb,0x7a,0xb,0x49,0x64,0xee,0x44,0x9d,0x5c,0x47,0x10,0x99,0x53,0x82,0x6,0x9,0x9c,0x97,0xee,0x80,0xc6,0x9e,0x7b,0x7e,0xb2,0x6,0x6a,0xe3,0xcd,0xa5,0x59,0x89,0xd0,0xc4,0x4,0x10,0x2b,0xb5,0xa,0x1a,0xa2,0x22,0x96,0x28,0x63,0x16,0x97,0x88,0xc7,0x14,0xa4,0x33,0x1e,0xbf,0x7f,0x73,0x69,0x8e,0xba,0xd,0xe0,0x66,0xdb,0xdd,0xf3,0x1,0x7b,0x10,0xd3,0x28,0x31,0x37,0xc4,0x19,0x6d,0x89,0x96,0xda,0x19,0xf4,0x14,0x68,0xb6,0x54,0xce,0x68,0x66,0xb8,0xa6,0xf1,0x51,0xb3,0x8,0x0,0xf6,0x60,0xcf,0x3b,0xd2,0xb0,0x6b,0xe3,0x12,0xa2,0x25,0x9d,0xf5,0x33,0x46,0x11,0xa0,0x74,0x13,0x20,0x46,0x11,0xc8,0x8c,0x9a,0x8e,0x8c,0xc2,0xcc,0xef,0x19,0x33,0x3d,0x42,0xa2,0x81,0x4b,0x88,0xba,0x87,0x81,0x3c,0x36,0x62,0x18,0x11,0x84,0x5b,0xb8,0x15,0x6e,0x55,0x6,0x51,0x52,0x80,0x2a,0x23,0x2,0x8c,0x7b,0x28,0xc3,0x22,0x22,0x40,0xca,0x50,0xb8,0x11,0xa1,0xc7,0x7f,0xc7,0x9d,0x1a,0xd8,0x8e,0x83,0xcf,0x3e,0xf3,0xf4,0x94,0x10,0x25,0x1d,0x6e,0x29,0x30,0x83,0xae,0x63,0xb4,0x2f,0x8d,0xb0,0x54,0xea,0xbe,0xb4,0x54,0x52,0x11,0x41,0xe0,0xb0,0x5c,0x85,0xaa,0x86,0xc6,0x4a,0xc3,0xed,0x9e,0x3a,0x90,0xc7,0x86,0xe2,0xca,0xe1,0xd6,0x0,0xe1,0xf6,0x80,0x3e,0xa0,0x55,0x26,0xdc,0x1c,0x25,0x3d,0x40,0x47,0x9b,0x41,0x82,0x5b,0x47,0xc9,0x40,0x6c,0x65,0xf,0xf7,0xd9,0x8c,0xa4,0x88,0x3b,0xb3,0x60,0x4f,0x86,0x4d,0x94,0xcc,0xc8,0x6e,0x68,0xca,0x1d,0x23,0x9b,0x32,0x47,0x89,0x31,0xd2,0x71,0x44,0xa3,0x6a,0x5c,0x72,0x19,0xdc,0xa6,0x64,0x4a,0x81,0xdb,0x7,0x38,0xc0,0xc3,0xe6,0xd8,0xf3,0x1e,0x0,0x3b,0xad,0xb,0x65,0x9b,0x72,0x9b,0x9c,0x9d,0xad,0x4c,0x4f,0x4a,0x95,0xe5,0xb6,0x73,0xa6,0x5c,0x99,0x84,0xa9,0xd,0xdb,0x26,0xdd,0x10,0x22,0xc,0xe9,0xd6,0x85,0xe3,0xae,0x4a,0x98,0x3b,0xc3,0x10,0x2e,0x27,0xb4,0x2a,0xc0,0x85,0xd5,0xaa,0x96,0xa2,0x10,0xae,0xf6,0x1,0xbb,0xa3,0xc3,0x53,0xf5,0x13,0x44,0x39,0x91,0x29,0x1b,0x70,0x11,0x1e,0x9e,0x7b,0xde,0x55,0x8a,0xed,0xeb,0x79,0x5c,0xe,0x3c,0x3b,0x5e,0xb5,0x66,0xbf,0x77,0x19,0xe8,0x1a,0xea,0x59,0x8b,0x66,0xd7,0x3b,0xcb,0xef,0xcc,0x8e,0x3a,0x35,0x10,0xf6,0xf5,0x93,0x4b,0x71,0x3,0xbd,0x6d,0x85,0x6d,0xfe,0xf6,0x97,0xc7,0xe2,0x71,0xd6,0xa3,0xff,0x68,0xd8,0x66,0xdb,0x8a,0x1b,0x87,0x18,0xc6,0xb3,0xa3,0x55,0x1,0xb9,0x1d,0x7,0x7f,0xf8,0xe3,0x37,0x2f,0x7b,0x22,0x9d,0xbd,0x25,0x9f,0x9c,0xa8,0x3e,0x62,0xe0,0xbc,0xad,0x6c,0xc0,0x77,0xbf,0xff,0xdd,0x5f,0xbf,0x7c,0xc5,0x63,0xf9,0xb6,0x6c,0xd5,0x79,0x33,0x3a,0x3d,0x7f,0x0,0xbe,0x5d,0x3f,0x5c,0xff,0x1b,0xca,0xff,0xcd,0xc8,0x65,0xfc,0xdb,0x65,0xeb,0x23,0x0,0xc7,0x42,0xf7,0xf7,0xb5,0xbe,0xa4,0xf7,0xcf,0x59,0x38,0xaf,0x66,0xc7,0xd3,0xbb,0xe1,0xf9,0x22,0xd7,0x8d,0xe5,0x7f,0x75,0x39,0x9d,0x5e,0xfe,0x3f,0xaf,0xe7,0xff,0x2,0xd,0x2f,0x3a,0x83,0xce,0x22,0x38,0x16,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,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x14,0xf,0xd,0x2d,0xcd,0xa6,0x10,0x43,0x0,0x0,0x0,0xd2,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x93,0x3d,0x6a,0xc3,0x40,0x10,0x85,0xbf,0x55,0x6,0x2c,0x9,0x17,0xa9,0x77,0xb1,0x4f,0xe0,0x9f,0x42,0x27,0x12,0x42,0x65,0x8,0x3e,0x49,0xe,0x20,0x8c,0x4f,0xe4,0xc2,0x3f,0x75,0x9a,0xb0,0xaa,0x53,0x84,0x48,0x82,0x31,0x4a,0x11,0xa5,0x5d,0x5,0xd4,0xb8,0xf0,0x2b,0x87,0x79,0xdf,0x30,0xf0,0x9e,0x1,0x52,0xe0,0x19,0x98,0x3,0x4f,0x80,0x21,0xac,0x1e,0xb8,0x1,0x5f,0xc0,0xa7,0xc,0xe6,0xd,0xb0,0x0,0xe2,0x7f,0x2,0x5a,0xe0,0x3,0x38,0xcb,0x70,0x79,0xb9,0x5e,0x6d,0xdf,0x9c,0x75,0x89,0x88,0x4,0x1,0xaa,0xda,0xfb,0xda,0x37,0x97,0xeb,0x69,0x7,0xbc,0xb,0x20,0xc0,0xcc,0x59,0x97,0xb6,0x6d,0xcb,0xfe,0x50,0x1d,0x43,0x80,0x22,0x2f,0x33,0x67,0x5d,0x7a,0xb9,0x9e,0x66,0x80,0x44,0xc3,0xdc,0x88,0xc8,0xa8,0x19,0x60,0x7f,0xa8,0x8e,0x22,0xc2,0xdf,0xab,0x51,0x78,0x7d,0x5c,0xf,0xc0,0x3d,0x1,0x7a,0x55,0xa5,0xc8,0xcb,0x6c,0xcc,0x50,0xe4,0x65,0xa6,0xaa,0xf0,0x1b,0x69,0x4,0x50,0xa0,0xf3,0xb5,0xff,0x76,0xd6,0x25,0xaf,0x2f,0xbb,0x20,0x24,0x8e,0xe3,0xde,0xd7,0xbe,0x1,0x3a,0x40,0xd,0x60,0x99,0x50,0x26,0xc3,0xc4,0x3a,0xff,0x0,0x26,0xe4,0x45,0xbd,0xbe,0xa2,0xc,0xd0,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,0x30,0x0,0x27,0x0,0x35,0x33,0xd3,0x97,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,0xdd,0x9,0x1b,0x11,0x4,0x30,0xb7,0x2d,0x2b,0x51,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,0xc0,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xd0,0x2d,0x8e,0x2,0x41,0x10,0x86,0xe1,0xb7,0x7f,0x66,0x4,0x20,0xd6,0xb0,0x21,0x60,0x20,0x70,0x1,0x34,0x8a,0x5b,0xac,0x26,0x5c,0x62,0x4f,0xc0,0x11,0x30,0x4,0xcd,0x29,0x40,0xa1,0xb9,0x0,0x9,0x6a,0x12,0x2,0x6,0x1,0x23,0x9a,0xa9,0x2e,0xcc,0x1e,0x60,0x3a,0xeb,0x8,0xaf,0xff,0x9e,0x4a,0xca,0xa8,0x2a,0x83,0xde,0x68,0x5,0xfc,0x0,0x4d,0xea,0xf5,0x0,0x36,0xa7,0xe2,0x38,0x37,0xfd,0xee,0x70,0xeb,0xbc,0x9f,0x7a,0xef,0x48,0xa9,0xaa,0x4,0xa9,0xaa,0x9d,0xe9,0x77,0x87,0xd2,0x68,0x36,0xac,0x73,0xe,0x6b,0xea,0x21,0x51,0x5,0x11,0xa1,0x7c,0x94,0xd1,0x3,0x36,0xf3,0x79,0xd2,0x75,0x6b,0x1c,0xd6,0x3b,0xa0,0xb4,0x96,0x7f,0xf6,0x1,0xde,0x6,0x28,0xa2,0x4a,0xf2,0xf0,0x6f,0x53,0x58,0x60,0x19,0x42,0x20,0x5,0x89,0x2a,0x84,0x10,0x0,0x96,0x46,0x55,0x99,0x8c,0xa7,0x8b,0xeb,0xed,0x3c,0x7b,0x86,0xe7,0x77,0x1d,0x20,0xcb,0xb3,0x4b,0xfb,0xab,0xb3,0xde,0x1f,0x76,0xbf,0x46,0x55,0x41,0xc9,0x81,0x56,0xc2,0x4f,0x22,0x70,0xc7,0x10,0x5e,0xb5,0x47,0x48,0x5e,0x61,0x62,0xef,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,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x12,0xb,0xd,0x3b,0xe,0x30,0x79,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,0xbd,0x49,0x44,0x41,0x54,0x38,0x8d,0xdd,0x93,0x41,0x6a,0xc3,0x30,0x14,0x44,0xdf,0xa8,0x8a,0x97,0x26,0x27,0x48,0x9a,0x3,0xb4,0x90,0x1b,0xf4,0x66,0xf5,0x91,0x4b,0x16,0x9,0xd8,0x5f,0x9e,0x2e,0xac,0xa4,0x34,0xb8,0xb,0x6b,0xd9,0x1,0xa1,0x41,0x62,0x3e,0x33,0x1f,0x46,0xef,0x6f,0xe7,0xcf,0xcb,0xe5,0x6b,0x48,0x12,0x92,0x0,0xb0,0xbd,0xca,0xef,0xb0,0xcd,0x6c,0xd3,0xf7,0xfb,0x41,0xaf,0xc7,0x93,0xbb,0xdd,0x8e,0x9c,0xbb,0xe5,0x57,0x2,0x7b,0x9d,0x2f,0x6a,0x0,0x22,0x46,0xc6,0x69,0x22,0x27,0x89,0x9c,0x3b,0x72,0xce,0x6c,0x45,0x44,0x90,0x9e,0xed,0x6d,0x81,0x24,0xd2,0x2f,0x7b,0xdb,0xd4,0x0,0x75,0x40,0xb,0x6c,0x6c,0xd7,0x1,0xf7,0x45,0x6d,0x36,0x21,0x92,0x1b,0xc5,0x8f,0x8,0x92,0xda,0x76,0xf0,0xf,0x22,0x54,0xb4,0x47,0xa8,0x9a,0xf6,0x8,0x2c,0xa5,0xca,0xb3,0x4d,0xc4,0xf8,0xf3,0xfa,0x54,0x9a,0xbf,0xca,0x15,0x31,0x32,0xdb,0xbc,0x1c,0xe,0x27,0xae,0xb7,0xeb,0x47,0x29,0x41,0x29,0x41,0x89,0x69,0x39,0x25,0x88,0x7a,0xaf,0xf1,0x28,0x85,0xbe,0xdf,0xf,0xdf,0x7a,0xec,0x7c,0x19,0x53,0x3a,0x70,0xa,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -410,42 +405,22 @@ 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,0x4e,0x0,0x41,0x0,0x56,0xed,0xd0,0x4e,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,0xdd,0x9,0x1b,0x12,0x1e,0xf,0xb3,0x20,0x42,0xee,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,0x77,0x49,0x44,0x41,0x54,0x38,0xcb,0xa5,0x92,0xbd,0x4e,0xdc,0x50,0x10,0x85,0xbf,0xd9,0xb5,0xb2,0x38,0x80,0x4,0x11,0xb0,0x26,0x74,0x14,0xa4,0x48,0x4,0x1d,0x55,0x2a,0x44,0xc1,0x63,0xa0,0x74,0x79,0x4,0x1a,0xa2,0x54,0x91,0xf2,0x2,0x74,0x11,0x8f,0x41,0x41,0x49,0x95,0x32,0x52,0x9a,0xf4,0x28,0xcb,0xff,0x22,0x7e,0xc,0x6b,0x7b,0x4e,0x8a,0x7b,0xbd,0xe,0xa4,0xc8,0x22,0x46,0xb2,0x8e,0x74,0x75,0xef,0x37,0x73,0xce,0xd8,0x24,0x91,0xcd,0xbd,0xde,0x4,0x3e,0x2,0xab,0x8c,0x56,0xdf,0x81,0x1d,0x59,0xb5,0x6b,0xdd,0xd9,0xf9,0xed,0xee,0x4c,0xf6,0xf9,0xed,0xd2,0x32,0xd3,0x53,0xaf,0x46,0x7a,0x7d,0xd1,0x3f,0xe7,0xe7,0xaf,0x1f,0x1c,0x9d,0xf6,0x3e,0x59,0x77,0x76,0xfe,0xf7,0xfa,0xfb,0x8d,0x2c,0xbf,0xbb,0x25,0xbf,0xcf,0x47,0x2,0xa4,0x9d,0x94,0x74,0xec,0x25,0xfb,0x7,0x7b,0xbd,0x4,0xc8,0xce,0x2f,0xcf,0x78,0x4a,0xe5,0xf7,0x79,0xdd,0x2c,0x4b,0x0,0xe4,0x8e,0x64,0x98,0x9,0xcc,0x40,0x8d,0xd6,0xe7,0x92,0x81,0x9,0x3,0x4,0x58,0x84,0x25,0x0,0x95,0x3b,0x66,0x86,0x5c,0x41,0xd5,0xa8,0x0,0x53,0xbc,0xad,0xf0,0xf8,0x6f,0x40,0x8b,0x67,0x56,0xb0,0x20,0xa1,0x38,0x85,0x2b,0x8c,0x59,0x2b,0x80,0xc7,0x8e,0x8a,0xd6,0x6a,0x1b,0xd,0xc0,0x3d,0x5e,0x74,0x88,0x5e,0x87,0xa,0x98,0x2c,0x8c,0x6e,0xc2,0xdc,0x70,0x1a,0x5f,0x21,0x3,0x55,0xb4,0x68,0x21,0xfd,0xb,0x18,0xfa,0x95,0x5,0x0,0x60,0xb4,0x70,0x79,0x3,0x40,0xc2,0xa9,0x9a,0xf0,0xfc,0xa1,0xba,0xe2,0x24,0x44,0x8b,0x11,0x3c,0x4,0x78,0xb4,0x50,0xe7,0x11,0xba,0x85,0x69,0xdc,0x7c,0x98,0x85,0x22,0xa8,0xde,0x4e,0xd,0x38,0x1c,0x14,0xc5,0x42,0xd2,0x6e,0x3f,0x8c,0xf7,0xd1,0xea,0x1e,0x57,0x59,0x55,0x0,0x87,0xed,0x89,0xf1,0xc9,0xb4,0x28,0x6,0x6b,0x9d,0x4e,0xa,0xf5,0xee,0xff,0xf3,0x95,0x65,0xc9,0xc9,0xd9,0x11,0x45,0x59,0x7c,0x35,0x49,0xbc,0x7b,0xb3,0xf2,0xa5,0x7f,0x75,0xf1,0xa1,0x2c,0xcb,0xb9,0x91,0x76,0x9f,0x24,0xc7,0x53,0x93,0xd3,0xdf,0x4e,0xfa,0xbd,0x2d,0x93,0xc4,0xcd,0xe5,0xcd,0xb,0x60,0xe2,0x9,0x3f,0x96,0x3,0xd7,0x8b,0x4b,0x8b,0x83,0x3f,0xb0,0xb8,0xed,0xb9,0xad,0xea,0xa4,0x9f,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x14,0x11,0x9,0x88,0xc3,0x72,0x9,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,0x1d,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x54,0x55,0x56,0xfd,0xcf,0x40,0x1,0x60,0xa2,0x44,0xf3,0xa8,0x1,0xa3,0x6,0x8c,0x1a,0x30,0x98,0xc,0x0,0x0,0x7,0x54,0x1,0x8c,0x3f,0xc3,0xfb,0x99,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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x21,0x14,0x61,0x9b,0xa1,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,0x1,0x69,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x92,0xcd,0x4a,0x5b,0x41,0x14,0xc7,0x7f,0xff,0xb9,0xd7,0xc6,0x5b,0x22,0x69,0x12,0x90,0x6c,0xa,0x2d,0xd,0x85,0xbe,0x80,0xf,0xe0,0x93,0x88,0x3b,0x1f,0xc1,0x8d,0xe2,0x4a,0xf0,0x5,0xdc,0x89,0xcf,0xe3,0x23,0x94,0x2e,0xba,0x91,0xb4,0x62,0x2a,0x25,0x21,0x26,0xf7,0x7a,0x73,0x5c,0xdc,0x99,0xc9,0x88,0x2e,0xae,0x3,0x7,0x66,0xe6,0x7c,0xfc,0x3f,0x38,0x32,0x33,0x6,0x9f,0x86,0x7,0xc0,0x11,0xb0,0x47,0xbb,0x73,0x3,0x5c,0x6e,0x75,0xf2,0x6b,0xf5,0x7b,0x83,0x93,0x7e,0x6f,0x78,0x36,0xec,0xf,0x1,0xb5,0xec,0x37,0xa6,0xf,0x53,0x1e,0xfe,0x4f,0x4f,0xd5,0xef,0xd,0x26,0xe3,0x2f,0xdf,0x47,0xf5,0x7a,0xcd,0x6a,0xb5,0x6c,0xd5,0xde,0xe9,0x6c,0x93,0x39,0xc7,0xaf,0xdf,0x3f,0xff,0xe4,0xc0,0x68,0xf1,0xb8,0xe0,0x3d,0x27,0x1,0x1a,0xe5,0x0,0x92,0x3,0x81,0xcc,0xb0,0x58,0xa6,0x48,0x37,0xbc,0xa5,0xe6,0xd9,0x54,0x35,0xf9,0x66,0x80,0xf3,0xc5,0x12,0xa,0xb9,0xd8,0x27,0x48,0xff,0x1c,0x28,0xf1,0x2a,0x7,0x70,0x3e,0x6b,0xd,0xd,0xdf,0x27,0xcc,0x37,0x85,0x19,0x88,0x58,0xf9,0x92,0x81,0x84,0x21,0x9c,0x4,0x96,0x88,0x10,0x98,0x40,0x26,0xe4,0xdb,0x90,0x7,0x34,0x5e,0x4a,0x50,0xe4,0xa8,0x14,0xaa,0xd1,0x2d,0xef,0x41,0xf4,0x44,0xd1,0xa2,0x8d,0x89,0xe0,0x25,0x24,0xdb,0xf0,0xe6,0x5a,0x28,0x31,0x3a,0xe,0x48,0x10,0xcc,0x83,0x7,0x12,0x9,0x60,0x50,0xe7,0x7c,0x7e,0x63,0xa2,0xdc,0x6,0x2e,0x98,0xe8,0x35,0x28,0x61,0x11,0x80,0x3c,0xd7,0x38,0xec,0xb6,0xaa,0x2a,0x24,0xf9,0x70,0x3e,0xd2,0x7b,0xf6,0xea,0xbf,0xaa,0x2a,0x80,0xdb,0xac,0xd8,0x2e,0x8a,0x55,0xb9,0xdc,0x2f,0x3a,0x5,0x59,0xbe,0x95,0x14,0x85,0xc0,0x87,0xb,0x17,0xca,0x72,0xc9,0xdf,0xfb,0x9,0x4f,0xf5,0xd3,0x85,0xcc,0x8c,0xaf,0x9f,0xbf,0x9d,0xcf,0x17,0xb3,0xc3,0xba,0xae,0x77,0xdb,0xac,0x72,0x96,0x65,0x77,0xdd,0x8f,0x3b,0x57,0x8b,0x72,0x7e,0x2c,0x33,0x63,0xf6,0x6f,0xf6,0x1,0xe8,0x7a,0x49,0x6d,0xce,0x1a,0x98,0x8f,0x7f,0x8c,0xcb,0x67,0x6d,0xca,0x77,0x8d,0xe2,0x85,0x9c,0x25,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,0x4c,0x0,0x4a,0x0,0x4e,0x88,0x29,0x6a,0xb6,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,0xde,0x9,0x10,0x14,0x11,0x5,0x81,0x75,0x3e,0x22,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,0x1d,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x34,0x33,0x31,0xfb,0xcf,0x40,0x1,0x60,0xa2,0x44,0xf3,0xa8,0x1,0xa3,0x6,0x8c,0x1a,0x30,0x98,0xc,0x0,0x0,0xd6,0x1e,0x1,0xbf,0x4c,0xf9,0x63,0xb6,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,0x34,0x0,0x2e,0x0,0x39,0xc0,0x34,0x46,0xdb,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,0xdd,0x9,0x1b,0x12,0x7,0x34,0x99,0x2b,0x2,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,0x1,0x24,0x49,0x44,0x41,0x54,0x38,0xcb,0xa5,0x93,0x3b,0x4e,0x2,0x51,0x14,0x86,0xbf,0x61,0x26,0x23,0x8,0xc6,0xf8,0x62,0x6,0x8c,0x96,0x96,0x16,0x16,0x54,0x2e,0xc0,0xca,0x35,0x10,0x17,0x62,0xa2,0x9,0x6b,0xa0,0x73,0x11,0x56,0x2e,0xc0,0x86,0xc6,0xc2,0xd2,0xce,0x44,0x60,0x50,0x22,0xbe,0xc8,0xcc,0x5c,0xee,0xc3,0x6a,0x12,0x8,0x17,0x8c,0xcc,0x9f,0x9c,0xe6,0x26,0xe7,0xbb,0xe7,0xff,0x73,0x8e,0x63,0x8c,0x1,0x20,0x8,0x2,0x56,0x51,0x81,0x9c,0x9a,0x1,0xb8,0xc6,0x6f,0xba,0xc6,0xef,0xb8,0xc6,0x37,0xb,0xaa,0xe3,0x1a,0xbf,0x39,0xdd,0xe3,0x4d,0x35,0x5f,0x86,0xbb,0xf5,0xab,0xe3,0xa3,0x13,0xb6,0x37,0xf7,0xac,0xbf,0xbd,0x7f,0xbe,0x35,0x1e,0x9f,0x1e,0x1a,0xd1,0xb0,0x77,0xa8,0x1c,0x71,0xd,0xe0,0x64,0x19,0xd4,0xab,0x7,0xfd,0xb3,0xd3,0xf3,0x70,0x1c,0x8f,0x49,0xd2,0xd8,0xa,0x28,0xae,0x95,0x28,0x97,0xca,0xdc,0xdd,0xdf,0x46,0xca,0x11,0xb5,0x99,0x9,0x80,0xf0,0xe3,0x7b,0x84,0x52,0x6a,0xa1,0xdf,0x24,0x8d,0x99,0x48,0x1,0x10,0xce,0x59,0x0,0x48,0x45,0xf2,0x67,0x68,0x52,0x4d,0xb0,0x66,0x0,0x90,0xd9,0xf9,0x8f,0x66,0x0,0x52,0xca,0x7c,0x0,0x6d,0x54,0x4e,0x80,0xd6,0xb9,0x0,0x5d,0x21,0xc5,0xbe,0x57,0xf0,0x96,0x87,0xa8,0x25,0x40,0xd7,0xb6,0x89,0xed,0xc1,0xb0,0x87,0x90,0x2,0xa5,0xb5,0xb5,0x84,0x14,0xc,0x86,0x3d,0x80,0xf6,0xdc,0x4,0xca,0x11,0xad,0xf5,0x62,0x50,0x79,0x19,0x3c,0x5f,0x48,0x29,0xab,0xd6,0x71,0x3d,0xef,0x75,0x6b,0x63,0xe7,0xe6,0x2b,0x19,0xb5,0xb2,0x37,0x67,0xfa,0x1a,0xa3,0x7e,0xe4,0x3,0x95,0x25,0x47,0xa6,0x81,0x9f,0xb0,0x16,0xa,0x2b,0x60,0x15,0xfd,0x2,0x76,0xc9,0x92,0x92,0xf5,0xaf,0x5f,0x3b,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,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,0xde,0x9,0x11,0x14,0x5,0x3b,0xd6,0x6,0x93,0xb9,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,0xf2,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x93,0xb1,0x4a,0xc4,0x50,0x10,0x45,0xcf,0x4b,0x26,0x71,0x2a,0xb7,0x58,0xc1,0xca,0x6f,0xb0,0xb4,0x74,0x75,0x59,0x11,0xbf,0xc1,0x1f,0xf0,0xaf,0xac,0xfc,0x1,0x61,0x11,0x45,0x85,0x5d,0xb6,0xb0,0xf4,0x1b,0xb4,0x10,0xd1,0x42,0xc1,0x65,0x30,0xb3,0x59,0x8b,0x24,0x10,0x10,0xf2,0x82,0xb5,0xb7,0x99,0xea,0xdc,0x79,0xf3,0xb8,0x37,0x50,0x29,0x0,0x9,0x20,0xf5,0xec,0x52,0x9,0x78,0x3d,0xd7,0xa1,0x86,0x33,0x60,0x8,0xec,0x0,0x9b,0x1d,0x26,0x25,0xf0,0x9,0x3c,0x1,0xef,0x40,0xd1,0x6c,0x1c,0x4a,0x2a,0xa3,0xf1,0xe1,0xe4,0x22,0xcb,0xb2,0xce,0xf5,0x45,0x51,0x70,0x7b,0x7f,0x73,0xea,0xee,0x77,0xc0,0x6b,0x0,0x36,0x80,0xdd,0xe3,0xa3,0x93,0x7,0x33,0xc3,0xcc,0x3a,0xd,0x54,0x15,0x55,0xe5,0xea,0x7a,0xba,0x7,0x3c,0x26,0xf5,0xb,0x6,0x22,0x12,0x85,0x1,0xcc,0xc,0x11,0x1,0x18,0x0,0x49,0x73,0x6b,0x88,0x92,0xbf,0x95,0x0,0x21,0xf6,0xe3,0xbd,0x5c,0xfe,0xd,0x2a,0xad,0xff,0xc0,0x96,0x8d,0x41,0x9,0x7c,0xb8,0x3b,0xaa,0x1a,0xa5,0x54,0x15,0x77,0x87,0x2a,0xd2,0xab,0x0,0xa4,0xc0,0x76,0x9e,0xe7,0x93,0x83,0xfd,0xf1,0x79,0x9f,0x28,0xcf,0x17,0xb3,0xb3,0xe5,0xf2,0xeb,0x12,0x78,0x69,0x97,0x69,0x8b,0xfe,0x65,0x7a,0x6,0xde,0x80,0xef,0x26,0x81,0xed,0x3a,0xa7,0x91,0x2b,0x56,0xb4,0xea,0xfc,0x3,0x6e,0x28,0x47,0x29,0x38,0xc5,0x49,0x7f,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,0x73,0x0,0x29,0x0,0x7c,0x29,0x1e,0x61,0x18,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,0xdd,0x9,0x19,0x1,0x16,0x3a,0x99,0x23,0xd9,0x67,0x0,0x0,0x1,0x1,0x49,0x44,0x41,0x54,0x28,0xcf,0x85,0x91,0x3b,0x4e,0xc3,0x40,0x14,0x45,0x8f,0xc7,0x8e,0xad,0x28,0x2,0x45,0x4a,0x8a,0x20,0x50,0x24,0x36,0x40,0x83,0x44,0x8b,0x68,0xd8,0x4,0x9f,0x2e,0x9b,0x61,0x15,0xc8,0xde,0x45,0xa,0xa8,0x91,0xa8,0xd8,0x0,0x22,0x45,0x62,0x25,0x63,0x33,0xf6,0xc8,0x31,0x3f,0xcf,0xd0,0x38,0x28,0x38,0xa,0xdc,0xf2,0x9d,0x5b,0xbc,0xf3,0x1e,0xac,0x45,0x25,0x9a,0x66,0x44,0x3,0xa,0x19,0xab,0xcd,0x42,0xd,0x7d,0x63,0xec,0x1,0x30,0x5a,0x2f,0x79,0x2b,0x68,0xad,0xed,0x69,0x55,0xbc,0x0,0x74,0x76,0xda,0x6f,0x32,0x56,0x51,0x7f,0xd0,0xc5,0x51,0x89,0xf6,0xad,0xb5,0xbd,0xfc,0xb5,0x98,0x2,0x15,0xe0,0xd6,0xa5,0x6b,0x1c,0x22,0x61,0x8d,0xdd,0xaf,0xe1,0x97,0x1f,0xb4,0xee,0x3a,0xbb,0xed,0xb,0x80,0x42,0x97,0x21,0x70,0xe9,0x19,0x6b,0xf,0x1,0xfc,0xa0,0x75,0xbf,0x37,0xec,0x9f,0x3,0xc8,0x58,0xb9,0x85,0x2e,0x43,0x53,0x99,0x23,0x54,0xa2,0xdd,0x74,0x91,0x1d,0x37,0xf5,0xd2,0x79,0x76,0xf2,0x4b,0x73,0x5b,0x44,0x55,0x99,0x53,0xad,0x96,0x8f,0xb3,0x89,0x1c,0xaf,0x86,0x32,0x56,0x57,0x3a,0x5b,0x3e,0xcc,0xa7,0xe9,0x8d,0x27,0x1c,0xe7,0x19,0xe0,0xe3,0xfd,0xf3,0x6c,0x36,0x91,0xe3,0x56,0xe0,0xdd,0x16,0x79,0x19,0x2,0x8,0x57,0x3c,0xfd,0xa9,0xd9,0x1f,0x74,0x23,0xa7,0xbe,0xe4,0x7a,0xe9,0x7,0xd2,0x78,0x94,0x9f,0x2e,0xf2,0xa1,0x8c,0xd5,0x68,0xeb,0xc6,0x2a,0xd1,0xff,0x5a,0x6d,0xe4,0x1b,0x83,0x27,0x93,0x7,0x1d,0x11,0x34,0xe5,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char vscroll_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x24,0x11,0x6c,0x86,0xa1,0xf4,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,0x51,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x94,0x14,0x95,0x99,0xc6,0xc0,0xc0,0x90,0xc9,0x80,0x9,0xa6,0x33,0x30,0x30,0x64,0x31,0x4a,0x8a,0xca,0xfc,0x67,0x63,0x61,0x63,0xe0,0x60,0xe7,0x64,0x60,0x66,0x66,0x66,0x60,0x62,0x62,0x62,0x60,0x63,0x65,0x67,0x78,0xfe,0xfa,0x29,0xc3,0xd3,0x17,0x8f,0x44,0x99,0x18,0x8,0x80,0xc1,0xa0,0x80,0x85,0x81,0x81,0x61,0xfa,0xaf,0x3f,0xbf,0x32,0x7f,0xfd,0xf9,0x85,0xcd,0x9b,0x6f,0x0,0xae,0x38,0x11,0xcb,0x70,0x15,0x64,0xf2,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char vscroll_bg_focus_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x24,0x1e,0xfc,0x39,0xbc,0x65,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,0x51,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x94,0x14,0x95,0x99,0xc6,0xc0,0xc0,0x90,0xc9,0x80,0x9,0xa6,0x33,0x30,0x30,0x64,0x31,0x4a,0x8a,0xca,0xfc,0x67,0x63,0x61,0x63,0xe0,0x60,0xe7,0x64,0x60,0x66,0x66,0x66,0x60,0x62,0x62,0x62,0x60,0x63,0x65,0x67,0x78,0xfe,0xfa,0x29,0xc3,0xd3,0x17,0x8f,0x44,0x99,0x18,0x8,0x80,0xc1,0xa0,0x80,0x85,0x81,0x81,0x61,0xfa,0xaf,0x3f,0xbf,0x32,0x7f,0xfd,0xf9,0x85,0xcd,0x9b,0x6f,0x0,0xae,0x38,0x11,0xcb,0x70,0x15,0x64,0xf2,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char vscroll_grabber_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x27,0x14,0x37,0xc1,0x6,0xb8,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,0x9c,0x49,0x44,0x41,0x54,0x18,0xd3,0x7d,0x8f,0x3d,0xb,0x82,0x40,0x0,0x40,0x9f,0xe7,0x75,0x67,0x4,0x41,0x86,0xa1,0x20,0xcd,0x4d,0xd1,0x10,0xb4,0xf4,0xf3,0x5b,0x5a,0x83,0x86,0xa6,0x8,0xa2,0xec,0x73,0xca,0xf2,0x2e,0xb5,0x26,0xf,0x5a,0x7a,0xe3,0xe3,0x2d,0xcf,0x4b,0xa2,0xf4,0xd3,0xeb,0x86,0xe4,0xcf,0x7,0xb6,0xb4,0x48,0x29,0x1,0x28,0xcb,0x12,0xc0,0x93,0x0,0xf6,0x6d,0x18,0xf4,0x13,0xd2,0x78,0x88,0x56,0x1,0x9b,0xed,0x9a,0xec,0x7a,0x60,0x32,0x9a,0x22,0x0,0xa2,0x30,0x46,0xab,0x0,0x63,0xb,0x8c,0x2d,0x98,0x8d,0xe7,0x34,0x8,0x0,0x21,0x84,0x13,0x55,0x55,0xd1,0xd6,0x9d,0xdf,0xe0,0x1f,0x2,0xa0,0xae,0x6b,0x27,0x7c,0xdf,0xe7,0x65,0xf2,0xdf,0xe0,0x72,0xcf,0x30,0xb6,0x40,0xab,0x0,0xad,0x2,0x96,0xab,0x85,0xb,0x24,0x80,0x6a,0x69,0xce,0xb7,0x23,0xfb,0xd3,0xce,0x6d,0x36,0x7c,0x1,0xa3,0x8f,0x31,0x52,0x6,0xb1,0x57,0x8b,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char vscroll_grabber_hl_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,0x49,0x0,0x42,0x0,0x4e,0x4e,0xda,0xb4,0x7e,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,0xdd,0x9,0x1b,0x12,0x27,0x25,0x66,0x1f,0x6,0x82,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,0xa2,0x49,0x44,0x41,0x54,0x18,0xd3,0x7d,0x8f,0x3b,0xf,0xc1,0x50,0x0,0x46,0x8f,0xdb,0x56,0xef,0x65,0x32,0x78,0x4,0xd,0x91,0xe,0x46,0x83,0xc1,0x6a,0xf0,0xab,0xd,0x56,0x8b,0xc1,0x24,0x91,0x48,0xbc,0xe2,0x31,0x12,0xf4,0x5e,0x57,0xcb,0xa4,0xd2,0xc5,0x19,0x4f,0xce,0x37,0x7c,0xb9,0x76,0x23,0x7c,0x97,0x4b,0x15,0xae,0xb7,0xb,0xc6,0x1a,0x3c,0xcf,0x3,0xc0,0x5a,0x8b,0x79,0xea,0x9c,0xb,0x60,0x9e,0x9a,0x66,0xad,0x45,0x27,0x8,0x91,0x52,0x31,0x5f,0xcc,0xd8,0x1e,0xd7,0xf4,0xba,0x7d,0x4,0x40,0xbd,0x1a,0xa0,0xfc,0x2,0xda,0x44,0x68,0x1d,0x31,0x1c,0x8c,0xf8,0x22,0x0,0x84,0x70,0x52,0xf1,0x8a,0x63,0x94,0x2c,0x66,0x83,0x7f,0x8,0x80,0x24,0x89,0x53,0xe1,0x3a,0xe,0x91,0xbe,0x67,0x83,0xc3,0x79,0x47,0x64,0x1e,0x48,0x5f,0x21,0xa5,0x62,0x32,0x1d,0xff,0x6,0x0,0x7e,0x5e,0xb2,0x3f,0x6d,0x58,0xed,0x96,0xe9,0xcd,0x2f,0x1f,0x74,0x4f,0x34,0x2d,0xfc,0x9b,0x87,0x78,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,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,0xde,0x9,0xf,0x14,0x2a,0x25,0x8e,0xd3,0xb6,0x1b,0x0,0x0,0x0,0xfb,0x49,0x44,0x41,0x54,0x28,0x91,0x85,0x8f,0xbd,0x4a,0xc4,0x40,0x14,0x46,0xbf,0x4c,0x26,0xd3,0x4c,0x23,0x6c,0xa,0x83,0xb2,0xe0,0xb,0xd8,0x8,0xb6,0x62,0xe3,0x4b,0xf8,0xd3,0xed,0xcb,0xf8,0x14,0x92,0xbc,0xc5,0x16,0x5a,0xb,0x56,0xbe,0x80,0xd8,0x38,0x4b,0x98,0xc,0x97,0x4c,0x6,0x24,0x64,0x66,0x6c,0xb2,0xb2,0xc9,0xb2,0x7a,0xca,0x7b,0x4e,0x71,0x3f,0x60,0x7,0x6a,0x2c,0xe6,0xb0,0x89,0x4c,0x3d,0xd3,0x1b,0xda,0xf,0x46,0x29,0x42,0x8,0xa7,0xe0,0xc3,0x6a,0x37,0xe2,0x5b,0x19,0x63,0x5c,0x58,0x6b,0x3f,0x1,0x40,0x4a,0xf9,0xad,0x37,0x54,0xe5,0xc7,0x47,0x48,0x88,0x48,0xc4,0x18,0x17,0x6d,0xdb,0x7e,0x1,0xf0,0x0,0xd2,0x31,0x7a,0x80,0xe7,0x15,0xb,0x21,0x9c,0x8c,0x72,0x10,0x42,0x3c,0x4b,0x29,0x6f,0x1,0xc0,0x39,0x57,0x22,0x1d,0xee,0x78,0x8c,0xf1,0xc,0x0,0x84,0x10,0x2f,0x45,0x51,0xdc,0x0,0x80,0xd6,0x3a,0x75,0xce,0x95,0x21,0x84,0x73,0x10,0x51,0x6a,0x8c,0xb9,0x98,0xcf,0x6b,0x9a,0xe6,0x72,0x32,0xf3,0x10,0xcc,0x7b,0x7f,0x65,0xad,0x7d,0x53,0x4a,0xad,0xb7,0x47,0xad,0xf5,0x7d,0xd7,0x75,0xaf,0x75,0x5d,0x3f,0xf2,0x24,0x49,0x3e,0x0,0xa0,0xef,0xfb,0x6b,0xa5,0xd4,0x3a,0xcb,0xb2,0x27,0xe7,0x5c,0x9,0x0,0x8c,0xb1,0xf7,0x3f,0x67,0xe6,0x79,0x5e,0x25,0x0,0x30,0x8b,0x7e,0xe5,0xe4,0x19,0x22,0x12,0xc6,0x98,0xa5,0xd6,0x7a,0x75,0xf0,0x63,0x22,0xfa,0x77,0xd5,0x1e,0x3f,0x3b,0xb0,0x99,0x1,0x70,0x56,0xb8,0xf7,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -455,32 +430,32 @@ static const unsigned char vseparator_png[]={ 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,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x16,0x2b,0x31,0xd7,0x79,0x35,0x2f,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,0xba,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0x93,0x31,0x6a,0x2,0x51,0x14,0x45,0xcf,0x7f,0xff,0x39,0xa2,0x19,0x3,0x21,0x28,0xa,0xae,0x23,0xeb,0x9,0x76,0xb3,0x89,0x58,0x9,0xd9,0xc1,0x74,0x71,0x3f,0xb1,0xb1,0x73,0x3,0x8a,0xa0,0x84,0x14,0x13,0x23,0x84,0xef,0xfb,0xe9,0x44,0xe4,0x8b,0x4e,0xef,0x2d,0x2f,0xe7,0x9e,0xee,0x3a,0x12,0x19,0x74,0x87,0x6f,0x40,0x1,0xf4,0x81,0x15,0x50,0xae,0xb7,0xcb,0x49,0x8a,0x75,0x89,0xf1,0xab,0xf7,0x7e,0x9a,0x69,0x46,0xd6,0x68,0xa2,0xaa,0xfc,0xee,0x77,0xe4,0xed,0xc7,0xf7,0xf9,0x62,0x36,0x16,0x2f,0x7f,0xa7,0xbc,0x24,0xa4,0x85,0x73,0xe,0x11,0x41,0x44,0x70,0x8,0xf,0xad,0xe,0xdf,0xd5,0xd7,0x8,0xc8,0xcf,0xe1,0x94,0xe0,0x45,0x10,0xc4,0xf9,0x63,0xa1,0xaa,0x84,0x10,0x7a,0x29,0x3e,0x25,0xa8,0x95,0xbb,0xe0,0x2e,0xb8,0x24,0xf8,0x34,0xc,0x8b,0x87,0x63,0x11,0x42,0x40,0x55,0x37,0x80,0xdd,0x22,0x28,0x63,0x8c,0x98,0x19,0x66,0x46,0xc4,0xd8,0xed,0x2b,0x9e,0x3a,0xcf,0x1f,0xc0,0xcf,0xd5,0x37,0xd6,0xbd,0xf3,0x3f,0xe8,0xbb,0x37,0x1e,0x27,0x3c,0x2c,0x9e,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,0xdd,0x0,0xdd,0x0,0xdd,0xf5,0x15,0x8,0x9d,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,0xde,0x9,0x14,0xf,0xc,0x18,0x82,0xe,0xe5,0x21,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,0x4d,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0x18,0x68,0xc0,0x88,0x4d,0x50,0x42,0x42,0x62,0x1a,0x3,0x3,0x43,0x26,0x9a,0xf0,0xf4,0x17,0x2f,0x5e,0x64,0x11,0x6b,0xc0,0x7f,0x76,0x76,0x4e,0x14,0xb1,0x9f,0x3f,0xbf,0x33,0xbc,0x78,0xf1,0x2,0x43,0x3d,0x13,0xd1,0x6e,0xc5,0x1,0x46,0xd,0x18,0x35,0x0,0x9f,0x1,0xd3,0x7f,0xfe,0xfc,0xce,0x80,0x8c,0x19,0x18,0x18,0xa6,0x53,0x6a,0x19,0x6d,0x0,0x0,0x59,0x9c,0x18,0xe9,0x50,0xa4,0x59,0x7a,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,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x16,0x2a,0xf,0xf,0x3,0x19,0xc5,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,0xa7,0x49,0x44,0x41,0x54,0x38,0xcb,0xc5,0x93,0x3d,0x4c,0x14,0x41,0x18,0x86,0x9f,0x6f,0x66,0x5d,0xd8,0x2c,0x97,0x3b,0xee,0x64,0x4e,0x2e,0x78,0x86,0xd8,0x99,0xd8,0x5e,0x6c,0x24,0x26,0x56,0x36,0x26,0x26,0x5a,0x51,0x59,0xda,0x6a,0x3,0xad,0xd,0x34,0x5a,0x99,0xd0,0x58,0xd8,0x9f,0x15,0x8d,0x95,0x21,0xa1,0x32,0x86,0x10,0xa3,0x89,0x31,0x24,0xc4,0xe3,0xef,0xc0,0xe5,0x27,0x22,0x5e,0x56,0xf6,0x6e,0xf9,0x2c,0xe4,0x4e,0x90,0x43,0x4a,0xbe,0x62,0x32,0x33,0xc9,0xfb,0xce,0x3b,0xcf,0x37,0x3,0xe7,0x5d,0x52,0xa9,0x54,0x0,0xa8,0xd5,0x6a,0x9d,0xcd,0x7b,0xb7,0x46,0x6f,0x4e,0xcf,0x54,0x67,0xff,0xa3,0xdb,0x0,0xa6,0x52,0x49,0x9e,0xca,0xed,0x1b,0x77,0x0,0x78,0xfb,0xee,0xd,0xce,0x39,0xac,0xfa,0xf7,0xad,0xb5,0x55,0x97,0xbf,0xc4,0xc5,0x9c,0x43,0x44,0x10,0x31,0x88,0x11,0x8c,0x80,0x7f,0xa1,0x97,0x5c,0xa6,0x9f,0xf,0x5f,0xe6,0xd8,0xd8,0xaa,0x3f,0xb4,0x3,0xa5,0x3c,0x89,0xc6,0x34,0x9b,0x4d,0xac,0xfa,0x8f,0x3d,0xcf,0x7b,0x39,0x54,0xbc,0x42,0xb6,0xaf,0xff,0x50,0x2c,0x88,0x1,0x3,0x88,0x18,0x40,0x50,0x55,0x86,0x8a,0x65,0x16,0x57,0x16,0x4a,0xa6,0x9d,0xc9,0xaa,0x3f,0x11,0xf4,0x4,0xcf,0xca,0x83,0xc3,0x84,0x41,0x78,0x3c,0xb0,0xa,0x2a,0x7f,0x97,0xbf,0xf6,0x63,0xf2,0xd9,0x1,0x80,0x8a,0xc9,0x98,0x2,0x2b,0x5f,0xeb,0x13,0x61,0x10,0x8e,0x95,0x5c,0x19,0xdf,0xf3,0xff,0xc5,0x74,0x38,0xa,0xa0,0x27,0x60,0x78,0x9f,0x17,0x3f,0x3d,0xca,0xf6,0xe5,0xc6,0x8a,0x85,0x41,0x44,0xa4,0xb,0x2f,0xfd,0x23,0xd6,0x8e,0xd7,0xb1,0x32,0x80,0x3d,0xab,0x55,0xa,0xe8,0x29,0xe,0xe6,0xda,0xd5,0xeb,0x2f,0x76,0x7f,0x7e,0x9f,0x5c,0x8b,0x96,0x69,0xa5,0xe9,0xe9,0xfd,0xee,0x76,0x3c,0x60,0xf6,0xe,0xb6,0xb9,0x3c,0x5c,0x1a,0x6f,0xc4,0x8d,0xc9,0x7a,0xb4,0x4c,0xd2,0x4a,0xba,0x88,0x15,0x15,0xed,0x6e,0xd0,0x9e,0xa4,0x92,0x8c,0xc7,0xfb,0xf1,0x93,0xd5,0xf5,0x25,0x1a,0x71,0xe3,0xc4,0x15,0x8e,0x26,0xe8,0xed,0x9,0xd8,0xd9,0xdd,0x4,0x78,0x6f,0x32,0xa6,0x40,0xc6,0x14,0x88,0xa2,0x88,0x54,0x92,0xe7,0x49,0x2b,0x79,0xb0,0xfa,0x6d,0x89,0x9d,0x1f,0x5b,0x47,0x98,0x4b,0x87,0x82,0xb5,0x96,0x30,0x8,0xf9,0xb8,0x30,0xf,0x30,0xe5,0xed,0x1d,0x6c,0x3,0xe0,0x9c,0x6b,0x27,0x79,0x7d,0x77,0x64,0x74,0x64,0x7a,0xa6,0x3a,0xbb,0xbe,0xb9,0x76,0xd6,0x53,0x7e,0x75,0xee,0x9f,0x91,0xdf,0x78,0x37,0x8a,0xe3,0x79,0x7e,0x6,0x97,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,0x92,0x0,0x92,0x0,0x99,0x25,0xc1,0x88,0x71,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,0xde,0x9,0x12,0x0,0x2,0x1f,0xac,0xde,0x45,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,0x1,0xa4,0x49,0x44,0x41,0x54,0x38,0x8d,0x9d,0x93,0xb1,0x6e,0x1a,0x41,0x14,0x45,0xcf,0xcc,0xce,0x9a,0x85,0x25,0x44,0x58,0x8a,0x15,0xc5,0x49,0x93,0x2,0xb2,0x2,0x51,0xf2,0x7,0x2e,0x68,0xf2,0x15,0xae,0x22,0xc1,0x77,0xa4,0xe,0x65,0x5c,0xe4,0x2f,0xf8,0xb,0x47,0xb6,0x2c,0x21,0xb0,0x44,0xb7,0x22,0x52,0x9a,0x0,0x82,0x9d,0xd9,0x1d,0x76,0xd3,0xec,0x22,0x40,0xb1,0x8d,0x72,0xa5,0x29,0xe6,0xcd,0xbd,0xf7,0xbd,0x79,0x33,0x4f,0x70,0x84,0x66,0xb3,0x79,0x1c,0x3a,0xc0,0x64,0x32,0x39,0xd8,0xcb,0x7f,0x88,0x2f,0x81,0xaf,0xc0,0x1d,0x10,0xe5,0xeb,0x2e,0x8f,0x5d,0x1e,0x27,0x10,0xdd,0x6e,0x17,0x80,0xc5,0x62,0x1,0x70,0xd,0x7c,0xb,0x82,0x76,0xb9,0x52,0xf1,0x71,0xdd,0x33,0x0,0x92,0x24,0x66,0xb3,0x59,0x33,0x1e,0x3f,0x44,0xc0,0xc0,0x5a,0x7b,0xb3,0x5e,0xaf,0x49,0xd3,0x14,0xe7,0xd3,0x87,0xe,0xbf,0xff,0xfc,0x2,0xb8,0xae,0xd7,0xcf,0xbf,0xb7,0x5a,0x1d,0xb7,0x5a,0xad,0xa1,0x94,0x42,0x8,0x81,0x10,0x2,0xa5,0x14,0xe5,0x72,0x85,0x8b,0x8b,0xb7,0xae,0xd6,0xd1,0xe7,0x38,0x36,0xa1,0xef,0xfb,0xb7,0x5a,0x6b,0x9c,0x33,0xdf,0x29,0xca,0x1e,0xb5,0x5a,0x1d,0xb7,0x54,0xf2,0x9e,0xbc,0xbf,0x52,0x8a,0x5a,0xed,0x35,0xf3,0x79,0x78,0x95,0x65,0xd9,0xf,0x6b,0xed,0xaa,0xe8,0x41,0x3f,0x8,0xda,0xe5,0xe7,0xc4,0x5,0x4a,0x25,0x8f,0x20,0x68,0x97,0x81,0xbe,0xeb,0xba,0xbb,0x26,0xf6,0x2a,0x15,0xff,0x45,0x71,0x81,0x9c,0xdb,0x53,0x4a,0x21,0xb3,0x2c,0x3,0x68,0x14,0xd,0x3b,0x5,0x39,0xb7,0x21,0xa5,0x3c,0x7c,0xc6,0xff,0x81,0x14,0x42,0x0,0x4c,0x93,0x24,0x3e,0x59,0x94,0x73,0xa7,0x69,0x9a,0xee,0x2a,0x18,0x6d,0x36,0xeb,0x93,0xd,0x72,0xee,0xc8,0x5a,0xbb,0x33,0x18,0x8e,0xc7,0xf,0x91,0x31,0xfa,0x45,0xb1,0x31,0xba,0xf8,0x50,0xc3,0x24,0x49,0x90,0xef,0xeb,0x1f,0x1,0x42,0x60,0x30,0x9b,0x3d,0xf2,0x9c,0x89,0x31,0x9a,0xd9,0xec,0x11,0x60,0xe0,0x38,0x4e,0xb8,0xdd,0x6e,0x71,0xde,0xbc,0x3b,0xc7,0xf3,0x3c,0x8c,0x31,0xb7,0x5a,0x47,0xe1,0x7c,0x1e,0x5e,0x55,0xab,0xaf,0x5c,0x29,0x25,0x52,0x4a,0xb2,0x2c,0x23,0x8e,0xd,0xab,0xd5,0x82,0xfb,0xfb,0x9f,0x91,0xd6,0xd1,0x17,0x6b,0xed,0xcd,0x72,0xb9,0x24,0x4d,0x53,0xc4,0x7e,0x86,0xbd,0x61,0xea,0x3,0x3d,0xa0,0x91,0x1f,0x4d,0x81,0x11,0x30,0x4,0xc2,0xfd,0x89,0x3c,0x30,0xd8,0x33,0x79,0x12,0xc7,0xe3,0xfc,0x17,0x9c,0xcc,0xa8,0xb2,0xd4,0xe8,0x7,0x23,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,0x4b,0x0,0x3f,0x0,0x52,0x7c,0x32,0x40,0x52,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,0xdd,0x9,0x1b,0x16,0x2b,0x3,0x1f,0xae,0x64,0xaf,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,0xac,0x49,0x44,0x41,0x54,0x38,0xcb,0xc5,0x93,0xb1,0x6f,0xd3,0x40,0x14,0x87,0xbf,0x77,0x8e,0x5d,0x9c,0xc4,0x55,0xe3,0x10,0x43,0x4c,0xa1,0x44,0xa8,0x42,0xe2,0xf,0x88,0xba,0xc0,0x82,0x18,0x60,0x86,0xad,0xb,0x4b,0x25,0x56,0x58,0xda,0x95,0xa5,0x5d,0x60,0x42,0xea,0xc2,0x80,0xd4,0xad,0x65,0xcf,0xd4,0xa5,0x53,0x55,0x21,0x26,0x14,0x89,0x4a,0x55,0x1c,0x28,0x25,0xd,0x4,0x2a,0x92,0xd6,0xc4,0x86,0x1c,0x4b,0x13,0x1a,0x62,0x60,0xec,0x1b,0x9e,0xee,0x7e,0xa7,0xf7,0xf4,0xdd,0xef,0xdd,0xc1,0x69,0x87,0x94,0xcb,0x65,0x0,0x82,0x20,0x18,0x88,0xb3,0x77,0xe6,0xae,0xaf,0x56,0x56,0x36,0xfe,0x51,0xd7,0x0,0x96,0x23,0x1d,0x3e,0x96,0x9b,0x33,0xb7,0x1,0x58,0xdf,0xac,0xe0,0x79,0x1e,0x96,0xd8,0x77,0x8d,0x54,0x6a,0xad,0x78,0xf6,0x2,0x9e,0x7b,0x1e,0x11,0x41,0x44,0xa1,0xc,0x41,0x9,0x58,0xa6,0x4d,0x6e,0xdc,0xe5,0xd5,0x9b,0x4d,0x3e,0xec,0xbf,0xbb,0x6f,0x14,0x7c,0x97,0x48,0x87,0xc4,0x71,0x8c,0x25,0xf6,0x43,0xd3,0x34,0x9f,0x4f,0xf9,0x57,0xc8,0x39,0xee,0x71,0xb1,0x20,0xa,0x94,0x6,0x51,0xa,0x10,0xb4,0xd6,0x5c,0x2a,0x5e,0x66,0x3b,0xa8,0xfa,0xaa,0xcf,0x64,0x89,0xbd,0x98,0x3e,0x93,0x79,0x52,0x9a,0x9c,0x26,0x9b,0xce,0xe,0x3,0x6b,0x41,0xab,0xdf,0xdb,0xb0,0x1b,0x92,0x9f,0x28,0x0,0x94,0x95,0xa3,0xf2,0xec,0xd5,0xf7,0x17,0xb3,0x19,0x67,0xfe,0x62,0xb1,0xc4,0x98,0x69,0xfd,0x69,0xd3,0x71,0x16,0x40,0x8f,0x98,0x91,0x7a,0x5b,0xab,0x3e,0xc8,0x8d,0xbb,0xf3,0x7e,0x61,0x12,0x51,0x92,0xe0,0x97,0x46,0x21,0xd0,0x3,0x8c,0xd1,0x53,0x95,0x2c,0xf,0x47,0xf,0xd0,0xe8,0x1,0xcd,0x50,0x83,0xab,0xa5,0x6b,0xcf,0xbe,0x7e,0xfb,0xb2,0x54,0x6f,0xd4,0x88,0x7f,0xfc,0xfc,0xfb,0xbc,0x91,0x44,0x5d,0xb5,0x7b,0x2d,0xfc,0xa9,0x73,0xb,0x9d,0xc3,0xf6,0xd2,0xfb,0x8f,0x35,0xba,0x71,0x94,0x80,0xa9,0xd1,0x4a,0x27,0x37,0xe8,0x2f,0x22,0x1d,0x2e,0x1c,0x7d,0x3f,0x7c,0x54,0xdf,0xdd,0xa1,0x73,0xd4,0x19,0xb9,0xc2,0x49,0x2,0x7b,0xcc,0xa6,0x75,0xf0,0x9,0x60,0x4b,0x39,0x2a,0x8f,0xa3,0xf2,0x34,0x9b,0x4d,0x22,0x1d,0x3e,0xed,0xc6,0xdd,0x7b,0xc1,0xde,0xe,0x9f,0xf,0x9a,0x27,0x3c,0x97,0x81,0xb,0x86,0x61,0x90,0x49,0x67,0x79,0x5d,0xdd,0x2,0x58,0x4e,0xb5,0x7b,0x2d,0x0,0x3c,0xcf,0xeb,0x93,0xbc,0x9c,0xbd,0x35,0x77,0x63,0xb5,0xb2,0xb2,0xb1,0xdb,0xa8,0xff,0xef,0x29,0xbf,0x38,0xf5,0xcf,0xc8,0x2f,0x96,0x82,0x8d,0xc9,0x9c,0xd1,0x82,0x63,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,0x92,0x0,0x92,0x0,0x99,0x25,0xc1,0x88,0x71,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,0xde,0x9,0x12,0x0,0x2,0x21,0x6d,0xbf,0x58,0x46,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,0x30,0x49,0x44,0x41,0x54,0x38,0x8d,0xa5,0x93,0xb1,0x6a,0xc2,0x50,0x14,0x86,0xbf,0x63,0xe2,0x90,0xd0,0x2e,0xc1,0xad,0x8b,0xad,0x60,0x9e,0xc0,0xbe,0x41,0x7,0x33,0x38,0x7,0x1d,0xba,0x74,0x2a,0xe8,0xc3,0xe8,0x68,0xc1,0x49,0xc8,0xec,0x10,0x9f,0xa1,0x8,0xee,0x71,0xcf,0x52,0x4d,0x70,0x73,0x8a,0xb7,0x83,0x37,0x72,0x11,0xb4,0xa1,0xfe,0xe3,0xe5,0x7c,0xdf,0xbd,0x1c,0xfe,0xb,0x77,0x46,0x2e,0xf,0x7c,0xdf,0x7f,0x2,0x86,0x40,0x17,0x68,0xeb,0xe3,0xd,0xb0,0x4,0x26,0x49,0x92,0xa4,0x57,0x5,0xbe,0xef,0x7f,0x0,0xe3,0x30,0x1c,0x38,0x9e,0xd7,0x40,0xa4,0x6,0x80,0x52,0x47,0xf2,0x7c,0x47,0x14,0xcd,0xf,0xc0,0x28,0x49,0x92,0xaf,0x92,0xb1,0x4c,0xb8,0xd9,0x7c,0x9e,0xf6,0xfb,0xef,0x75,0xd7,0x7d,0xd4,0xb0,0x0,0x82,0x48,0xd,0xd7,0x7d,0xa0,0xd3,0x79,0xad,0x6f,0xb7,0x3f,0x3d,0xdb,0xb6,0xd2,0x2c,0xcb,0xd6,0x0,0x35,0xe3,0xd9,0xe3,0x20,0xe8,0x21,0x62,0x71,0x2d,0x22,0x16,0x41,0xd0,0x3,0x18,0x6b,0xe6,0x24,0x0,0x86,0x61,0x38,0x70,0x6e,0xc1,0xa6,0x24,0xc,0x7,0x8e,0xde,0xd3,0x59,0xd0,0xf5,0xbc,0xc6,0x9f,0x70,0x19,0x3d,0xdb,0x35,0x5,0xed,0x72,0x61,0x55,0xa2,0x67,0xdb,0xa6,0xe0,0xdf,0x29,0x5,0x1b,0xa5,0x8e,0x95,0x21,0x3d,0xbb,0x31,0x5,0xcb,0x3c,0xdf,0x55,0x16,0xe8,0xd9,0xa5,0x29,0x98,0x44,0xd1,0xfc,0xa0,0x54,0x51,0xe1,0xf6,0xa2,0x2c,0xd4,0xe4,0x2c,0xd0,0xf5,0x1c,0xc5,0xf1,0x82,0x5b,0x12,0xa5,0xa,0xe2,0x78,0x1,0xa7,0x36,0xa6,0x60,0x34,0x31,0xcb,0xb2,0xb5,0x6d,0x5b,0xe9,0x6a,0xf5,0xfd,0xd6,0x6a,0xbd,0xd4,0x1d,0xc7,0x41,0x44,0x34,0x78,0x24,0xcf,0xb7,0xcc,0x66,0xd3,0xc3,0x7e,0xbf,0xff,0x34,0xab,0x7c,0xf7,0x67,0xba,0x3b,0xbf,0x4d,0x78,0x75,0x34,0x1f,0x21,0x5d,0xa6,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; static const unsigned char vslider_tick_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x4,0x8,0x6,0x0,0x0,0x0,0x87,0xb4,0xbf,0xec,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0x17,0x21,0x6,0x30,0xa,0xe5,0x29,0x0,0x0,0x0,0x46,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0xa0,0x10,0x30,0xb6,0xd7,0xd6,0x56,0x72,0x73,0x73,0x33,0x70,0x73,0x73,0x33,0x3c,0xe1,0x97,0x6a,0xe7,0xe6,0xe2,0x66,0x28,0x9,0xf1,0xc0,0xaa,0xd8,0x22,0x34,0x9e,0x41,0xfa,0xcb,0x6b,0x43,0x13,0x13,0x63,0xf,0x98,0x1e,0x96,0x33,0x67,0xce,0xee,0x80,0x29,0x78,0xca,0x23,0x4a,0x8c,0xa5,0xaf,0x91,0xf5,0x50,0xc,0x0,0x35,0x9a,0x11,0x6d,0xa1,0xf1,0x5c,0x24,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,0x4,0x8,0x6,0x0,0x0,0x0,0x87,0xb4,0xbf,0xec,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,0xde,0x9,0xf,0x14,0x28,0x1f,0x7a,0xe9,0xd,0x2b,0x0,0x0,0x0,0x46,0x49,0x44,0x41,0x54,0x18,0x95,0x63,0x60,0xa0,0x10,0x30,0x36,0x35,0x35,0x55,0x72,0x73,0x73,0x33,0x70,0x73,0x73,0x33,0xbc,0xe4,0x12,0x6d,0xe7,0xe6,0xe2,0x66,0x28,0x9,0xf1,0xc0,0xaa,0xd8,0x22,0x34,0x9e,0x41,0xec,0xe7,0x7b,0x43,0x13,0x13,0x13,0xf,0x98,0x1e,0x96,0x33,0x67,0xce,0xec,0x80,0x29,0x78,0xc5,0x2e,0x48,0x8c,0xa5,0xaf,0x91,0xf5,0x50,0xc,0x0,0x36,0xc,0x11,0x6c,0x6d,0xa6,0x47,0xcd,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; 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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x3b,0x0,0x36,0x0,0x38,0x27,0x56,0x13,0x54,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,0xc,0x1b,0x3,0x20,0x0,0x61,0x7,0xe1,0x28,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,0x7b,0x49,0x44,0x41,0x54,0x18,0xd3,0x4d,0x8c,0xc1,0xe,0xc2,0x30,0x14,0xc3,0x1c,0xe8,0x6f,0x22,0x2e,0xfc,0xbf,0x34,0xa4,0x6d,0x54,0xcd,0x6b,0x38,0x6c,0x82,0xf9,0x92,0x83,0x23,0xeb,0xf5,0x78,0xa6,0x7f,0x3a,0x21,0x48,0xe2,0x20,0x80,0x58,0xd7,0x95,0xb6,0x2c,0x6f,0x5c,0x86,0x5c,0xe,0x87,0x67,0xdb,0x76,0x9a,0x4,0x55,0x86,0x8,0x94,0xff,0x22,0x1c,0xd3,0x5c,0x13,0xbb,0xce,0xb4,0x90,0x72,0x4,0x2,0x35,0x43,0xb3,0x7,0x55,0x75,0xea,0x5f,0x9d,0x0,0x99,0xa1,0x55,0x15,0xbe,0x1c,0xae,0x4c,0x9b,0xe6,0x2a,0x66,0x99,0x20,0x8,0xe8,0x18,0x0,0x86,0x4d,0xeb,0xfd,0xc3,0xbe,0x77,0x44,0xb8,0xdd,0xee,0xff,0x3e,0x61,0x8c,0xc1,0x17,0xf5,0xc0,0x57,0xfd,0xb2,0x2f,0x89,0xfc,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,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,0xde,0x9,0x14,0xd,0x13,0x1b,0xd5,0xd9,0x6e,0x6b,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,0x15,0x49,0x44,0x41,0x54,0x18,0x95,0x63,0x54,0x57,0xd7,0xfc,0xcf,0x80,0x7,0x30,0xe1,0x93,0x1c,0x3e,0xa,0x0,0x86,0x1b,0x1,0x86,0x56,0xb4,0xba,0xe,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,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,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,0xc,0x18,0xf,0x2c,0x3,0x4f,0x14,0xa9,0x14,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,0x36,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0x60,0x18,0x5,0xc,0xc,0xcb,0x66,0xcd,0xf9,0x9f,0x1d,0x9f,0xf4,0x7f,0x24,0xf2,0x99,0x18,0x18,0x18,0x18,0x8e,0x1e,0x3d,0xc6,0x70,0xf9,0xe6,0x75,0x78,0x80,0x8c,0x34,0xfe,0x28,0x18,0x2d,0x3,0x46,0xcb,0x80,0xd1,0x32,0x60,0xc4,0x2,0x0,0x41,0x33,0x3b,0x34,0xfe,0xbe,0xf2,0x77,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,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,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,0xde,0x9,0xf,0x14,0x27,0x31,0x21,0xa7,0x1c,0x2b,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,0x38,0x49,0x44,0x41,0x54,0x48,0x89,0x63,0x60,0x18,0x5,0xc,0xc,0xb,0x16,0x2c,0xf8,0x9f,0x9a,0x9a,0xfa,0x7f,0x24,0xf2,0x99,0x18,0x18,0x18,0x18,0x8e,0x1e,0x3d,0xca,0x70,0xed,0xda,0x35,0x78,0x80,0x8c,0x34,0xfe,0x28,0x18,0xf1,0x60,0x30,0xe5,0x49,0x7a,0xf3,0x47,0xcb,0x80,0x91,0xe,0x0,0x53,0x40,0x3b,0xd4,0x11,0xa7,0x10,0x39,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; diff --git a/scene/resources/default_theme/toggle_off.png b/scene/resources/default_theme/toggle_off.png Binary files differindex d5809cd72b..3e92aa0ece 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 692e03b01d..a49c234f51 100644 --- a/scene/resources/default_theme/toggle_on.png +++ b/scene/resources/default_theme/toggle_on.png diff --git a/scene/resources/default_theme/tooltip_bg.png b/scene/resources/default_theme/tooltip_bg.png Binary files differindex c61169f7fc..c5eb502ace 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 e16317d348..6b9c9b4f8d 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_title.png b/scene/resources/default_theme/tree_title.png Binary files differindex 7104085467..e7a158b961 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 ffba8e8fb1..82b49cdd2f 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 65b9ba4d23..39a70e6003 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 8d4189cf1c..a5ca1212e0 100644 --- a/scene/resources/default_theme/updown.png +++ b/scene/resources/default_theme/updown.png diff --git a/scene/resources/default_theme/vscroll_bg.png b/scene/resources/default_theme/vscroll_bg.png Binary files differdeleted file mode 100644 index 18b79553b7..0000000000 --- a/scene/resources/default_theme/vscroll_bg.png +++ /dev/null diff --git a/scene/resources/default_theme/vscroll_bg_focus.png b/scene/resources/default_theme/vscroll_bg_focus.png Binary files differdeleted file mode 100644 index 30abdd0c98..0000000000 --- a/scene/resources/default_theme/vscroll_bg_focus.png +++ /dev/null diff --git a/scene/resources/default_theme/vscroll_grabber.png b/scene/resources/default_theme/vscroll_grabber.png Binary files differdeleted file mode 100644 index 81c9c58064..0000000000 --- a/scene/resources/default_theme/vscroll_grabber.png +++ /dev/null diff --git a/scene/resources/default_theme/vscroll_grabber_hl.png b/scene/resources/default_theme/vscroll_grabber_hl.png Binary files differdeleted file mode 100644 index a0cfa37ae1..0000000000 --- a/scene/resources/default_theme/vscroll_grabber_hl.png +++ /dev/null diff --git a/scene/resources/default_theme/vslider_bg.png b/scene/resources/default_theme/vslider_bg.png Binary files differindex d184e87aa4..5472bb366f 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 dfb9578d5e..988c25d9dd 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 2c8e414b6f..f319df3319 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/vslider_tick.png b/scene/resources/default_theme/vslider_tick.png Binary files differindex 17980a858c..76c5870dbc 100644 --- a/scene/resources/default_theme/vslider_tick.png +++ b/scene/resources/default_theme/vslider_tick.png diff --git a/scene/resources/default_theme/vsplit_bg.png b/scene/resources/default_theme/vsplit_bg.png Binary files differindex 353ff8960c..f4e1715447 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 255995fdb4..4a9904a3ec 100644 --- a/scene/resources/default_theme/vsplitter.png +++ b/scene/resources/default_theme/vsplitter.png diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp index df18e4f0f5..3c4bc3ac75 100644 --- a/scene/resources/environment.cpp +++ b/scene/resources/environment.cpp @@ -111,7 +111,7 @@ void Environment::_bind_methods() { ADD_PROPERTY( PropertyInfo(Variant::INT,"background/mode",PROPERTY_HINT_ENUM,"Keep,Default Color,Color,Texture,Cubemap,Texture RGBE,Cubemap RGBE"),_SCS("set_background"),_SCS("get_background")); ADD_PROPERTYI( PropertyInfo(Variant::COLOR,"background/color"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_COLOR); ADD_PROPERTYI( PropertyInfo(Variant::OBJECT,"background/texture",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_TEXTURE); - ADD_PROPERTYI( PropertyInfo(Variant::OBJECT,"background/cubemap",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_CUBEMAP); + ADD_PROPERTYI( PropertyInfo(Variant::OBJECT,"background/cubemap",PROPERTY_HINT_RESOURCE_TYPE,"CubeMap"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_CUBEMAP); ADD_PROPERTYI( PropertyInfo(Variant::REAL,"background/energy",PROPERTY_HINT_RANGE,"0,128,0.01"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_ENERGY); ADD_PROPERTYI( PropertyInfo(Variant::REAL,"background/scale",PROPERTY_HINT_RANGE,"0.001,16,0.001"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_SCALE); ADD_PROPERTYI( PropertyInfo(Variant::REAL,"background/glow",PROPERTY_HINT_RANGE,"0.00,8,0.01"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_GLOW); diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index faba339fe1..08c752cff9 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -467,10 +467,20 @@ bool ShaderMaterial::_set(const StringName& p_name, const Variant& p_value) { return true; } else { - String n = p_name; - if (n.begins_with("param/")) { - VisualServer::get_singleton()->material_set_param(material,String(n.ptr()+6),p_value); - return true; + if (shader.is_valid()) { + + + StringName pr = shader->remap_param(p_name); + if (!pr) { + String n = p_name; + if (n.find("param/")==0) { //backwards compatibility + pr = n.substr(6,n.length()); + } + } + if (pr) { + VisualServer::get_singleton()->material_set_param(material,pr,p_value); + return true; + } } } @@ -486,10 +496,13 @@ bool ShaderMaterial::_get(const StringName& p_name,Variant &r_ret) const { return true; } else { - String n = p_name; - if (n.begins_with("param/")) { - r_ret=VisualServer::get_singleton()->material_get_param(material,String(n.ptr()+6)); - return true; + if (shader.is_valid()) { + + StringName pr = shader->remap_param(p_name); + if (pr) { + r_ret=VisualServer::get_singleton()->material_get_param(material,pr); + return true; + } } } @@ -569,7 +582,7 @@ void ShaderMaterial::get_argument_options(const StringName& p_function,int p_idx List<PropertyInfo> pl; shader->get_param_list(&pl); for (List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) { - r_options->push_back(E->get().name); + r_options->push_back("\""+E->get().name.replace("shader_param/","")+"\""); } } } @@ -583,115 +596,3 @@ ShaderMaterial::ShaderMaterial() :Material(VisualServer::get_singleton()->materi ///////////////////////////////// - -void ParticleSystemMaterial::_bind_methods() { - - ObjectTypeDB::bind_method(_MD("set_texture","texture"),&ParticleSystemMaterial::set_texture); - ObjectTypeDB::bind_method(_MD("get_texture:Texture"),&ParticleSystemMaterial::get_texture); - - ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE,"Texture" ), _SCS("set_texture"), _SCS("get_texture")); - -} - -void ParticleSystemMaterial::set_texture(const Ref<Texture>& p_texture) { - texture=p_texture; - RID rid; - if (texture.is_valid()) - rid=texture->get_rid(); - - VS::get_singleton()->fixed_material_set_texture(material,VS::FIXED_MATERIAL_PARAM_DIFFUSE,rid); -} - -Ref<Texture> ParticleSystemMaterial::get_texture() const { - - return texture; -} - - -ParticleSystemMaterial::ParticleSystemMaterial() :Material(VisualServer::get_singleton()->fixed_material_create()){ - - set_flag(FLAG_DOUBLE_SIDED,true); - set_flag(FLAG_UNSHADED,true); - set_depth_draw_mode(DEPTH_DRAW_NEVER); - VisualServer::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_ALPHA,true); - VisualServer::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY,true); - set_flag(FLAG_COLOR_ARRAY_SRGB,true); - -} - -ParticleSystemMaterial::~ParticleSystemMaterial() { - - -} - -////////////////////////////// - - - -void UnshadedMaterial::_bind_methods() { - - ObjectTypeDB::bind_method(_MD("set_texture","texture"),&UnshadedMaterial::set_texture); - ObjectTypeDB::bind_method(_MD("get_texture:Texture"),&UnshadedMaterial::get_texture); - - ObjectTypeDB::bind_method(_MD("set_use_alpha","enable"),&UnshadedMaterial::set_use_alpha); - ObjectTypeDB::bind_method(_MD("is_using_alpha"),&UnshadedMaterial::is_using_alpha); - - ObjectTypeDB::bind_method(_MD("set_use_color_array","enable"),&UnshadedMaterial::set_use_color_array); - ObjectTypeDB::bind_method(_MD("is_using_color_array"),&UnshadedMaterial::is_using_color_array); - - ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE,"Texture" ), _SCS("set_texture"), _SCS("get_texture")); - ADD_PROPERTY( PropertyInfo( Variant::BOOL, "alpha" ), _SCS("set_use_alpha"), _SCS("is_using_alpha")); - ADD_PROPERTY( PropertyInfo( Variant::BOOL, "color_array" ), _SCS("set_use_color_array"), _SCS("is_using_color_array")); - -} - -void UnshadedMaterial::set_texture(const Ref<Texture>& p_texture) { - RID rid; - if (texture.is_valid()) - rid=texture->get_rid(); - - VS::get_singleton()->fixed_material_set_texture(material,VS::FIXED_MATERIAL_PARAM_DIFFUSE,rid); -} -Ref<Texture> UnshadedMaterial::get_texture() const { - - return texture; -} - -void UnshadedMaterial::set_use_alpha(bool p_use_alpha) { - - alpha=p_use_alpha; - VS::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_ALPHA,p_use_alpha); - //set_depth_draw_mode(); - //set_hint(HINT,p_use_alpha); - -} - -bool UnshadedMaterial::is_using_alpha() const{ - - return alpha; -} - -void UnshadedMaterial::set_use_color_array(bool p_use_color_array){ - - color_array=p_use_color_array; - VS::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY,p_use_color_array); - -} - -bool UnshadedMaterial::is_using_color_array() const{ - - return color_array; -} - -UnshadedMaterial::UnshadedMaterial() :Material(VisualServer::get_singleton()->fixed_material_create()){ - - set_flag(FLAG_UNSHADED,true); - set_use_alpha(true); - set_flag(FLAG_COLOR_ARRAY_SRGB,true); - -} - -UnshadedMaterial::~UnshadedMaterial() { - - -} diff --git a/scene/resources/material.h b/scene/resources/material.h index 2b10078e16..73d1a4e188 100644 --- a/scene/resources/material.h +++ b/scene/resources/material.h @@ -253,68 +253,6 @@ public: -class ParticleSystemMaterial : public Material { - - OBJ_TYPE( ParticleSystemMaterial, Material ); - REVERSE_GET_PROPERTY_LIST - -private: - - - - Ref<Texture> texture; - -protected: - - - static void _bind_methods(); - -public: - - void set_texture(const Ref<Texture>& p_texture); - Ref<Texture> get_texture() const; - - - ParticleSystemMaterial(); - ~ParticleSystemMaterial(); - -}; - -/////////////////////////////////////////// - - -class UnshadedMaterial : public Material { - - OBJ_TYPE( UnshadedMaterial, Material ); - REVERSE_GET_PROPERTY_LIST - -private: - - - bool alpha; - bool color_array; - Ref<Texture> texture; - -protected: - - - static void _bind_methods(); - -public: - - void set_texture(const Ref<Texture>& p_texture); - Ref<Texture> get_texture() const; - - void set_use_alpha(bool p_use_alpha); - bool is_using_alpha() const; - - void set_use_color_array(bool p_use_color_array); - bool is_using_color_array() const; - - UnshadedMaterial(); - ~UnshadedMaterial(); - -}; #endif diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp index f3e625917a..42251124bd 100644 --- a/scene/resources/shader.cpp +++ b/scene/resources/shader.cpp @@ -84,7 +84,7 @@ void Shader::get_param_list(List<PropertyInfo> *p_params) const { for(List<PropertyInfo>::Element *E=local.front();E;E=E->next()) { PropertyInfo pi=E->get(); - pi.name="param/"+pi.name; + pi.name="shader_param/"+pi.name; params_cache[pi.name]=E->get().name; if (p_params) { diff --git a/scene/resources/shader.h b/scene/resources/shader.h index 8c15ca43d4..4a380d455b 100644 --- a/scene/resources/shader.h +++ b/scene/resources/shader.h @@ -80,6 +80,16 @@ public: Ref<Texture> get_default_texture_param(const StringName& p_param) const; void get_default_texture_param_list(List<StringName>* r_textures) const; + _FORCE_INLINE_ StringName remap_param(const StringName& p_param) const { + if (params_cache_dirty) + get_param_list(NULL); + + const Map<StringName,StringName>::Element *E=params_cache.find(p_param); + if (E) + return E->get(); + return StringName(); + } + virtual RID get_rid() const; Shader(Mode p_mode); @@ -98,6 +108,15 @@ public: MaterialShader() : Shader(MODE_MATERIAL) {}; }; +class CanvasItemShader : public Shader { + + OBJ_TYPE(CanvasItemShader,Shader); + +public: + + CanvasItemShader() : Shader(MODE_CANVAS_ITEM) {}; +}; + class ResourceFormatLoaderShader : public ResourceFormatLoader { diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp index 9703799a48..b0d9ceee0e 100644 --- a/scene/resources/shader_graph.cpp +++ b/scene/resources/shader_graph.cpp @@ -221,6 +221,13 @@ void ShaderGraph::_bind_methods() { ObjectTypeDB::bind_method(_MD("comment_node_set_text","shader_type","id","text"),&ShaderGraph::comment_node_set_text); ObjectTypeDB::bind_method(_MD("comment_node_get_text","shader_type","id"),&ShaderGraph::comment_node_get_text); + ObjectTypeDB::bind_method(_MD("color_ramp_node_set_ramp","shader_type","id","colors","offsets"),&ShaderGraph::color_ramp_node_set_ramp); + ObjectTypeDB::bind_method(_MD("color_ramp_node_get_colors","shader_type","id"),&ShaderGraph::color_ramp_node_get_colors); + ObjectTypeDB::bind_method(_MD("color_ramp_node_get_offsets","shader_type","id"),&ShaderGraph::color_ramp_node_get_offsets); + + ObjectTypeDB::bind_method(_MD("curve_map_node_set_points","shader_type","id","points"),&ShaderGraph::curve_map_node_set_points); + ObjectTypeDB::bind_method(_MD("curve_map_node_get_points","shader_type","id"),&ShaderGraph::curve_map_node_get_points); + ObjectTypeDB::bind_method(_MD("connect_node:Error","shader_type","src_id","src_slot","dst_id","dst_slot"),&ShaderGraph::connect_node); ObjectTypeDB::bind_method(_MD("is_node_connected","shader_type","src_id","src_slot","dst_id","dst_slot"),&ShaderGraph::is_node_connected); ObjectTypeDB::bind_method(_MD("disconnect_node","shader_type","src_id","src_slot","dst_id","dst_slot"),&ShaderGraph::disconnect_node); @@ -263,12 +270,15 @@ void ShaderGraph::_bind_methods() { BIND_CONSTANT( NODE_XFORM_TO_VEC ); // 3 vec input ); 1 xform output BIND_CONSTANT( NODE_SCALAR_INTERP ); // scalar interpolation (with optional curve) BIND_CONSTANT( NODE_VEC_INTERP ); // vec3 interpolation (with optional curve) + BIND_CONSTANT( NODE_COLOR_RAMP ); + BIND_CONSTANT( NODE_CURVE_MAP ); BIND_CONSTANT( NODE_SCALAR_INPUT ); // scalar uniform (assignable in material) BIND_CONSTANT( NODE_VEC_INPUT ); // vec3 uniform (assignable in material) BIND_CONSTANT( NODE_RGB_INPUT ); // color uniform (assignable in material) BIND_CONSTANT( NODE_XFORM_INPUT ); // mat4 uniform (assignable in material) BIND_CONSTANT( NODE_TEXTURE_INPUT ); // texture input (assignable in material) BIND_CONSTANT( NODE_CUBEMAP_INPUT ); // cubemap input (assignable in material) + BIND_CONSTANT( NODE_DEFAULT_TEXTURE ); BIND_CONSTANT( NODE_OUTPUT ); // output (shader type dependent) BIND_CONSTANT( NODE_COMMENT ); // comment BIND_CONSTANT( NODE_TYPE_MAX ); @@ -519,12 +529,15 @@ void ShaderGraph::node_add(ShaderType p_type, NodeType p_node_type,int p_id) { case NODE_XFORM_TO_VEC: {} break; // 3 scalar input: {} break; 1 vec3 output case NODE_SCALAR_INTERP: {} break; // scalar interpolation (with optional curve) case NODE_VEC_INTERP: {} break; // vec3 interpolation (with optional curve) + case NODE_COLOR_RAMP: { node.param1=DVector<Color>(); node.param2=DVector<real_t>();} break; // vec3 interpolation (with optional curve) + case NODE_CURVE_MAP: { node.param1=DVector<Vector2>();} break; // vec3 interpolation (with optional curve) case NODE_SCALAR_INPUT: {node.param1=_find_unique_name("Scalar"); node.param2=0;} break; // scalar uniform (assignable in material) case NODE_VEC_INPUT: {node.param1=_find_unique_name("Vec3");node.param2=Vector3();} break; // vec3 uniform (assignable in material) case NODE_RGB_INPUT: {node.param1=_find_unique_name("Color");node.param2=Color();} break; // color uniform (assignable in material) case NODE_XFORM_INPUT: {node.param1=_find_unique_name("XForm"); node.param2=Transform();} break; // mat4 uniform (assignable in material) case NODE_TEXTURE_INPUT: {node.param1=_find_unique_name("Tex"); } break; // texture input (assignable in material) - case NODE_CUBEMAP_INPUT: {node.param1=_find_unique_name("Cube"); } break; // cubemap input (assignable in material) + case NODE_CUBEMAP_INPUT: {node.param1=_find_unique_name("Cube"); } break; // cubemap input (assignable in material) + case NODE_DEFAULT_TEXTURE: {}; break; case NODE_OUTPUT: {} break; // output (shader type dependent) case NODE_COMMENT: {} break; // comment case NODE_TYPE_MAX: {}; @@ -964,6 +977,59 @@ ShaderGraph::VecFunc ShaderGraph::vec_func_node_get_function(ShaderType p_type, return VecFunc(func); } +void ShaderGraph::color_ramp_node_set_ramp(ShaderType p_type,int p_id,const DVector<Color>& p_colors, const DVector<real_t>& p_offsets){ + + ERR_FAIL_INDEX(p_type,3); + ERR_FAIL_COND(!shader[p_type].node_map.has(p_id)); + ERR_FAIL_COND(p_colors.size()!=p_offsets.size()); + Node& n = shader[p_type].node_map[p_id]; + n.param1=p_colors; + n.param2=p_offsets; + _request_update(); + +} + +DVector<Color> ShaderGraph::color_ramp_node_get_colors(ShaderType p_type,int p_id) const{ + + ERR_FAIL_INDEX_V(p_type,3,DVector<Color>()); + ERR_FAIL_COND_V(!shader[p_type].node_map.has(p_id),DVector<Color>()); + const Node& n = shader[p_type].node_map[p_id]; + return n.param1; + + +} + +DVector<real_t> ShaderGraph::color_ramp_node_get_offsets(ShaderType p_type,int p_id) const{ + + ERR_FAIL_INDEX_V(p_type,3,DVector<real_t>()); + ERR_FAIL_COND_V(!shader[p_type].node_map.has(p_id),DVector<real_t>()); + const Node& n = shader[p_type].node_map[p_id]; + return n.param2; + +} + + +void ShaderGraph::curve_map_node_set_points(ShaderType p_type,int p_id,const DVector<Vector2>& p_points) { + + ERR_FAIL_INDEX(p_type,3); + ERR_FAIL_COND(!shader[p_type].node_map.has(p_id)); + Node& n = shader[p_type].node_map[p_id]; + n.param1=p_points; + _request_update(); + +} + +DVector<Vector2> ShaderGraph::curve_map_node_get_points(ShaderType p_type,int p_id) const{ + + ERR_FAIL_INDEX_V(p_type,3,DVector<Vector2>()); + ERR_FAIL_COND_V(!shader[p_type].node_map.has(p_id),DVector<Vector2>()); + const Node& n = shader[p_type].node_map[p_id]; + return n.param1; + +} + + + void ShaderGraph::input_node_set_name(ShaderType p_type,int p_id,const String& p_name){ ERR_FAIL_INDEX(p_type,3); @@ -1223,7 +1289,7 @@ const ShaderGraph::InOutParamInfo ShaderGraph::inout_param_info[]={ {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"Binormal","BINORMAL","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UV","vec3(UV,0);","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UV2","UV2","",SLOT_TYPE_VEC,SLOT_IN}, - {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UVScreen","SCREEN_UV","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UVScreen","vec3(SCREEN_UV,0)","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"PointCoord","POINT_COORD","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"Color","COLOR.rgb","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"Alpha","COLOR.a","",SLOT_TYPE_SCALAR,SLOT_IN}, @@ -1254,6 +1320,43 @@ const ShaderGraph::InOutParamInfo ShaderGraph::inout_param_info[]={ {MODE_MATERIAL,SHADER_TYPE_LIGHT,"ShadeParam","SHADE_PARAM","",SLOT_TYPE_SCALAR,SLOT_IN}, //light out {MODE_MATERIAL,SHADER_TYPE_LIGHT,"Light","LIGHT","",SLOT_TYPE_VEC,SLOT_OUT}, + //canvas item vertex in + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Vertex","vec3(SRC_VERTEX,0)","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"UV","SRC_UV","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Color","SRC_COLOR.rgb","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Alpha","SRC_COLOR.a","",SLOT_TYPE_SCALAR,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"WorldMatrix","WORLD_MATRIX","",SLOT_TYPE_XFORM,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"ExtraMatrix","EXTRA_MATRIX","",SLOT_TYPE_XFORM,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"ProjectionMatrix","PROJECTION_MATRIX","",SLOT_TYPE_XFORM,SLOT_IN}, + //canvas item vertex out + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Vertex","VERTEX",".xy",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"UV","UV",".xy",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Color","COLOR.rgb","",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Alpha","COLOR.a","",SLOT_TYPE_SCALAR,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Var1","VAR1.rgb","",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"Var2","VAR2.rgb","",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_VERTEX,"PointSize","POINT_SIZE","",SLOT_TYPE_SCALAR,SLOT_OUT}, + //canvas item fragment in + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Color","SRC_COLOR.rgb","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Alpha","SRC_COLOR.a","",SLOT_TYPE_SCALAR,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"UV","vec3(UV,0)","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"UVScreen","vec3(SCREEN_UV,0)","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"TexPixelSize","vec3(TEXTURE_PIXEL_SIZE,0)","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Var1","VAR1.rgb","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Var2","VAR2.rgb","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"PointCoord","POINT_COORD","",SLOT_TYPE_VEC,SLOT_IN}, + //canvas item fragment out + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Color","COLOR.rgb","",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Alpha","COLOR.a","",SLOT_TYPE_SCALAR,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_FRAGMENT,"Normal","NORMAL","",SLOT_TYPE_VEC,SLOT_OUT}, + //canvas item light in + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"Color","COLOR.rgb","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"Normal","NORMAL","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightDist","LIGHT_DISTANCE","",SLOT_TYPE_SCALAR,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightDir","vec3(LIGHT_DIR,0)","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"PointCoord","POINT_COORD","",SLOT_TYPE_VEC,SLOT_IN}, + //canvas item light out + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"Light","LIGHT","",SLOT_TYPE_VEC,SLOT_OUT}, //end {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,NULL,NULL,NULL,SLOT_TYPE_SCALAR,SLOT_OUT}, @@ -1299,12 +1402,15 @@ const ShaderGraph::NodeSlotInfo ShaderGraph::node_slot_info[]= { {NODE_SCALAR_TO_VEC,{SLOT_TYPE_SCALAR,SLOT_TYPE_SCALAR,SLOT_TYPE_SCALAR},{SLOT_TYPE_VEC,SLOT_MAX}}, // 3 scalar input,{SLOT_MAX},{SLOT_MAX}}, 1 vec3 output {NODE_SCALAR_INTERP,{SLOT_TYPE_SCALAR,SLOT_TYPE_SCALAR,SLOT_TYPE_SCALAR},{SLOT_TYPE_SCALAR,SLOT_MAX}}, // scalar interpolation (with optional curve) {NODE_VEC_INTERP,{SLOT_TYPE_VEC,SLOT_TYPE_VEC,SLOT_TYPE_SCALAR},{SLOT_TYPE_VEC,SLOT_MAX}}, // vec3 interpolation (with optional curve) + {NODE_COLOR_RAMP,{SLOT_TYPE_SCALAR,SLOT_MAX},{SLOT_TYPE_VEC,SLOT_TYPE_SCALAR,SLOT_MAX}}, // vec3 interpolation (with optional curve) + {NODE_CURVE_MAP,{SLOT_TYPE_SCALAR,SLOT_MAX},{SLOT_TYPE_SCALAR,SLOT_MAX}}, // vec3 interpolation (with optional curve) {NODE_SCALAR_INPUT,{SLOT_MAX},{SLOT_TYPE_SCALAR,SLOT_MAX}}, // scalar uniform (assignable in material) {NODE_VEC_INPUT,{SLOT_MAX},{SLOT_TYPE_VEC,SLOT_MAX}}, // vec3 uniform (assignable in material) {NODE_RGB_INPUT,{SLOT_MAX},{SLOT_TYPE_VEC,SLOT_MAX}}, // color uniform (assignable in material) {NODE_XFORM_INPUT,{SLOT_MAX},{SLOT_TYPE_XFORM,SLOT_MAX}}, // mat4 uniform (assignable in material) {NODE_TEXTURE_INPUT,{SLOT_TYPE_VEC,SLOT_MAX},{SLOT_TYPE_VEC,SLOT_TYPE_SCALAR,SLOT_MAX}}, // texture input (assignable in material) {NODE_CUBEMAP_INPUT,{SLOT_TYPE_VEC,SLOT_MAX},{SLOT_TYPE_VEC,SLOT_TYPE_SCALAR,SLOT_MAX}}, // cubemap input (assignable in material) + {NODE_DEFAULT_TEXTURE,{SLOT_TYPE_VEC,SLOT_MAX},{SLOT_TYPE_VEC,SLOT_TYPE_SCALAR,SLOT_MAX}}, // cubemap input (assignable in material) {NODE_COMMENT,{SLOT_MAX},{SLOT_MAX}}, // comment {NODE_TYPE_MAX,{SLOT_MAX},{SLOT_MAX}} }; @@ -1663,6 +1769,11 @@ void ShaderGraph::_update_shader() { } else if (i==SHADER_TYPE_FRAGMENT && get_mode()==MODE_MATERIAL) { if (name==("IN_NORMAL")) code[i]="vec3 IN_NORMAL=NORMAL;\n"+code[i]; + } else if (i==SHADER_TYPE_VERTEX && get_mode()==MODE_CANVAS_ITEM) { + if (name==("SRC_COLOR")) + code[i]="vec3 SRC_COLOR=COLOR.rgb;\n"+code[i]; + if (name==("SRC_UV")) + code[i]="vec3 SRC_UV=vec3(UV,0);\n"+code[i]; } } @@ -1679,6 +1790,10 @@ void ShaderGraph::_update_shader() { all_ok=false; } + /*print_line("VERTEX: \n"+code[0]); + print_line("FRAGMENT: \n"+code[1]); + print_line("LIGHT: \n"+code[2]);*/ + if (all_ok) { set_code(code[0],code[1],code[2]); } @@ -1688,6 +1803,134 @@ void ShaderGraph::_update_shader() { emit_signal(SceneStringNames::get_singleton()->updated); } +void ShaderGraph::_plot_curve(const Vector2& p_a,const Vector2& p_b,const Vector2& p_c,const Vector2& p_d,uint8_t* p_heights,bool *p_useds) { + + float geometry[4][4]; + float tmp1[4][4]; + float tmp2[4][4]; + float deltas[4][4]; + double x, dx, dx2, dx3; + double y, dy, dy2, dy3; + double d, d2, d3; + int lastx, lasty; + int newx, newy; + int ntimes; + int i,j; + + int xmax=255; + int ymax=255; + + /* construct the geometry matrix from the segment */ + for (i = 0; i < 4; i++) { + geometry[i][2] = 0; + geometry[i][3] = 0; + } + + geometry[0][0] = (p_a[0] * xmax); + geometry[1][0] = (p_b[0] * xmax); + geometry[2][0] = (p_c[0] * xmax); + geometry[3][0] = (p_d[0] * xmax); + + geometry[0][1] = (p_a[1] * ymax); + geometry[1][1] = (p_b[1] * ymax); + geometry[2][1] = (p_c[1] * ymax); + geometry[3][1] = (p_d[1] * ymax); + + /* subdivide the curve ntimes (1000) times */ + ntimes = 4 * xmax; + /* ntimes can be adjusted to give a finer or coarser curve */ + d = 1.0 / ntimes; + d2 = d * d; + d3 = d * d * d; + + /* construct a temporary matrix for determining the forward differencing deltas */ + tmp2[0][0] = 0; tmp2[0][1] = 0; tmp2[0][2] = 0; tmp2[0][3] = 1; + tmp2[1][0] = d3; tmp2[1][1] = d2; tmp2[1][2] = d; tmp2[1][3] = 0; + tmp2[2][0] = 6*d3; tmp2[2][1] = 2*d2; tmp2[2][2] = 0; tmp2[2][3] = 0; + tmp2[3][0] = 6*d3; tmp2[3][1] = 0; tmp2[3][2] = 0; tmp2[3][3] = 0; + + /* compose the basis and geometry matrices */ + + static const float CR_basis[4][4] = + { + { -0.5, 1.5, -1.5, 0.5 }, + { 1.0, -2.5, 2.0, -0.5 }, + { -0.5, 0.0, 0.5, 0.0 }, + { 0.0, 1.0, 0.0, 0.0 }, + }; + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + tmp1[i][j] = (CR_basis[i][0] * geometry[0][j] + + CR_basis[i][1] * geometry[1][j] + + CR_basis[i][2] * geometry[2][j] + + CR_basis[i][3] * geometry[3][j]); + } + } + /* compose the above results to get the deltas matrix */ + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + deltas[i][j] = (tmp2[i][0] * tmp1[0][j] + + tmp2[i][1] * tmp1[1][j] + + tmp2[i][2] * tmp1[2][j] + + tmp2[i][3] * tmp1[3][j]); + } + } + + + /* extract the x deltas */ + x = deltas[0][0]; + dx = deltas[1][0]; + dx2 = deltas[2][0]; + dx3 = deltas[3][0]; + + /* extract the y deltas */ + y = deltas[0][1]; + dy = deltas[1][1]; + dy2 = deltas[2][1]; + dy3 = deltas[3][1]; + + + lastx = CLAMP (x, 0, xmax); + lasty = CLAMP (y, 0, ymax); + + p_heights[lastx] = lasty; + p_useds[lastx] = true; + + /* loop over the curve */ + for (i = 0; i < ntimes; i++) + { + /* increment the x values */ + x += dx; + dx += dx2; + dx2 += dx3; + + /* increment the y values */ + y += dy; + dy += dy2; + dy2 += dy3; + + newx = CLAMP ((Math::round (x)), 0, xmax); + newy = CLAMP ((Math::round (y)), 0, ymax); + + /* if this point is different than the last one...then draw it */ + if ((lastx != newx) || (lasty != newy)) + { + p_useds[newx]=true; + p_heights[newx]=newy; + } + + lastx = newx; + lasty = newy; + } +} + + void ShaderGraph::_add_node_code(ShaderType p_type,Node *p_node,const Vector<String>& p_inputs,String& code) { @@ -1730,7 +1973,7 @@ void ShaderGraph::_add_node_code(ShaderType p_type,Node *p_node,const Vector<Str code+=OUTNAME(p_node->id,0)+"=TIME;\n"; }break; case NODE_SCREEN_TEX: { - code+=OUTNAME(p_node->id,0)+"=texscreen("+p_inputs[0]+");\n"; + code+=OUTNAME(p_node->id,0)+"=texscreen("+p_inputs[0]+".xy);\n"; }break; case NODE_SCALAR_OP: { int op = p_node->param1; @@ -1988,6 +2231,129 @@ void ShaderGraph::_add_node_code(ShaderType p_type,Node *p_node,const Vector<Str code += OUTNAME(p_node->id,0)+"=mix("+p_inputs[0]+","+p_inputs[1]+","+p_inputs[2]+");\n"; }break; + case NODE_COLOR_RAMP: { + + static const int color_ramp_len=512; + DVector<uint8_t> cramp; + cramp.resize(color_ramp_len*4); + { + + DVector<Color> colors=p_node->param1; + DVector<real_t> offsets=p_node->param2; + int cc =colors.size(); + DVector<uint8_t>::Write crw = cramp.write(); + DVector<Color>::Read cr = colors.read(); + DVector<real_t>::Read ofr = offsets.read(); + + int at=0; + Color color_at(0,0,0,1); + for(int i=0;i<=cc;i++) { + + int pos; + Color to; + if (i==cc) { + if (at==color_ramp_len) + break; + pos=color_ramp_len; + to=Color(1,1,1,1); + } else { + to=cr[i]; + pos= MIN(ofr[i]*color_ramp_len,color_ramp_len); + } + for(int j=at;j<pos;j++) { + float t = (j-at)/float(pos-at); + Color c = color_at.linear_interpolate(to,t); + crw[j*4+0]=Math::fast_ftoi( CLAMP(c.r*255.0,0,255) ); + crw[j*4+1]=Math::fast_ftoi( CLAMP(c.g*255.0,0,255) ); + crw[j*4+2]=Math::fast_ftoi( CLAMP(c.b*255.0,0,255) ); + crw[j*4+3]=Math::fast_ftoi( CLAMP(c.a*255.0,0,255) ); + } + + at=pos; + color_at=to; + } + } + + Image gradient(color_ramp_len,1,0,Image::FORMAT_RGBA,cramp); + Ref<ImageTexture> it = memnew( ImageTexture ); + it->create_from_image(gradient,Texture::FLAG_FILTER|Texture::FLAG_MIPMAPS); + + String crampname= "cramp_"+itos(p_node->id); + set_default_texture_param(crampname,it); + + code +="uniform texture "+crampname+";\n"; + code +="vec4 "+crampname+"_r=tex("+crampname+",vec2("+p_inputs[0]+",0));\n"; + code += OUTNAME(p_node->id,0)+"="+crampname+"_r.rgb;\n"; + code += OUTNAME(p_node->id,1)+"="+crampname+"_r.a;\n"; + + }break; + case NODE_CURVE_MAP: { + static const int curve_map_len=256; + bool mapped[256]; + zeromem(mapped,sizeof(mapped)); + DVector<uint8_t> cmap; + cmap.resize(curve_map_len); + { + + DVector<Point2> points=p_node->param1; + int pc =points.size(); + DVector<uint8_t>::Write cmw = cmap.write(); + DVector<Point2>::Read pr = points.read(); + + Vector2 prev=Vector2(0,0); + Vector2 prev2=Vector2(0,0); + + for(int i=-1;i<pc;i++) { + + Vector2 next; + Vector2 next2; + if (i+1>=pc) { + next=Vector2(1,1); + } else { + next=Vector2(pr[i+1].x,pr[i+1].y); + } + + if (i+2>=pc) { + next2=Vector2(1,1); + } else { + next2=Vector2(pr[i+2].x,pr[i+2].y); + } + + /*if (i==-1 && prev.offset==next.offset) { + prev=next; + continue; + }*/ + + _plot_curve(prev2,prev,next,next2,cmw.ptr(),mapped); + + prev2=prev; + prev=next; + } + + uint8_t pp=0; + for(int i=0;i<curve_map_len;i++) { + + if (!mapped[i]) { + cmw[i]=pp; + } else { + pp=cmw[i]; + } + } + } + + + + Image gradient(curve_map_len,1,0,Image::FORMAT_GRAYSCALE,cmap); + Ref<ImageTexture> it = memnew( ImageTexture ); + it->create_from_image(gradient,Texture::FLAG_FILTER|Texture::FLAG_MIPMAPS); + + String cmapname= "cmap_"+itos(p_node->id); + set_default_texture_param(cmapname,it); + + code +="uniform texture "+cmapname+";\n"; + code += OUTNAME(p_node->id,0)+"=tex("+cmapname+",vec2("+p_inputs[0]+",0)).r;\n"; + + }break; case NODE_SCALAR_INPUT: { String name = p_node->param1; float dv=p_node->param2; @@ -2043,6 +2409,22 @@ void ShaderGraph::_add_node_code(ShaderType p_type,Node *p_node,const Vector<Str code += OUTNAME(p_node->id,0)+"="+rname+".rgb;\n"; code += OUTNAME(p_node->id,1)+"="+rname+".a;\n"; }break; + case NODE_DEFAULT_TEXTURE: { + + if (get_mode()==MODE_CANVAS_ITEM && p_type==SHADER_TYPE_FRAGMENT) { + + String rname="rt_default_tex"+itos(p_node->id); + code +="vec4 "+rname+"=tex(TEXTURE,"+p_inputs[0]+".xy);\n"; + code += OUTNAME(p_node->id,0)+"="+rname+".rgb;\n"; + code += OUTNAME(p_node->id,1)+"="+rname+".a;\n"; + + } else { + //not supported + code += OUTNAME(p_node->id,0)+"=vec3(0,0,0);\n"; + code += OUTNAME(p_node->id,1)+"=1.0;\n"; + + } + } break; case NODE_OUTPUT: { diff --git a/scene/resources/shader_graph.h b/scene/resources/shader_graph.h index 55d09b4c38..5c34bedadd 100644 --- a/scene/resources/shader_graph.h +++ b/scene/resources/shader_graph.h @@ -66,12 +66,15 @@ public: NODE_VEC_TO_XFORM, // 3 vec input, 1 xform output NODE_SCALAR_INTERP, // scalar interpolation (with optional curve) NODE_VEC_INTERP, // vec3 interpolation (with optional curve) - NODE_SCALAR_INPUT, // scalar uniform (assignable in material) + NODE_COLOR_RAMP, //take scalar, output vec3 + NODE_CURVE_MAP, //take scalar, otput scalar + NODE_SCALAR_INPUT, // scalar uniform (assignable in material) NODE_VEC_INPUT, // vec3 uniform (assignable in material) NODE_RGB_INPUT, // color uniform (assignable in material) NODE_XFORM_INPUT, // mat4 uniform (assignable in material) NODE_TEXTURE_INPUT, // texture input (assignable in material) NODE_CUBEMAP_INPUT, // cubemap input (assignable in material) + NODE_DEFAULT_TEXTURE, NODE_OUTPUT, // output (shader type dependent) NODE_COMMENT, // comment NODE_TYPE_MAX @@ -172,6 +175,7 @@ private: void _update_shader(); void _request_update(); + void _plot_curve(const Vector2& p_a,const Vector2& p_b,const Vector2& p_c,const Vector2& p_d,uint8_t* p_heights,bool *p_useds); void _add_node_code(ShaderType p_type,Node *p_node,const Vector<String>& p_inputs,String& code); Array _get_node_list(ShaderType p_type) const; @@ -313,6 +317,13 @@ public: void vec_func_node_set_function(ShaderType p_which,int p_id,VecFunc p_func); VecFunc vec_func_node_get_function(ShaderType p_which,int p_id) const; + void color_ramp_node_set_ramp(ShaderType p_which,int p_id,const DVector<Color>& p_colors, const DVector<real_t>& p_offsets); + DVector<Color> color_ramp_node_get_colors(ShaderType p_which,int p_id) const; + DVector<real_t> color_ramp_node_get_offsets(ShaderType p_which,int p_id) const; + + void curve_map_node_set_points(ShaderType p_which, int p_id, const DVector<Vector2>& p_points); + DVector<Vector2> curve_map_node_get_points(ShaderType p_which,int p_id) const; + void input_node_set_name(ShaderType p_which,int p_id,const String& p_name); String input_node_get_name(ShaderType p_which,int p_id); @@ -395,7 +406,6 @@ VARIANT_ENUM_CAST( ShaderGraph::GraphError ); class MaterialShaderGraph : public ShaderGraph { OBJ_TYPE( MaterialShaderGraph, ShaderGraph ); - RES_BASE_EXTENSION("sgp"); public: @@ -405,4 +415,17 @@ public: } }; +class CanvasItemShaderGraph : public ShaderGraph { + + OBJ_TYPE( CanvasItemShaderGraph, ShaderGraph ); + +public: + + + CanvasItemShaderGraph() : ShaderGraph(MODE_CANVAS_ITEM) { + + } +}; + + #endif // SHADER_GRAPH_H diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp index d93d4d5c35..1cfe9a6ab9 100644 --- a/servers/physics_2d/body_2d_sw.cpp +++ b/servers/physics_2d/body_2d_sw.cpp @@ -647,6 +647,7 @@ Body2DSW::Body2DSW() : CollisionObject2DSW(TYPE_BODY), active_list(this), inerti area_linear_damp=0; contact_count=0; gravity_scale=1.0; + one_way_collision_max_depth=0.1; still_time=0; continuous_cd_mode=Physics2DServer::CCD_MODE_DISABLED; diff --git a/servers/physics_2d/body_2d_sw.h b/servers/physics_2d/body_2d_sw.h index 5bd68ba976..3b87be2737 100644 --- a/servers/physics_2d/body_2d_sw.h +++ b/servers/physics_2d/body_2d_sw.h @@ -67,6 +67,9 @@ class Body2DSW : public CollisionObject2DSW { Vector2 applied_force; real_t applied_torque; + Vector2 one_way_collision_direction; + float one_way_collision_max_depth; + SelfList<Body2DSW> active_list; SelfList<Body2DSW> inertia_update_list; @@ -216,6 +219,12 @@ public: _FORCE_INLINE_ void set_continuous_collision_detection_mode(Physics2DServer::CCDMode p_mode) { continuous_cd_mode=p_mode; } _FORCE_INLINE_ Physics2DServer::CCDMode get_continuous_collision_detection_mode() const { return continuous_cd_mode; } + void set_one_way_collision_direction(const Vector2& p_dir) { one_way_collision_direction=p_dir; } + Vector2 get_one_way_collision_direction() const { return one_way_collision_direction; } + + void set_one_way_collision_max_depth(float p_depth) { one_way_collision_max_depth=p_depth; } + float get_one_way_collision_max_depth() const { return one_way_collision_max_depth; } + void set_space(Space2DSW *p_space); void update_inertias(); diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index ab85f5e1d6..be49955055 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -138,6 +138,21 @@ void Physics2DServerSW::_shape_col_cbk(const Vector2& p_point_A,const Vector2& p if (cbk->max==0) return; + if (cbk->valid_dir!=Vector2()) { + if (p_point_A.distance_squared_to(p_point_B)>cbk->valid_depth*cbk->valid_depth) { + return; + } + if (cbk->valid_dir.dot((p_point_A-p_point_B).normalized())<0.7071) { +/* print_line("A: "+p_point_A); + print_line("B: "+p_point_B); + print_line("discard too angled "+rtos(cbk->valid_dir.dot((p_point_A-p_point_B)))); + print_line("resnorm: "+(p_point_A-p_point_B).normalized()); + print_line("distance: "+rtos(p_point_A.distance_to(p_point_B))); +*/ + return; + } + } + if (cbk->amount == cbk->max) { //find least deep float min_depth=1e20; @@ -860,6 +875,37 @@ int Physics2DServerSW::body_get_max_contacts_reported(RID p_body) const { return body->get_max_contacts_reported(); } +void Physics2DServerSW::body_set_one_way_collision_direction(RID p_body,const Vector2& p_direction) { + + Body2DSW *body = body_owner.get(p_body); + ERR_FAIL_COND(!body); + body->set_one_way_collision_direction(p_direction); +} + +Vector2 Physics2DServerSW::body_get_one_way_collision_direction(RID p_body) const{ + + Body2DSW *body = body_owner.get(p_body); + ERR_FAIL_COND_V(!body,Vector2()); + return body->get_one_way_collision_direction(); + +} + +void Physics2DServerSW::body_set_one_way_collision_max_depth(RID p_body,float p_max_depth) { + + Body2DSW *body = body_owner.get(p_body); + ERR_FAIL_COND(!body); + body->set_one_way_collision_max_depth(p_max_depth); + +} + +float Physics2DServerSW::body_get_one_way_collision_max_depth(RID p_body) const { + + Body2DSW *body = body_owner.get(p_body); + ERR_FAIL_COND_V(!body,0); + return body->get_one_way_collision_max_depth(); + +} + void Physics2DServerSW::body_set_force_integration_callback(RID p_body,Object *p_receiver,const StringName& p_method,const Variant& p_udata) { diff --git a/servers/physics_2d/physics_2d_server_sw.h b/servers/physics_2d/physics_2d_server_sw.h index 9edd4eee11..e9c499aaff 100644 --- a/servers/physics_2d/physics_2d_server_sw.h +++ b/servers/physics_2d/physics_2d_server_sw.h @@ -71,6 +71,8 @@ public: struct CollCbkData { + Vector2 valid_dir; + float valid_depth; int max; int amount; Vector2 *ptr; @@ -205,6 +207,13 @@ public: virtual void body_set_max_contacts_reported(RID p_body, int p_contacts); virtual int body_get_max_contacts_reported(RID p_body) const; + virtual void body_set_one_way_collision_direction(RID p_body,const Vector2& p_direction); + virtual Vector2 body_get_one_way_collision_direction(RID p_body) const; + + virtual void body_set_one_way_collision_max_depth(RID p_body,float p_max_depth); + virtual float body_get_one_way_collision_max_depth(RID p_body) const; + + virtual void body_set_force_integration_callback(RID p_body,Object *p_receiver,const StringName& p_method,const Variant& p_udata=Variant()); virtual bool body_collide_shape(RID p_body, int p_body_shape,RID p_shape, const Matrix32& p_shape_xform,const Vector2& p_motion,Vector2 *r_results,int p_result_max,int &r_result_count); diff --git a/servers/physics_2d/shape_2d_sw.cpp b/servers/physics_2d/shape_2d_sw.cpp index 336eec73b5..ed63870a12 100644 --- a/servers/physics_2d/shape_2d_sw.cpp +++ b/servers/physics_2d/shape_2d_sw.cpp @@ -136,6 +136,7 @@ real_t LineShape2DSW::get_moment_of_inertia(float p_mass, const Vector2 &p_scale return 0; } + void LineShape2DSW::set_data(const Variant& p_data) { ERR_FAIL_COND(p_data.get_type()!=Variant::ARRAY); diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h index 51ece9fc7e..931491efd5 100644 --- a/servers/physics_2d/shape_2d_sw.h +++ b/servers/physics_2d/shape_2d_sw.h @@ -85,7 +85,6 @@ public: virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const=0; virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const=0; - virtual void set_data(const Variant& p_data)=0; virtual Variant get_data() const=0; diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index 76069de9a0..f2ed74ffbf 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -98,7 +98,7 @@ bool Physics2DDirectSpaceStateSW::intersect_ray(const Vector2& p_from, const Vec if (shape->intersect_segment(local_from,local_to,shape_point,shape_normal)) { - //print_line("inters sgment!"); + Matrix32 xform = col_obj->get_transform() * col_obj->get_shape_transform(shape_idx); shape_point=xform.xform(shape_point); @@ -217,6 +217,16 @@ bool Physics2DDirectSpaceStateSW::cast_motion(const RID& p_shape, const Matrix32 int shape_idx=space->intersection_query_subindex_results[i]; + /*if (col_obj->get_type()==CollisionObject2DSW::TYPE_BODY) { + + const Body2DSW *body=static_cast<const Body2DSW*>(col_obj); + if (body->get_one_way_collision_direction()!=Vector2() && p_motion.dot(body->get_one_way_collision_direction())<=CMP_EPSILON) { + print_line("failed in motion dir"); + continue; + } + }*/ + + Matrix32 col_obj_xform = col_obj->get_transform() * col_obj->get_shape_transform(shape_idx); //test initial overlap, does it collide if going all the way? if (!CollisionSolver2DSW::solve(shape,p_xform,p_motion,col_obj->get_shape(shape_idx),col_obj_xform,Vector2() ,NULL,NULL,NULL,p_margin)) { @@ -227,6 +237,14 @@ bool Physics2DDirectSpaceStateSW::cast_motion(const RID& p_shape, const Matrix32 //test initial overlap if (CollisionSolver2DSW::solve(shape,p_xform,Vector2(),col_obj->get_shape(shape_idx),col_obj_xform,Vector2() ,NULL,NULL,NULL,p_margin)) { + if (col_obj->get_type()==CollisionObject2DSW::TYPE_BODY) { + //if one way collision direction ignore initial overlap + const Body2DSW *body=static_cast<const Body2DSW*>(col_obj); + if (body->get_one_way_collision_direction()!=Vector2()) { + continue; + } + } + return false; } @@ -253,6 +271,29 @@ bool Physics2DDirectSpaceStateSW::cast_motion(const RID& p_shape, const Matrix32 } } + if (col_obj->get_type()==CollisionObject2DSW::TYPE_BODY) { + + const Body2DSW *body=static_cast<const Body2DSW*>(col_obj); + if (body->get_one_way_collision_direction()!=Vector2()) { + + Vector2 cd[2]; + Physics2DServerSW::CollCbkData cbk; + cbk.max=1; + cbk.amount=0; + cbk.ptr=cd; + cbk.valid_dir=body->get_one_way_collision_direction(); + cbk.valid_depth=body->get_one_way_collision_max_depth(); + + Vector2 sep=mnormal; //important optimization for this to work fast enough + bool collided = CollisionSolver2DSW::solve(shape,p_xform,p_motion*(hi+space->contact_max_allowed_penetration),col_obj->get_shape(shape_idx),col_obj_xform,Vector2(),Physics2DServerSW::_shape_col_cbk,&cbk,&sep,p_margin); + if (!collided || cbk.amount==0) { + continue; + } + + } + } + + if (low<best_safe) { best_safe=low; best_unsafe=hi; @@ -311,14 +352,23 @@ bool Physics2DDirectSpaceStateSW::collide_shape(RID p_shape, const Matrix32& p_s if (p_exclude.has( col_obj->get_self() )) continue; - + if (col_obj->get_type()==CollisionObject2DSW::TYPE_BODY) { + + const Body2DSW *body=static_cast<const Body2DSW*>(col_obj); + cbk.valid_dir=body->get_one_way_collision_direction(); + cbk.valid_depth=body->get_one_way_collision_max_depth(); + } else { + cbk.valid_dir=Vector2(); + cbk.valid_depth=0; + } if (CollisionSolver2DSW::solve(shape,p_shape_xform,p_motion,col_obj->get_shape(shape_idx),col_obj->get_transform() * col_obj->get_shape_transform(shape_idx),Vector2(),cbkres,cbkptr,NULL,p_margin)) { - collided=true; + collided=p_result_max==0 || cbk.amount>0; } } + r_result_count=cbk.amount; return collided; @@ -334,6 +384,8 @@ struct _RestCallbackData2D { Vector2 best_contact; Vector2 best_normal; float best_len; + Vector2 valid_dir; + float valid_depth; }; static void _rest_cbk_result(const Vector2& p_point_A,const Vector2& p_point_B,void *p_userdata) { @@ -341,11 +393,23 @@ static void _rest_cbk_result(const Vector2& p_point_A,const Vector2& p_point_B,v _RestCallbackData2D *rd=(_RestCallbackData2D*)p_userdata; + if (rd->valid_dir!=Vector2()) { + + if (rd->valid_dir!=Vector2()) { + if (p_point_A.distance_squared_to(p_point_B)>rd->valid_depth*rd->valid_depth) + return; + if (rd->valid_dir.dot((p_point_A-p_point_B).normalized())<Math_PI*0.25) + return; + } + + } + Vector2 contact_rel = p_point_B - p_point_A; float len = contact_rel.length(); if (len <= rd->best_len) return; + rd->best_len=len; rd->best_contact=p_point_B; rd->best_normal=contact_rel/len; @@ -385,6 +449,17 @@ bool Physics2DDirectSpaceStateSW::rest_info(RID p_shape, const Matrix32& p_shape if (p_exclude.has( col_obj->get_self() )) continue; + if (col_obj->get_type()==CollisionObject2DSW::TYPE_BODY) { + + const Body2DSW *body=static_cast<const Body2DSW*>(col_obj); + rcd.valid_dir=body->get_one_way_collision_direction(); + rcd.valid_depth=body->get_one_way_collision_max_depth(); + } else { + rcd.valid_dir=Vector2(); + rcd.valid_depth=0; + } + + rcd.object=col_obj; rcd.shape=shape_idx; bool sc = CollisionSolver2DSW::solve(shape,p_shape_xform,p_motion,col_obj->get_shape(shape_idx),col_obj->get_transform() * col_obj->get_shape_transform(shape_idx),Vector2() ,_rest_cbk_result,&rcd,NULL,p_margin); diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp index 3633efc5eb..07389bc912 100644 --- a/servers/physics_2d_server.cpp +++ b/servers/physics_2d_server.cpp @@ -500,6 +500,13 @@ void Physics2DServer::_bind_methods() { ObjectTypeDB::bind_method(_MD("body_set_max_contacts_reported","body","amount"),&Physics2DServer::body_set_max_contacts_reported); ObjectTypeDB::bind_method(_MD("body_get_max_contacts_reported","body"),&Physics2DServer::body_get_max_contacts_reported); + ObjectTypeDB::bind_method(_MD("body_set_one_way_collision_direction","normal"),&Physics2DServer::body_set_one_way_collision_direction); + ObjectTypeDB::bind_method(_MD("body_get_one_way_collision_direction"),&Physics2DServer::body_get_one_way_collision_direction); + + ObjectTypeDB::bind_method(_MD("body_set_one_way_collision_max_depth","normal"),&Physics2DServer::body_set_one_way_collision_max_depth); + ObjectTypeDB::bind_method(_MD("body_get_one_way_collision_max_depth"),&Physics2DServer::body_get_one_way_collision_max_depth); + + ObjectTypeDB::bind_method(_MD("body_set_omit_force_integration","body","enable"),&Physics2DServer::body_set_omit_force_integration); ObjectTypeDB::bind_method(_MD("body_is_omitting_force_integration","body"),&Physics2DServer::body_is_omitting_force_integration); diff --git a/servers/physics_2d_server.h b/servers/physics_2d_server.h index 6e53cde55c..765cebf45f 100644 --- a/servers/physics_2d_server.h +++ b/servers/physics_2d_server.h @@ -442,6 +442,12 @@ public: virtual void body_set_max_contacts_reported(RID p_body, int p_contacts)=0; virtual int body_get_max_contacts_reported(RID p_body) const=0; + virtual void body_set_one_way_collision_direction(RID p_body,const Vector2& p_direction)=0; + virtual Vector2 body_get_one_way_collision_direction(RID p_body) const=0; + + virtual void body_set_one_way_collision_max_depth(RID p_body,float p_max_depth)=0; + virtual float body_get_one_way_collision_max_depth(RID p_body) const=0; + //missing remove virtual void body_set_contacts_reported_depth_treshold(RID p_body, float p_treshold)=0; virtual float body_get_contacts_reported_depth_treshold(RID p_body) const=0; diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 2d6298cc99..92c7b8ac14 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -210,6 +210,8 @@ public: virtual void shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture)=0; virtual RID shader_get_default_texture_param(RID p_shader, const StringName& p_name) const=0; + virtual Variant shader_get_default_param(RID p_shader, const StringName& p_name)=0; + /* COMMON MATERIAL API */ virtual RID material_create()=0; @@ -692,12 +694,16 @@ public: mutable bool rect_dirty; mutable Rect2 rect; CanvasItem*next; + RID shader; + Map<StringName,Variant> shader_param; + uint32_t shader_version; float final_opacity; Matrix32 final_transform; Rect2 final_clip_rect; CanvasItem* final_clip_owner; + CanvasItem* shader_owner; ViewportRender *vp_render; const Rect2& get_rect() const { @@ -824,8 +830,8 @@ public: return rect; } - void clear() { for (int i=0;i<commands.size();i++) memdelete( commands[i] ); commands.clear(); clip=false; rect_dirty=true; final_clip_owner=NULL;} - CanvasItem() { vp_render=NULL; next=NULL; final_clip_owner=NULL; clip=false; final_opacity=1; blend_mode=VS::MATERIAL_BLEND_MODE_MIX; visible=true; rect_dirty=true; custom_rect=false; ontop=true; } + void clear() { for (int i=0;i<commands.size();i++) memdelete( commands[i] ); commands.clear(); clip=false; rect_dirty=true; final_clip_owner=NULL; shader_owner=NULL;} + CanvasItem() { vp_render=NULL; next=NULL; final_clip_owner=NULL; clip=false; final_opacity=1; blend_mode=VS::MATERIAL_BLEND_MODE_MIX; visible=true; rect_dirty=true; custom_rect=false; ontop=true; shader_version=0; shader_owner=NULL;} virtual ~CanvasItem() { clear(); } }; @@ -846,6 +852,7 @@ public: virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width)=0; virtual void canvas_draw_polygon(int p_vertex_count, const int* p_indices, const Vector2* p_vertices, const Vector2* p_uvs, const Color* p_colors,const RID& p_texture,bool p_singlecolor)=0; virtual void canvas_set_transform(const Matrix32& p_transform)=0; + virtual void canvas_render_items(CanvasItem *p_item_list)=0; diff --git a/servers/visual/rasterizer_dummy.cpp b/servers/visual/rasterizer_dummy.cpp index 1275b2308c..6c1b6697c1 100644 --- a/servers/visual/rasterizer_dummy.cpp +++ b/servers/visual/rasterizer_dummy.cpp @@ -231,6 +231,11 @@ RID RasterizerDummy::shader_get_default_texture_param(RID p_shader, const String return RID(); } +Variant RasterizerDummy::shader_get_default_param(RID p_shader, const StringName& p_name) { + + return Variant(); +} + /* COMMON MATERIAL API */ diff --git a/servers/visual/rasterizer_dummy.h b/servers/visual/rasterizer_dummy.h index 2944bbbaf1..c72149f88f 100644 --- a/servers/visual/rasterizer_dummy.h +++ b/servers/visual/rasterizer_dummy.h @@ -433,6 +433,8 @@ public: virtual void shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture); virtual RID shader_get_default_texture_param(RID p_shader, const StringName& p_name) const; + virtual Variant shader_get_default_param(RID p_shader, const StringName& p_name); + /* COMMON MATERIAL API */ virtual RID material_create(); @@ -707,6 +709,7 @@ public: virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width); virtual void canvas_draw_polygon(int p_vertex_count, const int* p_indices, const Vector2* p_vertices, const Vector2* p_uvs, const Color* p_colors,const RID& p_texture,bool p_singlecolor); virtual void canvas_set_transform(const Matrix32& p_transform); + virtual void canvas_render_items(CanvasItem *p_item_list); /* ENVIRONMENT */ diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index f2348bf59f..dfa0172e82 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -900,6 +900,7 @@ const ShaderLanguage::IntrinsicFuncDef ShaderLanguage::intrinsic_func_defs[]={ {"normalize",TYPE_VEC3,{TYPE_VEC3,TYPE_VOID}}, {"normalize",TYPE_VEC4,{TYPE_VEC4,TYPE_VOID}}, {"reflect",TYPE_VEC3,{TYPE_VEC3,TYPE_VEC3,TYPE_VOID}}, + {"refract",TYPE_VEC3,{TYPE_VEC3,TYPE_VEC3,TYPE_FLOAT,TYPE_VOID}}, //intrinsics - texture {"tex",TYPE_VEC4,{TYPE_TEXTURE,TYPE_VEC2,TYPE_VOID}}, {"texcube",TYPE_VEC4,{TYPE_CUBEMAP,TYPE_VEC3,TYPE_VOID}}, @@ -1105,6 +1106,62 @@ const ShaderLanguage::BuiltinsDef ShaderLanguage::light_builtins_defs[]={ }; + + +const ShaderLanguage::BuiltinsDef ShaderLanguage::ci_vertex_builtins_defs[]={ + + { "SRC_VERTEX", TYPE_VEC2}, + { "VERTEX", TYPE_VEC2}, + { "WORLD_VERTEX", TYPE_VEC2}, + { "UV", TYPE_VEC2}, + { "COLOR", TYPE_VEC4}, + { "VAR1", TYPE_VEC4}, + { "VAR2", TYPE_VEC4}, + { "POINT_SIZE", TYPE_FLOAT}, + + //builtins + { "WORLD_MATRIX", TYPE_MAT4}, + { "PROJECTION_MATRIX", TYPE_MAT4}, + { "EXTRA_MATRIX", TYPE_MAT4}, + { "TIME", TYPE_FLOAT}, + { NULL, TYPE_VOID}, +}; +const ShaderLanguage::BuiltinsDef ShaderLanguage::ci_fragment_builtins_defs[]={ + + { "SRC_COLOR", TYPE_VEC4}, + { "POSITION", TYPE_VEC4}, + { "NORMAL", TYPE_VEC3}, + { "UV", TYPE_VEC2}, + { "COLOR", TYPE_VEC4}, + { "TEXTURE", TYPE_TEXTURE}, + { "TEXTURE_PIXEL_SIZE", TYPE_VEC2}, + { "VAR1", TYPE_VEC4}, + { "VAR2", TYPE_VEC4}, + { "SCREEN_UV", TYPE_VEC2}, + { "POINT_COORD", TYPE_VEC2}, + +// { "SCREEN_POS", TYPE_VEC2}, +// { "SCREEN_TEXEL_SIZE", TYPE_VEC2}, + { "TIME", TYPE_FLOAT}, + { NULL, TYPE_VOID} + +}; + +const ShaderLanguage::BuiltinsDef ShaderLanguage::ci_light_builtins_defs[]={ + + { "COLOR", TYPE_VEC4}, + { "NORMAL", TYPE_VEC3}, + { "LIGHT_DIR", TYPE_VEC2}, + { "LIGHT_DISTANCE", TYPE_FLOAT}, + { "LIGHT", TYPE_VEC3}, + { "POINT_COORD", TYPE_VEC2}, +// { "SCREEN_POS", TYPE_VEC2}, +// { "SCREEN_TEXEL_SIZE", TYPE_VEC2}, + { "TIME", TYPE_FLOAT}, + { NULL, TYPE_VOID} + +}; + const ShaderLanguage::BuiltinsDef ShaderLanguage::postprocess_fragment_builtins_defs[]={ { "IN_COLOR", TYPE_VEC3}, @@ -2471,6 +2528,27 @@ Error ShaderLanguage::parse(const Vector<Token>& p_tokens,ShaderType p_type,Comp idx++; } } break; + case SHADER_CANVAS_ITEM_VERTEX: { + int idx=0; + while (ci_vertex_builtins_defs[idx].name) { + parser.program->builtin_variables[ci_vertex_builtins_defs[idx].name]=ci_vertex_builtins_defs[idx].type; + idx++; + } + } break; + case SHADER_CANVAS_ITEM_FRAGMENT: { + int idx=0; + while (ci_fragment_builtins_defs[idx].name) { + parser.program->builtin_variables[ci_fragment_builtins_defs[idx].name]=ci_fragment_builtins_defs[idx].type; + idx++; + } + } break; + case SHADER_CANVAS_ITEM_LIGHT: { + int idx=0; + while (ci_light_builtins_defs[idx].name) { + parser.program->builtin_variables[ci_light_builtins_defs[idx].name]=ci_light_builtins_defs[idx].type; + idx++; + } + } break; case SHADER_POST_PROCESS: { int idx=0; while (postprocess_fragment_builtins_defs[idx].name) { @@ -2568,6 +2646,28 @@ void ShaderLanguage::get_keyword_list(ShaderType p_type, List<String> *p_keyword idx++; } } break; + case SHADER_CANVAS_ITEM_VERTEX: { + idx=0; + while (ci_vertex_builtins_defs[idx].name) { + p_keywords->push_back(ci_vertex_builtins_defs[idx].name); + idx++; + } + } break; + case SHADER_CANVAS_ITEM_FRAGMENT: { + idx=0; + while (ci_fragment_builtins_defs[idx].name) { + p_keywords->push_back(ci_fragment_builtins_defs[idx].name); + idx++; + } + } break; + case SHADER_CANVAS_ITEM_LIGHT: { + idx=0; + while (ci_light_builtins_defs[idx].name) { + p_keywords->push_back(ci_light_builtins_defs[idx].name); + idx++; + } + } break; + case SHADER_POST_PROCESS: { idx=0; while (postprocess_fragment_builtins_defs[idx].name) { diff --git a/servers/visual/shader_language.h b/servers/visual/shader_language.h index 7e01368dd5..f79c219d85 100644 --- a/servers/visual/shader_language.h +++ b/servers/visual/shader_language.h @@ -105,6 +105,9 @@ public: SHADER_MATERIAL_VERTEX, SHADER_MATERIAL_FRAGMENT, SHADER_MATERIAL_LIGHT, + SHADER_CANVAS_ITEM_VERTEX, + SHADER_CANVAS_ITEM_FRAGMENT, + SHADER_CANVAS_ITEM_LIGHT, SHADER_POST_PROCESS, }; @@ -376,6 +379,12 @@ private: static const BuiltinsDef vertex_builtins_defs[]; static const BuiltinsDef fragment_builtins_defs[]; static const BuiltinsDef light_builtins_defs[]; + + static const BuiltinsDef ci_vertex_builtins_defs[]; + static const BuiltinsDef ci_fragment_builtins_defs[]; + static const BuiltinsDef ci_light_builtins_defs[]; + + static const BuiltinsDef postprocess_fragment_builtins_defs[]; static DataType get_token_datatype(TokenType p_type); diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index 78094ee2aa..fc32702a12 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -3691,7 +3691,7 @@ void VisualServerRaster::canvas_item_add_set_blend_mode(RID p_item, MaterialBlen void VisualServerRaster::canvas_item_set_z(RID p_item, int p_z) { - ERR_FAIL_COND(p_z<0 || p_z>=CANVAS_ITEM_Z_MAX); + ERR_FAIL_COND(p_z<CANVAS_ITEM_Z_MIN || p_z>CANVAS_ITEM_Z_MAX); VS_CHANGED; CanvasItem *canvas_item = canvas_item_owner.get( p_item ); ERR_FAIL_COND(!canvas_item); @@ -3699,6 +3699,63 @@ void VisualServerRaster::canvas_item_set_z(RID p_item, int p_z) { } +void VisualServerRaster::canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) { + + VS_CHANGED; + CanvasItem *canvas_item = canvas_item_owner.get( p_item ); + ERR_FAIL_COND(!canvas_item); + canvas_item->z_relative=p_enable; + +} + +void VisualServerRaster::canvas_item_set_use_parent_shader(RID p_item, bool p_enable) { + + VS_CHANGED; + CanvasItem *canvas_item = canvas_item_owner.get( p_item ); + ERR_FAIL_COND(!canvas_item); + canvas_item->use_parent_shader=p_enable; + +} + +void VisualServerRaster::canvas_item_set_shader(RID p_item, RID p_shader) { + + VS_CHANGED; + CanvasItem *canvas_item = canvas_item_owner.get( p_item ); + ERR_FAIL_COND(!canvas_item); + canvas_item->shader=p_shader; +} + +RID VisualServerRaster::canvas_item_get_shader(RID p_item) const{ + + CanvasItem *canvas_item = canvas_item_owner.get( p_item ); + ERR_FAIL_COND_V(!canvas_item,RID()); + return canvas_item->shader; + +} + +void VisualServerRaster::canvas_item_set_shader_param(RID p_canvas_item, const StringName& p_param, const Variant& p_value){ + + VS_CHANGED; + CanvasItem *canvas_item = canvas_item_owner.get( p_canvas_item ); + ERR_FAIL_COND(!canvas_item); + if (p_value.get_type()==Variant::NIL) + canvas_item->shader_param.erase(p_param); + else + canvas_item->shader_param[p_param]=p_value; + +} +Variant VisualServerRaster::canvas_item_get_shader_param(RID p_canvas_item, const StringName& p_param) const{ + + CanvasItem *canvas_item = canvas_item_owner.get( p_canvas_item ); + ERR_FAIL_COND_V(!canvas_item,Variant()); + if (!canvas_item->shader_param.has(p_param)) { + ERR_FAIL_COND_V(!canvas_item->shader.is_valid(),Variant()); + return rasterizer->shader_get_default_param(canvas_item->shader,p_param); + } + + return canvas_item->shader_param[p_param]; +} + void VisualServerRaster::canvas_item_set_sort_children_by_y(RID p_item, bool p_enable) { @@ -3762,6 +3819,91 @@ void VisualServerRaster::canvas_item_raise(RID p_item) { } +/***** CANVAS LIGHT *******/ + +RID VisualServerRaster::canvas_light_create() { + + return RID(); +} + +void VisualServerRaster::canvas_light_attach_to_canvas(RID p_light,RID p_canvas){ + + +} +void VisualServerRaster::canvas_light_set_enabled(RID p_light, bool p_enabled){ + + +} +void VisualServerRaster::canvas_light_set_transform(RID p_light, const Matrix32& p_transform){ + + +} +void VisualServerRaster::canvas_light_set_texture(RID p_light, RID p_texture){ + + +} +void VisualServerRaster::canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset){ + + +} +void VisualServerRaster::canvas_light_set_color(RID p_light, const Color& p_color){ + + +} +void VisualServerRaster::canvas_light_set_height(RID p_light, float p_height){ + + +} +void VisualServerRaster::canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z){ + + +} +void VisualServerRaster::canvas_light_set_item_mask(RID p_light, int p_mask){ + + +} + +void VisualServerRaster::canvas_light_set_blend_mode(RID p_light, CanvasLightBlendMode p_blend_mode){ + + +} +void VisualServerRaster::canvas_light_set_shadow_enabled(RID p_light, bool p_enabled){ + + +} +void VisualServerRaster::canvas_light_set_shadow_buffer_size(RID p_light, int p_size){ + + +} +void VisualServerRaster::canvas_light_set_shadow_filter(RID p_light, int p_size){ + + +} + +/****** CANVAS LIGHT OCCLUDER ******/ + +RID VisualServerRaster::canvas_light_occluder_create() { + + return RID(); +} + +void VisualServerRaster::canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas) { + + +} + +void VisualServerRaster::canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled){ + + +} + +void VisualServerRaster::canvas_light_occluder_set_shape(RID p_occluder,const DVector<Vector2>& p_shape){ + + +} + + + /******** CANVAS *********/ @@ -6091,18 +6233,20 @@ void VisualServerRaster::_render_camera(Viewport *p_viewport,Camera *p_camera, S void VisualServerRaster::_render_canvas_item_tree(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect) { - Rasterizer::CanvasItem *z_list[CANVAS_ITEM_Z_MAX]; - Rasterizer::CanvasItem *z_last_list[CANVAS_ITEM_Z_MAX]; - for(int i=0;i<CANVAS_ITEM_Z_MAX;i++) { + static const int z_range = CANVAS_ITEM_Z_MAX-CANVAS_ITEM_Z_MIN+1; + Rasterizer::CanvasItem *z_list[z_range]; + Rasterizer::CanvasItem *z_last_list[z_range]; + + for(int i=0;i<z_range;i++) { z_list[i]=NULL; z_last_list[i]=NULL; } - _render_canvas_item(p_canvas_item,p_transform,p_clip_rect,1.0,z_list,z_last_list,NULL); + _render_canvas_item(p_canvas_item,p_transform,p_clip_rect,1.0,0,z_list,z_last_list,NULL,NULL); - for(int i=0;i<CANVAS_ITEM_Z_MAX;i++) { + for(int i=0;i<z_range;i++) { if (!z_list[i]) continue; rasterizer->canvas_render_items(z_list[i]); @@ -6117,9 +6261,10 @@ void VisualServerRaster::_render_canvas_item_viewport(VisualServer* p_self,void Viewport *vp=(Viewport*)p_vp; self->_draw_viewport(vp,p_rect.pos.x,p_rect.pos.y,p_rect.size.x,p_rect.size.y); self->rasterizer->canvas_begin(); + } -void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect, float p_opacity,Rasterizer::CanvasItem **z_list,Rasterizer::CanvasItem **z_last_list,CanvasItem *p_canvas_clip) { +void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect, float p_opacity,int p_z,Rasterizer::CanvasItem **z_list,Rasterizer::CanvasItem **z_last_list,CanvasItem *p_canvas_clip,CanvasItem *p_shader_owner) { CanvasItem *ci = p_canvas_item; @@ -6164,6 +6309,12 @@ void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Mat ci->vp_render=NULL; } + if (ci->use_parent_shader && p_shader_owner) + ci->shader_owner=p_shader_owner; + else { + p_shader_owner=ci; + ci->shader_owner=NULL; + } float opacity = ci->opacity * p_opacity; @@ -6187,12 +6338,16 @@ void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Mat sorter.sort(child_items,child_item_count); } + if (ci->z_relative) + p_z=CLAMP(p_z+ci->z,CANVAS_ITEM_Z_MIN,CANVAS_ITEM_Z_MAX); + else + p_z=ci->z; for(int i=0;i<child_item_count;i++) { if (child_items[i]->ontop) continue; - _render_canvas_item(child_items[i],xform,p_clip_rect,opacity,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner); + _render_canvas_item(child_items[i],xform,p_clip_rect,opacity,p_z,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner,p_shader_owner); } @@ -6201,13 +6356,16 @@ void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Mat ci->final_transform=xform; ci->final_opacity=opacity * ci->self_opacity; - if (z_last_list[ci->z]) { - z_last_list[ci->z]->next=ci; - z_last_list[ci->z]=ci; + + int zidx = p_z-CANVAS_ITEM_Z_MIN; + + if (z_last_list[zidx]) { + z_last_list[zidx]->next=ci; + z_last_list[zidx]=ci; } else { - z_list[ci->z]=ci; - z_last_list[ci->z]=ci; + z_list[zidx]=ci; + z_last_list[zidx]=ci; } ci->next=NULL; @@ -6218,7 +6376,7 @@ void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Mat if (!child_items[i]->ontop) continue; - _render_canvas_item(child_items[i],xform,p_clip_rect,opacity,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner); + _render_canvas_item(child_items[i],xform,p_clip_rect,opacity,p_z,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner,p_shader_owner); } } @@ -6228,29 +6386,61 @@ void VisualServerRaster::_render_canvas(Canvas *p_canvas,const Matrix32 &p_trans rasterizer->canvas_begin(); int l = p_canvas->child_items.size(); + Canvas::ChildItem *ci=p_canvas->child_items.ptr(); + bool has_mirror=false; for(int i=0;i<l;i++) { + if (ci[i].mirror.x || ci[i].mirror.y) { + has_mirror=true; + break; + } + } - Canvas::ChildItem& ci=p_canvas->child_items[i]; - _render_canvas_item_tree(ci.item,p_transform,Rect2(viewport_rect.x,viewport_rect.y,viewport_rect.width,viewport_rect.height)); + Rect2 clip_rect(viewport_rect.x,viewport_rect.y,viewport_rect.width,viewport_rect.height); + if (!has_mirror) { - //mirroring (useful for scrolling backgrounds) - if (ci.mirror.x!=0) { + static const int z_range = CANVAS_ITEM_Z_MAX-CANVAS_ITEM_Z_MIN+1; + Rasterizer::CanvasItem *z_list[z_range]; + Rasterizer::CanvasItem *z_last_list[z_range]; - Matrix32 xform2 = p_transform * Matrix32(0,Vector2(ci.mirror.x,0)); - _render_canvas_item_tree(ci.item,xform2,Rect2(viewport_rect.x,viewport_rect.y,viewport_rect.width,viewport_rect.height)); + for(int i=0;i<z_range;i++) { + z_list[i]=NULL; + z_last_list[i]=NULL; } - if (ci.mirror.y!=0) { - - Matrix32 xform2 = p_transform * Matrix32(0,Vector2(0,ci.mirror.y)); - _render_canvas_item_tree(ci.item,xform2,Rect2(viewport_rect.x,viewport_rect.y,viewport_rect.width,viewport_rect.height)); + for(int i=0;i<l;i++) { + _render_canvas_item(ci[i].item,p_transform,clip_rect,1.0,0,z_list,z_last_list,NULL,NULL); } - if (ci.mirror.y!=0 && ci.mirror.x!=0) { - Matrix32 xform2 = p_transform * Matrix32(0,ci.mirror); - _render_canvas_item_tree(ci.item,xform2,Rect2(viewport_rect.x,viewport_rect.y,viewport_rect.width,viewport_rect.height)); + for(int i=0;i<z_range;i++) { + if (!z_list[i]) + continue; + rasterizer->canvas_render_items(z_list[i]); } + } else { + + for(int i=0;i<l;i++) { + + Canvas::ChildItem& ci=p_canvas->child_items[i]; + _render_canvas_item_tree(ci.item,p_transform,clip_rect); + + //mirroring (useful for scrolling backgrounds) + if (ci.mirror.x!=0) { + Matrix32 xform2 = p_transform * Matrix32(0,Vector2(ci.mirror.x,0)); + _render_canvas_item_tree(ci.item,xform2,clip_rect); + } + if (ci.mirror.y!=0) { + + Matrix32 xform2 = p_transform * Matrix32(0,Vector2(0,ci.mirror.y)); + _render_canvas_item_tree(ci.item,xform2,clip_rect); + } + if (ci.mirror.y!=0 && ci.mirror.x!=0) { + + Matrix32 xform2 = p_transform * Matrix32(0,ci.mirror); + _render_canvas_item_tree(ci.item,xform2,clip_rect); + } + + } } } @@ -6413,7 +6603,7 @@ void VisualServerRaster::_draw_viewports() { rasterizer->set_viewport(viewport_rect); } - rasterizer->canvas_begin(); + rasterizer->canvas_begin(); rasterizer->canvas_disable_blending(); rasterizer->canvas_begin_rect(Matrix32()); rasterizer->canvas_draw_rect(E->get()->rt_to_screen_rect,0,Rect2(Point2(),E->get()->rt_to_screen_rect.size),E->get()->render_target_texture,Color(1,1,1)); diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 81a492611b..57032ab441 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -85,6 +85,7 @@ class VisualServerRaster : public VisualServer { Vector<Point2> shape; Rect2 bounds; + Portal() { enabled=true; disable_distance=50; disable_color=Color(); connect_range=0.8; } }; @@ -379,9 +380,11 @@ class VisualServerRaster : public VisualServer { List<CanvasItem*>::Element *E; RID viewport; int z; + bool z_relative; bool sort_y; float opacity; float self_opacity; + bool use_parent_shader; Vector<CanvasItem*> child_items; @@ -389,10 +392,12 @@ class VisualServerRaster : public VisualServer { CanvasItem() { E=NULL; - z=CANVAS_ITEM_Z_MAX/2; + z=0; opacity=1; self_opacity=1; sort_y=false; + use_parent_shader=false; + z_relative=true; } }; @@ -597,7 +602,7 @@ class VisualServerRaster : public VisualServer { void _render_camera(Viewport *p_viewport,Camera *p_camera, Scenario *p_scenario); static void _render_canvas_item_viewport(VisualServer* p_self,void *p_vp,const Rect2& p_rect); void _render_canvas_item_tree(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect); - void _render_canvas_item(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect,float p_opacity,Rasterizer::CanvasItem **z_list,Rasterizer::CanvasItem **z_last_list,CanvasItem *p_canvas_clip); + void _render_canvas_item(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect, float p_opacity,int p_z,Rasterizer::CanvasItem **z_list,Rasterizer::CanvasItem **z_last_list,CanvasItem *p_canvas_clip,CanvasItem *p_shader_owner); void _render_canvas(Canvas *p_canvas,const Matrix32 &p_transform); Vector<Vector3> _camera_generate_endpoints(Instance *p_light,Camera *p_camera,float p_range_min, float p_range_max); Vector<Plane> _camera_generate_orthogonal_planes(Instance *p_light,Camera *p_camera,float p_range_min, float p_range_max); @@ -1109,7 +1114,50 @@ public: virtual void canvas_item_add_clip_ignore(RID p_item, bool p_ignore); virtual void canvas_item_set_sort_children_by_y(RID p_item, bool p_enable); virtual void canvas_item_set_z(RID p_item, int p_z); + virtual void canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable); + + virtual void canvas_item_set_shader(RID p_item, RID p_shader); + virtual RID canvas_item_get_shader(RID p_item) const; + + virtual void canvas_item_set_use_parent_shader(RID p_item, bool p_enable); + + + + virtual void canvas_item_set_shader_param(RID p_canvas_item, const StringName& p_param, const Variant& p_value); + virtual Variant canvas_item_get_shader_param(RID p_canvas_item, const StringName& p_param) const; + + virtual RID canvas_light_create(); + virtual void canvas_light_attach_to_canvas(RID p_light,RID p_canvas); + virtual void canvas_light_set_enabled(RID p_light, bool p_enabled); + virtual void canvas_light_set_transform(RID p_light, const Matrix32& p_transform); + virtual void canvas_light_set_texture(RID p_light, RID p_texture); + virtual void canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset); + virtual void canvas_light_set_color(RID p_light, const Color& p_color); + virtual void canvas_light_set_height(RID p_light, float p_height); + virtual void canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z); + virtual void canvas_light_set_item_mask(RID p_light, int p_mask); + + enum CanvasightBlendMode { + CANVAS_LIGHT_BLEND_ADD, + CANVAS_LIGHT_BLEND_SUB, + CANVAS_LIGHT_BLEND_MULTIPLY, + CANVAS_LIGHT_BLEND_DODGE, + CANVAS_LIGHT_BLEND_BURN, + CANVAS_LIGHT_BLEND_LIGHTEN, + CANVAS_LIGHT_BLEND_DARKEN, + CANVAS_LIGHT_BLEND_OVERLAY, + CANVAS_LIGHT_BLEND_SCREEN, + }; + virtual void canvas_light_set_blend_mode(RID p_light, CanvasLightBlendMode p_blend_mode); + virtual void canvas_light_set_shadow_enabled(RID p_light, bool p_enabled); + virtual void canvas_light_set_shadow_buffer_size(RID p_light, int p_size); + virtual void canvas_light_set_shadow_filter(RID p_light, int p_size); + + virtual RID canvas_light_occluder_create(); + virtual void canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas); + virtual void canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled); + virtual void canvas_light_occluder_set_shape(RID p_occluder,const DVector<Vector2>& p_shape); virtual void canvas_item_clear(RID p_item); virtual void canvas_item_raise(RID p_item); diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 0aa992564f..9574dff018 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -1132,11 +1132,43 @@ public: FUNC2(canvas_item_set_sort_children_by_y,RID,bool); FUNC2(canvas_item_set_z,RID,int); + FUNC2(canvas_item_set_z_as_relative_to_parent,RID,bool); + FUNC2(canvas_item_set_shader,RID, RID ); + FUNC1RC(RID,canvas_item_get_shader,RID ); + + FUNC2(canvas_item_set_use_parent_shader,RID, bool ); + + + FUNC3(canvas_item_set_shader_param,RID,const StringName&,const Variant&); + FUNC2RC(Variant,canvas_item_get_shader_param,RID,const StringName&); FUNC1(canvas_item_clear,RID); FUNC1(canvas_item_raise,RID); + /* CANVAS LIGHT */ + FUNC0R(RID,canvas_light_create); + FUNC2(canvas_light_attach_to_canvas,RID,RID); + FUNC2(canvas_light_set_enabled,RID,bool); + FUNC2(canvas_light_set_transform,RID,const Matrix32&); + FUNC2(canvas_light_set_texture,RID,RID); + FUNC2(canvas_light_set_texture_offset,RID,const Vector2&); + FUNC2(canvas_light_set_color,RID,const Color&); + FUNC2(canvas_light_set_height,RID,float); + FUNC3(canvas_light_set_z_range,RID,int,int); + FUNC2(canvas_light_set_item_mask,RID,int); + + FUNC2(canvas_light_set_blend_mode,RID,CanvasLightBlendMode); + FUNC2(canvas_light_set_shadow_enabled,RID,bool); + FUNC2(canvas_light_set_shadow_buffer_size,RID,int); + FUNC2(canvas_light_set_shadow_filter,RID,int); + + /* CANVAS OCCLUDER */ + + FUNC0R(RID,canvas_light_occluder_create); + FUNC2(canvas_light_occluder_attach_to_canvas,RID,RID); + FUNC2(canvas_light_occluder_set_enabled,RID,bool); + FUNC2(canvas_light_occluder_set_shape,RID,const DVector<Vector2>&); /* CURSOR */ FUNC2(cursor_set_rotation,float , int ); // radians diff --git a/servers/visual_server.h b/servers/visual_server.h index 030bcd8208..49ae8ce4e6 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -86,8 +86,9 @@ public: ARRAY_WEIGHTS_SIZE=4, MAX_PARTICLE_COLOR_PHASES=4, MAX_PARTICLE_ATTRACTORS=4, - CANVAS_ITEM_Z_MAX=1024, - CANVAS_ITEM_Z_DEFAULT=512, + CANVAS_ITEM_Z_MIN=-4096, + CANVAS_ITEM_Z_MAX=4096, + MAX_CURSORS = 8, @@ -985,10 +986,52 @@ public: virtual void canvas_item_add_clip_ignore(RID p_item, bool p_ignore)=0; virtual void canvas_item_set_sort_children_by_y(RID p_item, bool p_enable)=0; virtual void canvas_item_set_z(RID p_item, int p_z)=0; + virtual void canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable)=0; virtual void canvas_item_clear(RID p_item)=0; virtual void canvas_item_raise(RID p_item)=0; + virtual void canvas_item_set_shader(RID p_item, RID p_shader)=0; + virtual RID canvas_item_get_shader(RID p_item) const=0; + + virtual void canvas_item_set_use_parent_shader(RID p_item, bool p_enable)=0; + + virtual void canvas_item_set_shader_param(RID p_canvas_item, const StringName& p_param, const Variant& p_value)=0; + virtual Variant canvas_item_get_shader_param(RID p_canvas_item, const StringName& p_param) const=0; + + virtual RID canvas_light_create()=0; + virtual void canvas_light_attach_to_canvas(RID p_light,RID p_canvas)=0; + virtual void canvas_light_set_enabled(RID p_light, bool p_enabled)=0; + virtual void canvas_light_set_transform(RID p_light, const Matrix32& p_transform)=0; + virtual void canvas_light_set_texture(RID p_light, RID p_texture)=0; + virtual void canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset)=0; + virtual void canvas_light_set_color(RID p_light, const Color& p_color)=0; + virtual void canvas_light_set_height(RID p_light, float p_height)=0; + virtual void canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z)=0; + virtual void canvas_light_set_item_mask(RID p_light, int p_mask)=0; + + enum CanvasLightBlendMode { + CANVAS_LIGHT_BLEND_ADD, + CANVAS_LIGHT_BLEND_SUB, + CANVAS_LIGHT_BLEND_MULTIPLY, + CANVAS_LIGHT_BLEND_DODGE, + CANVAS_LIGHT_BLEND_BURN, + CANVAS_LIGHT_BLEND_LIGHTEN, + CANVAS_LIGHT_BLEND_DARKEN, + CANVAS_LIGHT_BLEND_OVERLAY, + CANVAS_LIGHT_BLEND_SCREEN, + }; + virtual void canvas_light_set_blend_mode(RID p_light, CanvasLightBlendMode p_blend_mode)=0; + virtual void canvas_light_set_shadow_enabled(RID p_light, bool p_enabled)=0; + virtual void canvas_light_set_shadow_buffer_size(RID p_light, int p_size)=0; + virtual void canvas_light_set_shadow_filter(RID p_light, int p_size)=0; + + + virtual RID canvas_light_occluder_create()=0; + virtual void canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas)=0; + virtual void canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled)=0; + virtual void canvas_light_occluder_set_shape(RID p_occluder,const DVector<Vector2>& p_shape)=0; + /* CURSOR */ virtual void cursor_set_rotation(float p_rotation, int p_cursor = 0)=0; // radians virtual void cursor_set_texture(RID p_texture, const Point2 &p_center_offset = Point2(0, 0), int p_cursor=0)=0; diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 52c75c6d7e..c063a69112 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -1967,6 +1967,25 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { log->add_message("REDO: "+action); } break; + + case EDIT_REVERT: { + + Node *scene = get_edited_scene(); + + if (!scene) + break; + + if (unsaved_cache && !p_confirmed) { + confirmation->get_ok()->set_text("Revert"); + confirmation->set_text("This action cannot be undone. Revert anyway?"); + confirmation->popup_centered(Size2(300,70)); + break; + } + + Error err = load_scene(scene->get_filename()); + + } break; + #if 0 case NODE_EXTERNAL_INSTANCE: { @@ -3469,6 +3488,8 @@ EditorNode::EditorNode() { p->add_separator(); p->add_item("Project Settings",RUN_SETTINGS); p->add_separator(); + p->add_item("Revert Scene",EDIT_REVERT); + p->add_separator(); p->add_item("Quit to Project List",RUN_PROJECT_MANAGER,KEY_MASK_SHIFT+KEY_MASK_CMD+KEY_Q); p->add_item("Quit",FILE_QUIT,KEY_MASK_CMD+KEY_Q); @@ -3552,7 +3573,7 @@ EditorNode::EditorNode() { play_button->set_icon(gui_base->get_icon("MainPlay","EditorIcons")); play_button->set_focus_mode(Control::FOCUS_NONE); play_button->connect("pressed", this,"_menu_option",make_binds(RUN_PLAY)); - play_button->set_tooltip("Start the scene (F5)."); + play_button->set_tooltip("Play the project (F5)."); @@ -4035,8 +4056,10 @@ EditorNode::EditorNode() { add_editor_plugin( memnew( ScriptEditorPlugin(this) ) ); add_editor_plugin( memnew( EditorHelpPlugin(this) ) ); add_editor_plugin( memnew( AnimationPlayerEditorPlugin(this) ) ); - add_editor_plugin( memnew( ShaderGraphEditorPlugin(this) ) ); - add_editor_plugin( memnew( ShaderEditorPlugin(this) ) ); + add_editor_plugin( memnew( ShaderGraphEditorPlugin(this,true) ) ); + add_editor_plugin( memnew( ShaderGraphEditorPlugin(this,false) ) ); + add_editor_plugin( memnew( ShaderEditorPlugin(this,true) ) ); + add_editor_plugin( memnew( ShaderEditorPlugin(this,false) ) ); add_editor_plugin( memnew( CameraEditorPlugin(this) ) ); add_editor_plugin( memnew( SampleEditorPlugin(this) ) ); add_editor_plugin( memnew( SampleLibraryEditorPlugin(this) ) ); @@ -4087,9 +4110,9 @@ EditorNode::EditorNode() { Globals::get_singleton()->set("debug/indicators_enabled",true); Globals::get_singleton()->set("render/room_cull_enabled",false); - theme->set_color("prop_category","Editor",Color::hex(0x3f3945ff)); - theme->set_color("prop_section","Editor",Color::hex(0x38323dff)); - theme->set_color("prop_subsection","Editor",Color::hex(0x342e39ff)); + theme->set_color("prop_category","Editor",Color::hex(0x403d41ff)); + theme->set_color("prop_section","Editor",Color::hex(0x383539ff)); + theme->set_color("prop_subsection","Editor",Color::hex(0x343135ff)); theme->set_color("fg_selected","Editor",Color::html("ffbd8e8e")); theme->set_color("fg_error","Editor",Color::html("ffbd8e8e")); diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index 7560c2b149..54b9dc2b0b 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -127,6 +127,7 @@ class EditorNode : public Node { FILE_EXTERNAL_OPEN_SCENE, EDIT_UNDO, EDIT_REDO, + EDIT_REVERT, RESOURCE_NEW, RESOURCE_LOAD, RESOURCE_SAVE, diff --git a/tools/editor/editor_plugin.cpp b/tools/editor/editor_plugin.cpp index 2a2ad63d32..1bad1dc6ac 100644 --- a/tools/editor/editor_plugin.cpp +++ b/tools/editor/editor_plugin.cpp @@ -73,6 +73,12 @@ void EditorPlugin::add_custom_control(CustomControlContainer p_location,Control } break; case CONTAINER_CANVAS_EDITOR_SIDE: { + CanvasItemEditor::get_singleton()->get_palette_split()->add_child(p_control); + + } break; + case CONTAINER_CANVAS_EDITOR_BOTTOM: { + + CanvasItemEditor::get_singleton()->get_bottom_split()->add_child(p_control); } break; diff --git a/tools/editor/editor_plugin.h b/tools/editor/editor_plugin.h index bcde0f73fb..4f2341d3b1 100644 --- a/tools/editor/editor_plugin.h +++ b/tools/editor/editor_plugin.h @@ -66,7 +66,8 @@ public: CONTAINER_SPATIAL_EDITOR_SIDE, CONTAINER_SPATIAL_EDITOR_BOTTOM, CONTAINER_CANVAS_EDITOR_MENU, - CONTAINER_CANVAS_EDITOR_SIDE + CONTAINER_CANVAS_EDITOR_SIDE, + CONTAINER_CANVAS_EDITOR_BOTTOM }; //TODO: send a resoucre for editing to the editor node? diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index bc800d7e9e..24699ac87f 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -404,6 +404,7 @@ void EditorSettings::_load_defaults() { set("text_editor/symbol_color",Color::html("badfff")); set("text_editor/selection_color",Color::html("7b5dbe")); set("text_editor/brace_mismatch_color",Color(1,0.2,0.2)); + set("text_editor/current_line_color",Color(0.3,0.5,0.8,0.15)); set("text_editor/idle_parse_delay",2); set("text_editor/create_signal_callbacks",true); @@ -413,6 +414,10 @@ void EditorSettings::_load_defaults() { set("text_editor/auto_brace_complete", false); + set("scenetree_editor/duplicate_node_name_num_separator",0); + hints["scenetree_editor/duplicate_node_name_num_separator"]=PropertyInfo(Variant::INT,"scenetree_editor/duplicate_node_name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash"); + + set("3d_editor/default_fov",45.0); set("3d_editor/default_z_near",0.1); set("3d_editor/default_z_far",500.0); diff --git a/tools/editor/icons/icon_add.png b/tools/editor/icons/icon_add.png Binary files differindex 1a97f356d6..26283ca67c 100644 --- a/tools/editor/icons/icon_add.png +++ b/tools/editor/icons/icon_add.png diff --git a/tools/editor/icons/icon_animation.png b/tools/editor/icons/icon_animation.png Binary files differindex 6af126bf37..ac663c0554 100644 --- a/tools/editor/icons/icon_animation.png +++ b/tools/editor/icons/icon_animation.png diff --git a/tools/editor/icons/icon_atlas_texture.png b/tools/editor/icons/icon_atlas_texture.png Binary files differindex 3da9f0bee4..0051b0cda4 100644 --- a/tools/editor/icons/icon_atlas_texture.png +++ b/tools/editor/icons/icon_atlas_texture.png diff --git a/tools/editor/icons/icon_audio_stream_gibberish.png b/tools/editor/icons/icon_audio_stream_gibberish.png Binary files differindex f10671e8a2..95470c298e 100644 --- a/tools/editor/icons/icon_audio_stream_gibberish.png +++ b/tools/editor/icons/icon_audio_stream_gibberish.png diff --git a/tools/editor/icons/icon_auto_play.png b/tools/editor/icons/icon_auto_play.png Binary files differindex e454ca8c7b..1d5c957cc7 100644 --- a/tools/editor/icons/icon_auto_play.png +++ b/tools/editor/icons/icon_auto_play.png diff --git a/tools/editor/icons/icon_bake.png b/tools/editor/icons/icon_bake.png Binary files differindex b1b0f941da..ae06ce48e6 100644 --- a/tools/editor/icons/icon_bake.png +++ b/tools/editor/icons/icon_bake.png diff --git a/tools/editor/icons/icon_blend.png b/tools/editor/icons/icon_blend.png Binary files differindex 985b63d5d1..2a75f0b2f4 100644 --- a/tools/editor/icons/icon_blend.png +++ b/tools/editor/icons/icon_blend.png diff --git a/tools/editor/icons/icon_bone.png b/tools/editor/icons/icon_bone.png Binary files differindex 174b0bc167..81b6d8856e 100644 --- a/tools/editor/icons/icon_bone.png +++ b/tools/editor/icons/icon_bone.png diff --git a/tools/editor/icons/icon_bool.png b/tools/editor/icons/icon_bool.png Binary files differindex d465b7da07..3381033b00 100644 --- a/tools/editor/icons/icon_bool.png +++ b/tools/editor/icons/icon_bool.png diff --git a/tools/editor/icons/icon_canvas_item.png b/tools/editor/icons/icon_canvas_item.png Binary files differindex 99403bed21..add54ba1af 100644 --- a/tools/editor/icons/icon_canvas_item.png +++ b/tools/editor/icons/icon_canvas_item.png diff --git a/tools/editor/icons/icon_close.png b/tools/editor/icons/icon_close.png Binary files differindex 11fa746271..10e56d5bb8 100644 --- a/tools/editor/icons/icon_close.png +++ b/tools/editor/icons/icon_close.png diff --git a/tools/editor/icons/icon_close_hover.png b/tools/editor/icons/icon_close_hover.png Binary files differindex efcc9e7471..cb519691e5 100644 --- a/tools/editor/icons/icon_close_hover.png +++ b/tools/editor/icons/icon_close_hover.png diff --git a/tools/editor/icons/icon_collapse.png b/tools/editor/icons/icon_collapse.png Binary files differindex bd5c9765a5..23db9e42a7 100644 --- a/tools/editor/icons/icon_collapse.png +++ b/tools/editor/icons/icon_collapse.png diff --git a/tools/editor/icons/icon_collapse_hl.png b/tools/editor/icons/icon_collapse_hl.png Binary files differindex 7ed9a5c125..0dfbc8b175 100644 --- a/tools/editor/icons/icon_collapse_hl.png +++ b/tools/editor/icons/icon_collapse_hl.png diff --git a/tools/editor/icons/icon_connect.png b/tools/editor/icons/icon_connect.png Binary files differindex 24258414c4..745e445a61 100644 --- a/tools/editor/icons/icon_connect.png +++ b/tools/editor/icons/icon_connect.png diff --git a/tools/editor/icons/icon_del.png b/tools/editor/icons/icon_del.png Binary files differindex 5349af466e..10e56d5bb8 100644 --- a/tools/editor/icons/icon_del.png +++ b/tools/editor/icons/icon_del.png diff --git a/tools/editor/icons/icon_duplicate.png b/tools/editor/icons/icon_duplicate.png Binary files differindex bae4aa2c30..f854a14fd3 100644 --- a/tools/editor/icons/icon_duplicate.png +++ b/tools/editor/icons/icon_duplicate.png diff --git a/tools/editor/icons/icon_edit.png b/tools/editor/icons/icon_edit.png Binary files differindex 012a7f5f1d..157f785b83 100644 --- a/tools/editor/icons/icon_edit.png +++ b/tools/editor/icons/icon_edit.png diff --git a/tools/editor/icons/icon_edit_key.png b/tools/editor/icons/icon_edit_key.png Binary files differindex 43a7056f38..9ab1287fc6 100644 --- a/tools/editor/icons/icon_edit_key.png +++ b/tools/editor/icons/icon_edit_key.png diff --git a/tools/editor/icons/icon_edit_resource.png b/tools/editor/icons/icon_edit_resource.png Binary files differindex de538dfe95..31d0c68fc6 100644 --- a/tools/editor/icons/icon_edit_resource.png +++ b/tools/editor/icons/icon_edit_resource.png diff --git a/tools/editor/icons/icon_editor_focus.png b/tools/editor/icons/icon_editor_focus.png Binary files differindex f21d22ebd8..40ce11f381 100644 --- a/tools/editor/icons/icon_editor_focus.png +++ b/tools/editor/icons/icon_editor_focus.png diff --git a/tools/editor/icons/icon_enum.png b/tools/editor/icons/icon_enum.png Binary files differindex 2496e1d0db..ac36c96e28 100644 --- a/tools/editor/icons/icon_enum.png +++ b/tools/editor/icons/icon_enum.png diff --git a/tools/editor/icons/icon_event_player.png b/tools/editor/icons/icon_event_player.png Binary files differindex b67f91b1b3..68646b3dfe 100644 --- a/tools/editor/icons/icon_event_player.png +++ b/tools/editor/icons/icon_event_player.png diff --git a/tools/editor/icons/icon_file_server.png b/tools/editor/icons/icon_file_server.png Binary files differindex 27c99127c3..4bd94fa8c8 100644 --- a/tools/editor/icons/icon_file_server.png +++ b/tools/editor/icons/icon_file_server.png diff --git a/tools/editor/icons/icon_folder.png b/tools/editor/icons/icon_folder.png Binary files differindex 814f217edf..a450a7b297 100644 --- a/tools/editor/icons/icon_folder.png +++ b/tools/editor/icons/icon_folder.png diff --git a/tools/editor/icons/icon_font.png b/tools/editor/icons/icon_font.png Binary files differindex d9554183c2..3ffe4f1b17 100644 --- a/tools/editor/icons/icon_font.png +++ b/tools/editor/icons/icon_font.png diff --git a/tools/editor/icons/icon_g_d_script.png b/tools/editor/icons/icon_g_d_script.png Binary files differindex 3b1cc98c4d..88d865356c 100644 --- a/tools/editor/icons/icon_g_d_script.png +++ b/tools/editor/icons/icon_g_d_script.png diff --git a/tools/editor/icons/icon_graph_color_ramp.png b/tools/editor/icons/icon_graph_color_ramp.png Binary files differnew file mode 100644 index 0000000000..9031b5ec53 --- /dev/null +++ b/tools/editor/icons/icon_graph_color_ramp.png diff --git a/tools/editor/icons/icon_graph_curve_map.png b/tools/editor/icons/icon_graph_curve_map.png Binary files differnew file mode 100644 index 0000000000..de5c32f09e --- /dev/null +++ b/tools/editor/icons/icon_graph_curve_map.png diff --git a/tools/editor/icons/icon_graph_default_texture.png b/tools/editor/icons/icon_graph_default_texture.png Binary files differnew file mode 100644 index 0000000000..da77ec9364 --- /dev/null +++ b/tools/editor/icons/icon_graph_default_texture.png diff --git a/tools/editor/icons/icon_group.png b/tools/editor/icons/icon_group.png Binary files differindex 577c84777e..d43b4958c9 100644 --- a/tools/editor/icons/icon_group.png +++ b/tools/editor/icons/icon_group.png diff --git a/tools/editor/icons/icon_groups.png b/tools/editor/icons/icon_groups.png Binary files differindex da4fd0d985..f4386821ed 100644 --- a/tools/editor/icons/icon_groups.png +++ b/tools/editor/icons/icon_groups.png diff --git a/tools/editor/icons/icon_hidden.png b/tools/editor/icons/icon_hidden.png Binary files differindex 45fcfc2f47..e51b9ad03a 100644 --- a/tools/editor/icons/icon_hidden.png +++ b/tools/editor/icons/icon_hidden.png diff --git a/tools/editor/icons/icon_image.png b/tools/editor/icons/icon_image.png Binary files differindex a6b1fbf6c1..5919ca8c6d 100644 --- a/tools/editor/icons/icon_image.png +++ b/tools/editor/icons/icon_image.png diff --git a/tools/editor/icons/icon_image_texture.png b/tools/editor/icons/icon_image_texture.png Binary files differindex 4618d984b8..b87e284a52 100644 --- a/tools/editor/icons/icon_image_texture.png +++ b/tools/editor/icons/icon_image_texture.png diff --git a/tools/editor/icons/icon_instance_options.png b/tools/editor/icons/icon_instance_options.png Binary files differindex 2d3e98b2ea..9108448095 100644 --- a/tools/editor/icons/icon_instance_options.png +++ b/tools/editor/icons/icon_instance_options.png diff --git a/tools/editor/icons/icon_integer.png b/tools/editor/icons/icon_integer.png Binary files differindex 0e5b5abd62..32c8d9885b 100644 --- a/tools/editor/icons/icon_integer.png +++ b/tools/editor/icons/icon_integer.png diff --git a/tools/editor/icons/icon_interp_cubic.png b/tools/editor/icons/icon_interp_cubic.png Binary files differindex ab33aa7e6a..a946d70947 100644 --- a/tools/editor/icons/icon_interp_cubic.png +++ b/tools/editor/icons/icon_interp_cubic.png diff --git a/tools/editor/icons/icon_interp_linear.png b/tools/editor/icons/icon_interp_linear.png Binary files differindex bf3849ecaf..9174af39e7 100644 --- a/tools/editor/icons/icon_interp_linear.png +++ b/tools/editor/icons/icon_interp_linear.png diff --git a/tools/editor/icons/icon_interp_raw.png b/tools/editor/icons/icon_interp_raw.png Binary files differindex 48650d6e66..f12936493b 100644 --- a/tools/editor/icons/icon_interp_raw.png +++ b/tools/editor/icons/icon_interp_raw.png diff --git a/tools/editor/icons/icon_key.png b/tools/editor/icons/icon_key.png Binary files differindex d647876866..d6096ef41f 100644 --- a/tools/editor/icons/icon_key.png +++ b/tools/editor/icons/icon_key.png diff --git a/tools/editor/icons/icon_key_selected.png b/tools/editor/icons/icon_key_selected.png Binary files differindex d916c55286..562beef98a 100644 --- a/tools/editor/icons/icon_key_selected.png +++ b/tools/editor/icons/icon_key_selected.png diff --git a/tools/editor/icons/icon_light_map.png b/tools/editor/icons/icon_light_map.png Binary files differindex 96d3f6e11c..e0333f06ea 100644 --- a/tools/editor/icons/icon_light_map.png +++ b/tools/editor/icons/icon_light_map.png diff --git a/tools/editor/icons/icon_load.png b/tools/editor/icons/icon_load.png Binary files differindex fdc06d38a3..a450a7b297 100644 --- a/tools/editor/icons/icon_load.png +++ b/tools/editor/icons/icon_load.png diff --git a/tools/editor/icons/icon_lock.png b/tools/editor/icons/icon_lock.png Binary files differindex 0cfd1d4ab1..995d87b6fb 100644 --- a/tools/editor/icons/icon_lock.png +++ b/tools/editor/icons/icon_lock.png diff --git a/tools/editor/icons/icon_loop.png b/tools/editor/icons/icon_loop.png Binary files differindex d75642359d..7bde451ca0 100644 --- a/tools/editor/icons/icon_loop.png +++ b/tools/editor/icons/icon_loop.png diff --git a/tools/editor/icons/icon_main_play.png b/tools/editor/icons/icon_main_play.png Binary files differindex 401708c49e..9e8cc6c4a9 100644 --- a/tools/editor/icons/icon_main_play.png +++ b/tools/editor/icons/icon_main_play.png diff --git a/tools/editor/icons/icon_main_stop.png b/tools/editor/icons/icon_main_stop.png Binary files differindex 3f54ba69c9..31a6cd601e 100644 --- a/tools/editor/icons/icon_main_stop.png +++ b/tools/editor/icons/icon_main_stop.png diff --git a/tools/editor/icons/icon_mirror_x.png b/tools/editor/icons/icon_mirror_x.png Binary files differindex d20f90c1da..657e7f5458 100644 --- a/tools/editor/icons/icon_mirror_x.png +++ b/tools/editor/icons/icon_mirror_x.png diff --git a/tools/editor/icons/icon_mirror_y.png b/tools/editor/icons/icon_mirror_y.png Binary files differindex 5e2f710425..111aa5e4ae 100644 --- a/tools/editor/icons/icon_mirror_y.png +++ b/tools/editor/icons/icon_mirror_y.png diff --git a/tools/editor/icons/icon_move_down.png b/tools/editor/icons/icon_move_down.png Binary files differindex ef310e80e1..06c7246084 100644 --- a/tools/editor/icons/icon_move_down.png +++ b/tools/editor/icons/icon_move_down.png diff --git a/tools/editor/icons/icon_move_down_hl.png b/tools/editor/icons/icon_move_down_hl.png Binary files differindex dec56e8da8..f9de58a940 100644 --- a/tools/editor/icons/icon_move_down_hl.png +++ b/tools/editor/icons/icon_move_down_hl.png diff --git a/tools/editor/icons/icon_move_up.png b/tools/editor/icons/icon_move_up.png Binary files differindex d67b1aff0b..ca6c64f7a1 100644 --- a/tools/editor/icons/icon_move_up.png +++ b/tools/editor/icons/icon_move_up.png diff --git a/tools/editor/icons/icon_move_up_hl.png b/tools/editor/icons/icon_move_up_hl.png Binary files differindex 19ce8bbe27..e076c9a265 100644 --- a/tools/editor/icons/icon_move_up_hl.png +++ b/tools/editor/icons/icon_move_up_hl.png diff --git a/tools/editor/icons/icon_new.png b/tools/editor/icons/icon_new.png Binary files differindex 3596d2e8ea..c04785fc3f 100644 --- a/tools/editor/icons/icon_new.png +++ b/tools/editor/icons/icon_new.png diff --git a/tools/editor/icons/icon_node.png b/tools/editor/icons/icon_node.png Binary files differindex b0f7fb01dc..d8ce1b7538 100644 --- a/tools/editor/icons/icon_node.png +++ b/tools/editor/icons/icon_node.png diff --git a/tools/editor/icons/icon_open.png b/tools/editor/icons/icon_open.png Binary files differindex 4fad5677ca..a450a7b297 100644 --- a/tools/editor/icons/icon_open.png +++ b/tools/editor/icons/icon_open.png diff --git a/tools/editor/icons/icon_p_hash_translation.png b/tools/editor/icons/icon_p_hash_translation.png Binary files differindex c0eadc3c55..e18ef6a76f 100644 --- a/tools/editor/icons/icon_p_hash_translation.png +++ b/tools/editor/icons/icon_p_hash_translation.png diff --git a/tools/editor/icons/icon_packed_scene.png b/tools/editor/icons/icon_packed_scene.png Binary files differindex 9c1e1c4fbf..c9802f2b66 100644 --- a/tools/editor/icons/icon_packed_scene.png +++ b/tools/editor/icons/icon_packed_scene.png diff --git a/tools/editor/icons/icon_panels_1.png b/tools/editor/icons/icon_panels_1.png Binary files differindex 501c8c9acc..546ca61c89 100644 --- a/tools/editor/icons/icon_panels_1.png +++ b/tools/editor/icons/icon_panels_1.png diff --git a/tools/editor/icons/icon_panels_2.png b/tools/editor/icons/icon_panels_2.png Binary files differindex 08f104e2b1..5a4750bda2 100644 --- a/tools/editor/icons/icon_panels_2.png +++ b/tools/editor/icons/icon_panels_2.png diff --git a/tools/editor/icons/icon_panels_3.png b/tools/editor/icons/icon_panels_3.png Binary files differindex 1d1902d8dd..13988de93a 100644 --- a/tools/editor/icons/icon_panels_3.png +++ b/tools/editor/icons/icon_panels_3.png diff --git a/tools/editor/icons/icon_panels_4.png b/tools/editor/icons/icon_panels_4.png Binary files differindex 83cc133d21..c217330d43 100644 --- a/tools/editor/icons/icon_panels_4.png +++ b/tools/editor/icons/icon_panels_4.png diff --git a/tools/editor/icons/icon_pin.png b/tools/editor/icons/icon_pin.png Binary files differindex f34c8585f7..037352137d 100644 --- a/tools/editor/icons/icon_pin.png +++ b/tools/editor/icons/icon_pin.png diff --git a/tools/editor/icons/icon_pin_pressed.png b/tools/editor/icons/icon_pin_pressed.png Binary files differindex f151b5a590..5738e6856f 100644 --- a/tools/editor/icons/icon_pin_pressed.png +++ b/tools/editor/icons/icon_pin_pressed.png diff --git a/tools/editor/icons/icon_play.png b/tools/editor/icons/icon_play.png Binary files differindex 544b3bc5f4..08cce495a9 100644 --- a/tools/editor/icons/icon_play.png +++ b/tools/editor/icons/icon_play.png diff --git a/tools/editor/icons/icon_play_custom.png b/tools/editor/icons/icon_play_custom.png Binary files differindex 5c98c7100b..8e8ab8c62a 100644 --- a/tools/editor/icons/icon_play_custom.png +++ b/tools/editor/icons/icon_play_custom.png diff --git a/tools/editor/icons/icon_play_scene.png b/tools/editor/icons/icon_play_scene.png Binary files differindex 7ca59fe900..7079cc9677 100644 --- a/tools/editor/icons/icon_play_scene.png +++ b/tools/editor/icons/icon_play_scene.png diff --git a/tools/editor/icons/icon_prev_scene.png b/tools/editor/icons/icon_prev_scene.png Binary files differindex c7c180e1c4..9d8dda5180 100644 --- a/tools/editor/icons/icon_prev_scene.png +++ b/tools/editor/icons/icon_prev_scene.png diff --git a/tools/editor/icons/icon_real.png b/tools/editor/icons/icon_real.png Binary files differindex bfe5038319..80fbf7017c 100644 --- a/tools/editor/icons/icon_real.png +++ b/tools/editor/icons/icon_real.png diff --git a/tools/editor/icons/icon_reload.png b/tools/editor/icons/icon_reload.png Binary files differindex 07f53efb56..f7c6530d77 100644 --- a/tools/editor/icons/icon_reload.png +++ b/tools/editor/icons/icon_reload.png diff --git a/tools/editor/icons/icon_remove.png b/tools/editor/icons/icon_remove.png Binary files differindex 5349af466e..10e56d5bb8 100644 --- a/tools/editor/icons/icon_remove.png +++ b/tools/editor/icons/icon_remove.png diff --git a/tools/editor/icons/icon_rename.png b/tools/editor/icons/icon_rename.png Binary files differindex f88da39915..7b6a10df93 100644 --- a/tools/editor/icons/icon_rename.png +++ b/tools/editor/icons/icon_rename.png diff --git a/tools/editor/icons/icon_reparent.png b/tools/editor/icons/icon_reparent.png Binary files differindex af85b17ecc..59aee5e42d 100644 --- a/tools/editor/icons/icon_reparent.png +++ b/tools/editor/icons/icon_reparent.png diff --git a/tools/editor/icons/icon_replace.png b/tools/editor/icons/icon_replace.png Binary files differindex 2ae843ae10..662a58dc93 100644 --- a/tools/editor/icons/icon_replace.png +++ b/tools/editor/icons/icon_replace.png diff --git a/tools/editor/icons/icon_resource_preloader.png b/tools/editor/icons/icon_resource_preloader.png Binary files differindex e31e5a0d59..14b8c4de3c 100644 --- a/tools/editor/icons/icon_resource_preloader.png +++ b/tools/editor/icons/icon_resource_preloader.png diff --git a/tools/editor/icons/icon_sample_player.png b/tools/editor/icons/icon_sample_player.png Binary files differindex 5561769b05..92d9cc77bf 100644 --- a/tools/editor/icons/icon_sample_player.png +++ b/tools/editor/icons/icon_sample_player.png diff --git a/tools/editor/icons/icon_save.png b/tools/editor/icons/icon_save.png Binary files differindex dce274ffb1..ddef66688d 100644 --- a/tools/editor/icons/icon_save.png +++ b/tools/editor/icons/icon_save.png diff --git a/tools/editor/icons/icon_script.png b/tools/editor/icons/icon_script.png Binary files differindex 65fb3c4934..baf5927c18 100644 --- a/tools/editor/icons/icon_script.png +++ b/tools/editor/icons/icon_script.png diff --git a/tools/editor/icons/icon_sound_room_params.png b/tools/editor/icons/icon_sound_room_params.png Binary files differindex 8e381d7978..2d37a4b49f 100644 --- a/tools/editor/icons/icon_sound_room_params.png +++ b/tools/editor/icons/icon_sound_room_params.png diff --git a/tools/editor/icons/icon_stop.png b/tools/editor/icons/icon_stop.png Binary files differindex 3b7562fa4a..fd568b61a8 100644 --- a/tools/editor/icons/icon_stop.png +++ b/tools/editor/icons/icon_stop.png diff --git a/tools/editor/icons/icon_stream_player.png b/tools/editor/icons/icon_stream_player.png Binary files differindex 2670a567e8..cf8fdcbaea 100644 --- a/tools/editor/icons/icon_stream_player.png +++ b/tools/editor/icons/icon_stream_player.png diff --git a/tools/editor/icons/icon_string.png b/tools/editor/icons/icon_string.png Binary files differindex 86cc8e633f..48bf753c40 100644 --- a/tools/editor/icons/icon_string.png +++ b/tools/editor/icons/icon_string.png diff --git a/tools/editor/icons/icon_texture.png b/tools/editor/icons/icon_texture.png Binary files differindex 03d6ac7db2..bbcc54bd6e 100644 --- a/tools/editor/icons/icon_texture.png +++ b/tools/editor/icons/icon_texture.png diff --git a/tools/editor/icons/icon_timer.png b/tools/editor/icons/icon_timer.png Binary files differindex 3855683033..e8c36ae893 100644 --- a/tools/editor/icons/icon_timer.png +++ b/tools/editor/icons/icon_timer.png diff --git a/tools/editor/icons/icon_tool_move.png b/tools/editor/icons/icon_tool_move.png Binary files differindex fc611cdbb1..7257d3897b 100644 --- a/tools/editor/icons/icon_tool_move.png +++ b/tools/editor/icons/icon_tool_move.png diff --git a/tools/editor/icons/icon_tool_pan.png b/tools/editor/icons/icon_tool_pan.png Binary files differindex 5c078a7b1c..bfe6fddf45 100644 --- a/tools/editor/icons/icon_tool_pan.png +++ b/tools/editor/icons/icon_tool_pan.png diff --git a/tools/editor/icons/icon_tool_rotate.png b/tools/editor/icons/icon_tool_rotate.png Binary files differindex c833b93d6e..9575ceb54e 100644 --- a/tools/editor/icons/icon_tool_rotate.png +++ b/tools/editor/icons/icon_tool_rotate.png diff --git a/tools/editor/icons/icon_tool_scale.png b/tools/editor/icons/icon_tool_scale.png Binary files differindex 3eaeae1e99..a94a6e7c98 100644 --- a/tools/editor/icons/icon_tool_scale.png +++ b/tools/editor/icons/icon_tool_scale.png diff --git a/tools/editor/icons/icon_tool_select.png b/tools/editor/icons/icon_tool_select.png Binary files differindex eb5ff6e1da..47683228e9 100644 --- a/tools/editor/icons/icon_tool_select.png +++ b/tools/editor/icons/icon_tool_select.png diff --git a/tools/editor/icons/icon_tools.png b/tools/editor/icons/icon_tools.png Binary files differindex 927173ea0f..f02d924203 100644 --- a/tools/editor/icons/icon_tools.png +++ b/tools/editor/icons/icon_tools.png diff --git a/tools/editor/icons/icon_track_continuous.png b/tools/editor/icons/icon_track_continuous.png Binary files differindex 97e8762299..9f99891c21 100644 --- a/tools/editor/icons/icon_track_continuous.png +++ b/tools/editor/icons/icon_track_continuous.png diff --git a/tools/editor/icons/icon_track_discrete.png b/tools/editor/icons/icon_track_discrete.png Binary files differindex 57a4cd5579..4e65e49afb 100644 --- a/tools/editor/icons/icon_track_discrete.png +++ b/tools/editor/icons/icon_track_discrete.png diff --git a/tools/editor/icons/icon_translation.png b/tools/editor/icons/icon_translation.png Binary files differindex 6211ab9a1b..917c6f548a 100644 --- a/tools/editor/icons/icon_translation.png +++ b/tools/editor/icons/icon_translation.png diff --git a/tools/editor/icons/icon_unbone.png b/tools/editor/icons/icon_unbone.png Binary files differindex 819e8a8e5d..c8cd774460 100644 --- a/tools/editor/icons/icon_unbone.png +++ b/tools/editor/icons/icon_unbone.png diff --git a/tools/editor/icons/icon_ungroup.png b/tools/editor/icons/icon_ungroup.png Binary files differindex 16511e3f1c..4ea620bf96 100644 --- a/tools/editor/icons/icon_ungroup.png +++ b/tools/editor/icons/icon_ungroup.png diff --git a/tools/editor/icons/icon_unlock.png b/tools/editor/icons/icon_unlock.png Binary files differindex b86447bf7a..f9fa31c3e0 100644 --- a/tools/editor/icons/icon_unlock.png +++ b/tools/editor/icons/icon_unlock.png diff --git a/tools/editor/icons/icon_uv.png b/tools/editor/icons/icon_uv.png Binary files differindex 4d9d198d86..39bc737a37 100644 --- a/tools/editor/icons/icon_uv.png +++ b/tools/editor/icons/icon_uv.png diff --git a/tools/editor/icons/icon_vector.png b/tools/editor/icons/icon_vector.png Binary files differindex 7826d7f7a9..0ee33ba0b7 100644 --- a/tools/editor/icons/icon_vector.png +++ b/tools/editor/icons/icon_vector.png diff --git a/tools/editor/icons/icon_vector2.png b/tools/editor/icons/icon_vector2.png Binary files differindex 44e48c36c7..5920109a55 100644 --- a/tools/editor/icons/icon_vector2.png +++ b/tools/editor/icons/icon_vector2.png diff --git a/tools/editor/icons/icon_viewport.png b/tools/editor/icons/icon_viewport.png Binary files differindex 0a0d93cf4d..3859f6c7e9 100644 --- a/tools/editor/icons/icon_viewport.png +++ b/tools/editor/icons/icon_viewport.png diff --git a/tools/editor/icons/icon_visible.png b/tools/editor/icons/icon_visible.png Binary files differindex 519898bbef..cbc44c4e30 100644 --- a/tools/editor/icons/icon_visible.png +++ b/tools/editor/icons/icon_visible.png diff --git a/tools/editor/icons/icon_zoom.png b/tools/editor/icons/icon_zoom.png Binary files differindex cbacaaaeca..e4bbbfe7c3 100644 --- a/tools/editor/icons/icon_zoom.png +++ b/tools/editor/icons/icon_zoom.png diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp index 064758f6cd..1fd7d26f8b 100644 --- a/tools/editor/io_plugins/editor_font_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -499,7 +499,7 @@ class EditorFontImportDialog : public ConfirmationDialog { Error err = plugin->import(dest->get_line_edit()->get_text(),rimd); if (err!=OK) { - error_dialog->set_text("Could't save font."); + error_dialog->set_text("Couldn't save font."); error_dialog->popup_centered(Size2(200,100)); return; } diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp index b855b15b39..ce376f2e7b 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -411,7 +411,11 @@ void EditorTextureImportDialog::popup_import(const String& p_from) { Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from); ERR_FAIL_COND(!rimd.is_valid()); - save_path->set_text(p_from.get_base_dir()); + if (plugin->get_mode()==EditorTextureImportPlugin::MODE_ATLAS) + save_path->set_text(p_from); + else + save_path->set_text(p_from.get_base_dir()); + texture_options->set_format(EditorTextureImportPlugin::ImageFormat(int(rimd->get_option("format")))); texture_options->set_flags(rimd->get_option("flags")); texture_options->set_quality(rimd->get_option("quality")); diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.h b/tools/editor/io_plugins/editor_texture_import_plugin.h index d17b3c05c2..e733a3ddf9 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.h +++ b/tools/editor/io_plugins/editor_texture_import_plugin.h @@ -98,6 +98,7 @@ public: IMAGE_FLAG_USE_ANISOTROPY=1024, //convert image to linear }; + Mode get_mode() const { return mode; } virtual String get_name() const; virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); diff --git a/tools/editor/plugins/canvas_item_editor_plugin.cpp b/tools/editor/plugins/canvas_item_editor_plugin.cpp index 43ebebeb22..514f4b6525 100644 --- a/tools/editor/plugins/canvas_item_editor_plugin.cpp +++ b/tools/editor/plugins/canvas_item_editor_plugin.cpp @@ -2688,6 +2688,11 @@ HSplitContainer *CanvasItemEditor::get_palette_split() { return palette_split; } +VSplitContainer *CanvasItemEditor::get_bottom_split() { + + return bottom_split; +} + CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { tool = TOOL_SELECT; @@ -2702,9 +2707,13 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { add_child( hb ); hb->set_area_as_parent_rect(); + bottom_split = memnew( VSplitContainer ); + bottom_split->set_v_size_flags(SIZE_EXPAND_FILL); + add_child(bottom_split); + palette_split = memnew( HSplitContainer); palette_split->set_v_size_flags(SIZE_EXPAND_FILL); - add_child(palette_split); + bottom_split->add_child(palette_split); Control *vp_base = memnew (Control); vp_base->set_v_size_flags(SIZE_EXPAND_FILL); diff --git a/tools/editor/plugins/canvas_item_editor_plugin.h b/tools/editor/plugins/canvas_item_editor_plugin.h index c56570d43f..6648d486e8 100644 --- a/tools/editor/plugins/canvas_item_editor_plugin.h +++ b/tools/editor/plugins/canvas_item_editor_plugin.h @@ -290,8 +290,8 @@ class CanvasItemEditor : public VBoxContainer { void _viewport_input_event(const InputEvent& p_event); void _viewport_draw(); -private: HSplitContainer *palette_split; + VSplitContainer *bottom_split; friend class CanvasItemEditorPlugin; protected: @@ -346,6 +346,7 @@ public: void add_control_to_menu_panel(Control *p_control); HSplitContainer *get_palette_split(); + VSplitContainer *get_bottom_split(); Control *get_viewport_control() { return viewport; } diff --git a/tools/editor/plugins/path_2d_editor_plugin.cpp b/tools/editor/plugins/path_2d_editor_plugin.cpp index 33ea5f3588..49239343a5 100644 --- a/tools/editor/plugins/path_2d_editor_plugin.cpp +++ b/tools/editor/plugins/path_2d_editor_plugin.cpp @@ -195,7 +195,7 @@ bool Path2DEditor::forward_input_event(const InputEvent& p_event) { Ref<Curve2D> curve = node->get_curve(); - Vector2 new_pos = moving_from + xform.basis_xform( gpoint - moving_screen_from ); + Vector2 new_pos = moving_from + xform.affine_inverse().basis_xform(gpoint - moving_screen_from); switch(action) { case ACTION_MOVING_POINT: { @@ -439,7 +439,7 @@ bool Path2DEditor::forward_input_event(const InputEvent& p_event) { Ref<Curve2D> curve = node->get_curve(); - Vector2 new_pos = moving_from + xform.basis_xform( gpoint - moving_screen_from ); + Vector2 new_pos = moving_from + xform.affine_inverse().basis_xform(gpoint - moving_screen_from); switch(action) { diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp index 55957887dc..4b7d1cf0e0 100644 --- a/tools/editor/plugins/script_editor_plugin.cpp +++ b/tools/editor/plugins/script_editor_plugin.cpp @@ -188,7 +188,7 @@ void ScriptTextEditor::apply_code() { if (script.is_null()) return; - print_line("applying code"); +// print_line("applying code"); script->set_source_code(get_text_edit()->get_text()); script->update_exports(); } @@ -210,6 +210,7 @@ void ScriptTextEditor::_load_theme_settings() { get_text_edit()->add_color_override("font_selected_color",EDITOR_DEF("text_editor/text_selected_color",Color(1,1,1))); get_text_edit()->add_color_override("selection_color",EDITOR_DEF("text_editor/selection_color",Color(0.2,0.2,1))); get_text_edit()->add_color_override("brace_mismatch_color",EDITOR_DEF("text_editor/brace_mismatch_color",Color(1,0.2,0.2))); + get_text_edit()->add_color_override("current_line_color",EDITOR_DEF("text_editor/current_line_color",Color(0.3,0.5,0.8,0.15))); Color keyword_color= EDITOR_DEF("text_editor/keyword_color",Color(0.5,0.0,0.2)); @@ -1033,9 +1034,12 @@ void ScriptEditor::_menu_option(int p_option) { editor->emit_signal("request_help", text); } break; case WINDOW_CLOSE: { - - erase_tab_confirm->set_text("Close Tab?:\n\""+current->get_name()+"\""); - erase_tab_confirm->popup_centered(Point2(250,80)); + if (current->get_text_edit()->get_version()!=current->get_text_edit()->get_saved_version()) { + erase_tab_confirm->set_text("Close and save changes?\n\""+current->get_name()+"\""); + erase_tab_confirm->popup_centered(Point2(250,80)); + } else { + _close_current_tab(); + } } break; case WINDOW_MOVE_LEFT: { @@ -1603,7 +1607,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { edit_menu->get_popup()->add_item("Clone Down",EDIT_CLONE_DOWN,KEY_MASK_CMD|KEY_B); edit_menu->get_popup()->add_separator(); #ifdef OSX_ENABLED - edit_menu->get_popup()->add_item("Complete Symbol",EDIT_COMPLETE,KEY_MASK_META|KEY_SPACE); + edit_menu->get_popup()->add_item("Complete Symbol",EDIT_COMPLETE,KEY_MASK_CTRL|KEY_SPACE); #else edit_menu->get_popup()->add_item("Complete Symbol",EDIT_COMPLETE,KEY_MASK_CMD|KEY_SPACE); #endif diff --git a/tools/editor/plugins/shader_editor_plugin.cpp b/tools/editor/plugins/shader_editor_plugin.cpp index 3166383fc8..2fcd4e8cd1 100644 --- a/tools/editor/plugins/shader_editor_plugin.cpp +++ b/tools/editor/plugins/shader_editor_plugin.cpp @@ -57,9 +57,9 @@ void ShaderTextEditor::set_edited_shader(const Ref<Shader>& p_shader,ShaderLangu _load_theme_settings(); - if (p_type==ShaderLanguage::SHADER_MATERIAL_LIGHT) + if (p_type==ShaderLanguage::SHADER_MATERIAL_LIGHT || p_type==ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT) get_text_edit()->set_text(shader->get_light_code()); - else if (p_type==ShaderLanguage::SHADER_MATERIAL_VERTEX) + else if (p_type==ShaderLanguage::SHADER_MATERIAL_VERTEX || p_type==ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX) get_text_edit()->set_text(shader->get_vertex_code()); else get_text_edit()->set_text(shader->get_fragment_code()); @@ -81,6 +81,7 @@ void ShaderTextEditor::_load_theme_settings() { get_text_edit()->add_color_override("font_selected_color",EDITOR_DEF("text_editor/text_selected_color",Color(1,1,1))); get_text_edit()->add_color_override("selection_color",EDITOR_DEF("text_editor/selection_color",Color(0.2,0.2,1))); get_text_edit()->add_color_override("brace_mismatch_color",EDITOR_DEF("text_editor/brace_mismatch_color",Color(1,0.2,0.2))); + get_text_edit()->add_color_override("current_line_color",EDITOR_DEF("text_editor/current_line_color",Color(0.3,0.5,0.8,0.15))); Color keyword_color= EDITOR_DEF("text_editor/keyword_color",Color(0.5,0.0,0.2)); @@ -131,17 +132,12 @@ void ShaderTextEditor::_validate_script() { String errortxt; int line,col; - String code; - if (type==ShaderLanguage::SHADER_MATERIAL_LIGHT) - code=get_text_edit()->get_text(); - else if (type==ShaderLanguage::SHADER_MATERIAL_VERTEX) - code=get_text_edit()->get_text(); - else - code=get_text_edit()->get_text(); - + String code=get_text_edit()->get_text(); //List<StringName> params; //shader->get_param_list(¶ms); + print_line("compile: type: "+itos(type)+" code:\n"+code); + Error err = ShaderLanguage::compile(code,type,NULL,NULL,&errortxt,&line,&col); if (err!=OK) { @@ -233,25 +229,7 @@ void ShaderEditor::_menu_option(int p_option) { goto_line_dialog->popup_find_line(current->get_text_edit()); } break; - case SHADER_POST_PROCESS_MODE:{ - - fragment_editor->set_edited_shader(shader,ShaderLanguage::SHADER_POST_PROCESS); - fragment_editor->_validate_script(); - apply_shaders(); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_MATERIAL_MODE), false); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_POST_PROCESS_MODE), true); - - - } break; - case SHADER_MATERIAL_MODE: { - fragment_editor->set_edited_shader(shader,ShaderLanguage::SHADER_MATERIAL_FRAGMENT); - fragment_editor->_validate_script(); - apply_shaders(); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_MATERIAL_MODE), true); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_POST_PROCESS_MODE), false); - - } break; } } @@ -408,18 +386,17 @@ void ShaderEditor::edit(const Ref<Shader>& p_shader) { shader=p_shader; if (shader->get_mode()==Shader::MODE_MATERIAL) { + vertex_editor->set_edited_shader(p_shader,ShaderLanguage::SHADER_MATERIAL_VERTEX); fragment_editor->set_edited_shader(p_shader,ShaderLanguage::SHADER_MATERIAL_FRAGMENT); light_editor->set_edited_shader(shader,ShaderLanguage::SHADER_MATERIAL_LIGHT); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_MATERIAL_MODE), true); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_POST_PROCESS_MODE), false); - } else { + } else if (shader->get_mode()==Shader::MODE_CANVAS_ITEM) { - fragment_editor->set_edited_shader(p_shader,ShaderLanguage::SHADER_POST_PROCESS); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_MATERIAL_MODE), false); - settings_menu->get_popup()->set_item_checked( settings_menu->get_popup()->get_item_index(SHADER_POST_PROCESS_MODE), true); + vertex_editor->set_edited_shader(p_shader,ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX); + fragment_editor->set_edited_shader(p_shader,ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT); + light_editor->set_edited_shader(shader,ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT); } - vertex_editor->set_edited_shader(shader,ShaderLanguage::SHADER_MATERIAL_VERTEX); + //vertex_editor->set_edited_shader(shader,ShaderLanguage::SHADER_MATERIAL_VERTEX); // see if already has it @@ -495,15 +472,6 @@ ShaderEditor::ShaderEditor() { search_menu->get_popup()->add_item("Goto Line..",SEARCH_GOTO_LINE,KEY_MASK_CMD|KEY_G); search_menu->get_popup()->connect("item_pressed", this,"_menu_option"); - settings_menu = memnew( MenuButton ); - add_child(settings_menu); - settings_menu->set_pos(Point2(90,-1)); - settings_menu->set_text("Shader"); - settings_menu->get_popup()->add_check_item("Material Mode",SHADER_MATERIAL_MODE); - settings_menu->get_popup()->set_item_checked(settings_menu->get_popup()->get_item_index(SHADER_MATERIAL_MODE),true); - settings_menu->get_popup()->add_check_item("Post Process Mode",SHADER_POST_PROCESS_MODE); - - settings_menu->get_popup()->connect("item_pressed", this,"_menu_option"); tab_container->connect("tab_changed", this,"_tab_changed"); @@ -550,7 +518,13 @@ void ShaderEditorPlugin::edit(Object *p_object) { bool ShaderEditorPlugin::handles(Object *p_object) const { - return p_object->is_type("Shader"); + Shader *shader=p_object->cast_to<Shader>(); + if (!shader) + return false; + if (_2d) + return shader->get_mode()==Shader::MODE_CANVAS_ITEM; + else + return shader->get_mode()==Shader::MODE_MATERIAL; } void ShaderEditorPlugin::make_visible(bool p_visible) { @@ -596,12 +570,15 @@ void ShaderEditorPlugin::apply_changes() { shader_editor->apply_shaders(); } -ShaderEditorPlugin::ShaderEditorPlugin(EditorNode *p_node) { +ShaderEditorPlugin::ShaderEditorPlugin(EditorNode *p_node, bool p_2d) { editor=p_node; shader_editor = memnew( ShaderEditor ); - - SpatialEditor::get_singleton()->get_shader_split()->add_child(shader_editor); + _2d=p_2d; + if (p_2d) + add_custom_control(CONTAINER_CANVAS_EDITOR_BOTTOM,shader_editor); + else + add_custom_control(CONTAINER_SPATIAL_EDITOR_BOTTOM,shader_editor); // editor->get_viewport()->add_child(shader_editor); // shader_editor->set_area_as_parent_rect(); diff --git a/tools/editor/plugins/shader_editor_plugin.h b/tools/editor/plugins/shader_editor_plugin.h index 49caee5da6..daaa0ccb94 100644 --- a/tools/editor/plugins/shader_editor_plugin.h +++ b/tools/editor/plugins/shader_editor_plugin.h @@ -79,9 +79,6 @@ class ShaderEditor : public Control { SEARCH_REPLACE, //SEARCH_LOCATE_SYMBOL, SEARCH_GOTO_LINE, - SHADER_MATERIAL_MODE, - SHADER_POST_PROCESS_MODE, - SHADER_SHADE_MODEL_MODE, }; @@ -134,6 +131,7 @@ class ShaderEditorPlugin : public EditorPlugin { OBJ_TYPE( ShaderEditorPlugin, EditorPlugin ); + bool _2d; ShaderEditor *shader_editor; EditorNode *editor; public: @@ -152,7 +150,7 @@ public: virtual void save_external_data(); virtual void apply_changes(); - ShaderEditorPlugin(EditorNode *p_node); + ShaderEditorPlugin(EditorNode *p_node,bool p_2d); ~ShaderEditorPlugin(); }; diff --git a/tools/editor/plugins/shader_graph_editor_plugin.cpp b/tools/editor/plugins/shader_graph_editor_plugin.cpp index 0a206c4a45..508e8b4cba 100644 --- a/tools/editor/plugins/shader_graph_editor_plugin.cpp +++ b/tools/editor/plugins/shader_graph_editor_plugin.cpp @@ -32,6 +32,642 @@ #include "scene/gui/menu_button.h" #include "scene/gui/panel.h" #include "spatial_editor_plugin.h" +#include "os/keyboard.h" +#include "canvas_item_editor_plugin.h" + +void GraphColorRampEdit::_input_event(const InputEvent& p_event) { + + if (p_event.type==InputEvent::KEY && p_event.key.pressed && p_event.key.scancode==KEY_DELETE && grabbed!=-1) { + + points.remove(grabbed); + grabbed=-1; + update(); + emit_signal("ramp_changed"); + accept_event(); + } + + if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && p_event.mouse_button.pressed) { + + update(); + int x = p_event.mouse_button.x; + int total_w = get_size().width-get_size().height-3; + if (x>total_w+3) { + + if (grabbed==-1) + return; + Size2 ms = Size2(350, picker->get_combined_minimum_size().height+10); + picker->set_color(points[grabbed].color); + popup->set_pos(get_global_pos()-Size2(0,ms.height)); + popup->set_size(ms); + popup->popup(); + return; + } + + + float ofs = CLAMP(x/float(total_w),0,1); + + grabbed=-1; + grabbing=true; + int pos=-1; + for(int i=0;i<points.size();i++) { + + if (ABS(x-points[i].offset*total_w)<4) { + grabbed=i; + } + if (points[i].offset<ofs) + pos=i; + } + + grabbed_at=ofs; + //grab or select + if (grabbed!=-1) { + return; + } + //insert + + + Point p; + p.offset=ofs; + + Point prev; + Point next; + + if (pos==-1) { + + prev.color=Color(0,0,0); + prev.offset=0; + if (points.size()) { + next=points[0]; + } else { + next.color=Color(1,1,1); + next.offset=1.0; + } + } else { + + if (pos==points.size()-1) { + next.color=Color(1,1,1); + next.offset=1.0; + } else { + next=points[pos+1]; + } + prev=points[pos]; + + } + + p.color=prev.color.linear_interpolate(next.color,(p.offset-prev.offset)/(next.offset-prev.offset)); + + points.push_back(p); + points.sort(); + for(int i=0;i<points.size();i++) { + if (points[i].offset==ofs) { + grabbed=i; + break; + } + } + + emit_signal("ramp_changed"); + + } + + if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && !p_event.mouse_button.pressed) { + + if (grabbing) { + grabbing=false; + emit_signal("ramp_changed"); + } + update(); + } + + if (p_event.type==InputEvent::MOUSE_MOTION && grabbing) { + + int total_w = get_size().width-get_size().height-3; + + int x = p_event.mouse_motion.x; + float newofs = CLAMP(x/float(total_w),0,1); + + bool valid=true; + for(int i=0;i<points.size();i++) { + + if (points[i].offset==newofs && i!=grabbed) { + valid=false; + } + } + + if (!valid) + return; + + points[grabbed].offset=newofs; + + points.sort(); + for(int i=0;i<points.size();i++) { + if (points[i].offset==newofs) { + grabbed=i; + break; + } + } + + emit_signal("ramp_changed"); + + update(); + } +} + +void GraphColorRampEdit::_notification(int p_what){ + + if (p_what==NOTIFICATION_ENTER_TREE) { + picker->connect("color_changed",this,"_color_changed"); + } + if (p_what==NOTIFICATION_DRAW) { + + + Point prev; + prev.offset=0; + prev.color=Color(0,0,0); + int w = get_size().x; + int h = get_size().y; + + int total_w = get_size().width-get_size().height-3; + + for(int i=-1;i<points.size();i++) { + + Point next; + if (i+1==points.size()) { + next.color=Color(1,1,1); + next.offset=1; + } else { + next=points[i+1]; + } + + if (prev.offset==next.offset) { + prev=next; + continue; + } + + Vector<Vector2> points; + Vector<Color> colors; + points.push_back(Vector2(prev.offset*total_w,h)); + points.push_back(Vector2(prev.offset*total_w,0)); + points.push_back(Vector2(next.offset*total_w,0)); + points.push_back(Vector2(next.offset*total_w,h)); + colors.push_back(prev.color); + colors.push_back(prev.color); + colors.push_back(next.color); + colors.push_back(next.color); + draw_primitive(points,colors,Vector<Point2>()); + prev=next; + } + + for(int i=0;i<points.size();i++) { + + Color col=i==grabbed?Color(1,0.0,0.0,0.9):Color(1,1,1,0.8); + + draw_line(Vector2(points[i].offset*total_w,0),Vector2(points[i].offset*total_w,h-1),Color(0,0,0,0.7)); + draw_line(Vector2(points[i].offset*total_w-1,h/2),Vector2(points[i].offset*total_w-1,h-1),col); + draw_line(Vector2(points[i].offset*total_w+1,h/2),Vector2(points[i].offset*total_w+1,h-1),col); + draw_line(Vector2(points[i].offset*total_w-1,h/2),Vector2(points[i].offset*total_w+1,h/2),col); + draw_line(Vector2(points[i].offset*total_w-1,h-1),Vector2(points[i].offset*total_w+1,h-1),col); + + } + + if (grabbed!=-1) { + + draw_rect(Rect2(total_w+3,0,h,h),points[grabbed].color); + } + + if (has_focus()) { + + draw_line(Vector2(-1,-1),Vector2(total_w+1,-1),Color(1,1,1,0.6)); + draw_line(Vector2(total_w+1,-1),Vector2(total_w+1,h+1),Color(1,1,1,0.6)); + draw_line(Vector2(total_w+1,h+1),Vector2(-1,h+1),Color(1,1,1,0.6)); + draw_line(Vector2(-1,-1),Vector2(-1,h+1),Color(1,1,1,0.6)); + } + + } +} + +Size2 GraphColorRampEdit::get_minimum_size() const { + + return Vector2(0,16); +} + + +void GraphColorRampEdit::_color_changed(const Color& p_color) { + + if (grabbed==-1) + return; + points[grabbed].color=p_color; + update(); + emit_signal("ramp_changed"); + +} + +void GraphColorRampEdit::set_ramp(const Vector<float>& p_offsets,const Vector<Color>& p_colors) { + + ERR_FAIL_COND(p_offsets.size()!=p_colors.size()); + points.clear(); + for(int i=0;i<p_offsets.size();i++) { + Point p; + p.offset=p_offsets[i]; + p.color=p_colors[i]; + points.push_back(p); + } + + points.sort(); + update(); +} + +Vector<float> GraphColorRampEdit::get_offsets() const{ + Vector<float> ret; + for(int i=0;i<points.size();i++) + ret.push_back(points[i].offset); + return ret; +} +Vector<Color> GraphColorRampEdit::get_colors() const{ + + Vector<Color> ret; + for(int i=0;i<points.size();i++) + ret.push_back(points[i].color); + return ret; +} + + +void GraphColorRampEdit::_bind_methods(){ + + ObjectTypeDB::bind_method(_MD("_input_event"),&GraphColorRampEdit::_input_event); + ObjectTypeDB::bind_method(_MD("_color_changed"),&GraphColorRampEdit::_color_changed); + ADD_SIGNAL(MethodInfo("ramp_changed")); +} + +GraphColorRampEdit::GraphColorRampEdit(){ + + grabbed=-1; + grabbing=false; + set_focus_mode(FOCUS_ALL); + + popup = memnew( PopupPanel ); + picker = memnew( ColorPicker ); + popup->add_child(picker); + popup->set_child_rect(picker); + add_child(popup); + +} +//////////// + +void GraphCurveMapEdit::_input_event(const InputEvent& p_event) { + + if (p_event.type==InputEvent::KEY && p_event.key.pressed && p_event.key.scancode==KEY_DELETE && grabbed!=-1) { + + points.remove(grabbed); + grabbed=-1; + update(); + emit_signal("curve_changed"); + accept_event(); + } + + if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && p_event.mouse_button.pressed) { + + update(); + Point2 p = Vector2(p_event.mouse_button.x,p_event.mouse_button.y)/get_size(); + p.y=1.0-p.y; + grabbed=-1; + grabbing=true; + + for(int i=0;i<points.size();i++) { + + Vector2 ps = p*get_size(); + Vector2 pt = Vector2(points[i].offset,points[i].height)*get_size(); + if (ps.distance_to(pt)<4) { + grabbed=i; + } + + } + + + //grab or select + if (grabbed!=-1) { + return; + } + //insert + + + Point np; + np.offset=p.x; + np.height=p.y; + + points.push_back(np); + points.sort(); + for(int i=0;i<points.size();i++) { + if (points[i].offset==p.x && points[i].height==p.y) { + grabbed=i; + break; + } + } + + emit_signal("curve_changed"); + + } + + if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && !p_event.mouse_button.pressed) { + + if (grabbing) { + grabbing=false; + emit_signal("curve_changed"); + } + update(); + } + + if (p_event.type==InputEvent::MOUSE_MOTION && grabbing) { + + Point2 p = Vector2(p_event.mouse_button.x,p_event.mouse_button.y)/get_size(); + p.y=1.0-p.y; + + p.x = CLAMP(p.x,0.0,1.0); + p.y = CLAMP(p.y,0.0,1.0); + + bool valid=true; + + for(int i=0;i<points.size();i++) { + + if (points[i].offset==p.x && points[i].height==p.y && i!=grabbed) { + valid=false; + } + } + + if (!valid) + return; + + points[grabbed].offset=p.x; + points[grabbed].height=p.y; + + points.sort(); + for(int i=0;i<points.size();i++) { + if (points[i].offset==p.x && points[i].height==p.y) { + grabbed=i; + break; + } + } + + emit_signal("curve_changed"); + + update(); + } +} + +void GraphCurveMapEdit::_plot_curve(const Vector2& p_a,const Vector2& p_b,const Vector2& p_c,const Vector2& p_d) { + + float geometry[4][4]; + float tmp1[4][4]; + float tmp2[4][4]; + float deltas[4][4]; + double x, dx, dx2, dx3; + double y, dy, dy2, dy3; + double d, d2, d3; + int lastx, lasty; + int newx, newy; + int ntimes; + int i,j; + + int xmax=get_size().x; + int ymax=get_size().y; + + /* construct the geometry matrix from the segment */ + for (i = 0; i < 4; i++) { + geometry[i][2] = 0; + geometry[i][3] = 0; + } + + geometry[0][0] = (p_a[0] * xmax); + geometry[1][0] = (p_b[0] * xmax); + geometry[2][0] = (p_c[0] * xmax); + geometry[3][0] = (p_d[0] * xmax); + + geometry[0][1] = (p_a[1] * ymax); + geometry[1][1] = (p_b[1] * ymax); + geometry[2][1] = (p_c[1] * ymax); + geometry[3][1] = (p_d[1] * ymax); + + /* subdivide the curve ntimes (1000) times */ + ntimes = 4 * xmax; + /* ntimes can be adjusted to give a finer or coarser curve */ + d = 1.0 / ntimes; + d2 = d * d; + d3 = d * d * d; + + /* construct a temporary matrix for determining the forward differencing deltas */ + tmp2[0][0] = 0; tmp2[0][1] = 0; tmp2[0][2] = 0; tmp2[0][3] = 1; + tmp2[1][0] = d3; tmp2[1][1] = d2; tmp2[1][2] = d; tmp2[1][3] = 0; + tmp2[2][0] = 6*d3; tmp2[2][1] = 2*d2; tmp2[2][2] = 0; tmp2[2][3] = 0; + tmp2[3][0] = 6*d3; tmp2[3][1] = 0; tmp2[3][2] = 0; tmp2[3][3] = 0; + + /* compose the basis and geometry matrices */ + + static const float CR_basis[4][4] = + { + { -0.5, 1.5, -1.5, 0.5 }, + { 1.0, -2.5, 2.0, -0.5 }, + { -0.5, 0.0, 0.5, 0.0 }, + { 0.0, 1.0, 0.0, 0.0 }, + }; + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + tmp1[i][j] = (CR_basis[i][0] * geometry[0][j] + + CR_basis[i][1] * geometry[1][j] + + CR_basis[i][2] * geometry[2][j] + + CR_basis[i][3] * geometry[3][j]); + } + } + /* compose the above results to get the deltas matrix */ + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + deltas[i][j] = (tmp2[i][0] * tmp1[0][j] + + tmp2[i][1] * tmp1[1][j] + + tmp2[i][2] * tmp1[2][j] + + tmp2[i][3] * tmp1[3][j]); + } + } + + + /* extract the x deltas */ + x = deltas[0][0]; + dx = deltas[1][0]; + dx2 = deltas[2][0]; + dx3 = deltas[3][0]; + + /* extract the y deltas */ + y = deltas[0][1]; + dy = deltas[1][1]; + dy2 = deltas[2][1]; + dy3 = deltas[3][1]; + + + lastx = CLAMP (x, 0, xmax); + lasty = CLAMP (y, 0, ymax); + +/* if (fix255) + { + cd->curve[cd->outline][lastx] = lasty; + } + else + { + cd->curve_ptr[cd->outline][lastx] = lasty; + if(gb_debug) printf("bender_plot_curve xmax:%d ymax:%d\n", (int)xmax, (int)ymax); + } +*/ + /* loop over the curve */ + for (i = 0; i < ntimes; i++) + { + /* increment the x values */ + x += dx; + dx += dx2; + dx2 += dx3; + + /* increment the y values */ + y += dy; + dy += dy2; + dy2 += dy3; + + newx = CLAMP ((Math::round (x)), 0, xmax); + newy = CLAMP ((Math::round (y)), 0, ymax); + + /* if this point is different than the last one...then draw it */ + if ((lastx != newx) || (lasty != newy)) + { +#if 0 + /* + if(fix255) + { + /* use fixed array size (for the curve graph) */ + cd->curve[cd->outline][newx] = newy; + } + else + { + /* use dynamic allocated curve_ptr (for the real curve) */ + cd->curve_ptr[cd->outline][newx] = newy; + + if(gb_debug) printf("outline: %d cX: %d cY: %d\n", (int)cd->outline, (int)newx, (int)newy); + } +#endif + draw_line(Vector2(lastx,ymax-lasty),Vector2(newx,ymax-newy),Color(0.8,0.8,0.8,0.8),2.0); + } + + lastx = newx; + lasty = newy; + } +} + + +void GraphCurveMapEdit::_notification(int p_what){ + + if (p_what==NOTIFICATION_DRAW) { + + draw_style_box(get_stylebox("bg","Tree"),Rect2(Point2(),get_size())); + + int w = get_size().x; + int h = get_size().y; + + Vector2 prev=Vector2(0,0); + Vector2 prev2=Vector2(0,0); + + for(int i=-1;i<points.size();i++) { + + Vector2 next; + Vector2 next2; + if (i+1>=points.size()) { + next=Vector2(1,1); + } else { + next=Vector2(points[i+1].offset,points[i+1].height); + } + + if (i+2>=points.size()) { + next2=Vector2(1,1); + } else { + next2=Vector2(points[i+2].offset,points[i+2].height); + } + + /*if (i==-1 && prev.offset==next.offset) { + prev=next; + continue; + }*/ + + _plot_curve(prev2,prev,next,next2); + + prev2=prev; + prev=next; + } + + for(int i=0;i<points.size();i++) { + + Color col=i==grabbed?Color(1,0.0,0.0,0.9):Color(1,1,1,0.8); + + + draw_rect(Rect2( Vector2(points[i].offset,1.0-points[i].height)*get_size()-Vector2(2,2),Vector2(5,5)),col); + } + +/* if (grabbed!=-1) { + + draw_rect(Rect2(total_w+3,0,h,h),points[grabbed].color); + } +*/ + if (has_focus()) { + + draw_line(Vector2(-1,-1),Vector2(w+1,-1),Color(1,1,1,0.6)); + draw_line(Vector2(w+1,-1),Vector2(w+1,h+1),Color(1,1,1,0.6)); + draw_line(Vector2(w+1,h+1),Vector2(-1,h+1),Color(1,1,1,0.6)); + draw_line(Vector2(-1,-1),Vector2(-1,h+1),Color(1,1,1,0.6)); + } + + } +} + +Size2 GraphCurveMapEdit::get_minimum_size() const { + + return Vector2(64,64); +} + + + +void GraphCurveMapEdit::set_points(const Vector<Vector2>& p_points) { + + + points.clear(); + for(int i=0;i<p_points.size();i++) { + Point p; + p.offset=p_points[i].x; + p.height=p_points[i].y; + points.push_back(p); + } + + points.sort(); + update(); +} + +Vector<Vector2> GraphCurveMapEdit::get_points() const { + Vector<Vector2> ret; + for(int i=0;i<points.size();i++) + ret.push_back(Vector2(points[i].offset,points[i].height)); + return ret; +} + +void GraphCurveMapEdit::_bind_methods(){ + + ObjectTypeDB::bind_method(_MD("_input_event"),&GraphCurveMapEdit::_input_event); + ADD_SIGNAL(MethodInfo("curve_changed")); +} + +GraphCurveMapEdit::GraphCurveMapEdit(){ + + grabbed=-1; + grabbing=false; + set_focus_mode(FOCUS_ALL); + +} + ////cbacks /// @@ -306,6 +942,84 @@ void ShaderGraphView::_comment_edited(int p_id,Node* p_button) { } +void ShaderGraphView::_color_ramp_changed(int p_id,Node* p_ramp) { + + GraphColorRampEdit *cr=p_ramp->cast_to<GraphColorRampEdit>(); + + UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); + + + Vector<float> offsets=cr->get_offsets(); + Vector<Color> colors=cr->get_colors(); + + DVector<float> new_offsets; + DVector<Color> new_colors; + { + new_offsets.resize(offsets.size()); + new_colors.resize(colors.size()); + DVector<float>::Write ow=new_offsets.write(); + DVector<Color>::Write cw=new_colors.write(); + for(int i=0;i<new_offsets.size();i++) { + ow[i]=offsets[i]; + cw[i]=colors[i]; + } + + } + + + DVector<float> old_offsets=graph->color_ramp_node_get_offsets(type,p_id); + DVector<Color> old_colors=graph->color_ramp_node_get_colors(type,p_id); + + if (old_offsets.size()!=new_offsets.size()) + ur->create_action("Add/Remove to Color Ramp"); + else + ur->create_action("Modify Color Ramp",true); + + ur->add_do_method(graph.ptr(),"color_ramp_node_set_ramp",type,p_id,new_colors,new_offsets); + ur->add_undo_method(graph.ptr(),"color_ramp_node_set_ramp",type,p_id,old_colors,old_offsets); + ur->add_do_method(this,"_update_graph"); + ur->add_undo_method(this,"_update_graph"); + block_update=true; + ur->commit_action(); + block_update=false; +} + +void ShaderGraphView::_curve_changed(int p_id,Node* p_curve) { + + GraphCurveMapEdit *cr=p_curve->cast_to<GraphCurveMapEdit>(); + + UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); + + + Vector<Point2> points=cr->get_points(); + + DVector<Vector2> new_points; + { + new_points.resize(points.size()); + DVector<Vector2>::Write ow=new_points.write(); + for(int i=0;i<new_points.size();i++) { + ow[i]=points[i]; + } + + } + + + DVector<Vector2> old_points=graph->curve_map_node_get_points(type,p_id); + + if (old_points.size()!=new_points.size()) + ur->create_action("Add/Remove to Curve Map"); + else + ur->create_action("Modify Curve Map",true); + + ur->add_do_method(graph.ptr(),"curve_map_node_set_points",type,p_id,new_points); + ur->add_undo_method(graph.ptr(),"curve_map_node_set_points",type,p_id,old_points); + ur->add_do_method(this,"_update_graph"); + ur->add_undo_method(this,"_update_graph"); + block_update=true; + ur->commit_action(); + block_update=false; +} + void ShaderGraphView::_input_name_changed(const String& p_name, int p_id, Node *p_line_edit) { @@ -1026,6 +1740,96 @@ void ShaderGraphView::_create_node(int p_id) { gn->set_slot(2,true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR],false,0,Color()); } break; // vec3 interpolation (with optional curve) + case ShaderGraph::NODE_COLOR_RAMP: { + + gn->set_title("ColorRamp"); + GraphColorRampEdit * ramp = memnew( GraphColorRampEdit ); + + DVector<real_t> offsets = graph->color_ramp_node_get_offsets(type,p_id); + DVector<Color> colors = graph->color_ramp_node_get_colors(type,p_id); + + int oc = offsets.size(); + + if (oc) { + DVector<real_t>::Read rofs = offsets.read(); + DVector<Color>::Read rcol = colors.read(); + + Vector<float> ofsv; + Vector<Color> colorv; + for(int i=0;i<oc;i++) { + ofsv.push_back(rofs[i]); + colorv.push_back(rcol[i]); + } + + ramp->set_ramp(ofsv,colorv); + + } + + ramp->connect("ramp_changed",this,"_color_ramp_changed",varray(p_id,ramp)); + ramp->set_custom_minimum_size(Size2(128,1)); + gn->add_child(ramp); + + + HBoxContainer *hbc = memnew( HBoxContainer ); + hbc->add_constant_override("separation",0); + hbc->add_child( memnew(Label("c"))); + hbc->add_spacer(); + Label *l=memnew(Label("rgb")); + l->set_align(Label::ALIGN_RIGHT); + hbc->add_child( l); + gn->add_child(hbc); + l=memnew(Label("alpha")); + l->set_align(Label::ALIGN_RIGHT); + gn->add_child( l); + + + gn->set_slot(1,true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR],true,ShaderGraph::SLOT_TYPE_VEC,typecol[ShaderGraph::SLOT_TYPE_VEC]); + gn->set_slot(2,false,ShaderGraph::SLOT_MAX,Color(),true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR]); + + + } break; // scalar interpolation (with optional curve) + case ShaderGraph::NODE_CURVE_MAP: { + + gn->set_title("CurveMap"); + GraphCurveMapEdit * map = memnew( GraphCurveMapEdit ); + + DVector<Vector2> points = graph->curve_map_node_get_points(type,p_id); + + int oc = points.size(); + + if (oc) { + DVector<Vector2>::Read rofs = points.read(); + + + Vector<Vector2> ofsv; + for(int i=0;i<oc;i++) { + ofsv.push_back(rofs[i]); + } + + map->set_points(ofsv); + + } + map->connect("curve_changed",this,"_curve_changed",varray(p_id,map)); + + //map->connect("map_changed",this,"_curve_map_changed",varray(p_id,map)); + map->set_custom_minimum_size(Size2(128,64)); + gn->add_child(map); + + HBoxContainer *hbc = memnew( HBoxContainer ); + hbc->add_constant_override("separation",0); + hbc->add_child( memnew(Label("c"))); + hbc->add_spacer(); + Label *l=memnew(Label("cmap")); + l->set_align(Label::ALIGN_RIGHT); + hbc->add_child( l); + gn->add_child(hbc); + + + gn->set_slot(1,true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR],true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR]); + + + } break; // scalar interpolation (with optional curve) + case ShaderGraph::NODE_SCALAR_INPUT: { gn->set_title("ScalarUniform"); @@ -1173,6 +1977,28 @@ void ShaderGraphView::_create_node(int p_id) { gn->set_slot(3,false,0,Color(),true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR]); } break; // cubemap input (assignable in material) + case ShaderGraph::NODE_DEFAULT_TEXTURE: { + + gn->set_title("CanvasItemTex"); + HBoxContainer *hbc = memnew( HBoxContainer ); + hbc->add_constant_override("separation",0); + hbc->add_child( memnew(Label("UV"))); + hbc->add_spacer(); + Label *l=memnew(Label("RGB")); + l->set_align(Label::ALIGN_RIGHT); + hbc->add_child(l); + gn->add_child(hbc); + l = memnew( Label ); + l->set_text("Alpha"); + l->set_align(Label::ALIGN_RIGHT); + gn->add_child(l); + + gn->set_slot(0,true,ShaderGraph::SLOT_TYPE_VEC,typecol[ShaderGraph::SLOT_TYPE_VEC],true,ShaderGraph::SLOT_TYPE_VEC,typecol[ShaderGraph::SLOT_TYPE_VEC]); + gn->set_slot(1,false,0,Color(),true,ShaderGraph::SLOT_TYPE_SCALAR,typecol[ShaderGraph::SLOT_TYPE_SCALAR]); + + + } break; // screen texture sampler (takes UV) (only usable in fragment case Shader) + case ShaderGraph::NODE_OUTPUT: { gn->set_title("Output"); @@ -1360,6 +2186,8 @@ void ShaderGraphView::_bind_methods() { ObjectTypeDB::bind_method("_variant_edited",&ShaderGraphView::_variant_edited); ObjectTypeDB::bind_method("_cube_edited",&ShaderGraphView::_cube_edited); ObjectTypeDB::bind_method("_comment_edited",&ShaderGraphView::_comment_edited); + ObjectTypeDB::bind_method("_color_ramp_changed",&ShaderGraphView::_color_ramp_changed); + ObjectTypeDB::bind_method("_curve_changed",&ShaderGraphView::_curve_changed); ObjectTypeDB::bind_method("_sg_updated",&ShaderGraphView::_sg_updated); } @@ -1406,6 +2234,9 @@ void ShaderGraphEditor::_notification(int p_what) { if (i==ShaderGraph::NODE_OUTPUT) continue; + if (!_2d && i==ShaderGraph::NODE_DEFAULT_TEXTURE) + continue; + String nn = node_names[i]; String ic = nn.get_slice(":",0); String v = nn.get_slice(":",1); @@ -1455,18 +2286,22 @@ const char* ShaderGraphEditor::node_names[ShaderGraph::NODE_TYPE_MAX]={ "GraphVecsToXform:Vectors -> XForm:", // 3 vec input", 1 xform output "GraphScalarInterp:Scalar Interpolate", // scalar interpolation (with optional curve) "GraphVecInterp:Vector Interpolate:", // vec3 interpolation (with optional curve) - "GraphScalarUniform:Scalar Uniform", // scalar uniform (assignable in material) + "GraphColorRamp:Color Ramp", // vec3 interpolation (with optional curve) + "GraphCurveMap:Curve Remap:", // vec3 interpolation (with optional curve) + "GraphScalarUniform:Scalar Uniform", // scalar uniform (assignable in material) "GraphVectorUniform:Vector Uniform", // vec3 uniform (assignable in material) "GraphRgbUniform:RGB Uniform", // color uniform (assignable in material) "GraphXformUniform:XForm Uniform", // mat4 uniform (assignable in material) "GraphTextureUniform:Texture Uniform", // texture input (assignable in material) "GraphCubeUniform:CubeMap Uniform:", // cubemap input (assignable in material) - "Output", // output (shader type dependent) + "GraphDefaultTexture:CanvasItem Texture:", // cubemap input (assignable in material) + "Output", // output (shader type dependent) "GraphComment:Comment", // comment }; -ShaderGraphEditor::ShaderGraphEditor() { +ShaderGraphEditor::ShaderGraphEditor(bool p_2d) { + _2d=p_2d; HBoxContainer *hbc = memnew( HBoxContainer ); menu = memnew( MenuButton ); @@ -1508,7 +2343,13 @@ void ShaderGraphEditorPlugin::edit(Object *p_object) { bool ShaderGraphEditorPlugin::handles(Object *p_object) const { - return p_object->is_type("ShaderGraph"); + ShaderGraph *shader=p_object->cast_to<ShaderGraph>(); + if (!shader) + return false; + if (_2d) + return shader->get_mode()==Shader::MODE_CANVAS_ITEM; + else + return shader->get_mode()==Shader::MODE_MATERIAL; } void ShaderGraphEditorPlugin::make_visible(bool p_visible) { @@ -1522,12 +2363,16 @@ void ShaderGraphEditorPlugin::make_visible(bool p_visible) { } -ShaderGraphEditorPlugin::ShaderGraphEditorPlugin(EditorNode *p_node) { +ShaderGraphEditorPlugin::ShaderGraphEditorPlugin(EditorNode *p_node, bool p_2d) { + _2d=p_2d; editor=p_node; - shader_editor = memnew( ShaderGraphEditor ); + shader_editor = memnew( ShaderGraphEditor(p_2d) ); shader_editor->hide(); - SpatialEditor::get_singleton()->get_shader_split()->add_child(shader_editor); + if (p_2d) + CanvasItemEditor::get_singleton()->get_bottom_split()->add_child(shader_editor); + else + SpatialEditor::get_singleton()->get_shader_split()->add_child(shader_editor); // editor->get_viewport()->add_child(shader_editor); diff --git a/tools/editor/plugins/shader_graph_editor_plugin.h b/tools/editor/plugins/shader_graph_editor_plugin.h index bd983c59be..1726302e90 100644 --- a/tools/editor/plugins/shader_graph_editor_plugin.h +++ b/tools/editor/plugins/shader_graph_editor_plugin.h @@ -45,6 +45,77 @@ */ +class GraphColorRampEdit : public Control { + + OBJ_TYPE(GraphColorRampEdit,Control); + + + struct Point { + + float offset; + Color color; + bool operator<(const Point& p_ponit) const { + return offset<p_ponit.offset; + } + }; + + PopupPanel *popup; + ColorPicker *picker; + + + bool grabbing; + int grabbed; + float grabbed_at; + Vector<Point> points; + + void _color_changed(const Color& p_color); + +protected: + void _input_event(const InputEvent& p_event); + void _notification(int p_what); + static void _bind_methods(); +public: + + void set_ramp(const Vector<float>& p_offsets,const Vector<Color>& p_colors); + Vector<float> get_offsets() const; + Vector<Color> get_colors() const; + virtual Size2 get_minimum_size() const; + GraphColorRampEdit(); +}; + + +class GraphCurveMapEdit : public Control { + + OBJ_TYPE(GraphCurveMapEdit,Control); + + + struct Point { + + float offset; + float height; + bool operator<(const Point& p_ponit) const { + return offset<p_ponit.offset; + } + }; + + + bool grabbing; + int grabbed; + Vector<Point> points; + + void _plot_curve(const Vector2& p_a,const Vector2& p_b,const Vector2& p_c,const Vector2& p_d); +protected: + void _input_event(const InputEvent& p_event); + void _notification(int p_what); + static void _bind_methods(); +public: + + void set_points(const Vector<Vector2>& p_points); + Vector<Vector2> get_points() const; + virtual Size2 get_minimum_size() const; + GraphCurveMapEdit(); +}; + class ShaderGraphView : public Node { OBJ_TYPE(ShaderGraphView,Node); @@ -95,7 +166,8 @@ class ShaderGraphView : public Node { void _cube_edited(int p_id,Node* p_button); void _variant_edited(); void _comment_edited(int p_id,Node* p_button); - + void _color_ramp_changed(int p_id,Node* p_ramp); + void _curve_changed(int p_id,Node* p_curve); void _sg_updated(); Map<int,GraphNode*> node_map; protected: @@ -119,6 +191,7 @@ class ShaderGraphEditor : public VBoxContainer { ShaderGraphView *graph_edits[ShaderGraph::SHADER_TYPE_MAX]; static const char* node_names[ShaderGraph::NODE_TYPE_MAX]; + bool _2d; void _add_node(int p_type); protected: void _notification(int p_what); @@ -126,13 +199,14 @@ protected: public: void edit(Ref<ShaderGraph> p_shader); - ShaderGraphEditor(); + ShaderGraphEditor(bool p_2d); }; class ShaderGraphEditorPlugin : public EditorPlugin { OBJ_TYPE( ShaderGraphEditorPlugin, EditorPlugin ); + bool _2d; ShaderGraphEditor *shader_editor; EditorNode *editor; @@ -144,7 +218,7 @@ public: virtual bool handles(Object *p_node) const; virtual void make_visible(bool p_visible); - ShaderGraphEditorPlugin(EditorNode *p_node); + ShaderGraphEditorPlugin(EditorNode *p_node,bool p_2d); ~ShaderGraphEditorPlugin(); }; diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp index a7e6a0d1f9..ce5ea58124 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.cpp +++ b/tools/editor/plugins/tile_map_editor_plugin.cpp @@ -73,6 +73,18 @@ int TileMapEditor::get_selected_tile() const { return item->get_metadata(0); } +void TileMapEditor::set_selected_tile(int p_tile) { + TreeItem *item = palette->get_root()->get_children(); + while (item) { + if ((int)item->get_metadata(0) == p_tile) { + item->select(0); + palette->ensure_cursor_is_visible(); + break; + } + item = item->get_next(); + } +} + void TileMapEditor::_set_cell(const Point2i& p_pos,int p_value,bool p_flip_h, bool p_flip_v,bool p_with_undo) { ERR_FAIL_COND(!node); @@ -224,28 +236,25 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { canvas_item_editor->update(); return true; + } else if (mb.mod.control) { + tool=TOOL_PICKING; + set_selected_tile(node->get_cell(over_tile.x, over_tile.y)); + canvas_item_editor->update(); + return true; } else { int id = get_selected_tile(); if (id!=TileMap::INVALID_CELL) { tool=TOOL_PAINTING; Point2i local =node->world_to_map((xform_inv.xform(Point2(mb.x,mb.y)))); paint_undo.clear(); - CellOp op; - op.idx = node->get_cell(local.x,local.y); - if (op.idx>=0) { - if (node->is_cell_x_flipped(local.x,local.y)) - op.xf=true; - if (node->is_cell_y_flipped(local.x,local.y)) - op.yf=true; - } - paint_undo[local]=op; + paint_undo[local]=_get_op_from_cell(local); node->set_cell(local.x,local.y,id,mirror_x->is_pressed(),mirror_y->is_pressed()); return true; } } } else { - if (tool==TOOL_PAINTING || tool == TOOL_SELECTING) { + if (tool==TOOL_PAINTING || tool == TOOL_SELECTING || tool == TOOL_PICKING) { if (tool==TOOL_PAINTING) { @@ -279,15 +288,7 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { tool=TOOL_ERASING; Point2i local =node->world_to_map(xform_inv.xform(Point2(mb.x,mb.y))); paint_undo.clear(); - CellOp op; - op.idx = node->get_cell(local.x,local.y); - if (op.idx>=0) { - if (node->is_cell_x_flipped(local.x,local.y)) - op.xf=true; - if (node->is_cell_y_flipped(local.x,local.y)) - op.yf=true; - } - paint_undo[local]=op; + paint_undo[local]=_get_op_from_cell(local); //node->set_cell(local.x,local.y,id,mirror_x->is_pressed(),mirror_y->is_pressed()); //return true; _set_cell(local,TileMap::INVALID_CELL); @@ -337,15 +338,7 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { if (!paint_undo.has(over_tile)) { - CellOp op; - op.idx = node->get_cell(over_tile.x,over_tile.y); - if (op.idx>=0) { - if (node->is_cell_x_flipped(over_tile.x,over_tile.y)) - op.xf=true; - if (node->is_cell_y_flipped(over_tile.x,over_tile.y)) - op.yf=true; - } - paint_undo[over_tile]=op; + paint_undo[over_tile]=_get_op_from_cell(over_tile); } node->set_cell(over_tile.x,over_tile.y,id,mirror_x->is_pressed(),mirror_y->is_pressed()); @@ -374,25 +367,22 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { return true; } + if (tool==TOOL_ERASING) { Point2i local =over_tile; if (!paint_undo.has(over_tile)) { - - CellOp op; - op.idx = node->get_cell(over_tile.x,over_tile.y); - if (op.idx>=0) { - if (node->is_cell_x_flipped(over_tile.x,over_tile.y)) - op.xf=true; - if (node->is_cell_y_flipped(over_tile.x,over_tile.y)) - op.yf=true; - } - paint_undo[over_tile]=op; + paint_undo[over_tile]=_get_op_from_cell(over_tile); } //node->set_cell(over_tile.x,over_tile.y,id,mirror_x->is_pressed(),mirror_y->is_pressed()); _set_cell(local,TileMap::INVALID_CELL); return true; } + if (tool==TOOL_PICKING) { + set_selected_tile(node->get_cell(over_tile.x, over_tile.y)); + canvas_item_editor->update(); + return true; + } } break; case InputEvent::KEY: { @@ -710,6 +700,19 @@ void TileMapEditor::_bind_methods() { } +TileMapEditor::CellOp TileMapEditor::_get_op_from_cell(const Point2i& p_pos) +{ + CellOp op; + op.idx = node->get_cell(p_pos.x,p_pos.y); + if (op.idx>=0) { + if (node->is_cell_x_flipped(p_pos.x,p_pos.y)) + op.xf=true; + if (node->is_cell_y_flipped(p_pos.x,p_pos.y)) + op.yf=true; + } + return op; +} + TileMapEditor::TileMapEditor(EditorNode *p_editor) { node=NULL; diff --git a/tools/editor/plugins/tile_map_editor_plugin.h b/tools/editor/plugins/tile_map_editor_plugin.h index ef869591bd..f3c590e228 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.h +++ b/tools/editor/plugins/tile_map_editor_plugin.h @@ -51,7 +51,8 @@ class TileMapEditor : public VBoxContainer { TOOL_PAINTING, TOOL_SELECTING, TOOL_ERASING, - TOOL_DUPLICATING + TOOL_DUPLICATING, + TOOL_PICKING }; Tool tool; @@ -81,11 +82,13 @@ class TileMapEditor : public VBoxContainer { bool xf; bool yf; CellOp() { idx=-1; xf=false; yf=false; } + CellOp(const CellOp& p_other) : idx(p_other.idx), xf(p_other.xf), yf(p_other.yf) {} }; Map<Point2i,CellOp> paint_undo; int get_selected_tile() const; + void set_selected_tile(int p_tile); void _update_palette(); void _canvas_draw(); @@ -102,6 +105,7 @@ protected: void _notification(int p_what); void _node_removed(Node *p_node); static void _bind_methods(); + CellOp _get_op_from_cell(const Point2i& p_pos); public: HBoxContainer *get_canvas_item_editor_hb() const { return canvas_item_editor_hb; } diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index f5d9e83bf8..6f33d4b3d1 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -79,10 +79,22 @@ Node* SceneTreeDock::instance(const String& p_file) { //accept->get_cancel()->hide(); accept->get_ok()->set_text("Ugh"); accept->set_text(String("Error loading scene from ")+p_file); - accept->popup_centered(Size2(300,70));; + accept->popup_centered(Size2(300,70)); return NULL; } + // If the scene hasn't been saved yet a cyclical dependency cannot exist. + if (edited_scene->get_filename()!="") { + + if (_cyclical_dependency_exists(edited_scene->get_filename(), instanced_scene)) { + + accept->get_ok()->set_text("Ok"); + accept->set_text(String("Cannot instance the scene '")+p_file+String("' because the current scene exists within one of its' nodes.")); + accept->popup_centered(Size2(300,90)); + return NULL; + } + } + instanced_scene->generate_instance_state(); instanced_scene->set_filename( Globals::get_singleton()->localize_path(p_file) ); @@ -100,6 +112,35 @@ Node* SceneTreeDock::instance(const String& p_file) { } +bool SceneTreeDock::_cyclical_dependency_exists(const String& p_target_scene_path, Node* p_desired_node) { + int childCount = p_desired_node->get_child_count(); + + if (p_desired_node->get_filename()==p_target_scene_path) { + return true; + } + + for (int i=0;i<childCount;i++) { + Node* child=p_desired_node->get_child(i); + + if(_cyclical_dependency_exists(p_target_scene_path,child)) { + return true; + } + } + + return false; +} + + +static String _get_name_num_separator() { + switch(EditorSettings::get_singleton()->get("scenetree_editor/duplicate_node_name_num_separator").operator int()) { + case 0: return ""; + case 1: return " "; + case 2: return "_"; + case 3: return "-"; + } + return " "; +} + void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { current_option=p_tool; @@ -318,17 +359,21 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } int num=nums.to_int(); - if (num<2) - num=2; + if (num<1) + num=1; else num++; - name=name.substr(0,name.length()-nums.length()).strip_edges(); - String attempt=name+" "+itos(num); + String nnsep = _get_name_num_separator(); + name = name.substr(0,name.length()-nums.length()).strip_edges(); + if ( name.substr(name.length()-nnsep.length(),nnsep.length()) == nnsep) { + name = name.substr(0,name.length()-nnsep.length()); + } + String attempt = (name + nnsep + itos(num)).strip_edges(); while(parent->has_node(attempt)) { num++; - attempt=name+" "+itos(num); + attempt = (name + nnsep + itos(num)).strip_edges(); } dup->set_name(attempt); diff --git a/tools/editor/scene_tree_dock.h b/tools/editor/scene_tree_dock.h index ac5391f3b9..92ebfc5bee 100644 --- a/tools/editor/scene_tree_dock.h +++ b/tools/editor/scene_tree_dock.h @@ -102,6 +102,7 @@ class SceneTreeDock : public VBoxContainer { void _load_request(const String& p_path); void _script_open_request(const Ref<Script>& p_script); + bool _cyclical_dependency_exists(const String& p_target_scene_path, Node* p_desired_node); void _node_selected(); void _node_renamed(); diff --git a/tools/export/blender25/godot_export_manager.py b/tools/export/blender25/godot_export_manager.py index a5df60e47d..31db2c9e94 100644 --- a/tools/export/blender25/godot_export_manager.py +++ b/tools/export/blender25/godot_export_manager.py @@ -101,6 +101,7 @@ class godot_export_manager(bpy.types.Panel): row = layout.row()
col = row.column()
+ col.prop(group,"use_include_particle_duplicates")
col.prop(group,"use_mesh_modifiers")
col.prop(group,"use_tangent_arrays")
col.prop(group,"use_triangles")
@@ -134,6 +135,8 @@ class add_objects_to_group(bpy.types.Operator): bl_label = "Add Objects to Group"
bl_description = "Adds the selected Objects to the active group below."
+ undo = BoolProperty(default=True)
+
def execute(self,context):
scene = context.scene
@@ -150,7 +153,8 @@ class add_objects_to_group(bpy.types.Operator): self.report({'INFO'}, objects_str + " added to group." )
- bpy.ops.ed.undo_push(message="Objects added to group")
+ if self.undo:
+ bpy.ops.ed.undo_push(message="Objects added to group")
else:
self.report({'WARNING'}, "Create a group first." )
return{'FINISHED'}
@@ -228,11 +232,11 @@ class export_all_groups(bpy.types.Operator): def execute(self,context):
scene = context.scene
- for i in range(len(scene.godot_export_groups)):
- if scene.godot_export_groups[i].active:
- bpy.ops.scene.godot_export_group(idx=i)
+
+ for i in range(0,len(scene.godot_export_groups)):
+ bpy.ops.scene.godot_export_group(idx=i,export_all=True)
+
self.report({'INFO'}, "All Groups exported." )
- bpy.ops.ed.undo_push(message="Export all Groups")
return{'FINISHED'}
@@ -242,6 +246,8 @@ class export_group(bpy.types.Operator): bl_description = "Exports the active group to destination folder as Collada file."
idx = IntProperty(default=0)
+ export_all = BoolProperty(default=False)
+
def copy_object_recursive(self,ob,parent,single_user = True):
new_ob = bpy.data.objects[ob.name].copy()
@@ -280,9 +286,20 @@ class export_group(bpy.types.Operator): self.delete_object(group)
def execute(self,context):
+
scene = context.scene
group = context.scene.godot_export_groups
+ if not group[self.idx].active and self.export_all:
+ return{'FINISHED'}
+
+ for i,object in enumerate(group[self.idx].nodes):
+ if object.name in bpy.data.objects:
+ pass
+ else:
+ group[self.idx].nodes.remove(i)
+ bpy.ops.ed.undo_push(message="Clear not existent Group Nodes.")
+
path = group[self.idx].export_path
if (path.find("//")==0 or path.find("\\\\")==0):
#if relative, convert to absolute
@@ -307,25 +324,42 @@ class export_group(bpy.types.Operator): object.select = False
context.scene.objects.active = None
- for i,object in enumerate(group[self.idx].nodes):
-
- if object.name in bpy.data.objects:
- if bpy.data.objects[object.name].type == "EMPTY":
- self.convert_group_to_node(bpy.data.objects[object.name])
- else:
+ ### make particle duplicates, parent and select them
+ nodes_to_be_added = []
+ if group[self.idx].use_include_particle_duplicates:
+ for i,object in enumerate(group[self.idx].nodes):
+ if bpy.data.objects[object.name].type != "EMPTY":
+ context.scene.objects.active = bpy.data.objects[object.name]
bpy.data.objects[object.name].select = True
+ bpy.ops.object.duplicates_make_real()
+ for object in context.selected_objects:
+ nodes_to_be_added.append(object)
+ bpy.ops.object.parent_set(type="OBJECT", keep_transform=False)
- else: # if object is not in the scene anymore it will be removed from the group
- group[self.idx].nodes.remove(i)
+ for object in context.selected_objects:
+ object.select = False
+ bpy.data.objects[object.name].select = False
+ context.scene.objects.active = None
+ for object in nodes_to_be_added:
+ object.select = True
+
+ ### select all other nodes from the group
+ for i,object in enumerate(group[self.idx].nodes):
+ if bpy.data.objects[object.name].type == "EMPTY":
+ self.convert_group_to_node(bpy.data.objects[object.name])
+ else:
+ bpy.data.objects[object.name].select = True
+
bpy.ops.object.transform_apply(location=group[self.idx].apply_loc, rotation=group[self.idx].apply_rot, scale=group[self.idx].apply_scale)
bpy.ops.export_scene.dae(check_existing=True, filepath=path, filter_glob="*.dae", object_types=group[self.idx].object_types, use_export_selected=group[self.idx].use_export_selected, use_mesh_modifiers=group[self.idx].use_mesh_modifiers, use_tangent_arrays=group[self.idx].use_tangent_arrays, use_triangles=group[self.idx].use_triangles, use_copy_images=group[self.idx].use_copy_images, use_active_layers=group[self.idx].use_active_layers, use_exclude_ctrl_bones=group[self.idx].use_exclude_ctrl_bones, use_anim=group[self.idx].use_anim, use_anim_action_all=group[self.idx].use_anim_action_all, use_anim_skip_noexp=group[self.idx].use_anim_skip_noexp, use_anim_optimize=group[self.idx].use_anim_optimize, anim_optimize_precision=group[self.idx].anim_optimize_precision, use_metadata=group[self.idx].use_metadata)
-
self.report({'INFO'}, '"'+group[self.idx].name+'"' + " Group exported." )
msg = "Export Group "+group[self.idx].name
+
bpy.ops.ed.undo_push(message="")
bpy.ops.ed.undo()
bpy.ops.ed.undo_push(message=msg)
+
else:
self.report({'INFO'}, "Define Export Name and Export Path." )
return{'FINISHED'}
@@ -397,6 +431,7 @@ class godot_export_groups(bpy.types.PropertyGroup): anim_optimize_precision = FloatProperty(name="Precision",description=("Tolerence for comparing double keyframes (higher for greater accuracy)"),min=1, max=16,soft_min=1, soft_max=16,default=6.0)
use_metadata = BoolProperty(name="Use Metadata",default=True,options={'HIDDEN'})
+ use_include_particle_duplicates = BoolProperty(name="Include Particle Duplicates",default=True)
def register():
bpy.utils.register_class(godot_export_manager)
@@ -426,7 +461,7 @@ def unregister(): bpy.utils.unregister_class(export_group)
bpy.utils.unregister_class(add_objects_to_group)
bpy.utils.unregister_class(del_objects_from_group)
- bpy.utils.unlregister_class(select_group_objects)
+ bpy.utils.unregister_class(select_group_objects)
bpy.utils.unregister_class(UI_List_Godot)
@persistent
diff --git a/tools/export/blender25/io_scene_dae/export_dae.py b/tools/export/blender25/io_scene_dae/export_dae.py index 8161f05bf8..8e751fc33c 100644 --- a/tools/export/blender25/io_scene_dae/export_dae.py +++ b/tools/export/blender25/io_scene_dae/export_dae.py @@ -212,8 +212,8 @@ class DaeExporter: imgid = self.new_id("image") if (not os.path.isfile(imgpath)): - if img_tmp_path.endswith((".bmp",".rgb",".png",".jpeg",".jpg",".jp2",".tga",".cin",".dpx",".exr",".hdr",".tif")): - imgpath="images/"+os.path.basename(img_tmp_path) + if imgpath.endswith((".bmp",".rgb",".png",".jpeg",".jpg",".jp2",".tga",".cin",".dpx",".exr",".hdr",".tif")): + imgpath="images/"+os.path.basename(imgpath) else: imgpath="images/"+image.name+".png" |